CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
local_LocalFacade.h
1 /*--------------------------------------------------------------------------------*
2  Copyright (C)Nintendo All rights reserved.
3 
4  These coded instructions, statements, and computer programs contain proprietary
5  information of Nintendo and/or its licensed developers and are protected by
6  national and international copyright laws. They may not be disclosed to third
7  parties or copied or duplicated in any form, in whole or in part, without the
8  prior written consent of Nintendo.
9 
10  The content herein is highly confidential and should be handled accordingly.
11  *--------------------------------------------------------------------------------*/
12 
13 
14 #pragma once
15 
16 #include <nn/pia/local/local_Definitions.h>
17 #include <nn/pia/local/local_LocalNetworkSetting.h>
18 
19 #include <nn/pia/common/common_CallContext.h>
20 #include <nn/pia/common/common_CriticalSection.h>
21 
22 namespace nn
23 {
24 namespace pia
25 {
26 namespace common
27 {
28 class InetAddress;
29 class StationAddress;
30 }
31 }
32 } // end of namespace nn::pia::local
33 
34 namespace nn
35 {
36 namespace pia
37 {
38 namespace transport
39 {
40 
41 class StationConnectionInfo;
42 }
43 }
44 } // end of namespace nn::pia::transport
45 
46 namespace nn
47 {
48 namespace pia
49 {
50 namespace local
51 {
52 
53 // 先行宣言
54 class LocalProtocol;
55 class LocalNetworkSetting;
56 class LocalNetworkDescription;
57 class LocalCreateNetworkSetting;
58 class LocalConnectNetworkSetting;
59 class LocalScanNetworkSetting;
60 
61 #if NN_PIA_CTR
62 class UdsNetworkSetting;
63 #endif
64 
65 #if NN_PIA_NINTENDOSDK
66 class LdnNetworkSetting;
67 #endif
68 
69 /*!
70  @brief ローカルネットワークを扱うためのクラスです。
71 */
73 {
74 public:
75  /*!
76  @brief LocalFacade クラスのインスタンスを作成します(シングルトンパターン)。
77 
78  @return インスタンスの作成に成功すれば、成功の Result が返されます。
79 
80  @retval ResultNotInitialized local モジュールが未初期化です。
81  @retval ResultInvalidState インスタンスを作成するタイミングが誤っています。
82  @retval ResultAlreadyExists 既にインスタンスは作成されています。
83  */
84  static Result CreateInstance();
85 
86 
87  /*!
88  @brief LocalFacade クラスのインスタンスを破棄します(シングルトンパターン)。
89  */
90  static void DestroyInstance();
91 
92  /*!
93  @brief LocalFacade クラスのインスタンスを得ます(シングルトンパターン)。
94  事前に @ref Initialize による初期化を済ませていない場合は、
95  NULLポインタが返されます。
96  @return LocalFacade インスタンスへのポインタ。
97  */
99  {
100  return s_pInstance;
101  }
102 
103  /*!
104  @cond PRIVATE
105  @brief LocalFacade クラスのインスタンスが初期化されたかどうかを取得します。
106  */
107  static bool IsInitialized()
108  {
109  return s_IsInitialized;
110  }
111  //! @endcond
112 
113 private:
114  LocalFacade();
115  virtual ~LocalFacade();
116  /*!
117  @brief コピーコンストラクタは封印します。
118  */
119  LocalFacade(const LocalFacade&);
120 
121  /*!
122  @brief 代入演算子は封印します。
123  */
124  LocalFacade& operator=(const LocalFacade&);
125 
126 public:
127  /*!
128  @brief インスタンスを初期化します。 BeginSetup() ~ EndSetup() 間で呼び出す必要があります。
129 
130  @attention LocalFacade の受信バッファとしてデバイスメモリを使用することはできないため、
131  common::Initialize() にデバイスメモリが渡されていた場合、アサート停止します。
132 
133  @param[in] setting 各種設定情報です。
134 
135  @return 成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
136 
137  @retval ResultAlreadyInitialized 既に初期化されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
138  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
139 
140  @see Finalize
141  */
142  Result Initialize(const LocalNetworkSetting& setting);
143 
144 
145  /*!
146  @brief 終了処理です。
147 
148  @see Initialize
149  */
150  void Finalize();
151 
152 
153  /*!
154  @cond PRIVATE
155  @brief スタートアップ処理です。
156 
157  @attention 本関数呼び出し中は、スリープモードに遷移してはいけません。
158 
159  @return 成功すれば、IsSuccess() が true を返す Result が返されます。
160 
161  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
162  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。もしくは既に Starup() が呼び出されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
163 
164  @see Cleanup
165  */
166  Result Startup();
167  //! @endcond
168 
169 
170  /*!
171  @cond PRIVATE
172  @brief クリーンアップ処理です。
173 
174  @see Startup
175  */
176  void Cleanup();
177  //! @endcond
178 
179 
180  /*!
181  @cond PRIVATE
182  @brief ローカルネットワークを作成します。
183 
184  @details ネットワークの設定を受け取って、ローカルネットワーク作成の非同期処理を開始します。
185  ネットワークを作成した端末はローカルネットワークホストになります。
186  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
187  処理の完了は @ref IsCreateNetworkCompleted でチェックし、結果は @ref GetCreateNetworkResult で確認できます。
188 
189  @param[in] pCreateNetworkSetting 作成するネットワークの設定です。
190 
191  @return 正常に処理を開始できた場合、IsSuccess() が真となる Result が返ります。
192 
193  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
194  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
195  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、既に処理を実行中です。または、他の非同期処理を実行中です。または、既に接続中です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
196  @retval ResultErrorOccurred 内部でエラーが発生しました。クリーンアップ処理を実行してください。
197 
198  @see IsCreateNetworkCompleted, GetCreateNetworkResult
199  */
200  Result CreateNetworkAsync(const LocalCreateNetworkSetting* pCreateNetworkSetting);
201  //! @endcond
202 
203  /*!
204  @cond PRIVATE
205  @brief CreateNetworkAsync の非同期処理の完了をチェックします。
206 
207  @details @ref CreateNetworkAsync で開始された非同期処理は、本関数で完了をチェックできます。
208 
209  @return 非同期処理が完了していた場合は true、処理中の場合は false が返ります。非同期処理が開始されていない場合や他の非同期処理が開始されている場合も false が返ります。
210 
211  @see CreateNetworkAsync, GetCreateNetworkResult
212  */
213  bool IsCreateNetworkCompleted();
214  //! @endcond
215 
216  /*!
217  @cond PRIVATE
218  @brief CreateNetworkAsync の非同期処理の結果を取得します。
219 
220  @details @ref CreateNetworkAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。<br>
221 
222  @return CreateNetworkAsync の非同期処理の結果を返します。 処理が成功していた場合、 IsSuccess() が真となる Result を返します。処理が失敗していた場合、以下の Result を返します。
223  @retval ResultNotInitialized 通信ライブラリが初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
224  @retval ResultInvalidState 実行可能な状態ではありません。また、結果を取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
225  @if CTR_DOC
226  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
227  @elseif NIN_DOC
228  @retval ResultInvalidConnection 通信できません。クリーンアップ処理を実行してください。
229  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
230  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
231  @endif
232  @retval ResultTimeOut タイムアウトで終了しました。クリーンアップ処理を実行してください。
233  @retval ResultCancelled キャンセルされました。クリーンアップ処理を実行してください。
234  @retval ResultErrorOccurred 内部でエラーが発生しました。クリーンアップ処理を実行してください。
235  @if NIN_DOC
236  @retval ResultWirelessControllerCountLimitation 無線コントローラの接続台数が制限を超えています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
237  @endif
238 
239  @see CreateNetworkAsync, IsCreateNetworkCompleted
240  */
241  Result GetCreateNetworkResult();
242  //! @endcond
243 
244 
245  /*!
246  @cond PRIVATE
247  @brief ローカルネットワークを破棄します。
248 
249  @details ローカルネットワークを破棄する非同期処理を開始します。
250  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
251  処理の完了は @ref IsDestroyNetworkCompleted でチェックし、結果は @ref GetDestroyNetworkResult で確認できます。
252  処理完了後は、LocalFacade のクリーンアップを行う必要があります。
253 
254  @attention 本関数はローカルネットワークホストでのみ実行可能です。
255 
256  @return 正常に処理を開始できた場合、IsSuccess() が真となる Result が返ります。
257 
258  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
259  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、既に処理を実行中です。または、他の非同期処理を実行中です。または、自分はローカルネットワークホストではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
260 
261  @see IsDestroyNetworkCompleted, GetDestroyNetworkResult
262  */
263  Result DestroyNetworkAsync();
264  //! @endcond
265 
266  /*!
267  @cond PRIVATE
268  @brief DestroyNetworkAsync の非同期処理の完了をチェックします。
269 
270  @details @ref DestroyNetworkAsync で開始された非同期処理は、本関数で完了をチェックできます。
271 
272  @return 非同期処理が完了していた場合は true、処理中の場合は false が返ります。非同期処理が開始されていない場合や他の非同期処理が開始されている場合も false が返ります。
273 
274  @see DestroyNetworkAsync, GetDestroyNetworkResult
275  */
276  bool IsDestroyNetworkCompleted();
277  //! @endcond
278 
279  /*!
280  @cond PRIVATE
281  @brief DestroyNetworkAsync の非同期処理の結果を取得します。
282 
283  @details @ref DestroyNetworkAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。<br>
284 
285  @return DestroyNetworkAsync の非同期処理の結果を返します。処理が成功していた場合、IsSuccess() が真となる Result を返します。処理が失敗していた場合、以下の Result を返します。
286  @retval ResultNotInitialized 通信ライブラリが初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
287  @retval ResultInvalidState 実行可能な状態ではありません。また、結果を取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
288  @if CTR_DOC
289  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
290  @elseif NIN_DOC
291  @retval ResultInvalidConnection 通信できません。クリーンアップ処理を実行してください。
292  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
293  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
294  @endif
295  @retval ResultCancelled キャンセルされました。クリーンアップ処理を実行してください。
296  @retval ResultErrorOccurred 内部でエラーが発生しました。クリーンアップ処理を実行してください。
297 
298  @see DestroyNetworkAsync, IsDestroyNetworkCompleted
299  */
300  Result GetDestroyNetworkResult();
301  //! @endcond
302 
303 
304  /*!
305  @cond PRIVATE
306  @brief ローカルネットワークに接続します。
307 
308  @details ローカルネットワークに接続する非同期処理を開始します。接続した端末はローカルネットワーククライアントになります。
309  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
310  処理の完了は @ref IsConnectNetworkCompleted でチェックし、結果は @ref GetConnectNetworkResult で確認できます。<br>
311  また、処理中は @ref CancelConnectNetworkAsync を呼び出すことで、処理を中止することができます。
312  中止した場合も、@ref IsConnectNetworkCompleted で処理の完了が確認できるまで待つ必要があります。<br>
313  取得した処理結果が失敗していた場合(中止した場合も含む)は、LocalFacade をクリーンアップし、再度スタートアップを行う必要があります。
314 
315  @param[in] pConnectNetworkSetting 接続するネットワークの設定です。
316 
317  @return 正常に処理を開始できた場合、IsSuccess() が真となる Result が返ります。
318 
319  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
320  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
321  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、既に処理を実行中です。または、他の非同期処理を実行中です。または、既に接続中です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
322  @if CTR_DOC
323  @retval ResultLocalLowerVersion 自分の @ref local::LocalNetworkVersion 、または、アプリケーションバージョンが接続先ネットワークのものよりも低いです。クリーンアップ処理を実行してください。
324  @retval ResultLocalHigherVersion 自分の @ref local::LocalNetworkVersion 、または、アプリケーションバージョンが接続先ネットワークのものよりも高いです。クリーンアップ処理を実行してください。
325  @elseif NIN_DOC
326  @retval ResultLocalLowerVersion 自分の @ref local::LocalNetworkVersion が接続先ネットワークのものよりも低いです。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
327  @retval ResultLocalHigherVersion 自分の @ref local::LocalNetworkVersion が接続先ネットワークのものよりも高いです。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
328  @endif
329 
330  @see IsConnectNetworkCompleted, GetConnectNetworkResult, CancelConnectNetworkAsync
331  */
332  Result ConnectNetworkAsync(const LocalConnectNetworkSetting* pConnectNetworkSetting);
333  //! @endcond
334 
335  /*!
336  @cond PRIVATE
337  @brief ConnectNetworkAsync の非同期処理の完了をチェックします。
338 
339  @details @ref ConnectNetworkAsync で開始された非同期処理は、本関数で完了をチェックできます。
340 
341  @return 非同期処理が完了していた場合は true、処理中の場合は false が返ります。非同期処理が開始されていない場合や他の非同期処理が開始されている場合も false が返ります。
342 
343  @see ConnectNetworkAsync, GetConnectNetworkResult, CancelConnectNetworkAsync
344  */
345  bool IsConnectNetworkCompleted();
346  //! @endcond
347 
348  /*!
349  @cond PRIVATE
350  @brief ConnectNetworkAsync の非同期処理の結果を取得します。
351 
352  @details @ref ConnectNetworkAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。<br>
353 
354  @return ConnectNetworkAsync の非同期処理の結果を返します。 処理が成功していた場合、 IsSuccess() が真となる Result を返します。処理が失敗していた場合、以下の Result を返します。
355  @retval ResultNotInitialized 通信ライブラリが初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
356  @retval ResultInvalidState 実行可能な状態ではありません。また、結果を取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
357  @retval ResultNetworkIsNotFound 接続対象のネットワークが見つかりませんでした。クリーンアップ処理を実行してください。
358  @if CTR_DOC
359  @retval ResultNetworkIsFull 既に最大接続数に達しています。クリーンアップ処理を実行してください。
360  @retval ResultJoinRequestDenied ホストに参加を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
361  @elseif NIN_DOC
362  @retval ResultJoinRequestDenied ホストに参加を拒否されました。既に最大接続数に達している場合にも返ります。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
363  @endif
364  @if CTR_DOC
365  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
366  @elseif NIN_DOC
367  @retval ResultInvalidConnection 通信できません。クリーンアップ処理を実行してください。
368  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
369  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
370  @endif
371  @if CTR_DOC
372  @retval ResultTimeOut タイムアウトで終了しました。
373  @ref nn::pia::local::UdsConnectNetworkSetting::wirelessCryptoKey が誤っている場合にも返ります。クリーンアップ処理を実行してください。
374  @elseif NIN_DOC
375  @retval ResultTimeOut タイムアウトで終了しました。
376  @ref nn::pia::local::LdnConnectNetworkSetting::wirelessCryptoKey が誤っている場合にも返ります。クリーンアップ処理を実行してください。
377  @endif
378  @retval ResultCancelled キャンセルされました。クリーンアップ処理を実行してください。
379  @retval ResultErrorOccurred 内部でエラーが発生しました。クリーンアップ処理を実行してください。
380  @if NIN_DOC
381  @retval ResultLocalLowerVersion 自分のローカル通信バージョンが接続先ネットワークのものよりも低いです。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
382  @retval ResultLocalHigherVersion 自分のローカル通信バージョンが接続先ネットワークのものよりも高いです。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
383  @endif
384  @if NIN_DOC
385  @retval ResultWirelessControllerCountLimitation 無線コントローラの接続台数が制限を超えています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
386  @endif
387 
388  @see ConnectNetworkAsync, IsConnectNetworkCompleted, CancelConnectNetworkAsync
389  */
390  Result GetConnectNetworkResult();
391  //! @endcond
392 
393  /*!
394  @cond PRIVATE
395  @brief ConnectNetworkAsync の非同期処理をキャンセルします。
396 
397  @details ConnectNetworkAsync 開始された非同期処理は、本関数でキャンセルできます。
398  キャンセル処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
399  本関数を呼び出した後、ライブラリは速やかに非同期処理のキャンセルを行いますが、
400  キャンセルの完了は @ref IsConnectNetworkCompleted() でチェックする必要があります。
401 
402  @return ConnectNetworkAsync の非同期処理のキャンセル結果を返します。処理が成功していた場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
403  @retval ResultInvalidState ConnectNetworkAsync の非同期処理が行われていないタイミングで呼び出しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
404 
405  @see ConnectNetworkAsync, IsConnectNetworkCompleted, GetConnectNetworkResult
406  */
407  Result CancelConnectNetworkAsync();
408  //! @endcond
409 
410 
411  /*!
412  @cond PRIVATE
413  @brief ローカルネットワークから切断します。
414 
415  @details ローカルネットワークから切断する非同期処理を開始します。
416  自分がローカルネットワークホストのときは、ホストマイグレーションが有効のときのみ成功し、手動ホストマイグレーション処理を開始します。
417  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
418  処理の完了は @ref IsDisconnectNetworkCompleted でチェックし、結果は @ref GetDisconnectNetworkResult で確認できます。
419  処理完了後は、LocalFacade のクリーンアップを行う必要があります。
420 
421  @return 正常に処理を開始できた場合、IsSuccess() が真となる Result が返ります。
422 
423  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
424  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、既に処理を実行中です。または、他の非同期処理を実行中です。
425  または、自分はローカルネットワークホストですがホストマイグレーションが無効です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
426 
427  @see IsDisconnectNetworkCompleted, GetDisconnectNetworkResult
428  */
429  Result DisconnectNetworkAsync();
430  //! @endcond
431 
432  /*!
433  @cond PRIVATE
434  @brief DisconnectNetworkAsync の非同期処理の完了をチェックします。
435 
436  @details @ref DisconnectNetworkAsync で開始された非同期処理は、本関数で完了をチェックできます。
437 
438  @return 非同期処理が完了していた場合は true、処理中の場合は false が返ります。非同期処理が開始されていない場合や他の非同期処理が開始されている場合も false が返ります。
439 
440  @see DisconnectNetworkAsync, GetDisconnectNetworkResult
441  */
442  bool IsDisconnectNetworkCompleted();
443  //! @endcond
444 
445  /*!
446  @cond PRIVATE
447  @brief DisconnectNetworkAsync の非同期処理の結果を取得します。
448 
449  @details @ref DisconnectNetworkAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。<br>
450 
451  @return DisconnectNetworkAsync の非同期処理の結果を返します。 処理が成功していた場合、IsSuccess() が真となる Result を返します。処理が失敗していた場合、以下の Result を返します。
452  @retval ResultNotInitialized 通信ライブラリが初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
453  @retval ResultInvalidState 実行可能な状態ではありません。また、結果を取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
454  @if CTR_DOC
455  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
456  @elseif NIN_DOC
457  @retval ResultInvalidConnection 通信できません。クリーンアップ処理を実行してください。
458  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
459  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
460  @endif
461  @retval ResultCancelled キャンセルされました。クリーンアップ処理を実行してください。
462  @retval ResultErrorOccurred 内部でエラーが発生しました。クリーンアップ処理を実行してください。
463 
464  @see DisconnectNetworkAsync, IsDisconnectNetworkCompleted
465  */
466  Result GetDisconnectNetworkResult();
467  //! @endcond
468 
469 
470  /*!
471  @cond PRIVATE
472  @brief 周囲のローカルネットワークを探索します。
473 
474  @details 周囲のローカルネットワークを探索する非同期処理を開始します。ネットワークに接続中は失敗します。
475  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
476  処理の完了は @ref IsScanNetworkCompleted でチェックし、結果は @ref GetScanNetworkResult で確認できます。<br>
477  また、処理中は @ref CancelScanNetworkAsync を呼び出すことで、処理を中止することができます。
478  中止した場合も、@ref IsScanNetworkCompleted で処理の完了が確認できるまで待つ必要があります。<br>
479  探索して見つけたローカルネットワーク情報は、 @ref GetNetworkDescriptionList 、
480  @ref GetNetworkDescription で取得できます。
481  探索して見つけたネットワークに接続中のステーション情報は、 @ref GetStationInfoList で取得できます。
482  ネットワークから送信された電波の強度は、@ref GetRadioStrength で取得できます。
483  これらの情報は、ネットワーク探索処理が完了し、成功してから取得可能となり、
484  再び探索を開始すると取得できなくなります。
485  また、ネットワークの構築/接続処理を開始すると取得できなくなります。
486 
487  @param[in] pScanNetworkSetting 探索するネットワークの設定です。
488 
489  @return 正常に処理を開始できた場合、IsSuccess() が真となる Result が返ります。
490 
491  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
492  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
493  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、既に処理を実行中です。または、他の非同期処理を実行中です。または、ネットワークに接続中です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
494 
495  @see IsScanNetworkCompleted, GetScanNetworkResult, CancelScanNetworkAsync
496  */
497  Result ScanNetworkAsync(const LocalScanNetworkSetting* pScanNetworkSetting);
498  //! @endcond
499 
500  /*!
501  @cond PRIVATE
502  @brief ScanNetworkAsync の非同期処理の完了をチェックします。
503 
504  @details @ref ScanNetworkAsync で開始された非同期処理は、本関数で完了をチェックできます。
505 
506  @return 非同期処理が完了していた場合は true、処理中の場合は false が返ります。非同期処理が開始されていない場合や他の非同期処理が開始されている場合も false が返ります。
507 
508  @see ScanNetworkAsync, GetScanNetworkResult, CancelScanNetworkAsync
509  */
510  bool IsScanNetworkCompleted();
511  //! @endcond
512 
513  /*!
514  @cond PRIVATE
515  @brief ScanNetworkAsync の非同期処理の結果を取得します。
516 
517  @details @ref ScanNetworkAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。<br>
518 
519  @return ScanNetworkAsync の非同期処理の結果を返します。 処理が成功していた場合、 IsSuccess() が真となる Result を返します。処理が失敗していた場合、以下の Result を返します。
520  @retval ResultNotInitialized 通信ライブラリが初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
521  @retval ResultInvalidState 実行可能な状態ではありません。また、結果を取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
522  @if CTR_DOC
523  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
524  @elseif NIN_DOC
525  @retval ResultInvalidConnection 通信できません。クリーンアップ処理を実行してください。
526  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
527  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
528  @endif
529  @retval ResultNegligibleFault キャンセルされました。
530  @retval ResultErrorOccurred 内部でエラーが発生しました。クリーンアップ処理を実行してください。
531 
532  @see ScanNetworkAsync, IsScanNetworkCompleted, CancelScanNetworkAsync
533  */
534  Result GetScanNetworkResult();
535  //! @endcond
536 
537  /*!
538  @cond PRIVATE
539  @brief ScanNetworkAsync の非同期処理をキャンセルします。
540 
541  @details ScanNetworkAsync 開始された非同期処理は、本関数でキャンセルできます。
542  キャンセル処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
543  本関数を呼び出した後、ライブラリは速やかに非同期処理のキャンセルを行いますが、
544  キャンセルの完了は @ref IsScanNetworkCompleted() でチェックする必要があります。
545 
546  @return ScanNetworkAsync の非同期処理のキャンセル結果を返します。処理が成功していた場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
547  @retval ResultInvalidState ConnectNetworkAsync の非同期処理が行われていないタイミングで呼び出しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
548 
549  @see ScanNetworkAsync, IsScanNetworkCompleted, GetScanNetworkResult
550  */
551  Result CancelScanNetworkAsync();
552 //! @endcond
553 
554 
555 #if NN_PIA_CTR
556  /*!
557  @brief ユニーク ID からローカル通信 ID を作成します。
558 
559  @details 業務部から割り当てられた 20bit のユニーク ID (タイトル固有の ID)から ローカル通信で使用する 32bit 値 (ローカル通信 ID) を生成します。<br>
560  業務部からユニーク ID が割り当てられていない場合は、ゲームソフト試作用のユニーク ID ( 0xFF000 ~ 0xFF3FF ) を使用する必要があります。
561  transport::Transport::Initialize() を呼び出してから transport::Transport::Finalize() を呼び出すまでの間、有効な値が返ります。
562 
563  @attention 製品版では必ず業務部から割り当てられた ユニーク ID を使用する必要があります。
564 
565  @param[in] uniqueId ユニーク IDです。複数タイトル間で通信したい場合はどちらか片方のユニーク ID を指定する必要があります。
566  @param[in] isTrial ユニーク ID が製品版と体験版で共通だった場合の対処用フラグです。製品版-体験版間での通信を行いたくない場合、 体験版側で true を指定する必要があります。製品版は常に false が指定されるよう注意してください。
567 
568  @return 作成されたローカル通信 ID が返ります。
569  */
570  uint32_t CreateLocalCommunicationId(uint32_t uniqueId, bool isTrial = false) const;
571 #elif NN_PIA_NINTENDOSDK
572  /*!
573  @cond PRIVATE
574  */
575  uint32_t CreateLocalCommunicationId(uint32_t uniqueId, bool isTrial = false) const;
576 //! @endcond
577 #endif
578 
579 
580  /*!
581  @cond PRIVATE
582  @brief アプリケーションが設定したビーコンデータを取得します。
583 
584  @param[out] pBuffer 取得したデータを格納するバッファです。
585  @param[out] pDataSize 取得したデータのサイズです。
586  @param[in] bufferSize 取得したデータを格納するバッファのサイズです。
587  @param[in] pNetworkDescription データを取得したいネットワークの情報です。
588 
589  @return 正常にデータを取得できた場合、成功の Result が返ります。
590 
591  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
592  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
593  @retval ResultInvalidStatet transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
594  @retval ResultNoData 取得できるデータがありませんでした。
595  */
596  Result GetApplicationData(void* pBuffer, uint32_t* pDataSize, uint32_t bufferSize, const LocalNetworkDescription* pNetworkDescription) const;
597  //! @endcond
598 
599  /*!
600  @cond PRIVATE
601  @brief アプリケーションが設定したビーコンデータのサイズを取得します。
602 
603  @param[out] pDataSize アプリケーションが設定したビーコンデータのサイズです。
604  @param[in] pNetworkDescription ビーコンデータのサイズを取得したいネットワークの情報です。
605 
606  @return 正常にデータを取得できた場合、成功の Result が返ります。
607 
608  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
609  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
610  @retval ResultInvalidStatet transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
611  @retval ResultNoData 取得できるデータがありませんでした。
612  */
613  Result GetApplicationDataSize(uint32_t* pDataSize, const LocalNetworkDescription* pNetworkDescription) const;
614  //! @endcond
615 
616  /*!
617  @brief ビーコンに設定されているデータを取得します。
618 
619  @attention この API は、ローカルネットワークに接続中の端末が呼び出すことを想定しています。
620 
621  @attention この API はローカルホストマイグレーション処理が行われている最中には正しい結果が得られない場合があります。
622  ホストマイグレーション処理中(@ref LocalFacade::IsDuringHostMigration が true を返す状況)は実行しないよう注意してください。
623 
624  @param[out] pBuffer データを書き込むためのバッファ。
625  @param[out] pDataSize 取得したデータの長さ。
626  @param[in] bufferSize データを書き込むためのバッファのサイズ。
627 
628  @return 正常に処理が完了した場合、成功の Result が返ります。
629 
630  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
631  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、接続していないか、ホストマイグレーション処理中ですプログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
632  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
633  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
634  @retval ResultNotInCommunication 通信できない状態です。その内、切断検知されるか、またはホストマイグレーションが開始されます。ホストマイグレーション完了後に呼び出すことで成功する可能性があります。
635  */
636  Result GetApplicationDataFromBeacon(void* pBuffer, uint32_t* pDataSize, uint32_t bufferSize) const;
637 
638  /*!
639  @brief ビーコンに設定されているデータのサイズを取得します。
640 
641  @attention この API は、ローカルネットワークに接続中の端末が呼び出すことを想定しています。
642 
643  @attention この API はローカルホストマイグレーション処理が行われている最中には正しい結果が得られない場合があります。
644  ホストマイグレーション処理中(@ref LocalFacade::IsDuringHostMigration が true を返す状況)は実行しないよう注意してください。
645 
646  @param[out] pDataSize ビーコンに設定されているデータのサイズ。
647 
648  @return 正常に処理が完了した場合、成功の Result が返ります。
649 
650  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
651  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、接続していないか、ホストマイグレーション処理中ですプログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
652  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
653  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
654  @retval ResultNotInCommunication 通信できない状態です。その内、切断検知されるか、またはホストマイグレーションが開始されます。ホストマイグレーション完了後に呼び出すことで成功する可能性があります。
655  */
656  Result GetApplicationDataSizeFromBeacon(uint32_t* pDataSize) const;
657 
658  /*!
659  @cond PRIVATE
660  @brief ビーコンにデータを設定します。
661 
662  @details ローカルネットワークホストのみ実行可能です。
663 
664  @attention この API はローカルホストマイグレーション処理が行われている最中には正しい結果が得られない場合があります。
665  ホストマイグレーション処理中(@ref LocalFacade::IsDuringHostMigration が true を返す状況)は実行しないよう注意してください。
666 
667  @param[in] pData 設定するデータへのポインタ。
668  @param[in] dataSize 設定するデータのサイズ。
669  @if CTR_DOC
670  @ref UdsBeaconApplicationDataSizeMax 以下である必要があります。
671  @elseif NIN_DOC
672  @ref LdnBeaconApplicationDataSizeMax 以下である必要があります。
673  @endif
674 
675  @return 正常に処理が完了した場合、成功の Result が返ります。
676 
677  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
678  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、ホストではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
679  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
680  @if CTR_DOC
681  @retval ResultInvalidConnection 無線オフモードに遷移しました。または、ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
682  @elseif NIN_DOC
683  @retval ResultInvalidConnection ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
684  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
685  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
686  @endif
687  */
688  Result SetApplicationDataToBeacon(const void* pData, uint32_t dataSize);
689  //! @endcond
690 
691  /*!
692  @cond PRIVATE
693  @brief ローカルネットワーク情報を取得します。
694 
695  @details @ref ScanNetworkAsync で発見したローカルネットワーク情報のリストを取得します。
696 
697  @param[out] paLocalNetworkDescriptionList 取得したネットワーク情報を格納するバッファです。
698  @param[out] pValidNetworkNum ネットワーク情報が取得できたネットワーク数です。
699  @param[in] networkDescriptionListSize 取得したネットワーク情報を格納するバッファのサイズです。
700 
701  @return 正常に情報を取得できた場合、成功の Result が返ります。
702 
703  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
704  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
705  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、データを取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
706  */
707  Result GetNetworkDescriptionList(LocalNetworkDescription* paLocalNetworkDescriptionList, uint32_t* pValidNetworkNum, uint32_t networkDescriptionListSize);
708  //! @endcond
709 
710  /*!
711  @cond PRIVATE
712  @brief ローカルネットワーク情報を取得します。
713 
714  @details @ref ScanNetworkAsync で発見したローカルネットワーク情報を取得します。
715 
716  @param[out] pLocalNetworkDescription 取得したネットワーク情報を格納するバッファです。
717  @param[in] networkDescriptionIndex 取得したいネットワーク情報のインデックスです。
718 
719  @return 正常に情報を取得できた場合、成功の Result が返ります。
720 
721  @retval ResultNotInitialized LocalFacade が初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
722  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
723  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、データを取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
724  */
725  Result GetNetworkDescription(LocalNetworkDescription* pLocalNetworkDescription, uint32_t networkDescriptionIndex);
726  //! @endcond
727 
728 
729  /*!
730  @brief 指定したステーションの情報を取得します。
731 
732  @param[out] pLocalStationInfo 取得したステーション情報を格納するバッファです。
733  @param[in] address 情報を取得したいステーションのアドレスです。
734 
735  @return 正常に情報を取得できた場合、成功の Result が返ります。
736 
737  @retval ResultNotInitialized LocalFacade がスタートアップされていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
738  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
739  @retval ResultNotFound 対象のステーションが見つかりませんでした。すでに切断されている可能性があります。
740  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
741  */
742  Result GetStationInfo(LocalStationInfo* pLocalStationInfo, const common::StationAddress& address) const;
743 
744  /*!
745  @cond PRIVATE
746  @brief 指定したネットワークに参加しているステーションの情報のリストを取得します。
747 
748  @param[out] paLocalStationInfoList 取得したステーション情報のリストを格納するバッファです。配列長が、指定したネットワークに接続できるステーションの最大数以上である必要があります。
749  @param[in] listLength paLocalStationInfoList の配列長です。指定したネットワークに接続できるステーションの最大数以上である必要があります。
750  @param[in] networkListIndex 情報を取得したいネットワークのインデックスです。
751 
752  @return 正常に情報を取得できた場合、成功の Result が返ります。
753 
754  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
755  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、ネットワークが発見されていません。または、データを取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
756  @retval ResultNoData 情報が取得できませんでした。
757  @retval ResultInvalidConnection 無線オフモードに遷移しました。クリーンアップ処理を実行してください。
758  */
759  Result GetStationInfoList(LocalStationInfo* paLocalStationInfoList, uint8_t listLength, uint32_t networkListIndex) const;
760  //! @endcond
761 
762 
763  /*!
764  @cond PRIVATE
765  @brief 発見したネットワーク数を取得します。
766 
767  @return 発見したネットワーク数が返ります。
768  */
769  uint32_t GetFoundNetworkNum() const;
770  //! @endcond
771 
772  /*!
773  @cond PRIVATE
774  @brief 自分がローカルネットワークホストであるかを取得します。
775 
776  @return 自分がローカルネットワークホストであるかが返ります。
777  */
778  bool IsHost() const;
779  //! @endcond
780 
781 
782  /*!
783  @cond PRIVATE
784  @brief 自分がローカルネットワーククライアントであるかを取得します。
785 
786  @return 自分がローカルネットワーククライアントであるかが返ります。
787  */
788  bool IsClient() const;
789  //! @endcond
790 
791 
792  /*!
793  @cond PRIVATE
794  @brief ネットワークに接続されているかを取得します。
795 
796  @attention ホストマイグレーション処理中(@ref LocalFacade::IsDuringHostMigration が true を返す状況)は、
797  false を返す場合がありますので、注意してください。
798 
799  @return ネットワークに接続されているかが返ります。
800  */
801  bool IsConnected() const
802  {
803  return IsHost() || IsClient();
804  }
805  //! @endcond
806 
807 
808  /*!
809  @brief ローカルホストマイグレーション処理中であるかを取得します。
810 
811  @return ローカルホストマイグレーション処理中であるかが返ります。
812  */
813  bool IsDuringHostMigration() const;
814 
815 
816  /*!
817  @cond PRIVATE
818  @brief ローカルホストマイグレーションが有効であるかを取得します。
819 
820  @return ローカルホストマイグレーションが有効であるかが返ります。
821  */
822  bool IsHostMigrationEnabled() const;
823  //! @endcond
824 
825 
826  /*!
827  @brief リンクレベルを取得します。
828 
829  @details リンクレベルは、0~3 の 4 段階あり、0:非常に通信品質が悪い、もしくは通信が成立していない、
830  1:通信品質が悪い、2:通信品質があまり良くない、3:通信品質がよい という状態を表します。
831 
832  @attention この API はローカルホストマイグレーション処理が行われている最中には正しい結果が得られない場合があります。
833  ホストマイグレーション処理中(@ref LocalFacade::IsDuringHostMigration が true を返す状況)は実行しないよう注意してください。
834 
835  @return 現在接続中のネットワークの通信品質を返します。接続していない場合は 0 が返ります。
836  */
837  uint8_t GetLinkLevel() const;
838 
839 
840  /*!
841  @cond PRIVATE
842  @brief ネットワークを解析し、そのネットワークから送信された電波の強度を取得します。
843 
844  @details 電波の強度は、0~3 の 4 段階あり、0:非常に通信品質が悪い、もしくは通信が成立していない、
845  1:通信品質が悪い、2:通信品質があまり良くない、3:通信品質がよい という状態を表します。
846 
847  @attention 取得するリンクレベルは、@ref ScanNetworkAsync 実行時に保存されるローカルネットワーク情報と対応しています。<br>
848  保存されているローカルネットワーク情報リストは@ref GetNetworkDescriptionList で取得できます。
849 
850  @param[out] pRadioStrength 電波の強度を記録する変数へのポインタ。データは正しくネットワークを解析できた場合のみ格納されます。
851  @param[in] descriptionIndex 解析対象のネットワーク指定用変数。ローカルネットワーク情報リストの先頭を0として、解析したいネットワークの番号を指定する必要があります。
852 
853  @return 正常に処理が完了した場合、成功の Result が返ります。
854 
855  @retval ResultInvalidState ローカルネットワーク情報リストに情報が保存されていません。または、transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
856  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
857  */
858  Result GetRadioStrength(uint8_t* pRadioStrength, uint32_t descriptionIndex) const;
859  //! @endcond
860 
861 
862  /*!
863  @brief 使用中の IEEE 802.11b/g 無線チャンネルを取得します。
864 
865  @attention この API はローカルホストマイグレーション処理が行われている最中には正しい結果が得られない場合があります。
866  ホストマイグレーション処理中(@ref LocalFacade::IsDuringHostMigration が true を返す状況)は実行しないよう注意してください。
867 
868  @return 現在のチャンネルが返ります。接続していない場合や取得に失敗した場合は 0 が返ります。
869  */
870  uint8_t GetNetworkChannel() const;
871 
872  /*!
873  @cond PRIVATE
874  @brief 新規クライアントのネットワークへの参加を不許可にします。現在接続中のクライアントには影響しません。
875 
876  @details 通信対戦中は新規にクライアントが接続することを拒否したい、と言うような用途を想定した接続拒否機能です。
877  再び接続を許可したい場合は @ref AllowParticipating を実行する必要があります。
878 
879  @note この API で設定した情報はホストの異常切断によるホストマイグレーション後の新しいネットワークには引き継がれない場合があります。
880 
881  @attention 本関数はローカルネットワークホストでのみ実行可能です。
882 
883  @param[in] isDisallowToReconnect false の場合、本 API を呼び出した後に切断されたクライアントだけが再接続できます。
884 
885  @return 正常に処理が完了した場合、成功の Result が返ります。
886 
887  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
888  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、ホストではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
889  @if CTR_DOC
890  @retval ResultInvalidConnection 無線オフモードに遷移しました。または、ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
891  @elseif NIN_DOC
892  @retval ResultInvalidConnection ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
893  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
894  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
895  @endif
896  */
897  Result DisallowParticipating(bool isDisallowToReconnect = true);
898  //! @endcond
899 
900  /*!
901  @cond PRIVATE
902  @brief 新規クライアントのネットワークへの参加を許可します。
903 
904  @details @ref DisallowParticipating で拒否した、新規クライアントの接続を再開するための関数です。
905 
906  @note この API で設定した情報はホストの異常切断によるホストマイグレーション後の新しいネットワークには引き継がれない場合があります。
907 
908  @attention 本関数はローカルネットワークホストでのみ実行可能です。
909 
910  @return 正常に処理が完了した場合、成功の Result が返ります。
911 
912  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
913  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、ホストではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
914  @if CTR_DOC
915  @retval ResultInvalidConnection 無線オフモードに遷移しました。または、ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
916  @elseif NIN_DOC
917  @retval ResultInvalidConnection ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
918  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
919  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
920  @endif
921  */
922  Result AllowParticipating();
923  //! @endcond
924 
925  /*!
926  @cond PRIVATE
927  */
928  Result ChangeAllowParticipatingState(nn::pia::common::CallContext* pCallContext, AllowParticipatingState state);
929  //! @endcond
930 
931  /*!
932  @cond PRIVATE
933  @brief 指定したクライアントをネットワークから追放します。
934 
935  @attention 本関数はローカルネットワークホストでのみ実行可能です。
936 
937  @param[in] address 追放するクライアントの @ref common::StationAddress です。
938 
939  @return 正常に処理が完了した場合、成功の Result が返ります。
940 
941  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
942  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、ホストではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
943  @if CTR_DOC
944  @retval ResultInvalidConnection 無線オフモードに遷移しました。または、ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
945  @elseif NIN_DOC
946  @retval ResultInvalidConnection ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
947  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
948  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
949  @endif
950  */
951  Result EjectClient(const common::StationAddress& address);
952  //! @endcond
953 
954  /*!
955  @cond PRIVATE
956  @brief すべてのクライアントをネットワークから追放します。
957 
958  @attention 本関数はローカルネットワークホストでのみ実行可能です。
959 
960  @return 正常に処理が完了した場合、成功の Result が返ります。
961 
962  @retval ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
963  @retval ResultInvalidState transport::Transport::Initialize() の呼び出しから transport::Transport::Finalize() の呼び出しまでの間に呼び出す必要があります。または、ホストではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
964  @if CTR_DOC
965  @retval ResultInvalidConnection 無線オフモードに遷移しました。または、ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
966  @elseif NIN_DOC
967  @retval ResultInvalidConnection ローカルネットワークから切断されました。クリーンアップ処理を実行してください。
968  @retval ResultWifiOff 無線がオフになっています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
969  @retval ResultSleep スリープ状態です。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
970  @endif
971  */
972  Result EjectClientAll();
973  //! @endcond
974 
975  /*!
976  @brief ネットワークから切断された理由を取得します。
977 
978  @details Startup 時、Cleanup 時に @ref DisconnectReason_None にリセットされます。
979  @details 通信エラーの検知には、本関数ではなく session::Session::CheckConnectionError() を使用する必要があります。
980 
981  @return ネットワークから切断された理由です。
982  */
984 
985  /*!
986  @cond PRIVATE
987  @brief 新規参加許可/拒否の状態を取得します。
988 
989  @return 新規参加許可/拒否の状態です。
990  */
991  AllowParticipatingState GetAllowParticipatingState() const;
992  //! @endcond
993 
994  /*!
995  @cond PRIVATE
996  @brief 送信前のスリープ時間を設定します。
997 
998  @param[in] sleepTime 送信前のスリープ時間。単位はミリ秒です。
999  */
1000  void SetSleepBeforeSendTime(int64_t sleepTime);
1001  //! @endcond
1002 
1003  /*!
1004  @cond PRIVATE
1005  */
1006  void SetLocalCommunicationIdZeroEnabled(bool b);
1007  bool IsLocalCommunicationIdZeroEnabled() const;
1008  //! @endcond
1009 
1010  /*!
1011  @brief デバッグに有用な情報をプリントします。
1012 
1013  @param[in] flag トレースフラグの論理和。詳細は @ref TraceFlag 型を参照してください。
1014  */
1015  virtual void Trace(uint64_t flag) const;
1016 
1017  /*!
1018  @cond PRIVATE
1019  */
1020 
1021  void RegisterLocalProtocol(LocalProtocol* pLocalProtocol);
1022  void UnregisterLocalProtocol();
1023  LocalProtocol* GetLocalProtocol()
1024  {
1025  return m_pLocalProtocol;
1026  }
1027  const LocalProtocol* GetLocalProtocol() const
1028  {
1029  return m_pLocalProtocol;
1030  }
1031 
1032  uint32_t GetSessionId() const;
1033  uint32_t GetSessionIdFromNetworkDescription(const LocalNetworkDescription* pNetworkDescription) const;
1034 
1035  uint8_t GetNetworkParticipantNum() const;
1036 
1037  Result GetNetworkErrorResult() const;
1038  bool IsNeverConnected() const;
1039 
1040  // Mesh 用
1041  Result StartupForMesh();
1042  void CleanupForMesh();
1043  Result GetHostStationConnectionInfo(nn::pia::transport::StationConnectionInfo* pStationConnectionInfo) const;
1044 
1045  bool IsUpdateConnectionStatusRequested();
1046  void SetUpdateConnectionStatusRequested(bool b);
1047  //! @endcond
1048 
1049 private:
1050 #if NN_PIA_CTR
1051  Result InitializeCore(const UdsNetworkSetting& setting);
1052 #endif
1053 #if NN_PIA_NINTENDOSDK
1054  Result InitializeCore(const LdnNetworkSetting& setting);
1055 #endif
1056 
1057  Result ConvertAddressToStationConnectionInfo(const common::InetAddress& address, nn::pia::transport::StationConnectionInfo* pStationConnectionInfo, uint32_t connectionId) const;
1058 
1059  static void UpdateEventCallbackForMesh(LocalUpdateEvent updateEvent, common::StationAddress address, void* pParam);
1060 
1061 private:
1062  static LocalFacade* s_pInstance;
1063  static bool s_IsInitialized;
1064 
1065  bool m_IsStarted;
1066 
1067  LocalNetworkType m_LocalNetworkType;
1068  LocalNetworkSetting* m_pLocalNetworkSetting;
1069 
1070  LocalProtocol* m_pLocalProtocol;
1071 
1072  bool m_IsLocalCommunicationIdZeroEnabled;
1073 };
1074 }
1075 }
1076 } // end of namespace nn::pia::local