• 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 #include "wifi_idl_inner_interface.h"
16 #include "wifi_chip_hal_interface.h"
17 #include "wifi_ap_hal_interface.h"
18 #include "wifi_sta_hal_interface.h"
19 #include "wifi_supplicant_hal_interface.h"
20 #include "wifi_p2p_hal_interface.h"
21 #include "wifi_global_func.h"
22 
GetChipRpcClient(void)23 RpcClient *GetChipRpcClient(void)
24 {
25     return OHOS::Wifi::WifiChipHalInterface::GetInstance().mIdlClient->pRpcClient;
26 }
27 
GetApRpcClient(void)28 RpcClient *GetApRpcClient(void)
29 {
30     return OHOS::Wifi::WifiApHalInterface::GetInstance().mIdlClient->pRpcClient;
31 }
32 
OnApStaJoinOrLeave(const CStationInfo * info)33 void OnApStaJoinOrLeave(const CStationInfo *info)
34 {
35     if (info == nullptr) {
36         return;
37     }
38     const OHOS::Wifi::IWifiApMonitorEventCallback &cbk =
39         OHOS::Wifi::WifiApHalInterface::GetInstance().GetApCallbackInst();
40     if (cbk.onStaJoinOrLeave) {
41         OHOS::Wifi::WifiApConnectionNofify cbInfo;
42         cbInfo.type = info->type;
43         cbInfo.mac = info->mac;
44         cbk.onStaJoinOrLeave(cbInfo);
45     }
46 }
47 
OnApEnableOrDisable(int satus)48 void OnApEnableOrDisable(int satus)
49 {
50     const OHOS::Wifi::IWifiApMonitorEventCallback &cbk =
51         OHOS::Wifi::WifiApHalInterface::GetInstance().GetApCallbackInst();
52     if (cbk.onApEnableOrDisable) {
53         cbk.onApEnableOrDisable(satus);
54     }
55 }
56 
GetStaRpcClient(void)57 RpcClient *GetStaRpcClient(void)
58 {
59     return OHOS::Wifi::WifiStaHalInterface::GetInstance().mIdlClient->pRpcClient;
60 }
61 
OnConnectChanged(int status,int networkId,const char * mac)62 void OnConnectChanged(int status, int networkId, const char *mac)
63 {
64     if (mac == nullptr) {
65         return;
66     }
67     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
68     if (cbk.onConnectChanged) {
69         cbk.onConnectChanged(status, networkId, mac);
70     }
71 }
72 
OnWpaStateChanged(int status)73 void OnWpaStateChanged(int status)
74 {
75     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
76     if (cbk.onWpaStateChanged) {
77         cbk.onWpaStateChanged(status);
78     }
79 }
80 
OnWpaSsidWrongKey(int status)81 void OnWpaSsidWrongKey(int status)
82 {
83     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
84     if (cbk.onWpaSsidWrongKey) {
85         cbk.onWpaSsidWrongKey(status);
86     }
87 }
88 
onWpaConnectionFull(int status)89 void onWpaConnectionFull(int status)
90 {
91     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
92     if (cbk.onWpaConnectionFull) {
93         cbk.onWpaConnectionFull(status);
94     }
95 }
96 
onWpaConnectionReject(int status)97 void onWpaConnectionReject(int status)
98 {
99     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
100     if (cbk.onWpaConnectionReject) {
101         cbk.onWpaConnectionReject(status);
102     }
103 }
104 
OnWpsOverlap(int status)105 void OnWpsOverlap(int status)
106 {
107     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
108     if (cbk.onWpsOverlap) {
109         cbk.onWpsOverlap(status);
110     }
111 }
112 
OnWpsTimeOut(int status)113 void OnWpsTimeOut(int status)
114 {
115     const OHOS::Wifi::WifiEventCallback &cbk = OHOS::Wifi::WifiStaHalInterface::GetInstance().GetCallbackInst();
116     if (cbk.onWpsTimeOut) {
117         cbk.onWpsTimeOut(status);
118     }
119 }
120 
GetSupplicantRpcClient(void)121 RpcClient *GetSupplicantRpcClient(void)
122 {
123     return OHOS::Wifi::WifiSupplicantHalInterface::GetInstance().mIdlClient->pRpcClient;
124 }
125 
OnScanNotify(int status)126 void OnScanNotify(int status)
127 {
128     const OHOS::Wifi::SupplicantEventCallback &cbk =
129         OHOS::Wifi::WifiSupplicantHalInterface::GetInstance().GetCallbackInst();
130     if (cbk.onScanNotify) {
131         cbk.onScanNotify(status);
132     }
133 }
134 
GetP2pRpcClient(void)135 RpcClient *GetP2pRpcClient(void)
136 {
137     return OHOS::Wifi::WifiP2PHalInterface::GetInstance().mIdlClient->pRpcClient;
138 }
139 
OnP2pConnectSupplicant(int state)140 void OnP2pConnectSupplicant(int state)
141 {
142     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
143     if (cbk.onConnectSupplicant) {
144         cbk.onConnectSupplicant(state);
145     }
146 }
147 
OnP2pDeviceFound(const HidlP2pDeviceInfo * info)148 void OnP2pDeviceFound(const HidlP2pDeviceInfo *info)
149 {
150     if (info == nullptr) {
151         return;
152     }
153     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
154     if (cbk.onDeviceFound) {
155         OHOS::Wifi::IdlP2pDeviceFound cbInfo;
156         cbInfo.srcAddress = info->srcAddress;
157         cbInfo.p2pDeviceAddress = info->p2pDeviceAddress;
158         cbInfo.primaryDeviceType = info->primaryDeviceType;
159         cbInfo.deviceName = info->deviceName;
160         cbInfo.configMethods = info->configMethods;
161         cbInfo.deviceCapabilities = info->deviceCapabilities;
162         cbInfo.groupCapabilities = info->groupCapabilities;
163         const int wfdLength = 14; /* wfd info type: 0x000000000000 */
164         const int wfdStartPos = 2; /* skip 0x */
165         if (info->wfdLength >= wfdLength && strlen(info->wfdDeviceInfo) >= wfdLength) {
166             OHOS::Wifi::HexStringToVec(info->wfdDeviceInfo + wfdStartPos, cbInfo.wfdDeviceInfo);
167         }
168         cbk.onDeviceFound(cbInfo);
169     }
170 }
171 
OnP2pDeviceLost(const char * p2pDeviceAddress)172 void OnP2pDeviceLost(const char *p2pDeviceAddress)
173 {
174     if (p2pDeviceAddress == nullptr) {
175         return;
176     }
177     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
178     if (cbk.onDeviceLost) {
179         cbk.onDeviceLost(p2pDeviceAddress);
180     }
181 }
182 
OnP2pGoNegotiationRequest(const char * srcAddress,short passwordId)183 void OnP2pGoNegotiationRequest(const char *srcAddress, short passwordId)
184 {
185     if (srcAddress == nullptr) {
186         return;
187     }
188     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
189     if (cbk.onGoNegotiationRequest) {
190         cbk.onGoNegotiationRequest(srcAddress, passwordId);
191     }
192 }
193 
OnP2pGoNegotiationSuccess(void)194 void OnP2pGoNegotiationSuccess(void)
195 {
196     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
197     if (cbk.onGoNegotiationSuccess) {
198         cbk.onGoNegotiationSuccess();
199     }
200 }
201 
OnP2pGoNegotiationFailure(int status)202 void OnP2pGoNegotiationFailure(int status)
203 {
204     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
205     if (cbk.onGoNegotiationFailure) {
206         cbk.onGoNegotiationFailure(status);
207     }
208 }
209 
OnP2pInvitationResult(const char * bssid,int status)210 void OnP2pInvitationResult(const char *bssid, int status)
211 {
212     if (bssid == nullptr) {
213         return;
214     }
215     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
216     if (cbk.onInvitationResult) {
217         cbk.onInvitationResult(bssid, status);
218     }
219 }
220 
OnP2pInvitationReceived(const HidlP2pInvitationInfo * info)221 void OnP2pInvitationReceived(const HidlP2pInvitationInfo *info)
222 {
223     if (info == nullptr) {
224         return;
225     }
226     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
227     if (cbk.onInvitationReceived) {
228         OHOS::Wifi::IdlP2pInvitationInfo cbInfo;
229         cbInfo.type = info->type;
230         cbInfo.persistentNetworkId = info->persistentNetworkId;
231         cbInfo.operatingFrequency = info->operatingFrequency;
232         cbInfo.srcAddress = info->srcAddress;
233         cbInfo.goDeviceAddress = info->goDeviceAddress;
234         cbInfo.bssid = info->bssid;
235         cbk.onInvitationReceived(cbInfo);
236     }
237 }
238 
OnP2pGroupFormationSuccess(void)239 void OnP2pGroupFormationSuccess(void)
240 {
241     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
242     if (cbk.onGroupFormationSuccess) {
243         cbk.onGroupFormationSuccess();
244     }
245 }
246 
OnP2pGroupFormationFailure(const char * failureReason)247 void OnP2pGroupFormationFailure(const char *failureReason)
248 {
249     if (failureReason == nullptr) {
250         return;
251     }
252     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
253     if (cbk.onGroupFormationFailure) {
254         cbk.onGroupFormationFailure(failureReason);
255     }
256 }
257 
OnP2pGroupStarted(const HidlP2pGroupInfo * group)258 void OnP2pGroupStarted(const HidlP2pGroupInfo *group)
259 {
260     if (group == nullptr) {
261         return;
262     }
263     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
264     if (cbk.onGroupStarted) {
265         OHOS::Wifi::IdlP2pGroupInfo cbInfo;
266         cbInfo.isGo = group->isGo;
267         cbInfo.isPersistent = group->isPersistent;
268         cbInfo.frequency = group->frequency;
269         cbInfo.groupName = group->groupName;
270         cbInfo.ssid = group->ssid;
271         cbInfo.psk = group->psk;
272         cbInfo.passphrase = group->passphrase;
273         cbInfo.goDeviceAddress = group->goDeviceAddress;
274         cbk.onGroupStarted(cbInfo);
275     }
276 }
277 
OnP2pGroupRemoved(const char * groupIfName,int isGo)278 void OnP2pGroupRemoved(const char *groupIfName, int isGo)
279 {
280     if (groupIfName == nullptr) {
281         return;
282     }
283     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
284     if (cbk.onGroupRemoved) {
285         cbk.onGroupRemoved(groupIfName, (isGo == 1));
286     }
287 }
288 
OnP2pProvisionDiscoveryPbcRequest(const char * p2pDeviceAddress)289 void OnP2pProvisionDiscoveryPbcRequest(const char *p2pDeviceAddress)
290 {
291     if (p2pDeviceAddress == nullptr) {
292         return;
293     }
294     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
295     if (cbk.onProvisionDiscoveryPbcRequest) {
296         cbk.onProvisionDiscoveryPbcRequest(p2pDeviceAddress);
297     }
298 }
299 
OnP2pProvisionDiscoveryPbcResponse(const char * p2pDeviceAddress)300 void OnP2pProvisionDiscoveryPbcResponse(const char *p2pDeviceAddress)
301 {
302     if (p2pDeviceAddress == nullptr) {
303         return;
304     }
305     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
306     if (cbk.onProvisionDiscoveryPbcResponse) {
307         cbk.onProvisionDiscoveryPbcResponse(p2pDeviceAddress);
308     }
309 }
310 
OnP2pProvisionDiscoveryEnterPin(const char * p2pDeviceAddress)311 void OnP2pProvisionDiscoveryEnterPin(const char *p2pDeviceAddress)
312 {
313     if (p2pDeviceAddress == nullptr) {
314         return;
315     }
316     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
317     if (cbk.onProvisionDiscoveryEnterPin) {
318         cbk.onProvisionDiscoveryEnterPin(p2pDeviceAddress);
319     }
320 }
321 
OnP2pProvisionDiscoveryShowPin(const char * p2pDeviceAddress,const char * generatedPin)322 void OnP2pProvisionDiscoveryShowPin(const char *p2pDeviceAddress, const char *generatedPin)
323 {
324     if (p2pDeviceAddress == nullptr || generatedPin == nullptr) {
325         return;
326     }
327     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
328     if (cbk.onProvisionDiscoveryShowPin) {
329         cbk.onProvisionDiscoveryShowPin(p2pDeviceAddress, generatedPin);
330     }
331 }
332 
OnP2pProvisionDiscoveryFailure(void)333 void OnP2pProvisionDiscoveryFailure(void)
334 {
335     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
336     if (cbk.onProvisionDiscoveryFailure) {
337         cbk.onProvisionDiscoveryFailure();
338     }
339 }
340 
OnP2pFindStopped(void)341 void OnP2pFindStopped(void)
342 {
343     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
344     if (cbk.onFindStopped) {
345         cbk.onFindStopped();
346     }
347 }
348 
OnP2pServiceDiscoveryResponse(const char * srcAddress,short updateIndicator,const unsigned char * tlvs,size_t tlvsLength)349 void OnP2pServiceDiscoveryResponse(
350     const char *srcAddress, short updateIndicator, const unsigned char *tlvs, size_t tlvsLength)
351 {
352     if (srcAddress == nullptr) {
353         return;
354     }
355     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
356     if (cbk.onServiceDiscoveryResponse) {
357         std::vector<unsigned char> tlvList;
358         if (tlvs != nullptr) {
359             OHOS::Wifi::Char2Vec(tlvs, tlvsLength, tlvList);
360         }
361         cbk.onServiceDiscoveryResponse(srcAddress, updateIndicator, tlvList);
362     }
363 }
364 
OnP2pStaDeauthorized(const char * p2pDeviceAddress)365 void OnP2pStaDeauthorized(const char *p2pDeviceAddress)
366 {
367     if (p2pDeviceAddress == nullptr) {
368         return;
369     }
370     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
371     if (cbk.onStaDeauthorized) {
372         cbk.onStaDeauthorized(p2pDeviceAddress);
373     }
374 }
375 
OnP2pStaAuthorized(const char * p2pDeviceAddress)376 void OnP2pStaAuthorized(const char *p2pDeviceAddress)
377 {
378     if (p2pDeviceAddress == nullptr) {
379         return;
380     }
381     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
382     if (cbk.onStaAuthorized) {
383         cbk.onStaAuthorized(p2pDeviceAddress);
384     }
385 }
386 
OnP2pConnectSupplicantFailed(void)387 void OnP2pConnectSupplicantFailed(void)
388 {
389     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
390     if (cbk.connectSupplicantFailed) {
391         cbk.connectSupplicantFailed();
392     }
393 }
394 
OnP2pServDiscReq(const HidlP2pServDiscReqInfo * info)395 void OnP2pServDiscReq(const HidlP2pServDiscReqInfo *info)
396 {
397     if (info == nullptr) {
398         return;
399     }
400     const OHOS::Wifi::P2pHalCallback &cbk = OHOS::Wifi::WifiP2PHalInterface::GetInstance().GetP2pCallbackInst();
401     if (cbk.onP2pServDiscReq) {
402         OHOS::Wifi::IdlP2pServDiscReqInfo cbInfo;
403         cbInfo.freq = info->freq;
404         cbInfo.dialogToken = info->dialogToken;
405         cbInfo.updateIndic = info->updateIndic;
406         cbInfo.mac = info->mac;
407         if (info->tlvsLength > 0 && info->tlvs != nullptr) {
408             OHOS::Wifi::Char2Vec(info->tlvs, info->tlvsLength, cbInfo.tlvList);
409         }
410         cbk.onP2pServDiscReq(cbInfo);
411     }
412 }
413