18abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam/* 28abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * Copyright (C) 2014 The Android Open Source Project 38abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * 48abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * Licensed under the Apache License, Version 2.0 (the "License"); 58abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * you may not use this file except in compliance with the License. 68abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * You may obtain a copy of the License at 78abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * 88abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * http://www.apache.org/licenses/LICENSE-2.0 98abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * 108abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * Unless required by applicable law or agreed to in writing, software 118abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * distributed under the License is distributed on an "AS IS" BASIS, 128abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * See the License for the specific language governing permissions and 148abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * limitations under the License. 158abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam */ 168abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam 178abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#ifndef __WIFI_HAL_GSCAN_EVENT_HANDLE_H__ 188abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#define __WIFI_HAL_GSCAN_EVENT_HANDLE_H__ 198abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam 208abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#include "common.h" 218abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#include "cpp_bindings.h" 228abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#include "gscancommand.h" 238abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam 248abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#ifdef __cplusplus 258abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyamextern "C" 268abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam{ 278abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#endif /* __cplusplus */ 288abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam 298abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyamclass GScanCommandEventHandler: public WifiVendorCommand 308abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam{ 318abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyamprivate: 328abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam // TODO: derive 3 other command event handler classes from this base and separate 338abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam // the data member vars 348abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam wifi_scan_result *mHotlistApFoundResults; 354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam wifi_scan_result *mHotlistApLostResults; 368abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam u32 mHotlistApFoundNumResults; 374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u32 mHotlistApLostNumResults; 388abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam bool mHotlistApFoundMoreData; 394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam bool mHotlistApLostMoreData; 408abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam wifi_significant_change_result **mSignificantChangeResults; 418abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam u32 mSignificantChangeNumResults; 428abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam bool mSignificantChangeMoreData; 438abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam GScanCallbackHandler mHandler; 448abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam int mRequestId; 45261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam u32 mHotlistSsidFoundNumResults; 46261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam bool mHotlistSsidFoundMoreData; 47261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam u32 mHotlistSsidLostNumResults; 48261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam bool mHotlistSsidLostMoreData; 49261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam wifi_scan_result *mHotlistSsidFoundResults; 50261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam wifi_scan_result *mHotlistSsidLostResults; 51e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam wifi_scan_result *mPnoNetworkFoundResults; 52e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam u32 mPnoNetworkFoundNumResults; 53e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam bool mPnoNetworkFoundMoreData; 54c31ec43dd246e3322b7248351eef561bb756e495Amarnath Hullur Subramanyam wifi_scan_result *mPasspointNetworkFoundResult; 55c31ec43dd246e3322b7248351eef561bb756e495Amarnath Hullur Subramanyam byte *mPasspointAnqp; 56c31ec43dd246e3322b7248351eef561bb756e495Amarnath Hullur Subramanyam int mPasspointAnqpLen; 57c31ec43dd246e3322b7248351eef561bb756e495Amarnath Hullur Subramanyam int mPasspointNetId; 58e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam 598abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam /* Needed because mSubcmd gets overwritten in 608abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam * WifiVendorCommand::handleEvent() 618abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam */ 628abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam u32 mSubCommandId; 637325952cbfc88103197937b05c17c6e487e98cd9Amarnath Hullur Subramanyam bool mEventHandlingEnabled; 648abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam 658abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyampublic: 668abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam GScanCommandEventHandler(wifi_handle handle, int id, u32 vendor_id, 678abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam u32 subcmd, GScanCallbackHandler nHandler); 688abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam virtual ~GScanCommandEventHandler(); 698abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam virtual int create(); 708abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam virtual int get_request_id(); 714af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual void set_request_id(int request_id); 728abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam virtual int handleEvent(WifiEvent &event); 737325952cbfc88103197937b05c17c6e487e98cd9Amarnath Hullur Subramanyam void enableEventHandling(); 747325952cbfc88103197937b05c17c6e487e98cd9Amarnath Hullur Subramanyam void disableEventHandling(); 757325952cbfc88103197937b05c17c6e487e98cd9Amarnath Hullur Subramanyam bool isEventHandlingEnabled(); 767325952cbfc88103197937b05c17c6e487e98cd9Amarnath Hullur Subramanyam void setCallbackHandler(GScanCallbackHandler handler); 774af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam wifi_error gscan_parse_hotlist_ap_results( 784af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u32 num_results, 794af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam wifi_scan_result *results, 804af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u32 starting_index, 814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam struct nlattr **tb_vendor); 82261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam wifi_error gscan_parse_hotlist_ssid_results( 83261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam u32 num_results, 84261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam wifi_scan_result *results, 85261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam u32 starting_index, 86261274640b093ef561076fe78a2c05cdaacda07aAmarnath Hullur Subramanyam struct nlattr **tb_vendor); 87c31ec43dd246e3322b7248351eef561bb756e495Amarnath Hullur Subramanyam wifi_error gscan_parse_passpoint_network_result( 88e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam struct nlattr **tb_vendor); 89e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam wifi_error gscan_parse_pno_network_results( 90e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam u32 numResults, 91e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam wifi_scan_result *mPnoNetworkFoundResults, 92e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam u32 startingIndex, 93e5c1439eb5547b792fb47905c0977bbed8d5d8acAmarnath Hullur Subramanyam struct nlattr **tbVendor); 948abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam}; 958abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam 968abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#ifdef __cplusplus 978abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam} 988abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#endif /* __cplusplus */ 998abcd11e6ffef0ed6948497ff03df2c55abc5bb9Amarnath Hullur Subramanyam#endif 100