| /* | |
| * Copyright (C) 2008 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| #include <stdlib.h> | |
| #define LOG_TAG "SupplicantAssociatingEvent" | |
| #include <cutils/log.h> | |
| #include "SupplicantAssociatingEvent.h" | |
| SupplicantAssociatingEvent::SupplicantAssociatingEvent(int level, char *event, | |
| size_t len) : | |
| SupplicantEvent(SupplicantEvent::EVENT_ASSOCIATING, | |
| level) { | |
| char *p = event; | |
| mBssid = NULL; | |
| mSsid = NULL; | |
| mFreq = -1; | |
| // SSID 'default' | |
| // OR | |
| // "00:13:46:40:40:aa (SSID='default' freq=2437 MHz)" | |
| if (strncmp(event, "SSID", 4)) { | |
| mBssid = (char *) malloc(18); | |
| strncpy(mBssid, p, 17); | |
| mBssid[17] = '\0'; | |
| p += 25; | |
| // "00:13:46:40:40:aa (SSID='default' freq=2437 MHz)" | |
| // ^ | |
| // p | |
| char *q = index(p, '\''); | |
| if (!q) { | |
| LOGE("Unable to decode SSID (p = {%s})\n", p); | |
| return; | |
| } | |
| mSsid = (char *) malloc((q - p) +1); | |
| strncpy(mSsid, p, q-p); | |
| mSsid[q-p] = '\0'; | |
| p = q + 7; | |
| // "00:13:46:40:40:aa (SSID='default' freq=2437 MHz)" | |
| // ^ | |
| // p | |
| if (!(q = index(p, ' '))) { | |
| LOGE("Unable to decode frequency\n"); | |
| return; | |
| } | |
| *q = '\0'; | |
| mFreq = atoi(p); | |
| } else { | |
| p+= 6; | |
| // SSID 'default' | |
| // ^ | |
| // p | |
| char *q = index(p, '\''); | |
| if (!q) { | |
| LOGE("Unable to decode SSID (p = {%s})\n", p); | |
| return; | |
| } | |
| mSsid = (char *) malloc((q - p) +1); | |
| strncpy(mSsid, p, q-p); | |
| mSsid[q-p] = '\0'; | |
| } | |
| } | |
| SupplicantAssociatingEvent::SupplicantAssociatingEvent(const char *bssid, | |
| const char *ssid, | |
| int freq) : | |
| SupplicantEvent(SupplicantEvent::EVENT_ASSOCIATING, -1) { | |
| mBssid = strdup(bssid); | |
| mSsid= strdup(ssid); | |
| mFreq = freq; | |
| } | |
| SupplicantAssociatingEvent::~SupplicantAssociatingEvent() { | |
| if (mBssid) | |
| free(mBssid); | |
| if (mSsid) | |
| free(mSsid); | |
| } | |