/* * 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 #define LOG_TAG "SupplicantAssociatingEvent" #include #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); }