1 /* 2 * Copyright (C) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef WIFI_P2P_HAL_H 17 #define WIFI_P2P_HAL_H 18 19 #include <stdlib.h> 20 #include <string.h> 21 #include <malloc.h> 22 #include <stdint.h> 23 #include <pthread.h> 24 #include <sys/types.h> 25 #include "wifi_hal_p2p_struct.h" 26 #include "wifi_hal_struct.h" 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 #define P2P_PIN_KEYPAD 1 33 #define P2P_PIN_DISPLAY 2 34 #define P2P_GROUP_IFACE_MAX_LENGTH 128 35 #define P2P_INTERFACE_CREATED "P2P-INTERFACE-CREATED " 36 #define CTRL_EVENT_DISCONNECTED "CTRL-EVENT-DISCONNECTED" 37 #define CTRL_EVENT_CHANNEL_SWITCH "CTRL-EVENT-CHANNEL-SWITCH" 38 39 typedef struct stWifiWpaP2pInterface WifiWpaP2pInterface; 40 struct stWifiWpaP2pInterface { 41 char ifName[WIFI_IFACE_NAME_MAXLEN]; 42 43 P2pSupplicantErrCode (*wpaP2pCliCmdSetWpsName)(WifiWpaP2pInterface *p, const char *name); 44 P2pSupplicantErrCode (*wpaP2pCliCmdSetWpsDeviceType)(WifiWpaP2pInterface *p, const char *type); 45 P2pSupplicantErrCode (*wpaP2pCliCmdSetWpsSecDeviceType)(WifiWpaP2pInterface *p, const char *type); 46 P2pSupplicantErrCode (*wpaP2pCliCmdSetWpsConfigMethods)(WifiWpaP2pInterface *p, const char *methods); 47 P2pSupplicantErrCode (*wpaP2pCliCmdSetSsidPostfixName)(WifiWpaP2pInterface *p, const char *name); 48 P2pSupplicantErrCode (*wpaP2pCliCmdGetDeviceAddress)(WifiWpaP2pInterface *p, char *devAddress, int size); 49 P2pSupplicantErrCode (*wpaP2pCliCmdFlush)(WifiWpaP2pInterface *p); 50 P2pSupplicantErrCode (*wpaP2pCliCmdFlushService)(WifiWpaP2pInterface *p); 51 P2pSupplicantErrCode (*wpaP2pCliCmdP2pStopFind)(WifiWpaP2pInterface *p); 52 P2pSupplicantErrCode (*wpaP2pCliCmdP2pRemoveGroup)(WifiWpaP2pInterface *p, const char *groupname); 53 P2pSupplicantErrCode (*wpaP2pCliCmdP2pRemoveClient)(WifiWpaP2pInterface *p, const char *deviceMac); 54 P2pSupplicantErrCode (*wpaP2pCliCmdP2pFound)(WifiWpaP2pInterface *p, int timeout); 55 P2pSupplicantErrCode (*wpaP2pCliCmdRemoveNetwork)(WifiWpaP2pInterface *p, int networkId); 56 P2pSupplicantErrCode (*wpaP2pCliCmdSetWfdEnable)(WifiWpaP2pInterface *p, int enable); 57 P2pSupplicantErrCode (*wpaP2pCliCmdSetWfdDeviceInfo)(WifiWpaP2pInterface *p, const char *conf); 58 P2pSupplicantErrCode (*wpaP2pCliCmdExtListen)(WifiWpaP2pInterface *p, int enable, int period, int interval); 59 P2pSupplicantErrCode (*wpaP2pCliCmdSetListenChannel)(WifiWpaP2pInterface *p, int channel, int regClass); 60 P2pSupplicantErrCode (*wpaP2pCliCmdCancelConnect)(WifiWpaP2pInterface *p); 61 P2pSupplicantErrCode (*wpaP2pCliCmdInvite)(WifiWpaP2pInterface *p, const P2pHalInviteArgv *argv); 62 P2pSupplicantErrCode (*wpaP2pCliCmdReInvite)(WifiWpaP2pInterface *p, const P2pHalReInviteArgv *argv); 63 P2pSupplicantErrCode (*wpaP2pCliCmdServiceAdd)(WifiWpaP2pInterface *p, const P2pServiceInfo *argv); 64 P2pSupplicantErrCode (*wpaP2pCliCmdServiceDel)(WifiWpaP2pInterface *p, const P2pServiceInfo *argv); 65 P2pSupplicantErrCode (*wpaP2pCliCmdServDiscReq)( 66 WifiWpaP2pInterface *p, const char *peerBssid, const char *tlvs, char *retSeq, unsigned size); 67 P2pSupplicantErrCode (*wpaP2pCliCmdServDiscCancelReq)(WifiWpaP2pInterface *p, const char *val); 68 P2pSupplicantErrCode (*wpaP2pCliCmdProvisionDiscovery)( 69 WifiWpaP2pInterface *p, const P2pProvisionDiscoveryArgv *argv); 70 P2pSupplicantErrCode (*wpaP2pCliCmdGroupAdd)(WifiWpaP2pInterface *p, int isPersistent, int networkId, int freq); 71 P2pSupplicantErrCode (*wpaP2pCliCmdStoreConfig)(WifiWpaP2pInterface *p); 72 P2pSupplicantErrCode (*wpaP2pCliCmdNetworkList)(WifiWpaP2pInterface *p, P2pNetworkList *infoList); 73 P2pSupplicantErrCode (*wpaP2pCliCmdConnect)(WifiWpaP2pInterface *p, P2pConnectInfo *info); 74 P2pSupplicantErrCode (*wpaP2pCliCmdSetPersistentReconnect)(WifiWpaP2pInterface *p, int status); 75 P2pSupplicantErrCode (*wpaP2pCliCmdRespServerDiscovery)(WifiWpaP2pInterface *p, P2pServDiscReqInfo *info); 76 P2pSupplicantErrCode (*wpaP2pCliCmdSetServDiscExternal)(WifiWpaP2pInterface *p, int mode); 77 P2pSupplicantErrCode (*wpaP2pCliCmdSetRandomMac)(WifiWpaP2pInterface *p, int mode); 78 P2pSupplicantErrCode (*wpaP2pCliCmdP2pGetPeer)( 79 WifiWpaP2pInterface *p, const char *bssid, P2pDeviceInfo *peerInfo); 80 P2pSupplicantErrCode (*wpaP2pCliCmdP2pGetChba0Freq)(WifiWpaP2pInterface *p, int *chba0Freq); 81 P2pSupplicantErrCode (*wpaP2pCliCmdSetGroupConfig)(WifiWpaP2pInterface *p, const P2pWpaGroupConfigArgv *argv); 82 P2pSupplicantErrCode (*wpaP2pCliCmdGetGroupConfig)(WifiWpaP2pInterface *p, P2pWpaGroupConfigArgv *argv); 83 P2pSupplicantErrCode (*wpaP2pCliCmdAddNetwork)(WifiWpaP2pInterface *p, int *networkId); 84 P2pSupplicantErrCode (*wpaP2pCliCmdHid2dConnect)(WifiWpaP2pInterface *p, Hid2dConnectInfo *info); 85 }; 86 87 typedef struct stWifiWpaP2pGroupInterface WifiWpaP2pGroupInterface; 88 struct stWifiWpaP2pGroupInterface { 89 WifiWpaP2pGroupInterface *next; 90 char groupIfname[P2P_GROUP_IFACE_MAX_LENGTH]; 91 P2pSupplicantErrCode (*wpaP2pCliCmdWpsPbc)(WifiWpaP2pGroupInterface *p, const char *bssid); 92 P2pSupplicantErrCode (*wpaP2pCliCmdWpsPin)(WifiWpaP2pGroupInterface *p, P2pWpsPinDisplayArgv *argv); 93 P2pSupplicantErrCode (*wpaP2pCliCmdSetPowerSave)(WifiWpaP2pGroupInterface *p, int enable); 94 P2pSupplicantErrCode (*wpaP2pCliCmdSetGroupIdle)(WifiWpaP2pGroupInterface *p, int timeout); 95 }; 96 97 WifiWpaP2pInterface *GetWifiWapP2pInterface(void); 98 void RelesaeWpaP2pInterface(void); 99 WifiErrorNo ConvertP2pErrCode(P2pSupplicantErrCode code); 100 WifiWpaP2pGroupInterface *GetWifiWpaP2pGroupInterface(const char *groupIfc); 101 void ReleaseWpaP2pGroupInterface(const char *groupIfc); 102 103 #ifdef __cplusplus 104 } 105 #endif 106 #endif 107