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