• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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_STA_HAL_INTERFACE_H
17 #define OHOS_WIFI_STA_HAL_INTERFACE_H
18 
19 #include <string>
20 #include <vector>
21 #include "define.h"
22 #include "wifi_base_hal_interface.h"
23 #include "wifi_event_callback.h"
24 #include "wifi_native_struct.h"
25 #include "i_wifi_struct.h"
26 #include "wifi_error_no.h"
27 #include "wifi_msg.h"
28 #include "inter_scan_info.h"
29 
30 namespace OHOS {
31 namespace Wifi {
32 class WifiStaHalInterface : public WifiBaseHalInterface {
33 public:
34     /**
35      * @Description Get the Instance object.
36      *
37      * @return WifiStaHalInterface&
38      */
39     static WifiStaHalInterface &GetInstance(void);
40 
41     /**
42      * @Description Open Wifi.
43      *
44      * @return WifiErrorNo
45      */
46     WifiErrorNo StartWifi(const std::string &ifaceName = "wlan0", int instId = 0);
47 
48     /**
49      * @Description Close Wifi.
50      *
51      * @return WifiErrorNo
52      */
53     WifiErrorNo StopWifi(int instId = 0);
54 
55     /**
56      * @Description Connect Wifi.
57      *
58      * @param networkId
59      * @return WifiErrorNo
60      */
61     WifiErrorNo Connect(int networkId, const std::string &ifaceName);
62 
63     /**
64      * @Description Reconnect Wifi.
65      *
66      * @return WifiErrorNo
67      */
68     WifiErrorNo Reconnect(void);
69 
70     /**
71      * @Description Reassociate Wifi.
72      *
73      * @return WifiErrorNo
74      */
75     WifiErrorNo Reassociate(const std::string &ifaceName);
76 
77     /**
78      * @Description Disconnect Wifi.
79      *
80      * @return WifiErrorNo
81      */
82     WifiErrorNo Disconnect(const std::string &ifaceName);
83 
84     /**
85      * @Description Obtaining the STA Support Capability.
86      *
87      * @param capabilities
88      * @return WifiErrorNo
89      */
90     WifiErrorNo GetStaCapabilities(unsigned int &capabilities);
91 
92     /**
93      * @Description Obtaining the MAC Address of a STA.
94      *
95      * @param mac
96      * @return WifiErrorNo
97      */
98     WifiErrorNo GetStaDeviceMacAddress(std::string &mac, const std::string &ifaceName, int macSrc = 0);
99 
100     /**
101      * @Description Sets the Wi-Fi country code.
102      *
103      * @param code
104      * @return WifiErrorNo
105      */
106     WifiErrorNo SetWifiCountryCode(const std::string &ifaceName, const std::string &code);
107 
108     /**
109      * @Description Obtains the frequencies supported by a specified frequency band.
110      *
111      * @param band
112      * @param frequencies
113      * @return WifiErrorNo
114      */
115     WifiErrorNo GetSupportFrequencies(const std::string &ifaceName, int band, std::vector<int> &frequencies);
116 
117     /**
118      * @Description Sets the MAC address of the Wi-Fi connection.
119      *
120      * @param mac
121      * @return WifiErrorNo
122      */
123     WifiErrorNo SetConnectMacAddr(const std::string &ifaceName, const std::string &mac);
124 
125     /**
126      * @Description Sets the MAC address for Wi-Fi scanning.
127      *
128      * @param mac
129      * @return WifiErrorNo
130      */
131     WifiErrorNo SetScanMacAddress(const std::string &mac);
132 
133     /**
134      * @Description Disconnect the BSSID of the last roaming subscriber.
135      *
136      * @param mac
137      * @return WifiErrorNo
138      */
139     WifiErrorNo DisconnectLastRoamingBssid(const std::string &mac);
140 
141     /**
142      * @Description Get total supported feature, and call user can
143      *              determine whether support a feature.
144      *
145      * @param feature
146      * @return WifiErrorNo
147      */
148     WifiErrorNo GetSupportFeature(long &feature);
149 
150     /**
151      * @Description Set the Wi-Fi transmit power.
152      *
153      * @param power
154      * @return WifiErrorNo
155      */
156     WifiErrorNo SetTxPower(int power);
157 
158     /**
159      * @Description Scan by specified parameter.
160      *
161      * @param scanParam
162      * @return WifiErrorNo
163      */
164     WifiErrorNo Scan(const std::string &ifaceName, const WifiHalScanParam &scanParam);
165 
166     /**
167      * @Description Obtain the scanning result.
168      *
169      * @param scanResults
170      * @return WifiErrorNo
171      */
172     WifiErrorNo QueryScanInfos(const std::string &ifaceName, std::vector<InterScanInfo> &scanInfos);
173 
174     /**
175      * @Description Initiate PNO scanning.
176      *
177      * @param scanParam
178      * @return WifiErrorNo
179      */
180     WifiErrorNo StartPnoScan(const std::string &ifaceName, const WifiHalPnoScanParam &scanParam);
181 
182     /**
183      * @Description Stop PNO Scanning.
184      *
185      * @return WifiErrorNo
186      */
187     WifiErrorNo StopPnoScan(const std::string &ifaceName);
188 
189     /**
190      * @Description Deleting a Network.
191      *
192      * @param networkId
193      * @return WifiErrorNo
194      */
195     WifiErrorNo RemoveDevice(int networkId);
196 
197     /**
198      * @Description Clears the network configuration information saved by wpa_supplicant.
199      *
200      * @return WifiErrorNo
201      */
202     WifiErrorNo ClearDeviceConfig(const std::string &ifaceName) const;
203 
204     /**
205      * @Description Request to obtain the next network ID.
206      *
207      * @param networkId
208      * @return WifiErrorNo
209      */
210     WifiErrorNo GetNextNetworkId(int &networkId, const std::string &ifaceName);
211 
212     /**
213      * @Description Enable a network.
214      *
215      * @param networkId
216      * @return WifiErrorNo
217      */
218     WifiErrorNo EnableNetwork(int networkId, const std::string &ifaceName);
219 
220     /**
221      * @Description Disable a network.
222      *
223      * @param networkId
224      * @return WifiErrorNo
225      */
226     WifiErrorNo DisableNetwork(int networkId, const std::string &ifaceName);
227 
228     /**
229      * @Description Setting the network.
230      *
231      * @param networkId
232      * @param config
233      * @return WifiErrorNo
234      */
235     WifiErrorNo SetDeviceConfig(int networkId, const WifiHalDeviceConfig &config, const std::string &ifaceName);
236 
237     /**
238      * @Description Obtaining Network Configurations.
239      *
240      * @param config
241      * @return WifiErrorNo
242      */
243     WifiErrorNo GetDeviceConfig(WifiHalGetDeviceConfig &config, const std::string &ifaceName);
244 
245     /**
246      * @Description Save network config.
247      *
248      * @return WifiErrorNo
249      */
250     WifiErrorNo SaveDeviceConfig(void);
251 
252     /**
253      * @Description Registering the Sta Event Callback.
254      *
255      * @param callback
256      * @return WifiErrorNo
257      */
258     WifiErrorNo RegisterStaEventCallback(const WifiEventCallback &callback, const std::string &ifaceName);
259 
260     /**
261      * @Description Enabling WPS in PBC Mode.
262      *
263      * @param config
264      * @return WifiErrorNo
265      */
266     WifiErrorNo StartWpsPbcMode(const WifiHalWpsConfig &config);
267 
268     /**
269      * @Description Enable PIN mode WPS.
270      *
271      * @param config
272      * @param pinCode
273      * @return WifiErrorNo
274      */
275     WifiErrorNo StartWpsPinMode(const WifiHalWpsConfig &config, int &pinCode);
276 
277     /**
278      * @Description Close wps.
279      *
280      * @return WifiErrorNo
281      */
282     WifiErrorNo StopWps(void);
283 
284     /**
285      * @Description Obtains the roaming support capability.
286      *
287      * @param capability
288      * @return WifiErrorNo
289      */
290     WifiErrorNo GetRoamingCapabilities(WifiHalRoamCapability &capability);
291 
292     /**
293      * @Description Set bssid to supplicant.
294      *
295      * @param networkId
296      * @param bssid
297      * @return WifiErrorNo
298      */
299     WifiErrorNo SetBssid(int networkId, const std::string &bssid, const std::string &ifaceName);
300 
301     /**
302      * @Description Setting Roaming Configurations.
303      *
304      * @param config
305      * @return WifiErrorNo
306      */
307     WifiErrorNo SetRoamConfig(const WifiHalRoamConfig &config);
308 
309     /**
310      * @Description Wpa_s disable/enable(0/1) automatic reconnection.
311      *
312      * @param enable
313      * @return WifiErrorNo
314      */
315     WifiErrorNo WpaAutoConnect(int enable);
316 
317     /**
318      * @Description Clearing the wpa Blocklist.
319      *
320      * @return WifiErrorNo
321      */
322     WifiErrorNo WpaBlocklistClear();
323 
324     /**
325      * @Description Obtaining the Network List.
326      *
327      * @param networkList
328      * @return WifiErrorNo
329      */
330     WifiErrorNo GetNetworkList(std::vector<WifiHalWpaNetworkInfo> &networkList);
331 
332     /**
333      * @Description Get current connect signal info, rssi, linkspeed, noise ...
334      *
335      * @param endBssid - peer end bssid, i.e. linked ap's bssid
336      * @param info - signal info
337      * @return WifiErrorNo
338      */
339     WifiErrorNo GetConnectSignalInfo(const std::string &ifaceName, const std::string &endBssid,
340         WifiSignalPollInfo &info);
341 
342     /**
343      * @Description set power save mode
344      *
345      * @param frequency - connected ap frequency
346      * @param mode - power save mode
347      */
348     WifiErrorNo SetPmMode(const std::string &ifaceName, int frequency, int mode);
349 
350     /**
351      * @Description set data packet identification mark rule
352      *
353      * @param uid - target app uid
354      * @param protocol - target protocol type
355      * @param enable - enable/disable dpi mark
356      */
357     WifiErrorNo SetDpiMarkRule(const std::string &ifaceName, int uid, int protocol, int enable);
358 
359     /**
360      * @Description Send SIM/AKA/AKA' authentication to wpa
361      *
362      * @param ifName: Interface name
363      * @param cmd: Request message content
364      * @return WifiErrorNo
365      */
366     WifiErrorNo ShellCmd(const std::string &ifName, const std::string &cmd);
367 
368     /**
369      * @Description get psk pass phrase
370      *
371      * @param ifName: Interface name
372      * @param psk: psk
373      * @return WifiErrorNo
374      */
375     WifiErrorNo GetPskPassphrase(const std::string &ifName, std::string &psk);
376 
377     /**
378      * @Description set background limit speed uid&pid list
379      *
380      * @param chipsetCategory - chipset category
381      */
382     WifiErrorNo GetChipsetCategory(const std::string &ifaceName, int& chipsetCategory);
383 
384     /**
385      * @Description set background limit speed uid&pid list
386      *
387      * @param chipsetFeatrureCapability - chipset featrure capability
388      */
389     WifiErrorNo GetChipsetWifiFeatrureCapability(const std::string &ifaceName, int& chipsetFeatrureCapability);
390 
391     /**
392      * @Description Set network interface updown.
393      *
394      * @return WifiErrorNo
395      */
396     WifiErrorNo SetNetworkInterfaceUpDown(const std::string &ifaceName, bool upDown);
397 
398     /**
399      * @Description Get register callback objects
400      *
401      * @return const WifiEventCallback& - register sta callback objects
402      */
403     const WifiEventCallback &GetCallbackInst(const std::string &ifaceName) const;
404 
405     /**
406      * @Description Get register callback objects for death receiver
407      *
408      * @return const std::function<void(int)>& - register death callback objects
409      */
410     const std::function<void(int)> &GetDeathCallbackInst(void) const;
411 
412     /**
413      * @Description Register the native process callback.
414      *
415      * @param callback
416      * @return WifiErrorNo
417      */
418     WifiErrorNo RegisterNativeProcessCallback(const std::function<void(int)> &callback);
419 
420     /**
421      * @Description get wifi7 mlo link info
422      *
423      * @param ifName - interface name
424      * @param mloLinkInfo - MLO link info
425      * @return WifiErrorNo
426      */
427     WifiErrorNo GetConnectionMloLinkedInfo(const std::string &ifName, std::vector<WifiLinkedInfo> &mloLinkInfo);
428 
429     /**
430      * @Description get wifi7 mlo signal poll info
431      *
432      * @param ifName - interface name
433      * @param mloLinkInfo - MLO signal poll info
434      * @return WifiErrorNo
435      */
436     WifiErrorNo GetConnectionMloSignalInfo(const std::string &ifName, std::vector<WifiMloSignalInfo> &mloSignalInfo);
437 
438 private:
439 #ifdef READ_MAC_FROM_OEM
440     std::string GetWifiOeminfoMac();
441     std::string wifiOemMac_ = "";
442 #endif
443 
444 private:
445     WifiEventCallback mStaCallback[2];
446     std::function<void(int)> mDeathCallback;
447 };
448 }  // namespace Wifi
449 }  // namespace OHOS
450 
451 #endif