この章では、アプリケーションで行うことのできる無線通信の種類や、無線オンモードと無線オフモードについて説明します。
2.1. 無線通信の種類
3DS の無線通信は、アプリケーションが意図的に行う通信(フォアグラウンド通信)とアプリケーションの裏で自動的に行われる通信(バックグラウンド通信)の 2 つに大きく分けることができます。
フォアグラウンド通信とバックグラウンド通信にはそれぞれ、用途に応じて複数のライブラリが用意されています。
無線通信の種類 |
ライブラリ名 |
名前空間 |
説明 |
---|---|---|---|
ローカル通信(UDS 通信) |
UDS |
|
3DS 同士で直接通信を行う無線通信です。 1 つのネットワークに最大 16(TBD)台が接続可能で、ブロードキャストにも対応しています。 |
ニンテンドー3DSダウンロードプレイ |
DLP |
|
通信用子機プログラムを配信するための無線通信です。 サイズが 32 MByte 以下のプログラムを配信することができます。 |
自動接続 |
AC |
|
本体設定に従い、無線 LAN アクセスポイントなどを経由するインターネット接続を自動で確立するライブラリです。 |
信頼性のあるローカル通信 |
RDT |
|
1 対 1 の通信で欠落なしにデータを送受信するための無線通信です。 内部で UDS 通信を利用しています。 |
UDS 通信では最大 16 台同時接続に対応していますが、13 台以上での同時接続は十分な動作確認が行われていません。そのため、現時点では 13 台以上は動作保証の範囲外とします。
無線通信の種類 |
ライブラリ名 |
名前空間 |
説明 |
---|---|---|---|
すれちがい通信 |
CEC |
|
本体同士が近づいたときに通信相手を自動的に発見し、データの送受信を行う無線通信です。 |
いつの間に通信 |
BOSS |
|
BOSS の機能を使った無線通信です。 アプリケーションで登録したタスクを、BOSS がバックグラウンドで処理します。 |
プレゼンス機能 |
FRIENDS |
|
フレンドに通知するプレゼンス情報の設定やフレンドのプレゼンス情報の取得を行います。 |
2.2. 無線オンモードと無線オフモード
CTR および SPR 本体に搭載されている無線スイッチは、無線通信モジュールの使用をハードウェアで制御することができます。本体に物理的な無線スイッチを搭載していない SNAKE および FTR では、HOMEメニューに無線スイッチと同じ役割を持つボタンが用意されています。
無線スイッチによって無線通信モジュールが使用できる状態のことを「無線オンモード」、無線通信モジュールが使用できない状態のことを「無線オフモード」と呼びます。
無線オンモードであっても、UDS ライブラリやバックグラウンドで無線モジュールによる通信を行っていなければ、実際に無線電波の送受信が行われることはありません。
無線オフモードであれば、無線電波の送受信が行われることはありません。
無線通信モジュールの状態によって、無線ランプ(黄色)が、以下のように連動して変化します。
無線通信モジュールの状態 |
無線ランプの状態 |
---|---|
無線オンモード |
点灯 |
無線オフモード |
消灯 |
無線電波の送信中 |
点滅 |
無線オンモード、無線オフモードを調べるための関数は用意されていません。無線オフモードの場合、ライブラリの初期化関数や無線通信で送受信を行う関数は無線オフモードを示す返り値を返します。
2.3. 無線通信の暗号化の処理負荷
認証方式に WEP や WPA が設定されているアクセスポイントとの通信で必要となる暗号化の処理は、無線通信モジュールがハードウェアで行います。WPA での接続で一部 CPU による処理が行われますが、システム側のコアで処理されます。
そのため、無線通信の暗号化についてはアプリケーション側の処理負荷を考慮する必要はありません。
2.4. 無線通信モジュールのエラー
3DS 本体の個体差により、CPU と 無線通信モジュール間のエラーが低確率で発生することがわかっています。この種のエラーはソフトウェアで修正することができないため、回避策としてエラー発生時に自動復帰を行っています。
ここでいう自動復帰とは、システムが自動的に無線オフモードに移行にして無線通信モジュールをリセットしたあと、すぐに無線オンモードに戻す処理のことを指します。ただし、個体差によるエラーのうち、ローカル通信や自動接続の初期化時、およびバックグラウンド通信の通信モード変更時に極まれに発生する RSL:F9606C02(RSL は FATAL 画面で表示されるリザルトコード)のエラーは自動復帰の対象外となっています。このエラーが発生したときには FATAL 画面が表示されるため、アプリケーション側で何らかの対応をする必要はありません。
開発ツールおよび開発実機において RSL:F9606C02 のエラーが頻発する場合は、個体差によるものではなく無線通信モジュールが壊れている可能性があります。そのような場合は弊社窓口までご相談ください。
無線通信モジュールのエラーが発生した場合、その時の通信モードによって以下のように挙動が異なります。
- ローカル通信(UDS 通信、RDT 通信および ニンテンドー3DSダウンロードプレイ)
自動復帰が働きます。その結果、API 実行時に本エラーが発生した場合、無線オフモードであることを示すnn::uds::ResultWirelessOff
やnn::dlp::ResultWirelessOff
などが返ります。 - 自動接続(AC)
自動復帰が働きます。その結果、AC の API 実行時に本エラーが発生した場合、無線オフモードであることを示すnn::ac::ResultWifiOff
が返ります。 - バックグラウンド通信(本体が開いているとき)
いずれの通信モード(すれちがい通信、いつの間に通信、プレゼンス機能)においても自動復帰が働きます。 アプリケーション側で何らかの対応をする必要はありません。 - バックグラウンド通信(本体が閉じている時)
自動復帰は行われず、本体の電源が切断されます。 アプリケーション側で何らかの対応をする必要はありません。 - 無線オフモード
通信エラーは発生しません。
以下の表は、通信モード別に発生する可能性のある FATAL エラーの一覧です。
通信モード |
リザルトコードと発生率 |
---|---|
ローカル通信 |
RSL:F9606C02 発生率:極めて低い |
自動接続 |
RSL:F9606C02 発生率:極めて低い |
バックグラウンド通信(本体が開いているとき) |
RSL:F9606C02 発生率:極めて低い |
バックグラウンド通信(本体が閉じているとき) |
FATAL 画面を表示せずに電源を切断 発生率:極めて低い |
無線オフモード |
発生しない |