• 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 
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