16 #include <nn/pia/local/local_Definitions.h>
17 #include <nn/pia/local/local_LocalNetworkSetting.h>
18 #include <nn/pia/local/local_LocalSessionTypes.h>
20 #include <nn/pia/common/common_FixedString.h>
21 #if NN_PIA_NINTENDOSDK
31 #if NN_PIA_LOCAL_ENABLE_LDN
32 static const uint8_t LdnWirelessCryptoKeySizeMin = nn::ldn::PassphraseSizeMin;
33 static const uint8_t LdnWirelessCryptoKeySizeMax = nn::ldn::PassphraseSizeMax;
35 static const uint32_t LdnBeaconSystemDataSize = 20;
36 static const uint32_t LdnBeaconApplicationDataSizeMax = nn::ldn::AdvertiseDataSizeMax - LdnBeaconSystemDataSize;
38 static const uint8_t LdnUserNameSizeMax = nn::ldn::UserNameBytesMax;
40 static const int LdnLocalCommunicationVersionMin = nn::ldn::LocalCommunicationVersionMin;
41 static const int LdnLocalCommunicationVersionMax = nn::ldn::LocalCommunicationVersionMax;
47 class LdnNetworkSetting :
public LocalNetworkSetting
51 : LocalNetworkSetting(), localCommunicationVersion(LdnLocalCommunicationVersionMin), isEncryptionDisabledForDebug(false)
55 virtual ~LdnNetworkSetting()
62 virtual LocalNetworkType GetLocalNetworkType()
const
64 return LocalNetworkType_Ldn;
68 int localCommunicationVersion;
69 bool isEncryptionDisabledForDebug;
76 class LdnCreateNetworkSetting :
public LocalCreateNetworkSetting
82 LdnCreateNetworkSetting()
83 : LocalCreateNetworkSetting(),
84 localCommunicationId(0),
87 wirelessCryptoKeySize(0),
88 applicationDataSize(0),
91 memset(wirelessCryptoKey, 0,
sizeof(wirelessCryptoKey));
92 memset(applicationData, 0,
sizeof(applicationData));
95 virtual ~LdnCreateNetworkSetting()
102 virtual uint8_t* GetApplicationDataPtr()
104 return applicationData;
111 virtual uint32_t GetApplicationDataSize()
const
113 return applicationDataSize;
120 virtual void AddApplicationDataSize(uint32_t size)
122 applicationDataSize += size;
126 uint64_t localCommunicationId;
129 uint8_t wirelessCryptoKey[LdnWirelessCryptoKeySizeMax];
130 uint8_t wirelessCryptoKeySize;
132 uint8_t applicationData[LdnBeaconApplicationDataSizeMax + LdnBeaconSystemDataSize];
133 uint32_t applicationDataSize;
142 class LdnNetworkDescription :
public LocalNetworkDescription
148 LdnNetworkDescription()
149 : LocalNetworkDescription()
150 #if NN_PIA_LOCAL_ENABLE_LDN
157 virtual ~LdnNetworkDescription()
168 virtual uint16_t GetCurrentParticipantNum()
const
170 #if NN_PIA_LOCAL_ENABLE_LDN
171 if (m_NetworkInfo.common.networkType != nn::ldn::NetworkType_Ldn)
177 return static_cast<uint16_t
>(m_NetworkInfo.ldn.nodeCount);
189 virtual uint16_t GetMaxParticipantNum()
const
191 #if NN_PIA_LOCAL_ENABLE_LDN
192 if (m_NetworkInfo.common.networkType != nn::ldn::NetworkType_Ldn)
198 return static_cast<uint16_t
>(m_NetworkInfo.ldn.nodeCountMax);
214 virtual bool IsOpened()
const
216 #if NN_PIA_LOCAL_ENABLE_LDN
217 if (m_NetworkInfo.common.networkType != nn::ldn::NetworkType_Ldn)
223 return m_NetworkInfo.ldn.stationAcceptPolicy == nn::ldn::AcceptPolicy_AlwaysAccept;
230 uint64_t GetLocalCommunicationId()
const
232 #if NN_PIA_LOCAL_ENABLE_LDN
233 if (m_NetworkInfo.common.networkType != nn::ldn::NetworkType_Ldn)
239 return m_NetworkInfo.networkId.intentId.localCommunicationId;
246 uint16_t GetSceneId()
const
248 #if NN_PIA_LOCAL_ENABLE_LDN
249 if (m_NetworkInfo.common.networkType != nn::ldn::NetworkType_Ldn)
255 return m_NetworkInfo.networkId.intentId.sceneId;
269 virtual uint16_t GetChannel()
const
271 #if NN_PIA_LOCAL_ENABLE_LDN
272 return static_cast<uint16_t
>(m_NetworkInfo.common.channel);
285 virtual void GetBssid(uint8_t* pBssidBuffer)
const
287 if (!PIA_IS_VALID_POINTER(pBssidBuffer))
291 #if NN_PIA_LOCAL_ENABLE_LDN
292 if (m_NetworkInfo.common.networkType != nn::ldn::NetworkType_Ldn)
298 memcpy(pBssidBuffer, m_NetworkInfo.ldn.nodes[0].macAddress.raw,
local::BssIdSize);
308 virtual uint32_t GetGameMode()
const
310 return static_cast<uint32_t
>(GetSceneId());
314 #if NN_PIA_LOCAL_ENABLE_LDN
318 const nn::ldn::NetworkInfo& GetNetworkInfo()
const
320 return m_NetworkInfo;
327 nn::ldn::NetworkInfo& GetNetworkInfo()
329 return m_NetworkInfo;
336 void SetConnectNetworkSetting(
const nn::ldn::NetworkInfo& networkInfo)
338 m_NetworkInfo = networkInfo;
342 virtual void Copy(
const LocalNetworkDescription* description)
344 const LdnNetworkDescription* pLdnDesc =
static_cast<const LdnNetworkDescription*
>(description);
345 m_NetworkInfo = pLdnDesc->GetNetworkInfo();
350 #if NN_PIA_LOCAL_ENABLE_LDN
351 nn::ldn::NetworkInfo m_NetworkInfo;
360 class LdnConnectNetworkSetting :
public LocalConnectNetworkSetting
363 LdnConnectNetworkSetting()
364 : LocalConnectNetworkSetting(),
365 wirelessCryptoKeySize(0)
367 memset(wirelessCryptoKey, 0,
sizeof(wirelessCryptoKey));
370 uint8_t wirelessCryptoKey[LdnWirelessCryptoKeySizeMax];
371 uint8_t wirelessCryptoKeySize;
378 enum LdnScanFilterType
380 LdnScanFilterType_LocalCommunicationIdAndSceneId = 0,
381 LdnScanFilterType_LocalCommunicationId
388 class LdnScanNetworkSetting :
public LocalScanNetworkSetting
391 LdnScanNetworkSetting()
392 : LocalScanNetworkSetting(),
393 localCommunicationId(0),
396 scanFilterType(LdnScanFilterType_LocalCommunicationIdAndSceneId)
400 uint64_t localCommunicationId;
403 LdnScanFilterType scanFilterType;
412 class LdnBeaconSystemDataHostMigration :
public LocalBeaconSystemData
415 LdnBeaconSystemDataHostMigration()
417 memset(reservedLdnHostMigration, 0,
sizeof(reservedLdnHostMigration));
420 uint8_t reservedLdnHostMigration[8];
432 class LdnStationInfo :
public LocalStationInfo
442 LocalStationInfo::Clear();
452 LdnStationInfo& operator=(
const LdnStationInfo& rhs)
454 LocalStationInfo::operator=(rhs);
455 userName.Copy(rhs.userName);
456 stationId = rhs.stationId;
464 LdnStationInfo(
const LdnStationInfo& rhs)
465 : LocalStationInfo(rhs)
467 userName.Copy(rhs.userName);
468 stationId = rhs.stationId;
471 common::FixedString<LdnUserNameSizeMax> userName;