13aff2d1de59972684bf2ab798351be5544158239San Mehat/* 23aff2d1de59972684bf2ab798351be5544158239San Mehat * Copyright (C) 2008 The Android Open Source Project 33aff2d1de59972684bf2ab798351be5544158239San Mehat * 43aff2d1de59972684bf2ab798351be5544158239San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 53aff2d1de59972684bf2ab798351be5544158239San Mehat * you may not use this file except in compliance with the License. 63aff2d1de59972684bf2ab798351be5544158239San Mehat * You may obtain a copy of the License at 73aff2d1de59972684bf2ab798351be5544158239San Mehat * 83aff2d1de59972684bf2ab798351be5544158239San Mehat * http://www.apache.org/licenses/LICENSE-2.0 93aff2d1de59972684bf2ab798351be5544158239San Mehat * 103aff2d1de59972684bf2ab798351be5544158239San Mehat * Unless required by applicable law or agreed to in writing, software 113aff2d1de59972684bf2ab798351be5544158239San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 123aff2d1de59972684bf2ab798351be5544158239San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133aff2d1de59972684bf2ab798351be5544158239San Mehat * See the License for the specific language governing permissions and 143aff2d1de59972684bf2ab798351be5544158239San Mehat * limitations under the License. 153aff2d1de59972684bf2ab798351be5544158239San Mehat */ 163aff2d1de59972684bf2ab798351be5544158239San Mehat 173aff2d1de59972684bf2ab798351be5544158239San Mehat#include <stdlib.h> 183aff2d1de59972684bf2ab798351be5544158239San Mehat 193aff2d1de59972684bf2ab798351be5544158239San Mehat#define LOG_TAG "SupplicantAssociatingEvent" 203aff2d1de59972684bf2ab798351be5544158239San Mehat#include <cutils/log.h> 213aff2d1de59972684bf2ab798351be5544158239San Mehat 223aff2d1de59972684bf2ab798351be5544158239San Mehat#include "SupplicantAssociatingEvent.h" 233aff2d1de59972684bf2ab798351be5544158239San Mehat 243aff2d1de59972684bf2ab798351be5544158239San MehatSupplicantAssociatingEvent::SupplicantAssociatingEvent(int level, char *event, 253aff2d1de59972684bf2ab798351be5544158239San Mehat size_t len) : 263aff2d1de59972684bf2ab798351be5544158239San Mehat SupplicantEvent(SupplicantEvent::EVENT_ASSOCIATING, 273aff2d1de59972684bf2ab798351be5544158239San Mehat level) { 283aff2d1de59972684bf2ab798351be5544158239San Mehat char *p = event; 293aff2d1de59972684bf2ab798351be5544158239San Mehat 303aff2d1de59972684bf2ab798351be5544158239San Mehat mBssid = NULL; 313aff2d1de59972684bf2ab798351be5544158239San Mehat mSsid = NULL; 32bbe92c370a614316d6320e8030b266f20b4fee0eSan Mehat mFreq = -1; 333aff2d1de59972684bf2ab798351be5544158239San Mehat 343aff2d1de59972684bf2ab798351be5544158239San Mehat // SSID 'default' 353aff2d1de59972684bf2ab798351be5544158239San Mehat // OR 363aff2d1de59972684bf2ab798351be5544158239San Mehat // "00:13:46:40:40:aa (SSID='default' freq=2437 MHz)" 373aff2d1de59972684bf2ab798351be5544158239San Mehat 383aff2d1de59972684bf2ab798351be5544158239San Mehat if (strncmp(event, "SSID", 4)) { 393aff2d1de59972684bf2ab798351be5544158239San Mehat mBssid = (char *) malloc(18); 403aff2d1de59972684bf2ab798351be5544158239San Mehat strncpy(mBssid, p, 17); 413aff2d1de59972684bf2ab798351be5544158239San Mehat mBssid[17] = '\0'; 423aff2d1de59972684bf2ab798351be5544158239San Mehat p += 25; 433aff2d1de59972684bf2ab798351be5544158239San Mehat 443aff2d1de59972684bf2ab798351be5544158239San Mehat // "00:13:46:40:40:aa (SSID='default' freq=2437 MHz)" 453aff2d1de59972684bf2ab798351be5544158239San Mehat // ^ 463aff2d1de59972684bf2ab798351be5544158239San Mehat // p 473aff2d1de59972684bf2ab798351be5544158239San Mehat char *q = index(p, '\''); 483aff2d1de59972684bf2ab798351be5544158239San Mehat if (!q) { 493aff2d1de59972684bf2ab798351be5544158239San Mehat LOGE("Unable to decode SSID (p = {%s})\n", p); 503aff2d1de59972684bf2ab798351be5544158239San Mehat return; 513aff2d1de59972684bf2ab798351be5544158239San Mehat } 523aff2d1de59972684bf2ab798351be5544158239San Mehat mSsid = (char *) malloc((q - p) +1); 533aff2d1de59972684bf2ab798351be5544158239San Mehat strncpy(mSsid, p, q-p); 543aff2d1de59972684bf2ab798351be5544158239San Mehat mSsid[q-p] = '\0'; 553aff2d1de59972684bf2ab798351be5544158239San Mehat 563aff2d1de59972684bf2ab798351be5544158239San Mehat p = q + 7; 573aff2d1de59972684bf2ab798351be5544158239San Mehat 583aff2d1de59972684bf2ab798351be5544158239San Mehat // "00:13:46:40:40:aa (SSID='default' freq=2437 MHz)" 593aff2d1de59972684bf2ab798351be5544158239San Mehat // ^ 603aff2d1de59972684bf2ab798351be5544158239San Mehat // p 613aff2d1de59972684bf2ab798351be5544158239San Mehat if (!(q = index(p, ' '))) { 623aff2d1de59972684bf2ab798351be5544158239San Mehat LOGE("Unable to decode frequency\n"); 633aff2d1de59972684bf2ab798351be5544158239San Mehat return; 643aff2d1de59972684bf2ab798351be5544158239San Mehat } 653aff2d1de59972684bf2ab798351be5544158239San Mehat *q = '\0'; 663aff2d1de59972684bf2ab798351be5544158239San Mehat mFreq = atoi(p); 673aff2d1de59972684bf2ab798351be5544158239San Mehat } else { 683aff2d1de59972684bf2ab798351be5544158239San Mehat p+= 6; 693aff2d1de59972684bf2ab798351be5544158239San Mehat 703aff2d1de59972684bf2ab798351be5544158239San Mehat // SSID 'default' 713aff2d1de59972684bf2ab798351be5544158239San Mehat // ^ 723aff2d1de59972684bf2ab798351be5544158239San Mehat // p 733aff2d1de59972684bf2ab798351be5544158239San Mehat 743aff2d1de59972684bf2ab798351be5544158239San Mehat char *q = index(p, '\''); 753aff2d1de59972684bf2ab798351be5544158239San Mehat if (!q) { 763aff2d1de59972684bf2ab798351be5544158239San Mehat LOGE("Unable to decode SSID (p = {%s})\n", p); 773aff2d1de59972684bf2ab798351be5544158239San Mehat return; 783aff2d1de59972684bf2ab798351be5544158239San Mehat } 793aff2d1de59972684bf2ab798351be5544158239San Mehat mSsid = (char *) malloc((q - p) +1); 803aff2d1de59972684bf2ab798351be5544158239San Mehat strncpy(mSsid, p, q-p); 813aff2d1de59972684bf2ab798351be5544158239San Mehat mSsid[q-p] = '\0'; 823aff2d1de59972684bf2ab798351be5544158239San Mehat } 833aff2d1de59972684bf2ab798351be5544158239San Mehat} 843aff2d1de59972684bf2ab798351be5544158239San Mehat 853aff2d1de59972684bf2ab798351be5544158239San MehatSupplicantAssociatingEvent::SupplicantAssociatingEvent(const char *bssid, 863aff2d1de59972684bf2ab798351be5544158239San Mehat const char *ssid, 873aff2d1de59972684bf2ab798351be5544158239San Mehat int freq) : 883aff2d1de59972684bf2ab798351be5544158239San Mehat SupplicantEvent(SupplicantEvent::EVENT_ASSOCIATING, -1) { 893aff2d1de59972684bf2ab798351be5544158239San Mehat mBssid = strdup(bssid); 903aff2d1de59972684bf2ab798351be5544158239San Mehat mSsid= strdup(ssid); 913aff2d1de59972684bf2ab798351be5544158239San Mehat mFreq = freq; 923aff2d1de59972684bf2ab798351be5544158239San Mehat} 933aff2d1de59972684bf2ab798351be5544158239San Mehat 943aff2d1de59972684bf2ab798351be5544158239San MehatSupplicantAssociatingEvent::~SupplicantAssociatingEvent() { 953aff2d1de59972684bf2ab798351be5544158239San Mehat if (mBssid) 963aff2d1de59972684bf2ab798351be5544158239San Mehat free(mBssid); 973aff2d1de59972684bf2ab798351be5544158239San Mehat if (mSsid) 983aff2d1de59972684bf2ab798351be5544158239San Mehat free(mSsid); 993aff2d1de59972684bf2ab798351be5544158239San Mehat} 1003aff2d1de59972684bf2ab798351be5544158239San Mehat 101