14af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam/* Copyright (c) 2014, The Linux Foundation. All rights reserved. 24af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * 34af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * Redistribution and use in source and binary forms, with or without 44af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * modification, are permitted provided that the following conditions 54af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * are met: 64af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * * Redistributions of source code must retain the above copyright 74af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * notice, this list of conditions and the following disclaimer. 84af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * * Redistributions in binary form must reproduce the above copyright 94af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * notice, this list of conditions and the following disclaimer in 104af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * the documentation and/or other materials provided with the 114af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * distribution. 124af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * * Neither the name of The Linux Foundation nor the names of its 134af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * contributors may be used to endorse or promote products derived 144af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * from this software without specific prior written permission. 154af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * 164af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 174af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 184af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 194af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 204af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 214af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 224af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 234af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 244af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 254af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 264af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam */ 284af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 294af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#ifndef __WIFI_HAL_IFACEEVENTHANDLER_COMMAND_H__ 304af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#define __WIFI_HAL_IFACEEVENTHANDLER_COMMAND_H__ 314af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 324af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "common.h" 334af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "cpp_bindings.h" 344af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#ifdef __GNUC__ 354af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#define PRINTF_FORMAT(a,b) __attribute__ ((format (printf, (a), (b)))) 364af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#define STRUCT_PACKED __attribute__ ((packed)) 374af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#else 384af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#define PRINTF_FORMAT(a,b) 394af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#define STRUCT_PACKED 404af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#endif 414af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "qca-vendor.h" 424af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "vendor_definitions.h" 434af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#include "wifi_hal.h" 444af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 454af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#ifdef __cplusplus 464af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamextern "C" 474af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 484af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#endif /* __cplusplus */ 494af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 504af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 514af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamclass wifiEventHandler: public WifiCommand 524af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 534af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamprivate: 544af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int mRequestId; 554af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 564af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamprotected: 574af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam struct nlattr *tb[NL80211_ATTR_MAX + 1]; 584af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u32 mSubcmd; 594af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 604af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyampublic: 614af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam wifiEventHandler(wifi_handle handle, int id, u32 subcmd); 624af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual ~wifiEventHandler(); 634af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual int get_request_id(); 644af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual int handleEvent(WifiEvent &event); 654af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam}; 664af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 674af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamclass IfaceEventHandlerCommand: public wifiEventHandler 684af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 694af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamprivate: 704af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam char *mEventData; 714af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam u32 mDataLen; 724af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam wifi_event_handler mHandler; 734af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 744af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyampublic: 754af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam IfaceEventHandlerCommand(wifi_handle handle, int id, u32 subcmd); 764af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual ~IfaceEventHandlerCommand(); 774af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 784af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual int handleEvent(WifiEvent &event); 794af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual void setCallbackHandler(wifi_event_handler nHandler); 804af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual int get_request_id(); 814af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam}; 824af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 834af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamclass WifihalGeneric: public WifiVendorCommand 844af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam{ 854af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyamprivate: 864af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam wifi_interface_handle mHandle; 874af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam feature_set mSet; 884af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int mSetSizeMax; 894af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam int *mSetSizePtr; 904af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam feature_set *mConcurrencySet; 91cdbde22981846f02ce30a940b22a3f3c44ebba0dSubhani Shaik int filterVersion; 92cdbde22981846f02ce30a940b22a3f3c44ebba0dSubhani Shaik int filterLength; 93cdbde22981846f02ce30a940b22a3f3c44ebba0dSubhani Shaik int firmware_bus_max_size; 944af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam 954af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyampublic: 964af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam WifihalGeneric(wifi_handle handle, int id, u32 vendor_id, u32 subcmd); 974af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual ~WifihalGeneric(); 984af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual int requestResponse(); 994af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual int handleResponse(WifiEvent &reply); 1004af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual void getResponseparams(feature_set *pset); 1014af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual void setMaxSetSize(int set_size_max); 1024af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual void setSizePtr(int *set_size); 1034af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam virtual void setConcurrencySet(feature_set set[]); 104cdbde22981846f02ce30a940b22a3f3c44ebba0dSubhani Shaik virtual int getFilterVersion(); 105cdbde22981846f02ce30a940b22a3f3c44ebba0dSubhani Shaik virtual int getFilterLength(); 106cdbde22981846f02ce30a940b22a3f3c44ebba0dSubhani Shaik virtual int getBusSize(); 1074af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam}; 1084af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#ifdef __cplusplus 1094af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam} 1104af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#endif /* __cplusplus */ 1114af494a4400d1ee3944e227626d0452e033284d5Amarnath Hullur Subramanyam#endif 112