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#define LOG_TAG "SupplicantConnectedEvent"
183aff2d1de59972684bf2ab798351be5544158239San Mehat#include <cutils/log.h>
193aff2d1de59972684bf2ab798351be5544158239San Mehat
203aff2d1de59972684bf2ab798351be5544158239San Mehat#include "SupplicantConnectedEvent.h"
213aff2d1de59972684bf2ab798351be5544158239San Mehat
223aff2d1de59972684bf2ab798351be5544158239San MehatSupplicantConnectedEvent::SupplicantConnectedEvent(int level, char *event,
233aff2d1de59972684bf2ab798351be5544158239San Mehat                                                   size_t len) :
243aff2d1de59972684bf2ab798351be5544158239San Mehat                          SupplicantEvent(SupplicantEvent::EVENT_CONNECTED,
253aff2d1de59972684bf2ab798351be5544158239San Mehat                                          level) {
263aff2d1de59972684bf2ab798351be5544158239San Mehat    char *p;
273aff2d1de59972684bf2ab798351be5544158239San Mehat
283aff2d1de59972684bf2ab798351be5544158239San Mehat    //  "- Connection to 00:13:46:40:40:aa completed (auth) [id=1 id_str=], 89"
293aff2d1de59972684bf2ab798351be5544158239San Mehat
303aff2d1de59972684bf2ab798351be5544158239San Mehat    if ((p = index(event + 2, ' ')) && (++p = index(p, ' '))) {
313aff2d1de59972684bf2ab798351be5544158239San Mehat        mBssid = (char *) malloc(18);
323aff2d1de59972684bf2ab798351be5544158239San Mehat        strncpy(mBssid, ++p, 17);
333aff2d1de59972684bf2ab798351be5544158239San Mehat        mBssid[17] = '\0';
343aff2d1de59972684bf2ab798351be5544158239San Mehat
353aff2d1de59972684bf2ab798351be5544158239San Mehat        //  "- Connection to 00:13:46:40:40:aa completed (auth) [id=1 id_str=], 89"
363aff2d1de59972684bf2ab798351be5544158239San Mehat        //                   ^
373aff2d1de59972684bf2ab798351be5544158239San Mehat        //                   p
383aff2d1de59972684bf2ab798351be5544158239San Mehat
393aff2d1de59972684bf2ab798351be5544158239San Mehat        if ((p = index(p, ' ')) && ((++p = index(p, ' ')))) {
403aff2d1de59972684bf2ab798351be5544158239San Mehat            if (!strncmp(++p, "(auth)", 6))
413aff2d1de59972684bf2ab798351be5544158239San Mehat                mReassociated = false;
423aff2d1de59972684bf2ab798351be5544158239San Mehat            else
433aff2d1de59972684bf2ab798351be5544158239San Mehat                mReassociated = true;
443aff2d1de59972684bf2ab798351be5544158239San Mehat        } else
453aff2d1de59972684bf2ab798351be5544158239San Mehat            LOGE("Unable to decode re-assocation");
463aff2d1de59972684bf2ab798351be5544158239San Mehat    } else
473aff2d1de59972684bf2ab798351be5544158239San Mehat        LOGE("Unable to decode event");
483aff2d1de59972684bf2ab798351be5544158239San Mehat}
493aff2d1de59972684bf2ab798351be5544158239San Mehat
503aff2d1de59972684bf2ab798351be5544158239San MehatSupplicantConnectedEvent::SupplicantConnectedEvent(const char *bssid,
513aff2d1de59972684bf2ab798351be5544158239San Mehat                                                   bool reassocated) :
523aff2d1de59972684bf2ab798351be5544158239San Mehat                          SupplicantEvent(SupplicantEvent::EVENT_CONNECTED, -1) {
533aff2d1de59972684bf2ab798351be5544158239San Mehat    mBssid = strdup(bssid);
543aff2d1de59972684bf2ab798351be5544158239San Mehat    mReassociated = reassocated;
553aff2d1de59972684bf2ab798351be5544158239San Mehat}
563aff2d1de59972684bf2ab798351be5544158239San Mehat
573aff2d1de59972684bf2ab798351be5544158239San MehatSupplicantConnectedEvent::~SupplicantConnectedEvent() {
583aff2d1de59972684bf2ab798351be5544158239San Mehat    if (mBssid)
593aff2d1de59972684bf2ab798351be5544158239San Mehat        free(mBssid);
603aff2d1de59972684bf2ab798351be5544158239San Mehat}
613aff2d1de59972684bf2ab798351be5544158239San Mehat
62