1 /* 2 * Copyright (C) 2024 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 WPA_P2P_HAL_H 17 #define WPA_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 "wpa_hal_p2p_struct.h" 26 #include "wpa_hal_struct.h" 27 #include "v1_1/iwpa_interface.h" 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #define P2P_PIN_KEYPAD 1 34 #define P2P_PIN_DISPLAY 2 35 #define P2P_GROUP_IFACE_MAX_LENGTH 128 36 #define P2P_INTERFACE_CREATED "P2P-INTERFACE-CREATED " 37 #define CTRL_EVENT_DISCONNECTED "CTRL-EVENT-DISCONNECTED" 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 (*wpaP2pCliCmdP2pFound)(WifiWpaP2pInterface *p, int timeout); 54 P2pSupplicantErrCode (*wpaP2pCliCmdRemoveNetwork)(WifiWpaP2pInterface *p, int networkId); 55 P2pSupplicantErrCode (*wpaP2pCliCmdSetWfdEnable)(WifiWpaP2pInterface *p, int enable); 56 P2pSupplicantErrCode (*wpaP2pCliCmdSetWfdDeviceInfo)(WifiWpaP2pInterface *p, const char *conf); 57 P2pSupplicantErrCode (*wpaP2pCliCmdExtListen)(WifiWpaP2pInterface *p, int enable, int period, int interval); 58 P2pSupplicantErrCode (*wpaP2pCliCmdSetListenChannel)(WifiWpaP2pInterface *p, int channel, int regClass); 59 P2pSupplicantErrCode (*wpaP2pCliCmdCancelConnect)(WifiWpaP2pInterface *p); 60 P2pSupplicantErrCode (*wpaP2pCliCmdInvite)(WifiWpaP2pInterface *p, const P2pHalInviteArgv *argv); 61 P2pSupplicantErrCode (*wpaP2pCliCmdReInvite)(WifiWpaP2pInterface *p, const P2pHalReInviteArgv *argv); 62 P2pSupplicantErrCode (*wpaP2pCliCmdServiceAdd)(WifiWpaP2pInterface *p, const struct HdiP2pServiceInfo *argv); 63 P2pSupplicantErrCode (*wpaP2pCliCmdServiceDel)(WifiWpaP2pInterface *p, const struct HdiP2pServiceInfo *argv); 64 P2pSupplicantErrCode (*wpaP2pCliCmdServDiscReq)( 65 WifiWpaP2pInterface *p, const char *peerBssid, const char *tlvs, char *retSeq, unsigned size); 66 P2pSupplicantErrCode (*wpaP2pCliCmdServDiscCancelReq)(WifiWpaP2pInterface *p, const char *val); 67 P2pSupplicantErrCode (*wpaP2pCliCmdProvisionDiscovery)( 68 WifiWpaP2pInterface *p, const P2pProvisionDiscoveryArgv *argv); 69 P2pSupplicantErrCode (*wpaP2pCliCmdGroupAdd)(WifiWpaP2pInterface *p, int isPersistent, int networkId, int freq); 70 P2pSupplicantErrCode (*wpaP2pCliCmdStoreConfig)(WifiWpaP2pInterface *p); 71 P2pSupplicantErrCode (*wpaP2pCliCmdSetPersistentReconnect)(WifiWpaP2pInterface *p, int status); 72 P2pSupplicantErrCode (*wpaP2pCliCmdRespServerDiscovery)(WifiWpaP2pInterface *p, 73 const struct HdiP2pServDiscReqInfo *info); 74 P2pSupplicantErrCode (*wpaP2pCliCmdSetServDiscExternal)(WifiWpaP2pInterface *p, int mode); 75 P2pSupplicantErrCode (*wpaP2pCliCmdSetRandomMac)(WifiWpaP2pInterface *p, int mode); 76 P2pSupplicantErrCode (*wpaP2pCliCmdP2pGetChba0Freq)(WifiWpaP2pInterface *p, int *chba0Freq); 77 P2pSupplicantErrCode (*wpaP2pCliCmdSetGroupConfig)(WifiWpaP2pInterface *p, const P2pWpaGroupConfigArgv *argv); 78 P2pSupplicantErrCode (*wpaP2pCliCmdGetGroupConfig)(WifiWpaP2pInterface *p, P2pWpaGroupConfigArgv *argv); 79 P2pSupplicantErrCode (*wpaP2pCliCmdAddNetwork)(WifiWpaP2pInterface *p, int *networkId); 80 P2pSupplicantErrCode (*wpaP2pCliCmdHid2dConnect)(WifiWpaP2pInterface *p, Hid2dConnectInfo *info); 81 }; 82 83 typedef struct StWifiWpaP2pGroupInterface WifiWpaP2pGroupInterface; 84 struct StWifiWpaP2pGroupInterface { 85 WifiWpaP2pGroupInterface *next; 86 char groupIfname[P2P_GROUP_IFACE_MAX_LENGTH]; 87 P2pSupplicantErrCode (*wpaP2pCliCmdWpsPbc)(WifiWpaP2pGroupInterface *p, const char *bssid); 88 P2pSupplicantErrCode (*wpaP2pCliCmdWpsPin)(WifiWpaP2pGroupInterface *p, P2pWpsPinDisplayArgv *argv); 89 P2pSupplicantErrCode (*wpaP2pCliCmdSetPowerSave)(WifiWpaP2pGroupInterface *p, int enable); 90 P2pSupplicantErrCode (*wpaP2pCliCmdSetGroupIdle)(WifiWpaP2pGroupInterface *p, int timeout); 91 }; 92 93 WifiWpaP2pInterface *GetWifiWapP2pInterface(const char *ifName); 94 void RelesaeWpaP2pInterface(void); 95 WifiErrorNo ConvertP2pErrCode(P2pSupplicantErrCode code); 96 WifiWpaP2pGroupInterface *GetWifiWpaP2pGroupInterface(const char *groupIfc); 97 void ReleaseWpaP2pGroupInterface(const char *groupIfc); 98 99 #ifdef __cplusplus 100 } 101 #endif 102 #endif 103