2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FNetWifiWifiDirectDeviceInfoImpl.cpp
20 * @brief This is the implementation file for the _WifiDirectDeviceInfoImpl class.
22 * This header file contains implementation of the _WifiDirectDeviceInfoImpl class.
25 #include <FOspConfig.h>
26 #include <FNetWifiWifiDirectDeviceInfo.h>
27 #include <FNetIp4Address.h>
28 #include <FBaseSysLog.h>
29 #include "FNetWifi_WifiDirectDeviceInfoImpl.h"
30 #include "FNetWifi_WifiDirectUtility.h"
32 using namespace Tizen::Base;
34 namespace Tizen { namespace Net { namespace Wifi
37 ////////////////////////////////////////////////////////////////////////////////
38 /// Lifecycle : Public
39 _WifiDirectDeviceInfoImpl::_WifiDirectDeviceInfoImpl(void)
43 , __virtualMacAddress("")
46 , __deviceStatus(WIFI_DIRECT_DEVICE_DEACTIVATED)
47 , __groupMemberType(WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
48 , __deviceTypeCategory(WIFI_DIRECT_DEVICE_TYPE_CATEGORY_OTHERS)
49 , __isDisconnecting(false)
54 _WifiDirectDeviceInfoImpl::_WifiDirectDeviceInfoImpl(const _WifiDirectDeviceInfoImpl& value)
55 : __localDeviceId(value.__localDeviceId)
56 , __deviceName(value.__deviceName)
57 , __macAddress(value.__macAddress)
58 , __virtualMacAddress(value.__virtualMacAddress)
59 , __ssid(value.__ssid)
61 , __deviceStatus(value.__deviceStatus)
62 , __groupMemberType(value.__groupMemberType)
63 , __deviceTypeCategory(value.__deviceTypeCategory)
64 , __isDisconnecting(false)
66 __wpsConfigurationModeList.Construct(value.__wpsConfigurationModeList);
68 if (value.__pIpAddress != null)
70 Ip4Address* pIp4Addr = null;
71 pIp4Addr = dynamic_cast<Ip4Address*>(value.__pIpAddress);
75 __pIpAddress = new (std::nothrow) Ip4Address(*pIp4Addr);
80 _WifiDirectDeviceInfoImpl::_WifiDirectDeviceInfoImpl(const String& deviceName, const String& macAddr)
82 , __deviceName(deviceName)
83 , __macAddress(macAddr)
84 , __virtualMacAddress("")
87 , __deviceStatus(WIFI_DIRECT_DEVICE_DEACTIVATED)
88 , __groupMemberType(WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
89 , __deviceTypeCategory(WIFI_DIRECT_DEVICE_TYPE_CATEGORY_OTHERS)
90 , __isDisconnecting(false)
95 _WifiDirectDeviceInfoImpl::~_WifiDirectDeviceInfoImpl(void)
97 if (__pIpAddress != null)
104 ////////////////////////////////////////////////////////////////////////////////
105 /// Operation : Public
106 _WifiDirectDeviceInfoImpl&
107 _WifiDirectDeviceInfoImpl::operator=(const _WifiDirectDeviceInfoImpl& rhs)
111 __localDeviceId = rhs.__localDeviceId;
112 __deviceName = rhs.__deviceName;
113 __macAddress = rhs.__macAddress;
114 __virtualMacAddress = rhs.__virtualMacAddress;
116 __deviceStatus = rhs.__deviceStatus;
117 __groupMemberType = rhs.__groupMemberType;
118 __deviceTypeCategory = rhs.__deviceTypeCategory;
119 __isDisconnecting = rhs.__isDisconnecting;
120 __wpsConfigurationModeList.Construct(rhs.__wpsConfigurationModeList);
122 IpAddress* pOrigIpAddr = null;
123 Ip4Address* pIp4Addr = null;
125 pIp4Addr = dynamic_cast<Ip4Address*>(rhs.__pIpAddress);
127 if (pIp4Addr != null)
129 pOrigIpAddr = __pIpAddress;
130 __pIpAddress = new (std::nothrow) Ip4Address(*pIp4Addr);
132 SysTryCatch(NID_NET_WIFI, __pIpAddress != null, __pIpAddress = pOrigIpAddr, E_OUT_OF_MEMORY,
133 "[E_OUT_OF_MEMORY] Memory allocation failed.");
143 _WifiDirectDeviceInfoImpl::GetDeviceId(void) const
145 return __localDeviceId;
149 _WifiDirectDeviceInfoImpl::GetDeviceName(void) const
155 _WifiDirectDeviceInfoImpl::GetMacAddress(void) const
161 _WifiDirectDeviceInfoImpl::GetIpAddress(void) const
167 _WifiDirectDeviceInfoImpl::GetSsid(void) const
172 WifiDirectDeviceStatus
173 _WifiDirectDeviceInfoImpl::GetDeviceStatus(void) const
175 return __deviceStatus;
178 WifiDirectGroupMemberType
179 _WifiDirectDeviceInfoImpl::GetGroupMemberType(void) const
181 return __groupMemberType;
184 WifiDirectDeviceTypeCategory
185 _WifiDirectDeviceInfoImpl::GetDeviceTypeCategory(void) const
187 return __deviceTypeCategory;
189 const Tizen::Base::Collection::IListT<WifiWpsConfigurationMode>*
190 _WifiDirectDeviceInfoImpl::GetSupportedWpsConfigurationModeList(void) const
192 return &__wpsConfigurationModeList;
196 _WifiDirectDeviceInfoImpl::SetDeviceId(const WifiDirectDeviceId localDeviceId)
198 __localDeviceId = localDeviceId;
202 _WifiDirectDeviceInfoImpl::SetDeviceName(const String& deviceName)
204 int nameLength = deviceName.GetLength();
206 // need to check(device name's length)
207 SysTryReturnResult(NID_NET_WIFI, nameLength > 0 && nameLength <= MAX_DEVICE_NAME_LENGTH, E_INVALID_ARG,
208 "The argument is invalid. The length of name is %d.", nameLength);
210 __deviceName = deviceName;
216 _WifiDirectDeviceInfoImpl::SetMacAddress(const String& macAddress)
218 //need to check(mac address's range)
219 SysTryReturnResult(NID_NET_WIFI, _WifiDirectUtility::CheckMacAddress(macAddress), E_INVALID_ARG,
220 "The argument is invalid.");
222 __macAddress = macAddress;
228 _WifiDirectDeviceInfoImpl::SetIpAddress(const String& ipAddress)
230 if (__pIpAddress != null)
235 __pIpAddress = new (std::nothrow) Ip4Address(ipAddress);
236 SysTryReturnResult(NID_NET_WIFI, __pIpAddress != null, E_OUT_OF_MEMORY, "Memory allocation failed.");
242 _WifiDirectDeviceInfoImpl::SetSsid(const Tizen::Base::String& ssid)
244 //need to check arg(ssid)
245 result r = E_SUCCESS;
253 _WifiDirectDeviceInfoImpl::SetDeviceStatus(const WifiDirectDeviceStatus& deviceStatus)
255 __deviceStatus = deviceStatus;
259 _WifiDirectDeviceInfoImpl::SetGroupMemberType(const WifiDirectGroupMemberType& groupMemberType)
261 __groupMemberType = groupMemberType;
265 _WifiDirectDeviceInfoImpl::SetDeviceTypeCategory(const WifiDirectDeviceTypeCategory& deviceTypeCategory)
267 __deviceTypeCategory = deviceTypeCategory;
271 _WifiDirectDeviceInfoImpl::SetSupportedWpsConfigurationMode(
272 const Tizen::Base::Collection::IListT<WifiWpsConfigurationMode>& wpsConfigurationModeList)
274 result r = E_SUCCESS;
275 r = __wpsConfigurationModeList.Construct(wpsConfigurationModeList);
280 _WifiDirectDeviceInfoImpl::SetSsidOfWifiDirectDeviceInfo(WifiDirectDeviceInfo& wifiDirectDeviceInfo, const String& ssid)
282 wifiDirectDeviceInfo.__pWifiDirectDeviceInfoImpl->SetSsid(ssid);
285 WifiDirectDeviceInfo*
286 _WifiDirectDeviceInfoImpl::GetWifiDirectDeviceInfoInstanceN(_WifiDirectDeviceInfoImpl& wifiDirectDeviceInfoImpl)
288 PrintDeviceInfo(wifiDirectDeviceInfoImpl);
290 WifiDirectDeviceInfo* pWifiDirectDeviceInfo = new (std::nothrow) WifiDirectDeviceInfo();
292 SysTryReturn(NID_NET_WIFI, pWifiDirectDeviceInfo != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
294 *(pWifiDirectDeviceInfo->__pWifiDirectDeviceInfoImpl) = wifiDirectDeviceInfoImpl;
296 return pWifiDirectDeviceInfo;
300 _WifiDirectDeviceInfoImpl::PrintDeviceInfo(const _WifiDirectDeviceInfoImpl& wifiDirectDeviceInfo)
302 SysLog(NID_NET_WIFI, "WifiDirectDeviceId : (%d) ", wifiDirectDeviceInfo.GetDeviceId());
303 SysLog(NID_NET_WIFI, "WifiDirectDeviceName : (%ls) ", wifiDirectDeviceInfo.GetDeviceName().GetPointer());
304 SysLog(NID_NET_WIFI, "WifiDirectMacAddress : (%ls) ", wifiDirectDeviceInfo.GetMacAddress().GetPointer());
305 SysLog(NID_NET_WIFI, "WifiDirectVirtualMacAddress : (%ls) ", wifiDirectDeviceInfo.GetVirtualMacAddress().GetPointer());
306 SysLog(NID_NET_WIFI, "WifiDirectSsid : (%ls) ", wifiDirectDeviceInfo.GetSsid().GetPointer());
307 if (wifiDirectDeviceInfo.GetDeviceStatus() == WIFI_DIRECT_DEVICE_ACTIVATED)
309 SysLog(NID_NET_WIFI, "WifiDirectDeviceStatus : Activated");
311 else if (wifiDirectDeviceInfo.GetDeviceStatus() == WIFI_DIRECT_DEVICE_DEACTIVATED)
313 SysLog(NID_NET_WIFI, "WifiDirectDeviceStatus : Deactivated");
316 if (wifiDirectDeviceInfo.GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_OWNER)
318 SysLog(NID_NET_WIFI, "WifiDirectDeviceMemberType : OWNER");
320 else if (wifiDirectDeviceInfo.GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_CLIENT)
322 SysLog(NID_NET_WIFI, "WifiDirectDeviceMemberType : Client");
324 else if (wifiDirectDeviceInfo.GetGroupMemberType() == WIFI_DIRECT_GROUP_MEMBER_TYPE_NONE)
326 SysLog(NID_NET_WIFI, "WifiDirectDeviceMemberType : NONE");
329 switch (wifiDirectDeviceInfo.GetDeviceTypeCategory())
331 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_COMPUTER:
332 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_COMPUTER");
334 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_INPUT_DEVICE:
335 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_INPUT_DEVICE");
337 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_PRINTER_SCANNER_FAX_COPIER:
338 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_PRINTER_SCANNER_FAX_COPIER");
340 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_CAMERA:
341 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_CAMERA");
343 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_STORAGE:
344 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_STORAGE");
346 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_NETWORK_INFRASTRUCTURE:
347 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_NETWORK_INFRASTRUCTURE");
349 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_DISPLAY:
350 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_DISPLAY");
352 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_MULTIMEDIA_DEVICE:
353 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_MULTIMEDIA_DEVICE");
355 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_GAMING_DEVICE:
356 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_GAMING_DEVICE");
358 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_TELEPHONE:
359 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_TELEPHONE");
361 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_AUDIO_DEVICE:
362 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_AUDIO_DEVICE");
364 case WIFI_DIRECT_DEVICE_TYPE_CATEGORY_OTHERS:
365 SysLog(NID_NET_WIFI, "WifiDirectDeviceTypeCategory : WIFI_DIRECT_DEVICE_TYPE_CATEGORY_OTHERS");
369 if (wifiDirectDeviceInfo.GetIpAddress())
371 SysLog(NID_NET_WIFI, "WifiDirectIpAddress : (%ls) ", wifiDirectDeviceInfo.GetIpAddress()->ToString().GetPointer());
375 SysLog(NID_NET_WIFI, "WifiDirectIpAddress is null.");
380 _WifiDirectDeviceInfoImpl::GetVirtualMacAddress(void) const
382 return __virtualMacAddress;
386 _WifiDirectDeviceInfoImpl::SetVirtualMacAddress(const Tizen::Base::String& macAddress)
388 //need to check(mac address's range)
389 SysTryReturnResult(NID_NET_WIFI, _WifiDirectUtility::CheckMacAddress(macAddress), E_INVALID_ARG,
390 "The argument is invalid.");
392 __virtualMacAddress = macAddress;
398 _WifiDirectDeviceInfoImpl::Equals(const Tizen::Base::Object& obj) const
400 const _WifiDirectDeviceInfoImpl* pOther = dynamic_cast<const _WifiDirectDeviceInfoImpl*>(&obj);
403 || __localDeviceId != pOther->__localDeviceId
404 || !__deviceName.Equals(pOther->__deviceName)
405 || !__macAddress.Equals(pOther->__macAddress)
406 || !__virtualMacAddress.Equals(pOther->__virtualMacAddress)
407 || !__ssid.Equals(pOther->__ssid)
408 || __deviceStatus != pOther->__deviceStatus
409 || __groupMemberType != pOther->__groupMemberType
410 || __deviceTypeCategory != pOther->__deviceTypeCategory
411 || !__wpsConfigurationModeList.Equals(pOther->__wpsConfigurationModeList) )
416 if (__pIpAddress != null && pOther->__pIpAddress != null)
418 if( !__pIpAddress->Equals(*pOther->__pIpAddress) )
423 else if (__pIpAddress != null && pOther->__pIpAddress == null)
427 else if (__pIpAddress == null && pOther->__pIpAddress != null)
436 _WifiDirectDeviceInfoImpl::GetHashCode(void) const
438 return __localDeviceId ^ __deviceName.GetHashCode() ^ __macAddress.GetHashCode() ^ __virtualMacAddress.GetHashCode() ^ __ssid.GetHashCode();
441 _WifiDirectDeviceInfoImpl*
442 _WifiDirectDeviceInfoImpl::GetInstance(WifiDirectDeviceInfo& wifiDirectDeviceInfo)
444 return wifiDirectDeviceInfo.__pWifiDirectDeviceInfoImpl;
447 const _WifiDirectDeviceInfoImpl*
448 _WifiDirectDeviceInfoImpl::GetInstance(const WifiDirectDeviceInfo& wifiDirectDeviceInfo)
450 return wifiDirectDeviceInfo.__pWifiDirectDeviceInfoImpl;
454 _WifiDirectDeviceInfoImpl::SetDisconnect(bool value)
456 __isDisconnecting = value;
459 _WifiDirectDeviceInfoImpl::IsDisconnecting(void)
461 return __isDisconnecting;
464 } } }// Tizen::Net::Wifi
471 _OSP_EXPORT_ Tizen::Base::String
472 _WifiDirectDeviceInfoImpl_GetDeviceName(const Tizen::Net::Wifi::WifiDirectDeviceInfo& deviceInfo)
474 return deviceInfo.GetDeviceName();
477 _OSP_EXPORT_ const Tizen::Net::IpAddress*
478 _WifiDirectDeviceInfoImpl_GetIpAddress(const Tizen::Net::Wifi::WifiDirectDeviceInfo& deviceInfo)
480 return deviceInfo.GetIpAddress();
483 _OSP_EXPORT_ Tizen::Base::String
484 _WifiDirectDeviceInfoImpl_GetVirtualMacAddress(const Tizen::Net::Wifi::WifiDirectDeviceInfo& deviceInfo)
486 const Tizen::Net::Wifi::_WifiDirectDeviceInfoImpl* pWifiDirectDeviceInfoImpl = null;
488 pWifiDirectDeviceInfoImpl = Tizen::Net::Wifi::_WifiDirectDeviceInfoImpl::GetInstance(deviceInfo);
489 SysTryReturn(NID_NET_WIFI, pWifiDirectDeviceInfoImpl != null, Tizen::Base::String(L""), E_SYSTEM,
490 "[E_SYSTEM] A system error has occurred. Failed to get WifiDirectDeviceInfo instance.");
492 return pWifiDirectDeviceInfoImpl->GetVirtualMacAddress();