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 #ifndef OHOS_I_WIFI_P2P_H 16 #define OHOS_I_WIFI_P2P_H 17 18 #include "wifi_errcode.h" 19 #include "iremote_broker.h" 20 #include "message_parcel.h" 21 #include "message_option.h" 22 #include "wifi_p2p_msg.h" 23 #include "i_wifi_p2p_callback.h" 24 #include "wifi_hid2d_msg.h" 25 26 namespace OHOS { 27 namespace Wifi { 28 class IWifiP2p : public IRemoteBroker { 29 public: ~IWifiP2p()30 virtual ~IWifiP2p() 31 {} 32 33 /** 34 * @Description Enabling the P2P Mode. 35 * 36 * @return ErrCode - operation result 37 */ 38 virtual ErrCode EnableP2p(void) = 0; 39 40 /** 41 * @Description Disable the P2P mode. 42 * 43 * @return ErrCode - operation result 44 */ 45 virtual ErrCode DisableP2p(void) = 0; 46 47 /** 48 * @Description Start Wi-Fi P2P device search. 49 * 50 * @return ErrCode - operation result 51 */ 52 virtual ErrCode DiscoverDevices(void) = 0; 53 54 /** 55 * @Description Stop Wi-Fi P2P device search. 56 * 57 * @return ErrCode - operation result 58 */ 59 virtual ErrCode StopDiscoverDevices(void) = 0; 60 61 /** 62 * @Description Start the search for the Wi-Fi P2P service. 63 * 64 * @return ErrCode - operation result 65 */ 66 virtual ErrCode DiscoverServices(void) = 0; 67 68 /** 69 * @Description Stop the search for the Wi-Fi P2P service. 70 * 71 * @return ErrCode - operation result 72 */ 73 virtual ErrCode StopDiscoverServices(void) = 0; 74 75 /** 76 * @Description request the P2P service. 77 * 78 * @param device - WifiP2pDevice object 79 * @param request - WifiP2pServiceRequest object 80 * @return ErrCode - operation result 81 */ 82 virtual ErrCode RequestService(const WifiP2pDevice &device, const WifiP2pServiceRequest &request) = 0; 83 84 /** 85 * @Description Register the local P2P service. 86 * 87 * @param srvInfo - WifiP2pServiceInfo object 88 * @return ErrCode - operation result 89 */ 90 virtual ErrCode PutLocalP2pService(const WifiP2pServiceInfo &srvInfo) = 0; 91 92 /** 93 * @Description Delete the local P2P service. 94 * 95 * @param srvInfo - WifiP2pServiceInfo object 96 * @return ErrCode - operation result 97 */ 98 virtual ErrCode DeleteLocalP2pService(const WifiP2pServiceInfo &srvInfo) = 0; 99 100 /** 101 * @Description Enable Wi-Fi P2P listening. 102 * 103 * @param period - period 104 * @param interval - interval 105 * @return ErrCode - operation result 106 */ 107 virtual ErrCode StartP2pListen(int period, int interval) = 0; 108 109 /** 110 * @Description Disable Wi-Fi P2P listening. 111 * 112 * @return ErrCode - operation result 113 */ 114 virtual ErrCode StopP2pListen(void) = 0; 115 116 /** 117 * @Description Creating a P2P Group. 118 * 119 * @param config - WifiP2pGroupInfo object 120 * @return ErrCode - operation result 121 */ 122 virtual ErrCode CreateGroup(const WifiP2pConfig &config) = 0; 123 124 /** 125 * @Description Remove a P2P Group. 126 * 127 * @return ErrCode - operation result 128 */ 129 virtual ErrCode RemoveGroup(void) = 0; 130 131 /** 132 * @Description Remove a P2P client of current group. 133 * 134 * @param deviceMac - client deviceMac address 135 * @return ErrCode - operation result 136 */ 137 virtual ErrCode RemoveGroupClient(const GcInfo &info) = 0; 138 139 /** 140 * @Description Delete a p2p Group. 141 * 142 * @param group - WifiP2pGroupInfo object 143 * @return ErrCode - operation result 144 */ 145 virtual ErrCode DeleteGroup(const WifiP2pGroupInfo &group) = 0; 146 147 /** 148 * @Description P2P connection. 149 * 150 * @param config - WifiP2pConfig object 151 * @return ErrCode - operation result 152 */ 153 virtual ErrCode P2pConnect(const WifiP2pConfig &config) = 0; 154 155 /** 156 * @Description Canceling a P2P connection. 157 * 158 * @return ErrCode - operation result 159 */ 160 virtual ErrCode P2pCancelConnect(void) = 0; 161 162 /** 163 * @Description Querying Wi-Fi P2P Connection Information. 164 * 165 * @param linkedInfo - Get the WifiP2pLinkedInfo msg 166 * @return ErrCode - operation result 167 */ 168 virtual ErrCode QueryP2pLinkedInfo(WifiP2pLinkedInfo& linkedInfo) = 0; 169 170 /** 171 * @Description Get the Current Group object. 172 * 173 * @param group - the WifiP2pGroupInfo object 174 * @return ErrCode - operation result 175 */ 176 virtual ErrCode GetCurrentGroup(WifiP2pGroupInfo &group) = 0; 177 178 /** 179 * @Description Obtains the P2P switch status. 180 * 181 * @param status - the P2P switch status 182 * @return ErrCode - operation result 183 */ 184 virtual ErrCode GetP2pEnableStatus(int &status) = 0; 185 186 /** 187 * @Description Obtains the P2P discovery status. 188 * 189 * @param status - the P2P discovery status 190 * @return ErrCode 191 */ 192 virtual ErrCode GetP2pDiscoverStatus(int &status) = 0; 193 194 /** 195 * @Description Obtains the P2P connection status. 196 * 197 * @param status - the P2P connection status 198 * @return ErrCode - operation result 199 */ 200 virtual ErrCode GetP2pConnectedStatus(int &status) = 0; 201 202 /** 203 * @Description Query the information about the found devices. 204 * 205 * @param devices - Get result vector of WifiP2pDevice 206 * @return ErrCode - operation result 207 */ 208 virtual ErrCode QueryP2pDevices(std::vector<WifiP2pDevice> &devices) = 0; 209 210 /** 211 * @Description - Query the information about own device. 212 * @param device - own device 213 * @return ErrCode - operation result 214 */ 215 virtual ErrCode QueryP2pLocalDevice(WifiP2pDevice &device) = 0; 216 217 /** 218 * @Description Query the information about the found groups. 219 * 220 * @param groups - Get result vector of WifiP2pGroupInfo 221 * @return ErrCode - operation result 222 */ 223 virtual ErrCode QueryP2pGroups(std::vector<WifiP2pGroupInfo> &groups) = 0; 224 225 /** 226 * @Description Query the service information. 227 * 228 * @param services - Get result vector of Device 229 * @return ErrCode - operation result 230 */ 231 virtual ErrCode QueryP2pServices(std::vector<WifiP2pServiceInfo> &services) = 0; 232 233 /** 234 * @Description Register callback function. 235 * 236 * @param callback - IWifiP2pCallback object 237 * @return ErrCode - operation result 238 */ 239 virtual ErrCode RegisterCallBack(const sptr<IWifiP2pCallback> &callback, const std::vector<std::string> &event) = 0; 240 241 /** 242 * @Description Get supported features 243 * 244 * @param features - return supported features 245 * @return ErrCode - operation result 246 */ 247 virtual ErrCode GetSupportedFeatures(long &features) = 0; 248 249 /** 250 * @Description set the device name 251 * 252 * @param deviceName - device name 253 * @return ErrCode - operation result 254 */ 255 virtual ErrCode SetP2pDeviceName(const std::string &deviceName) = 0; 256 257 /** 258 * @Description set p2p wifi display info 259 * 260 * @param wfdInfo - wifi display info 261 * @return ErrCode - operation result 262 */ 263 virtual ErrCode SetP2pWfdInfo(const WifiP2pWfdInfo &wfdInfo) = 0; 264 265 /** 266 * @Description Request an IP address to the Gc from the IP address pool, used on the GO side. 267 * 268 * @param gcMac - gc mac address 269 * @param ipAddr - applied ip address 270 * @return ErrCode - operation result 271 */ 272 virtual ErrCode Hid2dRequestGcIp(const std::string& gcMac, std::string& ipAddr) = 0; 273 274 /** 275 * @Description Increase(+1) hid2d shared link reference counting 276 * 277 * @return ErrCode - operation result 278 */ 279 virtual ErrCode Hid2dSharedlinkIncrease() = 0; 280 281 /** 282 * @Description Decrease(-1) hid2d shared link reference counting 283 * 284 * @return ErrCode - operation result 285 */ 286 virtual ErrCode Hid2dSharedlinkDecrease() = 0; 287 288 /** 289 * @Description Create hid2d group, used on the GO side. 290 * 291 * @param frequency - frequency 292 * @param type - frequency type 293 * @return ErrCode - operation result 294 */ 295 virtual ErrCode Hid2dCreateGroup(const int frequency, FreqType type) = 0; 296 297 /** 298 * @Description The GC side actively disconnects from the GO, used on the GC side. 299 * 300 * @param gcIfName - network interface name 301 * @return ErrCode - operation result 302 */ 303 virtual ErrCode Hid2dRemoveGcGroup(const std::string& gcIfName) = 0; 304 305 /** 306 * @Description Connect to a specified group using hid2d, used on the GC side. 307 * 308 * @param config - connection parameters 309 * @return ErrCode - operation result 310 */ 311 virtual ErrCode Hid2dConnect(const Hid2dConnectConfig& config) = 0; 312 313 /** 314 * @Description Configuring IP addresses for P2P network interfaces, used on the GC side. 315 * 316 * @param ifName - network interface name 317 * @param ipInfo - IP infos 318 * @return ErrCode - operation result 319 */ 320 virtual ErrCode Hid2dConfigIPAddr(const std::string& ifName, const IpAddrInfo& ipInfo) = 0; 321 322 /** 323 * @Description Clear IP address when the P2P connection is disconnected, used on the GC side. 324 * 325 * @param ifName - network interface name 326 * @return ErrCode - operation result 327 */ 328 virtual ErrCode Hid2dReleaseIPAddr(const std::string& ifName) = 0; 329 330 /** 331 * @Description Obtain the recommended channel and bandwidth for link setup 332 * 333 * @param request - request data 334 * @param response - response result 335 * @return ErrCode - operation result 336 */ 337 virtual ErrCode Hid2dGetRecommendChannel(const RecommendChannelRequest& request, 338 RecommendChannelResponse& response) = 0; 339 340 /** 341 * @Description get 5G channel list 342 * 343 * @param vecChannelList - result for channel list 344 * @return ErrCode - operation result 345 */ 346 virtual ErrCode Hid2dGetChannelListFor5G(std::vector<int>& vecChannelList) = 0; 347 348 /** 349 * @Description get the self wifi configuration information 350 * 351 * @param cfgType - configuration type 352 * @param cfgData - the queried data of wifi configuration 353 * @param getDatValidLen - the valid data length in the array `cfgData` 354 * @return ErrCode - operation result 355 */ 356 virtual ErrCode Hid2dGetSelfWifiCfgInfo(SelfCfgType cfgType, 357 char cfgData[CFG_DATA_MAX_BYTES], int* getDatValidLen) = 0; 358 359 /** 360 * @Description set the peer wifi configuration information 361 * 362 * @param cfgType - configuration type 363 * @param cfgData - the wifi configuration data to be set 364 * @param setDataValidLen - the valid data length in the array `cfgData` 365 * @return ErrCode - operation result 366 */ 367 virtual ErrCode Hid2dSetPeerWifiCfgInfo(PeerCfgType cfgType, 368 char cfgData[CFG_DATA_MAX_BYTES], int setDataValidLen) = 0; 369 370 /** 371 * @Description Set the scene of upper layer 372 * 373 * @param ifName - interface name 374 * @param scene - scene 375 * @return ErrCode - operate result 376 */ 377 virtual ErrCode Hid2dSetUpperScene(const std::string& ifName, const Hid2dUpperScene& scene) = 0; 378 379 /** 380 * @Description Discover p2p device 381 * 382 * @return ErrCode - operate result 383 */ 384 virtual ErrCode DiscoverPeers(int32_t channelid) = 0; 385 386 /** 387 * @Description Disable random mac 388 * 389 * @return bool - true: service is died, false: service is not died. 390 */ 391 virtual ErrCode DisableRandomMac(int setmode) = 0; 392 393 /** 394 * @Description Check can use P2P 395 * 396 * @return ErrCode - operation result 397 */ 398 virtual ErrCode CheckCanUseP2p() = 0; 399 400 /** 401 * @Description Check whether service is died. 402 * 403 * @return bool - true: service is died, false: service is not died. 404 */ 405 virtual bool IsRemoteDied(void) = 0; 406 407 /** 408 * @Description Hid2d Is Wide Bandwidth Supported 409 * 410 * @param isSupport - is support 160M 411 * @return ErrCode - operation result 412 */ 413 virtual ErrCode Hid2dIsWideBandwidthSupported(bool &isSupport) = 0; 414 415 public: 416 DECLARE_INTERFACE_DESCRIPTOR(u"ohos.wifi.IWifiP2pService"); 417 }; 418 } // namespace Wifi 419 } // namespace OHOS 420 #endif