• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
16 #include "wifi_p2p_hal_interface.h"
17 #include "wifi_log.h"
18 #include <mutex>
19 
20 #undef LOG_TAG
21 #define LOG_TAG "WifiP2PHalInterface"
22 
23 namespace OHOS {
24 namespace Wifi {
GetInstance(void)25 WifiP2PHalInterface &WifiP2PHalInterface::GetInstance(void)
26 {
27     static WifiP2PHalInterface inst;
28     static int initFlag = 0;
29     static std::mutex initMutex;
30     if (initFlag == 0) {
31         std::unique_lock<std::mutex> lock(initMutex);
32         if (initFlag == 0) {
33             if (inst.InitIdlClient()) {
34                 initFlag = 1;
35             }
36         }
37     }
38     return inst;
39 }
40 
StartP2p(void) const41 WifiErrorNo WifiP2PHalInterface::StartP2p(void) const
42 {
43     return mIdlClient->ReqP2pStart();
44 }
45 
StopP2p(void) const46 WifiErrorNo WifiP2PHalInterface::StopP2p(void) const
47 {
48     return mIdlClient->ReqP2pStop();
49 }
50 
RegisterP2pCallback(const P2pHalCallback & callbacks)51 WifiErrorNo WifiP2PHalInterface::RegisterP2pCallback(const P2pHalCallback &callbacks)
52 {
53     WifiErrorNo err = mIdlClient->ReqP2pRegisterCallback(callbacks);
54     if (err == WIFI_IDL_OPT_OK || callbacks.onConnectSupplicant == nullptr) {
55         mP2pCallback = callbacks;
56     }
57     return err;
58 }
59 
StartWpsPbc(const std::string & groupInterface,const std::string & bssid) const60 WifiErrorNo WifiP2PHalInterface::StartWpsPbc(const std::string &groupInterface, const std::string &bssid) const
61 {
62     return mIdlClient->ReqP2pSetupWpsPbc(groupInterface, bssid);
63 }
64 
StartWpsPin(const std::string & groupInterface,const std::string & address,const std::string & pin,std::string & result) const65 WifiErrorNo WifiP2PHalInterface::StartWpsPin(
66     const std::string &groupInterface, const std::string &address, const std::string &pin, std::string &result) const
67 {
68     return mIdlClient->ReqP2pSetupWpsPin(groupInterface, address, pin, result);
69 }
70 
RemoveNetwork(int networkId) const71 WifiErrorNo WifiP2PHalInterface::RemoveNetwork(int networkId) const
72 {
73     return mIdlClient->ReqP2pRemoveNetwork(networkId);
74 }
75 
ListNetworks(std::map<int,WifiP2pGroupInfo> & mapGroups) const76 WifiErrorNo WifiP2PHalInterface::ListNetworks(std::map<int, WifiP2pGroupInfo> &mapGroups) const
77 {
78     return mIdlClient->ReqP2pListNetworks(mapGroups);
79 }
80 
SetP2pDeviceName(const std::string & name) const81 WifiErrorNo WifiP2PHalInterface::SetP2pDeviceName(const std::string &name) const
82 {
83     return mIdlClient->ReqP2pSetDeviceName(name);
84 }
85 
SetP2pDeviceType(const std::string & type) const86 WifiErrorNo WifiP2PHalInterface::SetP2pDeviceType(const std::string &type) const
87 {
88     return mIdlClient->ReqP2pSetWpsDeviceType(type);
89 }
90 
SetP2pSecondaryDeviceType(const std::string & type)91 WifiErrorNo WifiP2PHalInterface::SetP2pSecondaryDeviceType(const std::string &type)
92 {
93     return mIdlClient->ReqP2pSetWpsSecondaryDeviceType(type);
94 }
95 
SetP2pConfigMethods(const std::string & methods) const96 WifiErrorNo WifiP2PHalInterface::SetP2pConfigMethods(const std::string &methods) const
97 {
98     return mIdlClient->ReqP2pSetWpsConfigMethods(methods);
99 }
100 
SetP2pSsidPostfix(const std::string & postfixName) const101 WifiErrorNo WifiP2PHalInterface::SetP2pSsidPostfix(const std::string &postfixName) const
102 {
103     return mIdlClient->ReqP2pSetSsidPostfixName(postfixName);
104 }
105 
SetP2pGroupIdle(const std::string & groupInterface,size_t time) const106 WifiErrorNo WifiP2PHalInterface::SetP2pGroupIdle(const std::string &groupInterface, size_t time) const
107 {
108     return mIdlClient->ReqP2pSetGroupMaxIdle(groupInterface, time);
109 }
110 
SetP2pPowerSave(const std::string & groupInterface,bool enable) const111 WifiErrorNo WifiP2PHalInterface::SetP2pPowerSave(const std::string &groupInterface, bool enable) const
112 {
113     return mIdlClient->ReqP2pSetPowerSave(groupInterface, enable);
114 }
115 
SetWfdEnable(bool enable) const116 WifiErrorNo WifiP2PHalInterface::SetWfdEnable(bool enable) const
117 {
118     return mIdlClient->ReqP2pSetWfdEnable(enable);
119 }
120 
SetWfdDeviceConfig(const std::string & config) const121 WifiErrorNo WifiP2PHalInterface::SetWfdDeviceConfig(const std::string &config) const
122 {
123     return mIdlClient->ReqP2pSetWfdDeviceConfig(config);
124 }
125 
P2pFind(size_t timeout) const126 WifiErrorNo WifiP2PHalInterface::P2pFind(size_t timeout) const
127 {
128     return mIdlClient->ReqP2pStartFind(timeout);
129 }
130 
P2pStopFind() const131 WifiErrorNo WifiP2PHalInterface::P2pStopFind() const
132 {
133     return mIdlClient->ReqP2pStopFind();
134 }
135 
P2pConfigureListen(bool enable,size_t period,size_t interval) const136 WifiErrorNo WifiP2PHalInterface::P2pConfigureListen(bool enable, size_t period, size_t interval) const
137 {
138     return mIdlClient->ReqP2pSetExtListen(enable, period, interval);
139 }
140 
SetListenChannel(size_t channel,unsigned char regClass) const141 WifiErrorNo WifiP2PHalInterface::SetListenChannel(size_t channel, unsigned char regClass) const
142 {
143     return mIdlClient->ReqP2pSetListenChannel(channel, regClass);
144 }
145 
P2pFlush() const146 WifiErrorNo WifiP2PHalInterface::P2pFlush() const
147 {
148     return mIdlClient->ReqP2pFlush();
149 }
150 
Connect(const WifiP2pConfigInternal & config,bool isJoinExistingGroup,std::string & pin) const151 WifiErrorNo WifiP2PHalInterface::Connect(const WifiP2pConfigInternal &config, bool isJoinExistingGroup,
152     std::string &pin) const
153 {
154     return mIdlClient->ReqP2pConnect(config, isJoinExistingGroup, pin);
155 }
156 
CancelConnect() const157 WifiErrorNo WifiP2PHalInterface::CancelConnect() const
158 {
159     return mIdlClient->ReqP2pCancelConnect();
160 }
161 
ProvisionDiscovery(const WifiP2pConfigInternal & config) const162 WifiErrorNo WifiP2PHalInterface::ProvisionDiscovery(const WifiP2pConfigInternal &config) const
163 {
164     return mIdlClient->ReqP2pProvisionDiscovery(config);
165 }
166 
GroupAdd(bool isPersistent,int networkId,int freq) const167 WifiErrorNo WifiP2PHalInterface::GroupAdd(bool isPersistent, int networkId, int freq) const
168 {
169     return mIdlClient->ReqP2pAddGroup(isPersistent, networkId, freq);
170 }
171 
GroupRemove(const std::string & groupInterface) const172 WifiErrorNo WifiP2PHalInterface::GroupRemove(const std::string &groupInterface) const
173 {
174     return mIdlClient->ReqP2pRemoveGroup(groupInterface);
175 }
176 
Invite(const WifiP2pGroupInfo & group,const std::string & deviceAddr) const177 WifiErrorNo WifiP2PHalInterface::Invite(const WifiP2pGroupInfo &group, const std::string &deviceAddr) const
178 {
179     return mIdlClient->ReqP2pInvite(group, deviceAddr);
180 }
181 
Reinvoke(int networkId,const std::string & deviceAddr) const182 WifiErrorNo WifiP2PHalInterface::Reinvoke(int networkId, const std::string &deviceAddr) const
183 {
184     return mIdlClient->ReqP2pReinvoke(networkId, deviceAddr);
185 }
186 
GetDeviceAddress(std::string & deviceAddress) const187 WifiErrorNo WifiP2PHalInterface::GetDeviceAddress(std::string &deviceAddress) const
188 {
189     return mIdlClient->ReqP2pGetDeviceAddress(deviceAddress);
190 }
191 
GetGroupCapability(const std::string & deviceAddress,uint32_t & cap) const192 WifiErrorNo WifiP2PHalInterface::GetGroupCapability(const std::string &deviceAddress, uint32_t &cap) const
193 {
194     return mIdlClient->ReqP2pGetGroupCapability(deviceAddress, cap);
195 }
196 
P2pServiceAdd(const WifiP2pServiceInfo & info) const197 WifiErrorNo WifiP2PHalInterface::P2pServiceAdd(const WifiP2pServiceInfo &info) const
198 {
199     return mIdlClient->ReqP2pAddService(info);
200 }
201 
P2pServiceRemove(const WifiP2pServiceInfo & info) const202 WifiErrorNo WifiP2PHalInterface::P2pServiceRemove(const WifiP2pServiceInfo &info) const
203 {
204     return mIdlClient->ReqP2pRemoveService(info);
205 }
206 
FlushService() const207 WifiErrorNo WifiP2PHalInterface::FlushService() const
208 {
209     return mIdlClient->ReqP2pFlushService();
210 }
211 
SaveConfig() const212 WifiErrorNo WifiP2PHalInterface::SaveConfig() const
213 {
214     return mIdlClient->ReqP2pSaveConfig();
215 }
216 
ReqServiceDiscovery(const std::string & deviceAddress,const std::vector<unsigned char> & tlvs,std::string & reqID) const217 WifiErrorNo WifiP2PHalInterface::ReqServiceDiscovery(
218     const std::string &deviceAddress, const std::vector<unsigned char> &tlvs, std::string &reqID) const
219 {
220     return mIdlClient->ReqP2pReqServiceDiscovery(deviceAddress, tlvs, reqID);
221 }
222 
CancelReqServiceDiscovery(const std::string & id) const223 WifiErrorNo WifiP2PHalInterface::CancelReqServiceDiscovery(const std::string &id) const
224 {
225     return mIdlClient->ReqP2pCancelServiceDiscovery(id);
226 }
227 
SetRandomMacAddr(bool enable) const228 WifiErrorNo WifiP2PHalInterface::SetRandomMacAddr(bool enable) const
229 {
230     return mIdlClient->ReqP2pSetRandomMac(enable);
231 }
232 
SetMiracastMode(int type) const233 WifiErrorNo WifiP2PHalInterface::SetMiracastMode(int type) const
234 {
235     return mIdlClient->ReqP2pSetMiracastType(type);
236 }
237 
SetPersistentReconnect(int mode) const238 WifiErrorNo WifiP2PHalInterface::SetPersistentReconnect(int mode) const
239 {
240     return mIdlClient->ReqSetPersistentReconnect(mode);
241 }
242 
RespServiceDiscovery(const WifiP2pDevice & device,int frequency,int dialogToken,const std::vector<unsigned char> & tlvs) const243 WifiErrorNo WifiP2PHalInterface::RespServiceDiscovery(
244     const WifiP2pDevice &device, int frequency, int dialogToken, const std::vector<unsigned char> &tlvs) const
245 {
246     return mIdlClient->ReqRespServiceDiscovery(device, frequency, dialogToken, tlvs);
247 }
248 
SetServiceDiscoveryExternal(bool isExternalProcess) const249 WifiErrorNo WifiP2PHalInterface::SetServiceDiscoveryExternal(bool isExternalProcess) const
250 {
251     return mIdlClient->ReqSetServiceDiscoveryExternal(isExternalProcess);
252 }
253 
GetP2pPeer(const std::string & deviceAddress,WifiP2pDevice & device) const254 WifiErrorNo WifiP2PHalInterface::GetP2pPeer(const std::string &deviceAddress, WifiP2pDevice &device) const
255 {
256     return mIdlClient->ReqGetP2pPeer(deviceAddress, device);
257 }
258 
P2pGetSupportFrequenciesByBand(int band,std::vector<int> & frequencies) const259 WifiErrorNo WifiP2PHalInterface::P2pGetSupportFrequenciesByBand(int band, std::vector<int> &frequencies) const
260 {
261     return mIdlClient->ReqP2pGetSupportFrequencies(band, frequencies);
262 }
263 
P2pSetGroupConfig(int networkId,const IdlP2pGroupConfig & config) const264 WifiErrorNo WifiP2PHalInterface::P2pSetGroupConfig(int networkId, const IdlP2pGroupConfig &config) const
265 {
266     return mIdlClient->ReqP2pSetGroupConfig(networkId, config);
267 }
268 
P2pGetGroupConfig(int networkId,IdlP2pGroupConfig & config) const269 WifiErrorNo WifiP2PHalInterface::P2pGetGroupConfig(int networkId, IdlP2pGroupConfig &config) const
270 {
271     return mIdlClient->ReqP2pGetGroupConfig(networkId, config);
272 }
273 
P2pAddNetwork(int & networkId) const274 WifiErrorNo WifiP2PHalInterface::P2pAddNetwork(int &networkId) const
275 {
276     return mIdlClient->ReqP2pAddNetwork(networkId);
277 }
278 
GetP2pCallbackInst(void) const279 const P2pHalCallback &WifiP2PHalInterface::GetP2pCallbackInst(void) const
280 {
281     return mP2pCallback;
282 }
283 
Hid2dConnect(const Hid2dConnectConfig & config) const284 WifiErrorNo WifiP2PHalInterface::Hid2dConnect(const Hid2dConnectConfig &config) const
285 {
286     return mIdlClient->ReqP2pHid2dConnect(config);
287 }
288 }  // namespace Wifi
289 }  // namespace OHOS