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 #include "wifi_p2p_msg.h"
17
18 namespace OHOS {
19 namespace Wifi {
SetWfdEnabled(bool value)20 void WifiP2pWfdInfo::SetWfdEnabled(bool value)
21 {
22 wfdEnabled = value;
23 }
24
GetWfdEnabled() const25 bool WifiP2pWfdInfo::GetWfdEnabled() const
26 {
27 return wfdEnabled;
28 }
29
SetDeviceInfo(int info)30 void WifiP2pWfdInfo::SetDeviceInfo(int info)
31 {
32 deviceInfo = info;
33 }
34
GetDeviceInfo() const35 int WifiP2pWfdInfo::GetDeviceInfo() const
36 {
37 return deviceInfo;
38 }
39
SetCtrlPort(int port)40 void WifiP2pWfdInfo::SetCtrlPort(int port)
41 {
42 ctrlPort = port;
43 }
44
GetCtrlPort() const45 int WifiP2pWfdInfo::GetCtrlPort() const
46 {
47 return ctrlPort;
48 }
49
SetMaxThroughput(int throughput)50 void WifiP2pWfdInfo::SetMaxThroughput(int throughput)
51 {
52 maxThroughput = throughput;
53 }
54
GetMaxThroughput() const55 int WifiP2pWfdInfo::GetMaxThroughput() const
56 {
57 return maxThroughput;
58 }
59
isSessionAvailable()60 bool WifiP2pWfdInfo::isSessionAvailable()
61 {
62 return (static_cast<size_t>(deviceInfo) & static_cast<size_t>(P2pDeviceType::SESSION_AVAILABLE)) != 0;
63 }
64
setSessionAvailable(bool enabled)65 void WifiP2pWfdInfo::setSessionAvailable(bool enabled)
66 {
67 if (enabled) {
68 deviceInfo |= static_cast<int>(P2pDeviceType::SESSION_AVAILABLE_BIT1);
69 deviceInfo &= ~(static_cast<int>(P2pDeviceType::SESSION_AVAILABLE_BIT2));
70 } else {
71 deviceInfo &= ~(static_cast<int>(P2pDeviceType::SESSION_AVAILABLE));
72 }
73 }
74
GetDeviceInfoElement(std::string & subelement)75 void WifiP2pWfdInfo::GetDeviceInfoElement(std::string &subelement)
76 {
77 char buf[32];
78 subelement = DeviceInfoSubelemLenHex;
79 if (snprintf_s(buf, sizeof(buf), sizeof(buf) - 1, "%04x%04x%04x", deviceInfo, ctrlPort, maxThroughput) < 0) {
80 subelement.clear();
81 return;
82 }
83 subelement.append(buf);
84 }
85
SetDeviceName(const std::string & setDeviceName)86 void WifiP2pDevice::SetDeviceName(const std::string &setDeviceName)
87 {
88 deviceName = setDeviceName;
89 }
90
GetDeviceName() const91 const std::string &WifiP2pDevice::GetDeviceName() const
92 {
93 return deviceName;
94 }
95
SetNetworkName(const std::string & name)96 void WifiP2pDevice::SetNetworkName(const std::string &name)
97 {
98 networkName = name;
99 }
100
GetNetworkName() const101 const std::string &WifiP2pDevice::GetNetworkName() const
102 {
103 return networkName;
104 }
105
SetDeviceAddress(const std::string & deviceAddress)106 void WifiP2pDevice::SetDeviceAddress(const std::string &deviceAddress)
107 {
108 mDeviceAddress = deviceAddress;
109 }
110
GetDeviceAddress() const111 const std::string &WifiP2pDevice::GetDeviceAddress() const
112 {
113 return mDeviceAddress;
114 }
115
SetRandomDeviceAddress(const std::string & deviceAddress)116 void WifiP2pDevice::SetRandomDeviceAddress(const std::string &deviceAddress)
117 {
118 mRandomDeviceAddress = deviceAddress;
119 }
120
GetRandomDeviceAddress() const121 const std::string &WifiP2pDevice::GetRandomDeviceAddress() const
122 {
123 return mRandomDeviceAddress;
124 }
125
SetGroupAddress(const std::string & groupAddress)126 void WifiP2pDevice::SetGroupAddress(const std::string &groupAddress)
127 {
128 mGroupAddress = groupAddress;
129 }
130
GetGroupAddress() const131 const std::string &WifiP2pDevice::GetGroupAddress() const
132 {
133 return mGroupAddress;
134 }
135
AddClientInfoList(const std::string & mac,const std::string & ip,const std::string & host)136 void WifiP2pLinkedInfo::AddClientInfoList(const std::string &mac, const std::string &ip, const std::string &host)
137 {
138 GcInfo gc_info;
139 gc_info.mac = mac;
140 gc_info.ip = ip;
141 gc_info.host = host;
142 gc_info_list.push_back(gc_info);
143 }
144
RemoveClientInfo(std::string mac)145 void WifiP2pLinkedInfo::RemoveClientInfo(std::string mac)
146 {
147 for (auto iter = gc_info_list.begin(); iter !=gc_info_list.end(); iter++) {
148 if (mac == iter->mac) {
149 iter = gc_info_list.erase(iter);
150 return;
151 }
152 }
153 }
154
ClearClientInfo()155 void WifiP2pLinkedInfo::ClearClientInfo()
156 {
157 gc_info_list.clear();
158 }
159
GetClientInfoList() const160 const std::vector<GcInfo> &WifiP2pLinkedInfo::GetClientInfoList() const
161 {
162 return gc_info_list;
163 }
164
SetPrimaryDeviceType(const std::string & setPrimaryDeviceType)165 void WifiP2pDevice::SetPrimaryDeviceType(const std::string &setPrimaryDeviceType)
166 {
167 primaryDeviceType = setPrimaryDeviceType;
168 }
169
SetDeviceAddressType(int devAddressType)170 void WifiP2pDevice::SetDeviceAddressType(int devAddressType)
171 {
172 deviceAddressType = devAddressType;
173 }
174
GetDeviceAddressType() const175 int WifiP2pDevice::GetDeviceAddressType() const
176 {
177 return deviceAddressType;
178 }
179
GetPrimaryDeviceType() const180 const std::string &WifiP2pDevice::GetPrimaryDeviceType() const
181 {
182 return primaryDeviceType;
183 }
184
SetSecondaryDeviceType(const std::string & deviceType)185 void WifiP2pDevice::SetSecondaryDeviceType(const std::string &deviceType)
186 {
187 secondaryDeviceType = deviceType;
188 }
189
GetSecondaryDeviceType() const190 const std::string &WifiP2pDevice::GetSecondaryDeviceType() const
191 {
192 return secondaryDeviceType;
193 }
194
SetP2pDeviceStatus(P2pDeviceStatus setStatus)195 void WifiP2pDevice::SetP2pDeviceStatus(P2pDeviceStatus setStatus)
196 {
197 status = setStatus;
198 }
199
GetP2pDeviceStatus() const200 P2pDeviceStatus WifiP2pDevice::GetP2pDeviceStatus() const
201 {
202 return status;
203 }
204
SetWfdInfo(const WifiP2pWfdInfo & info)205 void WifiP2pDevice::SetWfdInfo(const WifiP2pWfdInfo &info)
206 {
207 wfdInfo = info;
208 }
209
GetWfdInfo() const210 const WifiP2pWfdInfo &WifiP2pDevice::GetWfdInfo() const
211 {
212 return wfdInfo;
213 }
214
SetWpsConfigMethod(unsigned int wpsConfigMethod)215 void WifiP2pDevice::SetWpsConfigMethod(unsigned int wpsConfigMethod)
216 {
217 supportWpsConfigMethods = wpsConfigMethod;
218 }
219
GetWpsConfigMethod() const220 unsigned int WifiP2pDevice::GetWpsConfigMethod() const
221 {
222 return supportWpsConfigMethods;
223 }
224
SetDeviceCapabilitys(int capabilitys)225 void WifiP2pDevice::SetDeviceCapabilitys(int capabilitys)
226 {
227 deviceCapabilitys = capabilitys;
228 }
229
GetDeviceCapabilitys() const230 int WifiP2pDevice::GetDeviceCapabilitys() const
231 {
232 return deviceCapabilitys;
233 }
234
SetGroupCapabilitys(int capabilitys)235 void WifiP2pDevice::SetGroupCapabilitys(int capabilitys)
236 {
237 groupCapabilitys = capabilitys;
238 }
239
GetGroupCapabilitys() const240 int WifiP2pDevice::GetGroupCapabilitys() const
241 {
242 return groupCapabilitys;
243 }
244
IsGroupOwner() const245 bool WifiP2pDevice::IsGroupOwner() const
246 {
247 return (static_cast<size_t>(groupCapabilitys) & static_cast<size_t>(P2pGroupCapability::PGC_GROUP_OWNER));
248 }
249
IsGroupLimit() const250 bool WifiP2pDevice::IsGroupLimit() const
251 {
252 return (groupCapabilitys & static_cast<int>(P2pGroupCapability::PGC_GROUP_LIMIT));
253 }
254
IsDeviceLimit() const255 bool WifiP2pDevice::IsDeviceLimit() const
256 {
257 return (static_cast<size_t>(deviceCapabilitys) & static_cast<size_t>(P2pDeviceCapability::PDC_DEVICE_LIMIT));
258 }
259
Isinviteable() const260 bool WifiP2pDevice::Isinviteable() const
261 {
262 return (static_cast<size_t>(deviceCapabilitys) &
263 static_cast<size_t>(P2pDeviceCapability::PDC_INVITATION_PROCEDURE));
264 }
265
IsValid() const266 bool WifiP2pDevice::IsValid() const
267 {
268 if (mDeviceAddress.empty()) {
269 return false;
270 }
271 return true;
272 }
273
operator ==(const WifiP2pDevice & cmp) const274 bool WifiP2pDevice::operator==(const WifiP2pDevice &cmp) const
275 {
276 return mDeviceAddress == cmp.GetDeviceAddress();
277 }
278
operator !=(const WifiP2pDevice & cmp) const279 bool WifiP2pDevice::operator!=(const WifiP2pDevice &cmp) const
280 {
281 return !operator==(cmp);
282 }
283
WpsPbcSupported() const284 bool WifiP2pDevice::WpsPbcSupported() const
285 {
286 return (supportWpsConfigMethods & static_cast<int>(WpsConfigMethod::WPS_CFG_PUSHBUTTON)) != 0;
287 }
288
WpsDisplaySupported() const289 bool WifiP2pDevice::WpsDisplaySupported() const
290 {
291 return (supportWpsConfigMethods & static_cast<int>(WpsConfigMethod::WPS_CFG_DISPLAY)) != 0;
292 }
293
WpKeypadSupported() const294 bool WifiP2pDevice::WpKeypadSupported() const
295 {
296 return (supportWpsConfigMethods & static_cast<int>(WpsConfigMethod::WPS_CFG_KEYPAD)) != 0;
297 }
298
operator ==(const WifiP2pGroupInfo & group) const299 bool WifiP2pGroupInfo::operator==(const WifiP2pGroupInfo &group) const
300 {
301 return networkId == group.GetNetworkId();
302 }
303
operator !=(const WifiP2pGroupInfo & group) const304 bool WifiP2pGroupInfo::operator!=(const WifiP2pGroupInfo &group) const
305 {
306 return !operator==(group);
307 }
308
SetIsGroupOwner(bool isGroupOwner)309 void WifiP2pGroupInfo::SetIsGroupOwner(bool isGroupOwner)
310 {
311 isP2pGroupOwner = isGroupOwner;
312 }
313
IsGroupOwner() const314 bool WifiP2pGroupInfo::IsGroupOwner() const
315 {
316 return isP2pGroupOwner;
317 }
318
SetOwner(const WifiP2pDevice & setOwner)319 void WifiP2pGroupInfo::SetOwner(const WifiP2pDevice &setOwner)
320 {
321 owner = setOwner;
322 }
323
GetOwner() const324 const WifiP2pDevice &WifiP2pGroupInfo::GetOwner() const
325 {
326 return owner;
327 }
328
SetPassphrase(const std::string & setPassphrase)329 void WifiP2pGroupInfo::SetPassphrase(const std::string &setPassphrase)
330 {
331 passphrase = setPassphrase;
332 }
333
GetPassphrase() const334 const std::string &WifiP2pGroupInfo::GetPassphrase() const
335 {
336 return passphrase;
337 }
338
SetInterface(const std::string & setInterface)339 void WifiP2pGroupInfo::SetInterface(const std::string &setInterface)
340 {
341 interface = setInterface;
342 }
343
GetInterface() const344 const std::string &WifiP2pGroupInfo::GetInterface() const
345 {
346 return interface;
347 }
348
SetGroupName(const std::string & newGroupName)349 void WifiP2pGroupInfo::SetGroupName(const std::string &newGroupName)
350 {
351 groupName = newGroupName;
352 }
353
GetGroupName() const354 const std::string &WifiP2pGroupInfo::GetGroupName() const
355 {
356 return groupName;
357 }
358
SetFrequency(int setFrequency)359 void WifiP2pGroupInfo::SetFrequency(int setFrequency)
360 {
361 frequency = setFrequency;
362 }
363
GetFrequency() const364 int WifiP2pGroupInfo::GetFrequency() const
365 {
366 return frequency;
367 }
368
SetIsPersistent(bool isPersistent)369 void WifiP2pGroupInfo::SetIsPersistent(bool isPersistent)
370 {
371 isP2pPersistent = isPersistent;
372 }
373
IsPersistent() const374 bool WifiP2pGroupInfo::IsPersistent() const
375 {
376 return isP2pPersistent;
377 }
378
SetP2pGroupStatus(P2pGroupStatus newGroupStatus)379 void WifiP2pGroupInfo::SetP2pGroupStatus(P2pGroupStatus newGroupStatus)
380 {
381 groupStatus = newGroupStatus;
382 }
383
GetP2pGroupStatus() const384 P2pGroupStatus WifiP2pGroupInfo::GetP2pGroupStatus() const
385 {
386 return groupStatus;
387 }
388
SetNetworkId(int nwId)389 void WifiP2pGroupInfo::SetNetworkId(int nwId)
390 {
391 networkId = nwId;
392 }
393
GetNetworkId() const394 const int &WifiP2pGroupInfo::GetNetworkId() const
395 {
396 return networkId;
397 }
398
SetGoIpAddress(const std::string & ipAddr)399 void WifiP2pGroupInfo::SetGoIpAddress(const std::string &ipAddr)
400 {
401 goIpAddress = ipAddr;
402 }
403
GetGoIpAddress() const404 const std::string &WifiP2pGroupInfo::GetGoIpAddress() const
405 {
406 return goIpAddress;
407 }
408
SetGcIpAddress(const std::string & ipAddr)409 void WifiP2pGroupInfo::SetGcIpAddress(const std::string &ipAddr)
410 {
411 gcIpAddress = ipAddr;
412 }
413
GetGcIpAddress() const414 const std::string &WifiP2pGroupInfo::GetGcIpAddress() const
415 {
416 return gcIpAddress;
417 }
418
AddClientDevice(const WifiP2pDevice & clientDevice)419 void WifiP2pGroupInfo::AddClientDevice(const WifiP2pDevice &clientDevice)
420 {
421 for (auto it = clientDevices.begin(); it != clientDevices.end(); ++it) {
422 if (*it == clientDevice) {
423 *it = clientDevice;
424 return;
425 }
426 }
427 clientDevices.push_back(clientDevice);
428 return;
429 }
430
AddPersistentDevice(const WifiP2pDevice & clientDevice)431 void WifiP2pGroupInfo::AddPersistentDevice(const WifiP2pDevice &clientDevice)
432 {
433 for (auto it = persistentClients.begin(); it != persistentClients.end(); ++it) {
434 if (it->GetDeviceAddress() == clientDevice.GetDeviceAddress()) {
435 *it = clientDevice;
436 return;
437 }
438 }
439 persistentClients.push_back(clientDevice);
440 return;
441 }
442
RemoveClientDevice(const WifiP2pDevice & clientDevice)443 void WifiP2pGroupInfo::RemoveClientDevice(const WifiP2pDevice &clientDevice)
444 {
445 for (auto it = clientDevices.begin(); it != clientDevices.end(); ++it) {
446 if (*it == clientDevice) {
447 clientDevices.erase(it);
448 return;
449 }
450 }
451 return;
452 }
453
RemovePersistentDevice(const WifiP2pDevice & clientDevice)454 void WifiP2pGroupInfo::RemovePersistentDevice(const WifiP2pDevice &clientDevice)
455 {
456 for (auto it = persistentClients.begin(); it != persistentClients.end(); ++it) {
457 if (it->GetDeviceAddress() == clientDevice.GetDeviceAddress()) {
458 persistentClients.erase(it);
459 return;
460 }
461 }
462 return;
463 }
464
IsContainsDevice(const WifiP2pDevice & clientDevice) const465 bool WifiP2pGroupInfo::IsContainsDevice(const WifiP2pDevice &clientDevice) const
466 {
467 if (clientDevice == owner) {
468 return true;
469 }
470 for (auto it = clientDevices.begin(); it != clientDevices.end(); ++it) {
471 if (*it == clientDevice) {
472 return true;
473 }
474 }
475 return false;
476 }
477
IsContainsPersistentDevice(const WifiP2pDevice & clientDevice) const478 bool WifiP2pGroupInfo::IsContainsPersistentDevice(const WifiP2pDevice &clientDevice) const
479 {
480 for (auto it = persistentClients.begin(); it != persistentClients.end(); ++it) {
481 if (it->GetDeviceAddress() == clientDevice.GetDeviceAddress()) {
482 return true;
483 }
484 }
485 return false;
486 }
487
IsClientDevicesEmpty() const488 bool WifiP2pGroupInfo::IsClientDevicesEmpty() const
489 {
490 return clientDevices.empty();
491 }
492
IsExplicitGroup(void) const493 bool WifiP2pGroupInfo::IsExplicitGroup(void) const
494 {
495 return explicitGroup;
496 }
497
SetExplicitGroup(bool isExplicit)498 void WifiP2pGroupInfo::SetExplicitGroup(bool isExplicit)
499 {
500 explicitGroup = isExplicit;
501 }
502
GetClientDevices() const503 const std::vector<WifiP2pDevice> &WifiP2pGroupInfo::GetClientDevices() const
504 {
505 return clientDevices;
506 }
507
GetPersistentDevices() const508 const std::vector<WifiP2pDevice> &WifiP2pGroupInfo::GetPersistentDevices() const
509 {
510 return persistentClients;
511 }
512
SetClientDevices(const std::vector<WifiP2pDevice> & devices)513 void WifiP2pGroupInfo::SetClientDevices(const std::vector<WifiP2pDevice> &devices)
514 {
515 clientDevices = devices;
516 }
517
SetClientPersistentDevices(const std::vector<WifiP2pDevice> & devices)518 void WifiP2pGroupInfo::SetClientPersistentDevices(const std::vector<WifiP2pDevice> &devices)
519 {
520 persistentClients = devices;
521 }
522
ClearClientDevices()523 void WifiP2pGroupInfo::ClearClientDevices()
524 {
525 clientDevices.clear();
526 persistentClients.clear();
527 }
528
SetCreatorUid(int uid)529 void WifiP2pGroupInfo::SetCreatorUid(int uid)
530 {
531 creatorUid = uid;
532 }
533
GetCreatorUid()534 int WifiP2pGroupInfo::GetCreatorUid()
535 {
536 return creatorUid;
537 }
538
SetWpsMethod(WpsMethod wpsMethod)539 void WpsInfo::SetWpsMethod(WpsMethod wpsMethod)
540 {
541 mWpsMethod = wpsMethod;
542 }
543
GetWpsMethod() const544 WpsMethod WpsInfo::GetWpsMethod() const
545 {
546 return mWpsMethod;
547 }
548
SetBssid(const std::string & setBssid)549 void WpsInfo::SetBssid(const std::string &setBssid)
550 {
551 bssid = setBssid;
552 }
553
GetBssid() const554 const std::string &WpsInfo::GetBssid() const
555 {
556 return bssid;
557 }
558
SetPin(const std::string & setPin)559 void WpsInfo::SetPin(const std::string &setPin)
560 {
561 pin = setPin;
562 }
563
GetPin() const564 const std::string &WpsInfo::GetPin() const
565 {
566 return pin;
567 }
568
SetDeviceAddress(const std::string & deviceAddress)569 void WifiP2pConfig::SetDeviceAddress(const std::string &deviceAddress)
570 {
571 mDeviceAddress = deviceAddress;
572 }
573
GetDeviceAddress() const574 const std::string &WifiP2pConfig::GetDeviceAddress() const
575 {
576 return mDeviceAddress;
577 }
578
SetDeviceAddressType(int devAddressType)579 void WifiP2pConfig::SetDeviceAddressType(int devAddressType)
580 {
581 deviceAddressType = devAddressType;
582 }
583
GetDeviceAddressType() const584 int WifiP2pConfig::GetDeviceAddressType() const
585 {
586 return deviceAddressType;
587 }
588
SetGoBand(GroupOwnerBand setGoBand)589 void WifiP2pConfig::SetGoBand(GroupOwnerBand setGoBand)
590 {
591 goBand = setGoBand;
592 }
593
GetGoBand() const594 GroupOwnerBand WifiP2pConfig::GetGoBand() const
595 {
596 return goBand;
597 }
598
SetNetId(int setNetId)599 void WifiP2pConfig::SetNetId(int setNetId)
600 {
601 netId = setNetId;
602 }
603
GetNetId() const604 int WifiP2pConfig::GetNetId() const
605 {
606 return netId;
607 }
608
SetPassphrase(const std::string & newPassphrase)609 void WifiP2pConfig::SetPassphrase(const std::string &newPassphrase)
610 {
611 passphrase = newPassphrase;
612 }
613
GetPassphrase() const614 const std::string &WifiP2pConfig::GetPassphrase() const
615 {
616 return passphrase;
617 }
618
SetGroupOwnerIntent(int intent)619 void WifiP2pConfig::SetGroupOwnerIntent(int intent)
620 {
621 groupOwnerIntent = intent;
622 }
623
GetGroupOwnerIntent() const624 int WifiP2pConfig::GetGroupOwnerIntent() const
625 {
626 return groupOwnerIntent;
627 }
628
SetGroupName(const std::string & setGroupName)629 void WifiP2pConfig::SetGroupName(const std::string &setGroupName)
630 {
631 groupName = setGroupName;
632 }
633
GetGroupName() const634 const std::string &WifiP2pConfig::GetGroupName() const
635 {
636 return groupName;
637 }
638
SetConnectState(P2pConnectedState setConnectState)639 void WifiP2pLinkedInfo::SetConnectState(P2pConnectedState setConnectState)
640 {
641 connectState = setConnectState;
642 }
643
GetConnectState() const644 P2pConnectedState WifiP2pLinkedInfo::GetConnectState() const
645 {
646 return connectState;
647 }
648
SetIsGroupOwner(bool isGroupOwner)649 void WifiP2pLinkedInfo::SetIsGroupOwner(bool isGroupOwner)
650 {
651 isP2pGroupOwner = isGroupOwner;
652 }
653
IsGroupOwner() const654 const bool &WifiP2pLinkedInfo::IsGroupOwner() const
655 {
656 return isP2pGroupOwner;
657 }
658
SetIsGroupOwnerAddress(const std::string & setGroupOwnerAddress)659 void WifiP2pLinkedInfo::SetIsGroupOwnerAddress(const std::string &setGroupOwnerAddress)
660 {
661 groupOwnerAddress = setGroupOwnerAddress;
662 }
663
GetGroupOwnerAddress() const664 const std::string &WifiP2pLinkedInfo::GetGroupOwnerAddress() const
665 {
666 return groupOwnerAddress;
667 }
668
SetProtocolType(P2pServicerProtocolType serviceProtocolType)669 void WifiP2pServiceRequest::SetProtocolType(P2pServicerProtocolType serviceProtocolType)
670 {
671 mProtocolType = serviceProtocolType;
672 }
673
GetProtocolType() const674 P2pServicerProtocolType WifiP2pServiceRequest::GetProtocolType() const
675 {
676 return mProtocolType;
677 }
678
SetTransactionId(unsigned char transactionId)679 void WifiP2pServiceRequest::SetTransactionId(unsigned char transactionId)
680 {
681 mTransactionId = transactionId;
682 }
683
GetTransactionId() const684 int WifiP2pServiceRequest::GetTransactionId() const
685 {
686 return mTransactionId;
687 }
688
SetQuery(const std::vector<unsigned char> & query)689 void WifiP2pServiceRequest::SetQuery(const std::vector<unsigned char> &query)
690 {
691 mQuery = query;
692 }
693
GetQuery() const694 const std::vector<unsigned char> &WifiP2pServiceRequest::GetQuery() const
695 {
696 return mQuery;
697 }
698
GetTlv() const699 std::vector<unsigned char> WifiP2pServiceRequest::GetTlv() const
700 {
701 std::vector<unsigned char> ret;
702
703 unsigned short length = PROTOCOL_SIZE + TRANSACTION_ID_SIZE + mQuery.size();
704 if (length > 0xff) {
705 unsigned char buf1 = length & 0x00ff;
706 unsigned char buf2 = length >> CHAR_BIT;
707 ret.push_back(buf1);
708 ret.push_back(buf2);
709 } else {
710 ret.push_back(static_cast<unsigned char>(length));
711 ret.push_back(0x00);
712 }
713 ret.push_back(static_cast<unsigned char>(mProtocolType));
714 ret.push_back(mTransactionId);
715 if (!mQuery.empty()) {
716 for (auto it = mQuery.begin(); it != mQuery.end(); ++it) {
717 ret.push_back(*it);
718 }
719 }
720
721 return ret;
722 }
723
operator ==(const WifiP2pServiceRequest & cmp) const724 bool WifiP2pServiceRequest::operator==(const WifiP2pServiceRequest &cmp) const
725 {
726 return mProtocolType == cmp.GetProtocolType() && mQuery == cmp.GetQuery();
727 }
728
SetProtocolType(P2pServicerProtocolType serviceProtocolType)729 void WifiP2pServiceResponse::SetProtocolType(P2pServicerProtocolType serviceProtocolType)
730 {
731 mProtocolType = serviceProtocolType;
732 }
733
GetProtocolType() const734 P2pServicerProtocolType WifiP2pServiceResponse::GetProtocolType() const
735 {
736 return mProtocolType;
737 }
738
SetTransactionId(unsigned char transactionId)739 void WifiP2pServiceResponse::SetTransactionId(unsigned char transactionId)
740 {
741 mTransactionId = transactionId;
742 }
743
GetTransactionId() const744 unsigned char WifiP2pServiceResponse::GetTransactionId() const
745 {
746 return mTransactionId;
747 }
748
SetServiceStatus(P2pServiceStatus serviceStatus)749 void WifiP2pServiceResponse::SetServiceStatus(P2pServiceStatus serviceStatus)
750 {
751 mServiceStatus = serviceStatus;
752 }
753
GetServiceStatus() const754 P2pServiceStatus WifiP2pServiceResponse::GetServiceStatus() const
755 {
756 return mServiceStatus;
757 }
758
SetServiceName(const std::string & name)759 void WifiP2pServiceResponse::SetServiceName(const std::string &name)
760 {
761 mSvrName = name;
762 }
763
GetServiceName() const764 const std::string &WifiP2pServiceResponse::GetServiceName() const
765 {
766 return mSvrName;
767 }
768
SetData(const std::vector<unsigned char> & data)769 void WifiP2pServiceResponse::SetData(const std::vector<unsigned char> &data)
770 {
771 responseData = data;
772 }
773
GetData() const774 const std::vector<unsigned char> &WifiP2pServiceResponse::GetData() const
775 {
776 return responseData;
777 }
778
GetTlv() const779 std::vector<unsigned char> WifiP2pServiceResponse::GetTlv() const
780 {
781 std::vector<unsigned char> ret;
782 unsigned short length = PROTOCOL_SIZE + TRANSACTION_ID_SIZE + SERVICE_STATUS_SIZE + responseData.size();
783 if (length > 0xff) {
784 unsigned char buf1 = length & 0x00ff;
785 unsigned char buf2 = length >> CHAR_BIT;
786 ret.push_back(buf1);
787 ret.push_back(buf2);
788 } else {
789 ret.push_back(static_cast<unsigned char>(length));
790 ret.push_back(0x00);
791 }
792 ret.push_back(static_cast<unsigned char>(mProtocolType));
793 ret.push_back(mTransactionId);
794 ret.push_back(static_cast<unsigned char>(mServiceStatus));
795 if (!responseData.empty()) {
796 for (auto it = responseData.begin(); it != responseData.end(); ++it) {
797 ret.push_back(*it);
798 }
799 }
800 return ret;
801 }
802
operator ==(const WifiP2pServiceResponse & cmp) const803 bool WifiP2pServiceResponse::operator==(const WifiP2pServiceResponse &cmp) const
804 {
805 return mProtocolType == cmp.GetProtocolType() && mServiceStatus == cmp.GetServiceStatus() &&
806 responseData == cmp.GetData();
807 }
808
SetServiceName(const std::string & name)809 void WifiP2pServiceInfo::SetServiceName(const std::string &name)
810 {
811 serviceName = name;
812 }
813
GetServiceName() const814 const std::string &WifiP2pServiceInfo::GetServiceName() const
815 {
816 return serviceName;
817 }
818
SetDeviceAddress(const std::string & deviceAddress)819 void WifiP2pServiceInfo::SetDeviceAddress(const std::string &deviceAddress)
820 {
821 mDeviceAddress = deviceAddress;
822 }
823
GetDeviceAddress() const824 const std::string &WifiP2pServiceInfo::GetDeviceAddress() const
825 {
826 return mDeviceAddress;
827 }
828
SetServicerProtocolType(P2pServicerProtocolType type)829 void WifiP2pServiceInfo::SetServicerProtocolType(P2pServicerProtocolType type)
830 {
831 mProtocolType = type;
832 }
833
GetServicerProtocolType() const834 P2pServicerProtocolType WifiP2pServiceInfo::GetServicerProtocolType() const
835 {
836 return mProtocolType;
837 }
838
SetQueryList(const std::vector<std::string> & queryList)839 void WifiP2pServiceInfo::SetQueryList(const std::vector<std::string> &queryList)
840 {
841 mQueryList = queryList;
842 }
843
GetQueryList() const844 const std::vector<std::string> &WifiP2pServiceInfo::GetQueryList() const
845 {
846 return mQueryList;
847 }
848
operator ==(const WifiP2pServiceInfo & cmp) const849 bool WifiP2pServiceInfo::operator==(const WifiP2pServiceInfo &cmp) const
850 {
851 return cmp.GetServiceName() == serviceName && cmp.GetDeviceAddress() == mDeviceAddress &&
852 cmp.GetServicerProtocolType() == mProtocolType && cmp.GetQueryList() == mQueryList;
853 }
854
855 /**
856 * @Description - For a request sent by the peer device, serviceInfo processes the query information in the request
857 * packet and returns the processing result.
858 * @param Query - the query of service request.
859 * @param data - the data of response.
860 * @return - P2pServiceStatus - result of processing.
861 */
ProcessServiceRequest(const std::vector<unsigned char> & Query,std::vector<unsigned char> & data) const862 P2pServiceStatus WifiP2pServiceInfo::ProcessServiceRequest(
863 const std::vector<unsigned char> &Query, std::vector<unsigned char> &data) const
864 {
865 data = Query;
866 data.push_back(0x00);
867 data.push_back(static_cast<unsigned char>(mProtocolType));
868 data.push_back(0x00);
869 return P2pServiceStatus::PSRS_SUCCESS;
870 }
871
872 /**
873 * @Description - Processes the data in the response returned by the peer device.
874 * @param data - the response received from the peer device.
875 */
ProcessServiceResponse(const std::vector<unsigned char> & data) const876 void WifiP2pServiceInfo::ProcessServiceResponse(const std::vector<unsigned char> &data) const
877 {
878 if (data.empty()) {
879 return;
880 }
881 }
882
Bin2HexStr(std::vector<unsigned char> data)883 std::string WifiP2pServiceInfo::Bin2HexStr(std::vector<unsigned char> data)
884 {
885 std::string dataString;
886 for (auto bufData : data) {
887 char buf[3];
888 if (sprintf_s(buf, sizeof(buf), "%x", bufData & 0xff) < 0) {
889 return "";
890 }
891 std::string aDataString = buf;
892 if (aDataString.length() == 1) {
893 dataString += std::string("0");
894 }
895 dataString += aDataString;
896 }
897 return dataString;
898 }
899
Bin2HexStr(std::string data)900 std::string WifiP2pServiceInfo::Bin2HexStr(std::string data)
901 {
902 std::string dataString;
903 for (auto bufData : data) {
904 char buf[3];
905 if (sprintf_s(buf, sizeof(buf), "%x", bufData & 0xff) < 0) {
906 return "";
907 }
908 std::string aDataString = buf;
909 if (aDataString.length() == 1) {
910 dataString += std::string("0");
911 }
912 dataString += aDataString;
913 }
914 return dataString;
915 }
916
GetRandomMacSupport() const917 bool P2pVendorConfig::GetRandomMacSupport() const
918 {
919 return randomMacSupport;
920 }
921
SetRandomMacSupport(bool support)922 void P2pVendorConfig::SetRandomMacSupport(bool support)
923 {
924 randomMacSupport = support;
925 }
926
GetIsAutoListen() const927 bool P2pVendorConfig::GetIsAutoListen() const
928 {
929 return isAutoListen;
930 }
931
SetIsAutoListen(bool autoListen)932 void P2pVendorConfig::SetIsAutoListen(bool autoListen)
933 {
934 isAutoListen = autoListen;
935 }
936
GetDeviceName() const937 const std::string &P2pVendorConfig::GetDeviceName() const
938 {
939 return deviceName;
940 }
941
SetDeviceName(const std::string & name)942 void P2pVendorConfig::SetDeviceName(const std::string &name)
943 {
944 deviceName = name;
945 }
946
GetPrimaryDeviceType() const947 const std::string &P2pVendorConfig::GetPrimaryDeviceType() const
948 {
949 return primaryDeviceType;
950 }
951
SetPrimaryDeviceType(const std::string & setPrimaryDeviceType)952 void P2pVendorConfig::SetPrimaryDeviceType(const std::string &setPrimaryDeviceType)
953 {
954 primaryDeviceType = setPrimaryDeviceType;
955 }
956
GetSecondaryDeviceType() const957 const std::string &P2pVendorConfig::GetSecondaryDeviceType() const
958 {
959 return secondaryDeviceType;
960 }
961
SetSecondaryDeviceType(const std::string & setSecondaryDeviceType)962 void P2pVendorConfig::SetSecondaryDeviceType(const std::string &setSecondaryDeviceType)
963 {
964 secondaryDeviceType = setSecondaryDeviceType;
965 }
966 } // namespace Wifi
967 } // namespace OHOS
968