1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 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 WPA_CLIENT_H 17094332d3Sopenharmony_ci#define WPA_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#define ETH_ADDR_LEN 6 29094332d3Sopenharmony_ci#ifndef IFNAMSIZ 30094332d3Sopenharmony_ci#define IFNAMSIZ 16 31094332d3Sopenharmony_ci#endif 32094332d3Sopenharmony_ci#define WIFI_REASON_LENGTH 32 33094332d3Sopenharmony_ci#define WIFI_SSID_LENGTH 132 34094332d3Sopenharmony_ci 35094332d3Sopenharmony_ci#define WIFI_P2P_DEVICE_TYPE_LENGTH 64 36094332d3Sopenharmony_ci#define WIFI_P2P_DEVICE_NAME_LENGTH 128 37094332d3Sopenharmony_ci#define WIFI_P2P_WFD_DEVICE_INFO_LENGTH 128 38094332d3Sopenharmony_ci#define WIFI_P2P_PASSWORD_SIZE 128 39094332d3Sopenharmony_ci#define WIFI_P2P_GROUP_IFNAME_LENGTH 128 40094332d3Sopenharmony_ci#define WIFI_PIN_CODE_LENGTH 8 41094332d3Sopenharmony_ci#define WIFI_P2P_TLVS_LENGTH 256 42094332d3Sopenharmony_ci#define WIFI_BSSID_LEN 6 43094332d3Sopenharmony_ci#define WPA_VENDOR_DATA_LEN 256 44094332d3Sopenharmony_ci#define WPA_VENDOR_SSID_LEN 32 45094332d3Sopenharmony_ci#define WPA_VENDOR_PSK_LEN 64 46094332d3Sopenharmony_ci 47094332d3Sopenharmony_citypedef enum { 48094332d3Sopenharmony_ci WPA_EVENT_DISCONNECT = 0, 49094332d3Sopenharmony_ci WPA_EVENT_CONNECT, 50094332d3Sopenharmony_ci WPA_EVENT_BSSID_CHANGE, 51094332d3Sopenharmony_ci WPA_EVENT_STATE_CHANGED, 52094332d3Sopenharmony_ci WPA_EVENT_TEMP_DISABLE, 53094332d3Sopenharmony_ci WPA_EVENT_ASSOCIATE_REJECT, 54094332d3Sopenharmony_ci WPA_EVENT_WPS_OVERLAP, 55094332d3Sopenharmony_ci WPA_EVENT_WPS_TIMEMOUT, 56094332d3Sopenharmony_ci WPA_EVENT_RECV_SCAN_RESULT, 57094332d3Sopenharmony_ci WPA_EVENT_DEVICE_FOUND, 58094332d3Sopenharmony_ci WPA_EVENT_DEVICE_LOST, 59094332d3Sopenharmony_ci WPA_EVENT_GO_NEGOTIATION_REQUEST, 60094332d3Sopenharmony_ci WPA_EVENT_GO_NEGOTIATION_COMPLETED, 61094332d3Sopenharmony_ci WPA_EVENT_INVITATION_RECEIVED, 62094332d3Sopenharmony_ci WPA_EVENT_INVITATION_RESULT, 63094332d3Sopenharmony_ci WPA_EVENT_GROUP_FORMATION_SUCCESS, 64094332d3Sopenharmony_ci WPA_EVENT_GROUP_FORMATION_FAILURE, 65094332d3Sopenharmony_ci WPA_EVENT_GROUP_START, 66094332d3Sopenharmony_ci WPA_EVENT_GROUP_REMOVED, 67094332d3Sopenharmony_ci WPA_EVENT_PROVISION_DISCOVERY_COMPLETED, 68094332d3Sopenharmony_ci WPA_EVENT_FIND_STOPPED, 69094332d3Sopenharmony_ci WPA_EVENT_SERV_DISC_REQ, 70094332d3Sopenharmony_ci WPA_EVENT_SERV_DISC_RESP, 71094332d3Sopenharmony_ci WPA_EVENT_STA_CONNECT_STATE, 72094332d3Sopenharmony_ci WPA_EVENT_IFACE_CREATED, 73094332d3Sopenharmony_ci WPA_EVENT_STA_AUTH_REJECT, 74094332d3Sopenharmony_ci WPA_EVENT_STA_NOTIFY, 75094332d3Sopenharmony_ci WPA_EVENT_VENDOR_EXT, 76094332d3Sopenharmony_ci WPA_EVENT_AUTH_TIMEOUT, 77094332d3Sopenharmony_ci} WpaCallBackEventType; 78094332d3Sopenharmony_ci 79094332d3Sopenharmony_cienum WpaClientType { 80094332d3Sopenharmony_ci /* 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9 | 1<<10 ... | 1<<29 */ 81094332d3Sopenharmony_ci WIFI_WPA_TO_HAL_CLIENT = (1 << 29) - 1, 82094332d3Sopenharmony_ci WIFI_WPA_CLIENT_BUTT 83094332d3Sopenharmony_ci}; 84094332d3Sopenharmony_ci 85094332d3Sopenharmony_cistruct WpaDisconnectParam { 86094332d3Sopenharmony_ci unsigned char bssid[WIFI_BSSID_LEN]; 87094332d3Sopenharmony_ci int reasonCode; 88094332d3Sopenharmony_ci int locallyGenerated; 89094332d3Sopenharmony_ci}; 90094332d3Sopenharmony_ci 91094332d3Sopenharmony_cistruct WpaConnectParam { 92094332d3Sopenharmony_ci unsigned char bssid[WIFI_BSSID_LEN]; 93094332d3Sopenharmony_ci int networkId; 94094332d3Sopenharmony_ci}; 95094332d3Sopenharmony_ci 96094332d3Sopenharmony_cistruct WpaBssidChangedParam { 97094332d3Sopenharmony_ci unsigned char bssid[WIFI_BSSID_LEN]; 98094332d3Sopenharmony_ci unsigned char reason[WIFI_REASON_LENGTH]; 99094332d3Sopenharmony_ci}; 100094332d3Sopenharmony_ci 101094332d3Sopenharmony_cistruct WpaStateChangedParam { 102094332d3Sopenharmony_ci int status; 103094332d3Sopenharmony_ci unsigned char bssid[WIFI_BSSID_LEN]; 104094332d3Sopenharmony_ci int networkId; 105094332d3Sopenharmony_ci unsigned char ssid[WIFI_SSID_LENGTH]; 106094332d3Sopenharmony_ci}; 107094332d3Sopenharmony_ci 108094332d3Sopenharmony_cistruct WpaTempDisabledParam { 109094332d3Sopenharmony_ci int networkId; 110094332d3Sopenharmony_ci unsigned char ssid[WIFI_SSID_LENGTH]; 111094332d3Sopenharmony_ci int authFailures; 112094332d3Sopenharmony_ci int duration; 113094332d3Sopenharmony_ci unsigned char reason[WIFI_REASON_LENGTH]; 114094332d3Sopenharmony_ci}; 115094332d3Sopenharmony_ci 116094332d3Sopenharmony_cistruct WpaAssociateRejectParam { 117094332d3Sopenharmony_ci unsigned char bssid[WIFI_BSSID_LEN]; 118094332d3Sopenharmony_ci int statusCode; 119094332d3Sopenharmony_ci int timeOut; 120094332d3Sopenharmony_ci}; 121094332d3Sopenharmony_ci 122094332d3Sopenharmony_cistruct WpaAuthRejectParam { 123094332d3Sopenharmony_ci unsigned char bssid[WIFI_BSSID_LEN]; 124094332d3Sopenharmony_ci unsigned short authType; 125094332d3Sopenharmony_ci unsigned short authTransaction; 126094332d3Sopenharmony_ci unsigned short statusCode; 127094332d3Sopenharmony_ci}; 128094332d3Sopenharmony_ci 129094332d3Sopenharmony_cistruct WpaRecvScanResultParam { 130094332d3Sopenharmony_ci unsigned int scanId; 131094332d3Sopenharmony_ci}; 132094332d3Sopenharmony_ci 133094332d3Sopenharmony_cistruct P2pDeviceInfoParam { 134094332d3Sopenharmony_ci unsigned char srcAddress[ETH_ADDR_LEN]; 135094332d3Sopenharmony_ci unsigned char p2pDeviceAddress[ETH_ADDR_LEN]; 136094332d3Sopenharmony_ci unsigned char primaryDeviceType[WIFI_P2P_DEVICE_TYPE_LENGTH]; 137094332d3Sopenharmony_ci unsigned char deviceName[WIFI_P2P_DEVICE_NAME_LENGTH]; 138094332d3Sopenharmony_ci int configMethods; 139094332d3Sopenharmony_ci int deviceCapabilities; 140094332d3Sopenharmony_ci int groupCapabilities; 141094332d3Sopenharmony_ci unsigned char wfdDeviceInfo[WIFI_P2P_WFD_DEVICE_INFO_LENGTH]; 142094332d3Sopenharmony_ci unsigned int wfdLength; 143094332d3Sopenharmony_ci unsigned char operSsid[WIFI_P2P_DEVICE_NAME_LENGTH]; 144094332d3Sopenharmony_ci}; 145094332d3Sopenharmony_ci 146094332d3Sopenharmony_cistruct P2pDeviceLostParam { 147094332d3Sopenharmony_ci unsigned char p2pDeviceAddress[ETH_ADDR_LEN]; 148094332d3Sopenharmony_ci int networkId; 149094332d3Sopenharmony_ci}; 150094332d3Sopenharmony_ci 151094332d3Sopenharmony_cistruct P2pGoNegotiationRequestParam { 152094332d3Sopenharmony_ci unsigned char srcAddress[ETH_ADDR_LEN]; 153094332d3Sopenharmony_ci int passwordId; 154094332d3Sopenharmony_ci}; 155094332d3Sopenharmony_ci 156094332d3Sopenharmony_cistruct P2pGoNegotiationCompletedParam { 157094332d3Sopenharmony_ci int status; 158094332d3Sopenharmony_ci}; 159094332d3Sopenharmony_ci 160094332d3Sopenharmony_cistruct P2pInvitationReceivedParam { 161094332d3Sopenharmony_ci int type; /* 0:Received, 1:Accepted */ 162094332d3Sopenharmony_ci int persistentNetworkId; 163094332d3Sopenharmony_ci int operatingFrequency; 164094332d3Sopenharmony_ci unsigned char srcAddress[ETH_ADDR_LEN]; 165094332d3Sopenharmony_ci unsigned char goDeviceAddress[ETH_ADDR_LEN]; 166094332d3Sopenharmony_ci unsigned char bssid[ETH_ADDR_LEN]; 167094332d3Sopenharmony_ci}; 168094332d3Sopenharmony_ci 169094332d3Sopenharmony_cistruct P2pInvitationResultParam { 170094332d3Sopenharmony_ci int status; 171094332d3Sopenharmony_ci unsigned char bssid[ETH_ADDR_LEN]; 172094332d3Sopenharmony_ci}; 173094332d3Sopenharmony_ci 174094332d3Sopenharmony_cistruct P2pGroupStartedParam { 175094332d3Sopenharmony_ci int isGo; 176094332d3Sopenharmony_ci int isPersistent; 177094332d3Sopenharmony_ci int frequency; 178094332d3Sopenharmony_ci unsigned char groupIfName[WIFI_P2P_GROUP_IFNAME_LENGTH]; 179094332d3Sopenharmony_ci unsigned char ssid[WIFI_SSID_LENGTH]; 180094332d3Sopenharmony_ci unsigned char psk[WIFI_P2P_PASSWORD_SIZE]; 181094332d3Sopenharmony_ci unsigned char passphrase[WIFI_P2P_PASSWORD_SIZE]; 182094332d3Sopenharmony_ci unsigned char goDeviceAddress[ETH_ADDR_LEN]; 183094332d3Sopenharmony_ci unsigned char goRandomDeviceAddress[ETH_ADDR_LEN]; 184094332d3Sopenharmony_ci}; 185094332d3Sopenharmony_ci 186094332d3Sopenharmony_cistruct P2pGroupRemovedParam { 187094332d3Sopenharmony_ci int isGo; 188094332d3Sopenharmony_ci unsigned char groupIfName[WIFI_P2P_GROUP_IFNAME_LENGTH]; 189094332d3Sopenharmony_ci}; 190094332d3Sopenharmony_ci 191094332d3Sopenharmony_cistruct P2pProvisionDiscoveryCompletedParam { 192094332d3Sopenharmony_ci int isRequest; 193094332d3Sopenharmony_ci int provDiscStatusCode; 194094332d3Sopenharmony_ci int configMethods; 195094332d3Sopenharmony_ci unsigned char p2pDeviceAddress[ETH_ADDR_LEN]; 196094332d3Sopenharmony_ci unsigned char generatedPin[WIFI_PIN_CODE_LENGTH]; 197094332d3Sopenharmony_ci}; 198094332d3Sopenharmony_ci 199094332d3Sopenharmony_cistruct P2pServDiscRespParam { 200094332d3Sopenharmony_ci int updateIndicator; 201094332d3Sopenharmony_ci unsigned char srcAddress[ETH_ADDR_LEN]; 202094332d3Sopenharmony_ci unsigned char tlvs[WIFI_P2P_TLVS_LENGTH]; 203094332d3Sopenharmony_ci}; 204094332d3Sopenharmony_ci 205094332d3Sopenharmony_cistruct P2pStaConnectStateParam { 206094332d3Sopenharmony_ci int state; 207094332d3Sopenharmony_ci unsigned char srcAddress[ETH_ADDR_LEN]; 208094332d3Sopenharmony_ci unsigned char p2pDeviceAddress[ETH_ADDR_LEN]; 209094332d3Sopenharmony_ci}; 210094332d3Sopenharmony_ci 211094332d3Sopenharmony_cistruct P2pServDiscReqInfoParam { 212094332d3Sopenharmony_ci int freq; 213094332d3Sopenharmony_ci int dialogToken; 214094332d3Sopenharmony_ci int updateIndic; 215094332d3Sopenharmony_ci unsigned char mac[ETH_ADDR_LEN]; 216094332d3Sopenharmony_ci unsigned char tlvs[WIFI_P2P_TLVS_LENGTH]; 217094332d3Sopenharmony_ci}; 218094332d3Sopenharmony_ci 219094332d3Sopenharmony_cistruct P2pIfaceCreatedParam { 220094332d3Sopenharmony_ci int isGo; 221094332d3Sopenharmony_ci}; 222094332d3Sopenharmony_ci 223094332d3Sopenharmony_citypedef int32_t (*OnReceiveFunc)(uint32_t event, void *data, const char *ifName); 224094332d3Sopenharmony_ci 225094332d3Sopenharmony_cistruct WpaCallbackEvent { 226094332d3Sopenharmony_ci uint32_t eventType; /* eventmap */ 227094332d3Sopenharmony_ci char ifName[IFNAMSIZ + 1]; 228094332d3Sopenharmony_ci OnReceiveFunc onRecFunc; 229094332d3Sopenharmony_ci}; 230094332d3Sopenharmony_ci 231094332d3Sopenharmony_cistruct WpaVendorExtInfo { 232094332d3Sopenharmony_ci int type; 233094332d3Sopenharmony_ci int freq; 234094332d3Sopenharmony_ci int width; 235094332d3Sopenharmony_ci int id; 236094332d3Sopenharmony_ci int status; 237094332d3Sopenharmony_ci int reason; 238094332d3Sopenharmony_ci unsigned char ssid[WPA_VENDOR_SSID_LEN]; 239094332d3Sopenharmony_ci unsigned char psk[WPA_VENDOR_PSK_LEN]; 240094332d3Sopenharmony_ci unsigned char devAddr[ETH_ADDR_LEN]; 241094332d3Sopenharmony_ci unsigned char data[WPA_VENDOR_DATA_LEN]; 242094332d3Sopenharmony_ci}; 243094332d3Sopenharmony_ci 244094332d3Sopenharmony_civoid WpaEventReport(const char *ifName, uint32_t event, void *data); 245094332d3Sopenharmony_ciint32_t WpaRegisterEventCallback(OnReceiveFunc onRecFunc, uint32_t eventType, const char *ifName); 246094332d3Sopenharmony_ciint32_t WpaUnregisterEventCallback(OnReceiveFunc onRecFunc, uint32_t eventType, const char *ifName); 247094332d3Sopenharmony_civoid ReleaseEventCallback(void); 248094332d3Sopenharmony_ci#endif 249