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 OHOS_WIFI_NATIVE_STRUCT_H
17 #define OHOS_WIFI_NATIVE_STRUCT_H
18 
19 #include <string>
20 #include <vector>
21 #include "wifi_native_define.h"
22 
23 namespace OHOS {
24 namespace Wifi {
25 struct WifiHalEapConfig {
26     std::string eap;                        /* EAP authentication mode:PEAP/TLS/TTLS/PWD/SIM/AKA/AKA' */
27     int phase2Method;                       /* Second stage authentication method */
28     std::string identity;                   /* Identity information */
29     std::string anonymousIdentity;          /* Anonymous identity information */
30     char password[HAL_PASSWORD_LEN];       /* EAP mode password */
31 
32     std::string caCertPath;                 /* CA certificate path */
33     std::string caCertAlias;                /* CA certificate alias */
34     std::vector<uint8_t> certEntry;       /* CA certificate entry */
35 
36     std::string clientCert;                 /* Client certificate */
37     char certPassword[HAL_PASSWORD_LEN];   /* Certificate password */
38     std::string privateKey;                 /* Client certificate private key */
39 
40     std::string altSubjectMatch;            /* Alternative topic matching */
41     std::string domainSuffixMatch;          /* Domain suffix matching */
42     std::string realm;                      /* The field of passport credentials */
43     std::string plmn;                       /* PLMN */
44     int eapSubId;                           /* Sub ID of SIM card */
WifiHalEapConfigWifiHalEapConfig45     WifiHalEapConfig() : phase2Method(0), password{0}, certPassword{0}, eapSubId(-1)
46     {}
47 
~WifiHalEapConfigWifiHalEapConfig48     ~WifiHalEapConfig()
49     {}
50 };
51 
52 struct WifiHalDeviceConfig {
53     int networkId;
54     int priority;
55     int scanSsid;
56     int authAlgorithms; /* WifiDeviceConfig.allowedAuthAlgorithms */
57     int wepKeyIdx;
58     std::string wepKeys[HAL_MAX_WEPKEYS_SIZE]; /* max set 4 wepkeys */
59     std::string ssid;
60     std::string psk;
61     std::string keyMgmt;
62     WifiHalEapConfig eapConfig;
63     std::string bssid;
64     bool isRequirePmf;
65     int allowedProtocols;
66     int allowedPairwiseCiphers;
67     int allowedGroupCiphers;
68     int allowedGroupMgmtCiphers;
69     int wapiPskType;
70     std::string wapiAsCertData;
71     std::string wapiUserCertData;
WifiHalDeviceConfigWifiHalDeviceConfig72     WifiHalDeviceConfig() : networkId(-1), priority(-1), scanSsid(-1), authAlgorithms(-1), wepKeyIdx(-1),
73                             isRequirePmf(false), allowedProtocols(-1), allowedPairwiseCiphers(-1),
74                             allowedGroupCiphers(-1), allowedGroupMgmtCiphers(-1), wapiPskType(-1)
75     {}
76 
~WifiHalDeviceConfigWifiHalDeviceConfig77     ~WifiHalDeviceConfig()
78     {}
79 };
80 
81 struct WifiHalGetDeviceConfig {
82     int networkId;
83     std::string param;
84     std::string value;
85 
WifiHalGetDeviceConfigWifiHalGetDeviceConfig86     WifiHalGetDeviceConfig() : networkId(-1)
87     {}
88 
~WifiHalGetDeviceConfigWifiHalGetDeviceConfig89     ~WifiHalGetDeviceConfig()
90     {}
91 };
92 
93 struct WifiHalWpsConfig {
94     int anyFlag;
95     int multiAp;
96     std::string bssid;
97     std::string pinCode;
98 
WifiHalWpsConfigWifiHalWpsConfig99     WifiHalWpsConfig() : anyFlag(-1), multiAp(-1)
100     {}
101 
~WifiHalWpsConfigWifiHalWpsConfig102     ~WifiHalWpsConfig()
103     {}
104 };
105 
106 struct WifiHalWpaSignalInfo {
107     int signal;
108     int txrate;
109     int rxrate;
110     int noise;
111     int frequency;
112     int txPackets;
113     int rxPackets;
114     int snr;
115     int chload;
116     int ulDelay;
117     int txBytes;
118     int rxBytes;
119     int txFailed;
120     int chloadSelf;
121     int c0Rssi;
122     int c1Rssi;
123 
WifiHalWpaSignalInfoWifiHalWpaSignalInfo124     WifiHalWpaSignalInfo() : signal(0), txrate(0), rxrate(0), noise(0), frequency(0),
125         txPackets(0), rxPackets(0), snr(0), chload(0), ulDelay(0), txBytes(0), rxBytes(0),
126         txFailed(0), chloadSelf(0), c0Rssi(0), c1Rssi(0)
127     {}
128 
~WifiHalWpaSignalInfoWifiHalWpaSignalInfo129     ~WifiHalWpaSignalInfo()
130     {}
131 };
132 
133 struct WifiHalRoamCapability {
134     int maxBlocklistSize;
135     int maxTrustlistSize;
136 
WifiHalRoamCapabilityWifiHalRoamCapability137     WifiHalRoamCapability() : maxBlocklistSize(0), maxTrustlistSize(0)
138     {}
139 
~WifiHalRoamCapabilityWifiHalRoamCapability140     ~WifiHalRoamCapability()
141     {}
142 };
143 
144 struct WifiHalRoamConfig {
145     std::vector<std::string> blocklistBssids;
146     std::vector<std::string> trustlistBssids;
147 };
148 
149 struct WifiHalWpaNetworkInfo {
150     int id;
151     std::string ssid;
152     std::string bssid;
153     std::string flag;
154 
WifiHalWpaNetworkInfoWifiHalWpaNetworkInfo155     WifiHalWpaNetworkInfo() : id(0)
156     {}
157 
~WifiHalWpaNetworkInfoWifiHalWpaNetworkInfo158     ~WifiHalWpaNetworkInfo()
159     {}
160 };
161 
162 struct HalP2pDeviceFound {
163     std::string srcAddress;
164     std::string p2pDeviceAddress;
165     std::string primaryDeviceType;
166     std::string deviceName;
167     int configMethods;
168     int deviceCapabilities;
169     int groupCapabilities;
170     std::vector<char> wfdDeviceInfo;
171 
HalP2pDeviceFoundHalP2pDeviceFound172     HalP2pDeviceFound() : configMethods(0), deviceCapabilities(0), groupCapabilities(0)
173     {}
174 
~HalP2pDeviceFoundHalP2pDeviceFound175     ~HalP2pDeviceFound()
176     {}
177 };
178 
179 struct HalP2pInvitationInfo {
180     int type; /* 0:Received, 1:Accepted */
181     int persistentNetworkId;
182     int operatingFrequency;
183     std::string srcAddress;
184     std::string goDeviceAddress;
185     std::string bssid;
186 
HalP2pInvitationInfoHalP2pInvitationInfo187     HalP2pInvitationInfo() : type(0), persistentNetworkId(0), operatingFrequency(0)
188     {}
189 
~HalP2pInvitationInfoHalP2pInvitationInfo190     ~HalP2pInvitationInfo()
191     {}
192 };
193 
194 struct HalP2pGroupInfo {
195     int isGo;
196     int isPersistent;
197     int frequency;
198     std::string groupName;
199     std::string ssid;
200     std::string psk;
201     std::string passphrase;
202     std::string goDeviceAddress;
203     std::string goRandomAddress;
204 
HalP2pGroupInfoHalP2pGroupInfo205     HalP2pGroupInfo() : isGo(0), isPersistent(0), frequency(0)
206     {}
207 
~HalP2pGroupInfoHalP2pGroupInfo208     ~HalP2pGroupInfo()
209     {}
210 };
211 
212 struct HalP2pServDiscReqInfo {
213     int freq;
214     int dialogToken;
215     int updateIndic;
216     std::string mac;
217     std::vector<unsigned char> tlvList;
218 
HalP2pServDiscReqInfoHalP2pServDiscReqInfo219     HalP2pServDiscReqInfo() : freq(0), dialogToken(0), updateIndic(0)
220     {}
221 
~HalP2pServDiscReqInfoHalP2pServDiscReqInfo222     ~HalP2pServDiscReqInfo()
223     {}
224 };
225 
226 struct HalP2pGroupConfig {
227     std::string ssid;
228     std::string bssid;
229     std::string psk;
230     std::string proto;
231     std::string keyMgmt;
232     std::string pairwise;
233     std::string authAlg;
234     int mode;
235     int disabled;
236 
HalP2pGroupConfigHalP2pGroupConfig237     HalP2pGroupConfig()
238         : bssid("00:00:00:00:00:00"),
239           proto("RSN"),
240           keyMgmt("WPA-PSK"),
241           pairwise("CCMP"),
242           authAlg("OPEN"),
243           mode(0),
244           disabled(0)
245     {}
246 
~HalP2pGroupConfigHalP2pGroupConfig247     ~HalP2pGroupConfig()
248     {}
249 };
250 
251 struct WifiHalScanParam {
252     std::vector<std::string> hiddenNetworkSsid; /* Hiding Network SSIDs */
253     std::vector<int> scanFreqs;                 /* Scan frequency */
254     int scanStyle;
WifiHalScanParamWifiHalScanParam255     WifiHalScanParam()
256     {
257         scanStyle = 0;
258     }
259 };
260 
261 struct WifiHalPnoScanParam {
262     int scanInterval;                    /* PNO Scan Interval */
263     std::vector<int> scanFreqs;          /* Scanning frequency */
264     std::vector<std::string> hiddenSsid; /* Network name of hidden network */
265     std::vector<std::string> savedSsid;  /* Network name of saved network */
266     int minRssi2Dot4Ghz;                 /* Minimum 2.4 GHz network signal strength */
267     int minRssi5Ghz;                     /* Minimum 5 GHz network signal strength */
268 
WifiHalPnoScanParamWifiHalPnoScanParam269     WifiHalPnoScanParam()
270     {
271         scanFreqs.clear();
272         hiddenSsid.clear();
273         savedSsid.clear();
274 
275         scanInterval = 0;
276         minRssi2Dot4Ghz = 0;
277         minRssi5Ghz = 0;
278     }
279 
~WifiHalPnoScanParamWifiHalPnoScanParam280     ~WifiHalPnoScanParam()
281     {
282         scanFreqs.clear();
283         hiddenSsid.clear();
284         savedSsid.clear();
285     }
286 };
287 
288 struct WifiHalApConnectionNofify {
289     int type;
290     std::string mac;
291 
WifiHalApConnectionNofifyWifiHalApConnectionNofify292     WifiHalApConnectionNofify() : type(0)
293     {}
294 
~WifiHalApConnectionNofifyWifiHalApConnectionNofify295     ~WifiHalApConnectionNofify()
296     {}
297 };
298 
299 }  // namespace Wifi
300 }  // namespace OHOS
301 #endif