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