1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#ifndef WIFI_DRIVER_CLIENT_H 17094332d3Sopenharmony_ci#define WIFI_DRIVER_CLIENT_H 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ci#include <stdint.h> 20094332d3Sopenharmony_ci#include <stdbool.h> 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_ci#ifdef __cplusplus 23094332d3Sopenharmony_ci#if __cplusplus 24094332d3Sopenharmony_ciextern "C" { 25094332d3Sopenharmony_ci#endif 26094332d3Sopenharmony_ci#endif 27094332d3Sopenharmony_ci 28094332d3Sopenharmony_ci#undef LOG_TAG 29094332d3Sopenharmony_ci#define LOG_TAG "HDF_WIFI_CORE" 30094332d3Sopenharmony_ci#undef LOG_DOMAIN 31094332d3Sopenharmony_ci#define LOG_DOMAIN 0xD001566 32094332d3Sopenharmony_ci 33094332d3Sopenharmony_ci#ifndef IFNAMSIZ 34094332d3Sopenharmony_ci#define IFNAMSIZ 16 35094332d3Sopenharmony_ci#endif 36094332d3Sopenharmony_ci#define ETH_ADDR_LEN 6 37094332d3Sopenharmony_ci#define WIFI_24G_CHANNEL_NUM 14 38094332d3Sopenharmony_ci#define WIFI_MAX_CHANNEL_NUM 24 39094332d3Sopenharmony_ci#define IEEE80211G_RATES_NUM 12 40094332d3Sopenharmony_ci#define IEEE80211B_RATES_NUM 4 41094332d3Sopenharmony_ci#define IEEE80211A_RATES_NUM 8 42094332d3Sopenharmony_ci#define SIGNAL_LEVEL_CONFFICIENT 100 43094332d3Sopenharmony_ci 44094332d3Sopenharmony_ci#define WIFI_POWER_MODE_SLEEPING 0 45094332d3Sopenharmony_ci#define WIFI_POWER_MODE_GENERAL 1 46094332d3Sopenharmony_ci#define WIFI_POWER_MODE_THROUGH_WALL 2 47094332d3Sopenharmony_ci#define WIFI_POWER_MODE_NUM 3 48094332d3Sopenharmony_ci 49094332d3Sopenharmony_ci#define INIT_SCAN_RES_NUM 200 50094332d3Sopenharmony_ci#define MAX_SSID_LEN 33 // 32 + \0 51094332d3Sopenharmony_ci#define MAX_BUF_LEN 32 52094332d3Sopenharmony_ci 53094332d3Sopenharmony_citypedef enum { 54094332d3Sopenharmony_ci CMD_CLOSE_GO_CAC, 55094332d3Sopenharmony_ci CMD_SET_GO_CSA_CHANNEL, 56094332d3Sopenharmony_ci CMD_SET_GO_RADAR_DETECT, 57094332d3Sopenharmony_ci CMD_ID_MCC_STA_P2P_QUOTA_TIME, 58094332d3Sopenharmony_ci CMD_ID_CTRL_ROAM_CHANNEL, 59094332d3Sopenharmony_ci CMD_ID_RX_REMAIN_ON_CHANNEL, 60094332d3Sopenharmony_ci CMD_ID_INSTALL_WLAN_KEY, 61094332d3Sopenharmony_ci} ProjectionScreenCmd; 62094332d3Sopenharmony_ci 63094332d3Sopenharmony_ci/* common related interface */ 64094332d3Sopenharmony_cienum WifiDriverClientResultCode { 65094332d3Sopenharmony_ci RET_CODE_SUCCESS = 0, 66094332d3Sopenharmony_ci RET_CODE_FAILURE = -1, 67094332d3Sopenharmony_ci RET_CODE_NOT_SUPPORT = -2, 68094332d3Sopenharmony_ci RET_CODE_INVALID_PARAM = -3, 69094332d3Sopenharmony_ci RET_CODE_MISUSE = -4, /* incorrectly API used */ 70094332d3Sopenharmony_ci RET_CODE_NOT_AVAILABLE = -5, 71094332d3Sopenharmony_ci RET_CODE_NOMEM = -6, 72094332d3Sopenharmony_ci RET_CODE_UNKNOW = -7, 73094332d3Sopenharmony_ci RET_CODE_DEVICE_BUSY = -16, 74094332d3Sopenharmony_ci RET_CODE_NETDOWN = -211, 75094332d3Sopenharmony_ci}; 76094332d3Sopenharmony_ci 77094332d3Sopenharmony_cienum WifiIfType { 78094332d3Sopenharmony_ci WIFI_IFTYPE_UNSPECIFIED, 79094332d3Sopenharmony_ci WIFI_IFTYPE_ADHOC, 80094332d3Sopenharmony_ci WIFI_IFTYPE_STATION, 81094332d3Sopenharmony_ci WIFI_IFTYPE_AP, 82094332d3Sopenharmony_ci WIFI_IFTYPE_AP_VLAN, 83094332d3Sopenharmony_ci WIFI_IFTYPE_WDS, 84094332d3Sopenharmony_ci WIFI_IFTYPE_MONITOR, 85094332d3Sopenharmony_ci WIFI_IFTYPE_MESH_POINT, 86094332d3Sopenharmony_ci WIFI_IFTYPE_P2P_CLIENT, 87094332d3Sopenharmony_ci WIFI_IFTYPE_P2P_GO, 88094332d3Sopenharmony_ci WIFI_IFTYPE_P2P_DEVICE, 89094332d3Sopenharmony_ci WIFI_IFTYPE_CHBA, 90094332d3Sopenharmony_ci WIFI_IFTYPE_MAX, 91094332d3Sopenharmony_ci}; 92094332d3Sopenharmony_ci 93094332d3Sopenharmony_citypedef enum { 94094332d3Sopenharmony_ci WIFI_EVENT_NEW_STA = 0, 95094332d3Sopenharmony_ci WIFI_EVENT_DEL_STA, 96094332d3Sopenharmony_ci WIFI_EVENT_RX_MGMT, 97094332d3Sopenharmony_ci WIFI_EVENT_TX_STATUS, 98094332d3Sopenharmony_ci WIFI_EVENT_SCAN_DONE, 99094332d3Sopenharmony_ci WIFI_EVENT_SCAN_RESULT = 5, 100094332d3Sopenharmony_ci WIFI_EVENT_CONNECT_RESULT, 101094332d3Sopenharmony_ci WIFI_EVENT_DISCONNECT, 102094332d3Sopenharmony_ci WIFI_EVENT_MESH_CLOSE, 103094332d3Sopenharmony_ci WIFI_EVENT_NEW_PEER_CANDIDATE, 104094332d3Sopenharmony_ci WIFI_EVENT_REMAIN_ON_CHANNEL = 10, 105094332d3Sopenharmony_ci WIFI_EVENT_CANCEL_REMAIN_ON_CHANNEL, 106094332d3Sopenharmony_ci WIFI_EVENT_CHANNEL_SWITCH, 107094332d3Sopenharmony_ci WIFI_EVENT_EAPOL_RECV, 108094332d3Sopenharmony_ci WIFI_EVENT_TIMEOUT_DISCONN, 109094332d3Sopenharmony_ci WIFI_EVENT_RESET_DRIVER = 15, 110094332d3Sopenharmony_ci WIFI_EVENT_SCAN_RESULTS, 111094332d3Sopenharmony_ci WIFI_EVENT_SCAN_ABORTED, 112094332d3Sopenharmony_ci WIFI_EVENT_BUTT, 113094332d3Sopenharmony_ci WIFI_EVENT_ACTION_RECEIVED, 114094332d3Sopenharmony_ci WIFI_EVENT_DATA_FRAME_RECEIVED, 115094332d3Sopenharmony_ci} WifiEventType; 116094332d3Sopenharmony_ci 117094332d3Sopenharmony_citypedef enum { 118094332d3Sopenharmony_ci CMD_HID2D_MODULE_INIT, 119094332d3Sopenharmony_ci CMD_SET_BATTERY_LEVEL, 120094332d3Sopenharmony_ci CMD_SET_SUPP_COEX_CHAN_LIST, 121094332d3Sopenharmony_ci CMD_SET_CHAN_ADJUST 122094332d3Sopenharmony_ci} Hid2dCmdType; 123094332d3Sopenharmony_ci 124094332d3Sopenharmony_citypedef struct { 125094332d3Sopenharmony_ci int32_t reassoc; 126094332d3Sopenharmony_ci uint32_t ieLen; 127094332d3Sopenharmony_ci uint8_t *ie; 128094332d3Sopenharmony_ci uint8_t *macAddr; 129094332d3Sopenharmony_ci uint8_t resv[2]; 130094332d3Sopenharmony_ci} WifiNewStaInfo; 131094332d3Sopenharmony_ci 132094332d3Sopenharmony_citypedef struct { 133094332d3Sopenharmony_ci uint8_t *buf; 134094332d3Sopenharmony_ci uint32_t len; 135094332d3Sopenharmony_ci int32_t sigMbm; 136094332d3Sopenharmony_ci int32_t freq; 137094332d3Sopenharmony_ci} WifiRxMgmt; 138094332d3Sopenharmony_ci 139094332d3Sopenharmony_citypedef struct { 140094332d3Sopenharmony_ci uint8_t *buf; 141094332d3Sopenharmony_ci uint32_t len; 142094332d3Sopenharmony_ci uint8_t ack; 143094332d3Sopenharmony_ci uint8_t resv[3]; 144094332d3Sopenharmony_ci} WifiTxStatus; 145094332d3Sopenharmony_ci 146094332d3Sopenharmony_citypedef struct { 147094332d3Sopenharmony_ci uint32_t flags; 148094332d3Sopenharmony_ci uint8_t *bssid; 149094332d3Sopenharmony_ci uint16_t caps; 150094332d3Sopenharmony_ci uint32_t freq; 151094332d3Sopenharmony_ci uint16_t beaconInt; 152094332d3Sopenharmony_ci int32_t qual; 153094332d3Sopenharmony_ci int32_t level; 154094332d3Sopenharmony_ci uint32_t age; 155094332d3Sopenharmony_ci uint64_t tsf; 156094332d3Sopenharmony_ci uint32_t ieLen; 157094332d3Sopenharmony_ci uint32_t beaconIeLen; 158094332d3Sopenharmony_ci uint8_t *variable; 159094332d3Sopenharmony_ci uint8_t *ie; 160094332d3Sopenharmony_ci uint8_t *beaconIe; 161094332d3Sopenharmony_ci} WifiScanResult; 162094332d3Sopenharmony_ci 163094332d3Sopenharmony_citypedef struct { 164094332d3Sopenharmony_ci WifiScanResult *scanResult; 165094332d3Sopenharmony_ci uint32_t scanResultCapacity; 166094332d3Sopenharmony_ci uint32_t num; 167094332d3Sopenharmony_ci} WifiScanResults; 168094332d3Sopenharmony_ci 169094332d3Sopenharmony_citypedef struct { 170094332d3Sopenharmony_ci uint8_t *reqIe; 171094332d3Sopenharmony_ci uint32_t reqIeLen; 172094332d3Sopenharmony_ci uint8_t *respIe; 173094332d3Sopenharmony_ci uint32_t respIeLen; 174094332d3Sopenharmony_ci uint8_t *bssid; 175094332d3Sopenharmony_ci uint8_t rsv[2]; 176094332d3Sopenharmony_ci uint16_t status; 177094332d3Sopenharmony_ci uint16_t freq; 178094332d3Sopenharmony_ci} WifiConnectResult; 179094332d3Sopenharmony_ci 180094332d3Sopenharmony_citypedef struct { 181094332d3Sopenharmony_ci uint8_t *ie; 182094332d3Sopenharmony_ci uint16_t reason; 183094332d3Sopenharmony_ci uint8_t rsv[2]; 184094332d3Sopenharmony_ci uint32_t ieLen; 185094332d3Sopenharmony_ci} WifiDisconnect; 186094332d3Sopenharmony_ci 187094332d3Sopenharmony_citypedef struct { 188094332d3Sopenharmony_ci uint8_t id; 189094332d3Sopenharmony_ci int32_t suite; 190094332d3Sopenharmony_ci uint8_t addr[ETH_ADDR_LEN]; 191094332d3Sopenharmony_ci uint32_t len; 192094332d3Sopenharmony_ci uint8_t buf[MAX_BUF_LEN]; 193094332d3Sopenharmony_ci} InstallWlanParam; 194094332d3Sopenharmony_ci 195094332d3Sopenharmony_cienum WifiClientType { 196094332d3Sopenharmony_ci /* 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<10 | 1<<11 | 1<<13 */ 197094332d3Sopenharmony_ci WIFI_KERNEL_TO_WPA_CLIENT = 11519, 198094332d3Sopenharmony_ci /* 1<<20 | 1<<19 | 1<<17 | 1<<16 | 1<<15 | 1<<5 | 1<<4 */ 199094332d3Sopenharmony_ci WIFI_KERNEL_TO_HAL_CLIENT = 1802288, 200094332d3Sopenharmony_ci WIFI_CLIENT_BUTT 201094332d3Sopenharmony_ci}; 202094332d3Sopenharmony_ci 203094332d3Sopenharmony_citypedef int32_t (*OnReceiveFunc)(uint32_t event, void *data, const char *ifName); 204094332d3Sopenharmony_citypedef int32_t (*Hid2dCallback)(const uint8_t *recvMsg, uint32_t recvMsgLen); 205094332d3Sopenharmony_ci 206094332d3Sopenharmony_ciint32_t WifiRegisterEventCallback(OnReceiveFunc onRecFunc, uint32_t eventType, const char *ifName); 207094332d3Sopenharmony_civoid WifiUnregisterEventCallback(OnReceiveFunc onRecFunc, uint32_t eventType, const char *ifName); 208094332d3Sopenharmony_ciint32_t WifiRegisterHid2dCallback(Hid2dCallback func, const char *ifName); 209094332d3Sopenharmony_civoid WifiUnregisterHid2dCallback(Hid2dCallback func, const char *ifName); 210094332d3Sopenharmony_ci 211094332d3Sopenharmony_ci/* hal related interface */ 212094332d3Sopenharmony_ci#define MAX_WLAN_DEVICE 3 213094332d3Sopenharmony_ci#define MAX_CHANNEL_NUM 14 214094332d3Sopenharmony_ci 215094332d3Sopenharmony_cienum Ieee80211Band { 216094332d3Sopenharmony_ci IEEE80211_BAND_2GHZ, /**< 2.4 GHz */ 217094332d3Sopenharmony_ci IEEE80211_BAND_5GHZ, /**< 5 GHz */ 218094332d3Sopenharmony_ci IEEE80211_NUM_BANDS /**< Reserved */ 219094332d3Sopenharmony_ci}; 220094332d3Sopenharmony_ci 221094332d3Sopenharmony_cistruct NetworkInfo { 222094332d3Sopenharmony_ci char name[IFNAMSIZ]; 223094332d3Sopenharmony_ci uint8_t supportMode[WIFI_IFTYPE_MAX]; 224094332d3Sopenharmony_ci}; 225094332d3Sopenharmony_ci 226094332d3Sopenharmony_ci#define MAX_IFACE_NUM 20 227094332d3Sopenharmony_ci 228094332d3Sopenharmony_cistruct NetworkInfoResult { 229094332d3Sopenharmony_ci uint32_t nums; 230094332d3Sopenharmony_ci struct NetworkInfo infos[MAX_IFACE_NUM]; 231094332d3Sopenharmony_ci}; 232094332d3Sopenharmony_ci 233094332d3Sopenharmony_cistruct FreqInfoResult { 234094332d3Sopenharmony_ci int32_t band; 235094332d3Sopenharmony_ci uint32_t nums; 236094332d3Sopenharmony_ci uint32_t *freqs; 237094332d3Sopenharmony_ci uint32_t *txPower; 238094332d3Sopenharmony_ci}; 239094332d3Sopenharmony_ci 240094332d3Sopenharmony_ci#define MAX_ASSOC_STA_NUM 8 241094332d3Sopenharmony_ci 242094332d3Sopenharmony_cistruct AssocStaInfo { 243094332d3Sopenharmony_ci uint8_t mac[ETH_ADDR_LEN]; /**< MAC address of the STA */ 244094332d3Sopenharmony_ci}; 245094332d3Sopenharmony_ci 246094332d3Sopenharmony_cistruct AssocStaInfoResult { 247094332d3Sopenharmony_ci uint32_t num; 248094332d3Sopenharmony_ci struct AssocStaInfo infos[MAX_ASSOC_STA_NUM]; 249094332d3Sopenharmony_ci}; 250094332d3Sopenharmony_ci 251094332d3Sopenharmony_cistruct NetDeviceInfo { 252094332d3Sopenharmony_ci uint32_t index; 253094332d3Sopenharmony_ci char ifName[IFNAMSIZ]; 254094332d3Sopenharmony_ci uint8_t iftype; 255094332d3Sopenharmony_ci uint8_t mac[ETH_ADDR_LEN]; 256094332d3Sopenharmony_ci}; 257094332d3Sopenharmony_ci 258094332d3Sopenharmony_ci#define MAX_NETDEVICE_COUNT 20 259094332d3Sopenharmony_ci 260094332d3Sopenharmony_cistruct NetDeviceInfoResult { 261094332d3Sopenharmony_ci struct NetDeviceInfo deviceInfos[MAX_NETDEVICE_COUNT]; 262094332d3Sopenharmony_ci}; 263094332d3Sopenharmony_ci 264094332d3Sopenharmony_cistruct MeasParam { 265094332d3Sopenharmony_ci int32_t channelId; 266094332d3Sopenharmony_ci int32_t measTime; 267094332d3Sopenharmony_ci}; 268094332d3Sopenharmony_ci 269094332d3Sopenharmony_cistruct MeasResult { 270094332d3Sopenharmony_ci int32_t channelId; 271094332d3Sopenharmony_ci int32_t chload; 272094332d3Sopenharmony_ci int32_t noise; 273094332d3Sopenharmony_ci}; 274094332d3Sopenharmony_ci 275094332d3Sopenharmony_citypedef struct { 276094332d3Sopenharmony_ci int32_t cmdId; 277094332d3Sopenharmony_ci uint32_t bufLen; 278094332d3Sopenharmony_ci int8_t buf[0]; 279094332d3Sopenharmony_ci} ProjectionScreenParam; 280094332d3Sopenharmony_ci 281094332d3Sopenharmony_citypedef struct { 282094332d3Sopenharmony_ci uint32_t rxRate; 283094332d3Sopenharmony_ci uint32_t txRate; 284094332d3Sopenharmony_ci uint32_t flags; /* bitfield of STA_DRV_DATA_* */ 285094332d3Sopenharmony_ci uint8_t rxVhtmcs; 286094332d3Sopenharmony_ci uint8_t txVhtmcs; 287094332d3Sopenharmony_ci uint8_t rxMcs; 288094332d3Sopenharmony_ci uint8_t txMcs; 289094332d3Sopenharmony_ci uint8_t rxVhtNss; 290094332d3Sopenharmony_ci uint8_t txVhtNss; 291094332d3Sopenharmony_ci} __attribute__ ((aligned(8))) StationInfo; 292094332d3Sopenharmony_ci 293094332d3Sopenharmony_ci#define BSS_STATUS_ASSOCIATED 1 294094332d3Sopenharmony_citypedef struct { 295094332d3Sopenharmony_ci uint8_t associatedBssid[ETH_ADDR_LEN]; 296094332d3Sopenharmony_ci uint32_t associatedFreq; 297094332d3Sopenharmony_ci} AssociatedInfo; 298094332d3Sopenharmony_ci 299094332d3Sopenharmony_cistruct SignalResult { 300094332d3Sopenharmony_ci int32_t currentRssi; 301094332d3Sopenharmony_ci int32_t associatedFreq; 302094332d3Sopenharmony_ci int32_t txBitrate; 303094332d3Sopenharmony_ci int32_t rxBitrate; 304094332d3Sopenharmony_ci int32_t currentNoise; 305094332d3Sopenharmony_ci int32_t currentSnr; 306094332d3Sopenharmony_ci int32_t currentChload; 307094332d3Sopenharmony_ci int32_t currentUlDelay; 308094332d3Sopenharmony_ci int32_t currentTxBytes; 309094332d3Sopenharmony_ci int32_t currentRxBytes; 310094332d3Sopenharmony_ci int32_t currentTxFailed; 311094332d3Sopenharmony_ci int32_t currentTxPackets; 312094332d3Sopenharmony_ci int32_t currentRxPackets; 313094332d3Sopenharmony_ci}; 314094332d3Sopenharmony_ci 315094332d3Sopenharmony_citypedef struct { 316094332d3Sopenharmony_ci uint8_t ssid[MAX_SSID_LEN]; 317094332d3Sopenharmony_ci uint32_t ssidLen; 318094332d3Sopenharmony_ci} WifiDriverScanSsid; 319094332d3Sopenharmony_ci 320094332d3Sopenharmony_citypedef struct { 321094332d3Sopenharmony_ci bool isHidden; 322094332d3Sopenharmony_ci int32_t *freqs; 323094332d3Sopenharmony_ci uint32_t freqsLen; 324094332d3Sopenharmony_ci WifiDriverScanSsid ssid; 325094332d3Sopenharmony_ci} WifiPnoNetwork; 326094332d3Sopenharmony_ci 327094332d3Sopenharmony_citypedef struct { 328094332d3Sopenharmony_ci int32_t min2gRssi; 329094332d3Sopenharmony_ci int32_t min5gRssi; 330094332d3Sopenharmony_ci int32_t scanIntervalMs; 331094332d3Sopenharmony_ci int32_t scanIterations; 332094332d3Sopenharmony_ci WifiPnoNetwork *pnoNetworks; 333094332d3Sopenharmony_ci uint32_t pnoNetworksLen; 334094332d3Sopenharmony_ci} WifiPnoSettings; 335094332d3Sopenharmony_ci 336094332d3Sopenharmony_ciint32_t WifiDriverClientInit(void); 337094332d3Sopenharmony_civoid WifiDriverClientDeinit(void); 338094332d3Sopenharmony_ci 339094332d3Sopenharmony_ciint32_t GetUsableNetworkInfo(struct NetworkInfoResult *result); 340094332d3Sopenharmony_ciint32_t IsSupportCombo(uint8_t *isSupportCombo); 341094332d3Sopenharmony_ciint32_t GetComboInfo(uint64_t *comboInfo, uint32_t size); 342094332d3Sopenharmony_ciint32_t SetMacAddr(const char *ifName, unsigned char *mac, uint8_t len); 343094332d3Sopenharmony_ciint32_t GetDevMacAddr(const char *ifName, int32_t type, uint8_t *mac, uint8_t len); 344094332d3Sopenharmony_ciint32_t GetValidFreqByBand(const char *ifName, int32_t band, 345094332d3Sopenharmony_ci struct FreqInfoResult *result, uint32_t size); 346094332d3Sopenharmony_ciint32_t SetTxPower(const char *ifName, int32_t power); 347094332d3Sopenharmony_ciint32_t GetAssociatedStas(const char *ifName, struct AssocStaInfoResult *result); 348094332d3Sopenharmony_ciint32_t WifiSetCountryCode(const char *ifName, const char *code, uint32_t len); 349094332d3Sopenharmony_ciint32_t SetScanMacAddr(const char *ifName, uint8_t *scanMac, uint8_t len); 350094332d3Sopenharmony_ciint32_t AcquireChipId(const char *ifName, uint8_t *chipId); 351094332d3Sopenharmony_ciint32_t GetIfNamesByChipId(const uint8_t chipId, char **ifNames, uint32_t *num); 352094332d3Sopenharmony_ciint32_t SetResetDriver(const uint8_t chipId, const char *ifName); 353094332d3Sopenharmony_ciint32_t GetNetDeviceInfo(struct NetDeviceInfoResult *netDeviceInfoResult); 354094332d3Sopenharmony_ciint32_t GetCurrentPowerMode(const char *ifName, uint8_t *mode); 355094332d3Sopenharmony_ciint32_t SetPowerMode(const char *ifName, uint8_t mode); 356094332d3Sopenharmony_ciint32_t StartChannelMeas(const char *ifName, const struct MeasParam *measParam); 357094332d3Sopenharmony_ciint32_t GetChannelMeasResult(const char *ifName, struct MeasResult *measResult); 358094332d3Sopenharmony_ciint32_t SetProjectionScreenParam(const char *ifName, const ProjectionScreenParam *param); 359094332d3Sopenharmony_ciint32_t SendCmdIoctl(const char *ifName, int32_t cmdId, const int8_t *paramBuf, uint32_t paramBufLen); 360094332d3Sopenharmony_ciint32_t GetStationInfo(const char *ifName, StationInfo *info, const uint8_t *mac, uint32_t macLen); 361094332d3Sopenharmony_ciint32_t WifiStartPnoScan(const char *ifName, const WifiPnoSettings *pnoSettings); 362094332d3Sopenharmony_ciint32_t WifiStopPnoScan(const char *ifName); 363094332d3Sopenharmony_ciint32_t WifiGetSignalPollInfo(const char *ifName, struct SignalResult *signalResult); 364094332d3Sopenharmony_ciint32_t ClientGetApBandwidth(const char *ifName, uint8_t *bandwidth); 365094332d3Sopenharmony_ciint32_t WifiSendActionFrame(const char *ifName, uint32_t txChannel, const uint8_t *frameData, uint32_t frameDataLen); 366094332d3Sopenharmony_ciint32_t WifiRegisterActionFrameReceiver(const char *ifName, const uint8_t *match, uint32_t matchLen); 367094332d3Sopenharmony_ciint32_t WifiSetPowerSaveMode(const char *ifName, int32_t frequency, int32_t mode); 368094332d3Sopenharmony_ciint32_t WifiSetDpiMarkRule(int32_t uid, int32_t protocol, int32_t enable); 369094332d3Sopenharmony_ciint32_t WifiInstallWlanExtParam(const char *ifName, const InstallWlanParam *param); 370094332d3Sopenharmony_ci 371094332d3Sopenharmony_ci/* wpa related interface */ 372094332d3Sopenharmony_ci#define MAX_NR_CIPHER_SUITES 5 373094332d3Sopenharmony_ci#define MAX_NR_AKM_SUITES 2 374094332d3Sopenharmony_ci 375094332d3Sopenharmony_citypedef struct { 376094332d3Sopenharmony_ci int32_t mode; 377094332d3Sopenharmony_ci int32_t freq; 378094332d3Sopenharmony_ci int32_t channel; 379094332d3Sopenharmony_ci 380094332d3Sopenharmony_ci /* for HT */ 381094332d3Sopenharmony_ci int32_t htEnabled; 382094332d3Sopenharmony_ci 383094332d3Sopenharmony_ci /* 384094332d3Sopenharmony_ci * 0 = HT40 disabled, -1 = HT40 enabled, 385094332d3Sopenharmony_ci * secondary channel below primary, 1 = HT40 386094332d3Sopenharmony_ci * enabled, secondary channel above primary 387094332d3Sopenharmony_ci */ 388094332d3Sopenharmony_ci int32_t secChannelOffset; 389094332d3Sopenharmony_ci 390094332d3Sopenharmony_ci /* for VHT */ 391094332d3Sopenharmony_ci int32_t vhtEnabled; 392094332d3Sopenharmony_ci 393094332d3Sopenharmony_ci /* 394094332d3Sopenharmony_ci * valid for both HT and VHT, center_freq2 is non-zero 395094332d3Sopenharmony_ci * only for bandwidth 80 and an 80+80 channel 396094332d3Sopenharmony_ci */ 397094332d3Sopenharmony_ci int32_t centerFreq1; 398094332d3Sopenharmony_ci int32_t centerFreq2; 399094332d3Sopenharmony_ci int32_t bandwidth; 400094332d3Sopenharmony_ci uint8_t band; 401094332d3Sopenharmony_ci} WifiFreqParams; 402094332d3Sopenharmony_ci 403094332d3Sopenharmony_citypedef struct { 404094332d3Sopenharmony_ci uint32_t headLen; 405094332d3Sopenharmony_ci uint32_t tailLen; 406094332d3Sopenharmony_ci uint8_t *head; 407094332d3Sopenharmony_ci uint8_t *tail; 408094332d3Sopenharmony_ci} WifiBeaconData; 409094332d3Sopenharmony_ci 410094332d3Sopenharmony_citypedef struct { 411094332d3Sopenharmony_ci WifiFreqParams freqParams; 412094332d3Sopenharmony_ci WifiBeaconData beaconData; 413094332d3Sopenharmony_ci uint32_t ssidLen; 414094332d3Sopenharmony_ci int32_t beaconInterval; 415094332d3Sopenharmony_ci int32_t dtimPeriod; 416094332d3Sopenharmony_ci uint8_t *ssid; 417094332d3Sopenharmony_ci uint8_t hiddenSsid; 418094332d3Sopenharmony_ci uint8_t authType; 419094332d3Sopenharmony_ci uint32_t meshSsidLen; 420094332d3Sopenharmony_ci uint8_t *meshSsid; 421094332d3Sopenharmony_ci} WifiApSetting; 422094332d3Sopenharmony_ci 423094332d3Sopenharmony_citypedef struct { 424094332d3Sopenharmony_ci uint8_t *buf; 425094332d3Sopenharmony_ci uint32_t len; 426094332d3Sopenharmony_ci} WifiRxEapol; 427094332d3Sopenharmony_ci 428094332d3Sopenharmony_citypedef struct { 429094332d3Sopenharmony_ci uint32_t freq; 430094332d3Sopenharmony_ci uint32_t dataLen; 431094332d3Sopenharmony_ci uint8_t *data; 432094332d3Sopenharmony_ci uint64_t *cookie; 433094332d3Sopenharmony_ci} WifiMlmeData; 434094332d3Sopenharmony_ci 435094332d3Sopenharmony_citypedef struct { 436094332d3Sopenharmony_ci int32_t type; 437094332d3Sopenharmony_ci uint32_t keyIdx; 438094332d3Sopenharmony_ci uint32_t keyLen; 439094332d3Sopenharmony_ci uint32_t seqLen; 440094332d3Sopenharmony_ci uint32_t cipher; 441094332d3Sopenharmony_ci uint8_t *addr; 442094332d3Sopenharmony_ci uint8_t *key; 443094332d3Sopenharmony_ci uint8_t *seq; 444094332d3Sopenharmony_ci uint8_t def; 445094332d3Sopenharmony_ci uint8_t defMgmt; 446094332d3Sopenharmony_ci uint8_t defaultTypes; 447094332d3Sopenharmony_ci uint8_t resv; 448094332d3Sopenharmony_ci} WifiKeyExt; 449094332d3Sopenharmony_ci 450094332d3Sopenharmony_citypedef struct { 451094332d3Sopenharmony_ci uint8_t bssid[ETH_ADDR_LEN]; 452094332d3Sopenharmony_ci uint8_t iftype; 453094332d3Sopenharmony_ci uint8_t resv; 454094332d3Sopenharmony_ci} WifiSetMode; 455094332d3Sopenharmony_ci 456094332d3Sopenharmony_citypedef struct { 457094332d3Sopenharmony_ci uint16_t channel; 458094332d3Sopenharmony_ci uint32_t freq; 459094332d3Sopenharmony_ci uint32_t flags; 460094332d3Sopenharmony_ci} WifiIeee80211Channel; 461094332d3Sopenharmony_ci 462094332d3Sopenharmony_citypedef struct { 463094332d3Sopenharmony_ci int32_t channelNum; /**< Number of channels */ 464094332d3Sopenharmony_ci WifiIeee80211Channel iee80211Channel[WIFI_MAX_CHANNEL_NUM]; /**< WLAN channel structures */ 465094332d3Sopenharmony_ci}WlanBands; 466094332d3Sopenharmony_ci 467094332d3Sopenharmony_citypedef struct { 468094332d3Sopenharmony_ci int32_t channelNum; 469094332d3Sopenharmony_ci uint16_t bitrate[12]; 470094332d3Sopenharmony_ci uint16_t htCapab; 471094332d3Sopenharmony_ci uint8_t resv[2]; 472094332d3Sopenharmony_ci WlanBands bands[IEEE80211_NUM_BANDS]; 473094332d3Sopenharmony_ci} WifiHwFeatureData; 474094332d3Sopenharmony_ci 475094332d3Sopenharmony_citypedef struct { 476094332d3Sopenharmony_ci WifiDriverScanSsid *ssids; 477094332d3Sopenharmony_ci int32_t *freqs; 478094332d3Sopenharmony_ci uint8_t *extraIes; 479094332d3Sopenharmony_ci uint8_t *bssid; 480094332d3Sopenharmony_ci uint8_t numSsids; 481094332d3Sopenharmony_ci uint8_t numFreqs; 482094332d3Sopenharmony_ci uint8_t prefixSsidScanFlag; 483094332d3Sopenharmony_ci uint8_t fastConnectFlag; 484094332d3Sopenharmony_ci int32_t extraIesLen; 485094332d3Sopenharmony_ci} WifiScan; 486094332d3Sopenharmony_ci 487094332d3Sopenharmony_citypedef struct { 488094332d3Sopenharmony_ci uint32_t wpaVersions; 489094332d3Sopenharmony_ci uint32_t cipherGroup; 490094332d3Sopenharmony_ci int32_t nCiphersPairwise; 491094332d3Sopenharmony_ci uint32_t ciphersPairwise[MAX_NR_CIPHER_SUITES]; 492094332d3Sopenharmony_ci int32_t nAkmSuites; 493094332d3Sopenharmony_ci uint32_t akmSuites[MAX_NR_AKM_SUITES]; 494094332d3Sopenharmony_ci} WifiCryptoSetting; 495094332d3Sopenharmony_ci 496094332d3Sopenharmony_citypedef struct { 497094332d3Sopenharmony_ci uint8_t *bssid; 498094332d3Sopenharmony_ci uint8_t *ssid; 499094332d3Sopenharmony_ci uint8_t *ie; 500094332d3Sopenharmony_ci uint8_t *key; 501094332d3Sopenharmony_ci uint8_t authType; 502094332d3Sopenharmony_ci uint8_t privacy; 503094332d3Sopenharmony_ci uint8_t keyLen; 504094332d3Sopenharmony_ci uint8_t keyIdx; 505094332d3Sopenharmony_ci uint8_t mfp; 506094332d3Sopenharmony_ci uint8_t rsv[3]; 507094332d3Sopenharmony_ci uint32_t freq; 508094332d3Sopenharmony_ci uint32_t ssidLen; 509094332d3Sopenharmony_ci uint32_t ieLen; 510094332d3Sopenharmony_ci WifiCryptoSetting *crypto; 511094332d3Sopenharmony_ci} WifiAssociateParams; 512094332d3Sopenharmony_ci 513094332d3Sopenharmony_citypedef enum { 514094332d3Sopenharmony_ci WIFI_PHY_MODE_11N = 0, 515094332d3Sopenharmony_ci WIFI_PHY_MODE_11G = 1, 516094332d3Sopenharmony_ci WIFI_PHY_MODE_11B = 2, 517094332d3Sopenharmony_ci WIFI_PHY_MODE_BUTT 518094332d3Sopenharmony_ci} WifiPhyMode; 519094332d3Sopenharmony_ci 520094332d3Sopenharmony_citypedef struct { 521094332d3Sopenharmony_ci uint8_t status; 522094332d3Sopenharmony_ci enum WifiIfType ifType; 523094332d3Sopenharmony_ci WifiPhyMode mode; 524094332d3Sopenharmony_ci} WifiSetNewDev; 525094332d3Sopenharmony_ci 526094332d3Sopenharmony_citypedef struct { 527094332d3Sopenharmony_ci uint8_t dst[ETH_ADDR_LEN]; 528094332d3Sopenharmony_ci uint8_t src[ETH_ADDR_LEN]; 529094332d3Sopenharmony_ci uint8_t bssid[ETH_ADDR_LEN]; 530094332d3Sopenharmony_ci uint8_t *data; 531094332d3Sopenharmony_ci uint32_t dataLen; 532094332d3Sopenharmony_ci uint32_t freq; 533094332d3Sopenharmony_ci uint32_t wait; 534094332d3Sopenharmony_ci int32_t noCck; 535094332d3Sopenharmony_ci} WifiActionData; 536094332d3Sopenharmony_ci 537094332d3Sopenharmony_citypedef struct { 538094332d3Sopenharmony_ci uint8_t *data; 539094332d3Sopenharmony_ci uint32_t dataLen; 540094332d3Sopenharmony_ci} WifiDataFrame; 541094332d3Sopenharmony_ci 542094332d3Sopenharmony_citypedef struct { 543094332d3Sopenharmony_ci uint32_t freq; 544094332d3Sopenharmony_ci uint32_t duration; 545094332d3Sopenharmony_ci} WifiOnChannel; 546094332d3Sopenharmony_ci 547094332d3Sopenharmony_citypedef struct { 548094332d3Sopenharmony_ci uint8_t ifName[IFNAMSIZ]; 549094332d3Sopenharmony_ci uint8_t type; 550094332d3Sopenharmony_ci} WifiIfAdd; 551094332d3Sopenharmony_ci 552094332d3Sopenharmony_citypedef struct { 553094332d3Sopenharmony_ci uint8_t ifName[IFNAMSIZ]; 554094332d3Sopenharmony_ci} WifiIfRemove; 555094332d3Sopenharmony_ci 556094332d3Sopenharmony_citypedef struct { 557094332d3Sopenharmony_ci uint32_t ieLen; 558094332d3Sopenharmony_ci uint8_t appIeType; 559094332d3Sopenharmony_ci uint8_t rsv[3]; 560094332d3Sopenharmony_ci uint8_t *ie; 561094332d3Sopenharmony_ci} WifiAppIe; 562094332d3Sopenharmony_ci 563094332d3Sopenharmony_citypedef struct { 564094332d3Sopenharmony_ci uint64_t drvFlags; 565094332d3Sopenharmony_ci} WifiGetDrvFlags; 566094332d3Sopenharmony_ci 567094332d3Sopenharmony_ciint32_t WifiEapolPacketSend(const char *ifName, const uint8_t *srcAddr, const uint8_t *dstAddr, uint8_t *buf, 568094332d3Sopenharmony_ci uint32_t length); 569094332d3Sopenharmony_ciint32_t WifiEapolPacketReceive(const char *ifName, WifiRxEapol *rxEapol); 570094332d3Sopenharmony_ciint32_t WifiEapolEnable(const char *ifName); 571094332d3Sopenharmony_ciint32_t WifiEapolDisable(const char *ifName); 572094332d3Sopenharmony_ciint32_t WifiCmdSetAp(const char *ifName, WifiApSetting *apsettings); 573094332d3Sopenharmony_ciint32_t WifiCmdChangeBeacon(const char *ifName, WifiApSetting *apsettings); 574094332d3Sopenharmony_ciint32_t WifiCmdSendMlme(const char *ifName, WifiMlmeData *mlme); 575094332d3Sopenharmony_ciint32_t WifiCmdDelKey(const char *ifName, WifiKeyExt *keyExt); 576094332d3Sopenharmony_ciint32_t WifiCmdNewKey(const char *ifName, WifiKeyExt *keyExt); 577094332d3Sopenharmony_ciint32_t WifiCmdSetKey(const char *ifName, WifiKeyExt *keyExt); 578094332d3Sopenharmony_ciint32_t WifiCmdSetMode(const char *ifName, WifiSetMode *setMode); 579094332d3Sopenharmony_ciint32_t WifiCmdGetOwnMac(const char *ifName, char *buf, uint32_t len); 580094332d3Sopenharmony_ciint32_t WifiCmdGetHwFeature(const char *ifName, WifiHwFeatureData *hwFeatureData); 581094332d3Sopenharmony_ciint32_t WifiCmdScan(const char *ifName, WifiScan *scan); 582094332d3Sopenharmony_ciint32_t WifiCmdDisconnet(const char *ifName, int32_t reasonCode); 583094332d3Sopenharmony_ciint32_t WifiCmdAssoc(const char *ifName, WifiAssociateParams *assocParams); 584094332d3Sopenharmony_ciint32_t WifiCmdSetNetdev(const char *ifName, WifiSetNewDev *info); 585094332d3Sopenharmony_ciint32_t WifiCmdStaRemove(const char *ifName, const uint8_t *addr, uint32_t addrLen); 586094332d3Sopenharmony_ciint32_t WifiCmdSendAction(const char *ifName, WifiActionData *actionData); 587094332d3Sopenharmony_ciint32_t WifiCmdSetClient(uint32_t clientNum); 588094332d3Sopenharmony_ciint32_t WifiCmdProbeReqReport(const char *ifName, const int32_t *report); 589094332d3Sopenharmony_ciint32_t WifiCmdRemainOnChannel(const char *ifName, const WifiOnChannel *onChannel); 590094332d3Sopenharmony_ciint32_t WifiCmdCancelRemainOnChannel(const char *ifName); 591094332d3Sopenharmony_ciint32_t WifiCmdAddIf(const char *ifName, const WifiIfAdd *ifAdd); 592094332d3Sopenharmony_ciint32_t WifiCmdRemoveIf(const char *ifName, const WifiIfRemove *ifRemove); 593094332d3Sopenharmony_ciint32_t WifiCmdSetApWpsP2pIe(const char *ifName, const WifiAppIe *appIe); 594094332d3Sopenharmony_ciint32_t WifiCmdGetDrvFlags(const char *ifName, WifiGetDrvFlags *params); 595094332d3Sopenharmony_ci#ifdef __cplusplus 596094332d3Sopenharmony_ci#if __cplusplus 597094332d3Sopenharmony_ci} 598094332d3Sopenharmony_ci#endif 599094332d3Sopenharmony_ci#endif 600094332d3Sopenharmony_ci 601094332d3Sopenharmony_ci#endif /* end of wifi_driver_client.h */ 602