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