1 /*--------------------------------------------------------------------------
2   Project:  Horizon
3   File:     ac_Types.h
4 
5   Copyright 2009 Nintendo.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Date:: 2010-09-2#$
14   $Rev: 26729 $
15   $Author: okubata_ryoma $
16  *-------------------------------------------------------------------------*/
17 #ifndef NN_AC_CTR_AC_TYPES_H_
18 #define NN_AC_CTR_AC_TYPES_H_
19 
20 #include <nn.h>
21 
22 /*!
23  * @brief    接続対象とするAPの種別を示す列挙体です。
24  */
25 typedef enum nnacApType
26 {
27     NN_AC_AP_TYPE_NONE = 0,                             //!< なし
28     NN_AC_AP_TYPE_USER_SETTING_1 = 1 << 0,              //!< ネットワーク設定1
29     NN_AC_AP_TYPE_USER_SETTING_2 = 1 << 1,              //!< ネットワーク設定2
30     NN_AC_AP_TYPE_USER_SETTING_3 = 1 << 2,              //!< ネットワーク設定3
31     NN_AC_AP_TYPE_NINTENDO_WIFI_USB_CONNECTOR = 1 << 3, //!< ニンテンドーWi-Fi USBコネクタ
32     NN_AC_AP_TYPE_NINTENDO_ZONE = 1 << 4,               //!< ニンテンドーゾーン
33     NN_AC_AP_TYPE_WIFI_STATION = 1 << 5,                //!< Wi-Fiステーション
34     NN_AC_AP_TYPE_FREESPOT = 1 << 6,                    //!< FreeSpot
35     NN_AC_AP_TYPE_HOTSPOT = 1 << 7,                     //!< ホットスポット
36 
37     NN_AC_AP_TYPE_ALL = 0x7FFFFFFF                      //!< 全て
38 } nnacApType;
39 
40 /*!
41  * @brief インフラ接続の要求レベルを示す列挙体です。
42  */
43 typedef enum nnacInfraPriority
44 {
45     NN_AC_INFRA_PRIORITY_FOREGROUND = 0,      //!< アプリケーションの接続要求
46     NN_AC_INFRA_PRIORITY_BACKGROUND = 1,      //!< アプレットの接続要求
47     NN_AC_INFRA_PRIORITY_NOT_CONNECTED = 2    //!< 未接続
48 } nnacInfraPriority;
49 
50 /*!
51  * @brief 無線デバイスドライバの省電力モードを示す列挙体です。
52  */
53 typedef enum nnacPowerSaveMode
54 {
55     NN_AC_NO_POWERSAVE,       //!< パワーセーブなし
56     NN_AC_STANDARD_POWERSAVE  //!< パワーセーブあり
57 } nnacPowerSaveMode;
58 
59 /*!
60  * @brief    接続するAPに要求する接続レベルを示す列挙体です。
61  */
62 typedef enum nnacNetworkArea
63 {
64     NN_AC_NETWORK_AREA_WAN = 0,     //!< WAN接続必須
65     NN_AC_NETWORK_AREA_AUTO = 1,    //!< WAN接続推奨。LAN接続でも可
66     NN_AC_NETWORK_AREA_LAN = 2      //!< LAN接続のみで可
67 } nnacNetworkArea;
68 
69 /*!
70  * @brief アクセスポイントの認証方式を示す列挙体です。
71  */
72 typedef enum nnacSecurityMode
73 {
74     NN_AC_OPEN,             //!< オープン認証
75     NN_AC_WEP_40BIT,        //!< WEP 40bit
76     NN_AC_WEP_104BIT,       //!< WEP 104bit
77     NN_AC_WEP_128BIT,       //!< WEP 128bit
78     NN_AC_WPA_TKIP,         //!< WPA TKIP
79     NN_AC_WPA2_TKIP,        //!< WPA2 TKIP
80     NN_AC_WPA_AES,          //!< WPA AES
81     NN_AC_WPA2_AES          //!< WPA2 AES
82 } nnacSecurityMode;
83 
84 /*!
85  * @brief ACの現在の処理ステートを示す列挙体です。
86  */
87 typedef enum nnacStatus
88 {
89     NN_AC_STATUS_NONE = 0,                //!< なし
90     NN_AC_STATUS_IDLE = 1,                //!< 未接続状態
91     NN_AC_STATUS_LAN_CONNECTED = 2,       //!< LAN接続状態
92     NN_AC_STATUS_WAN_CONNECTED = 3,       //!< WAN接続状態
93 
94     NN_AC_STATUS_ACTIVE_SCAN = 100,       //!< 即時接続中
95     NN_AC_STATUS_PASSIVE_SCAN = 101,      //!< 全チャンネルスキャン中
96     NN_AC_STATUS_CONNECT_AP = 102,        //!< AP接続中
97     NN_AC_STATUS_GET_IP_ADDRESS = 103,    //!< IPアドレス取得中
98     NN_AC_STATUS_CONNTEST = 200,          //!< 接続テスト中
99     NN_AC_STATUS_AUTH_HOTSPOT = 201,      //!< ホットスポット認証中
100     NN_AC_STATUS_DISCONNECT_AP = 300      //!< AP切断中
101 } nnacStatus;
102 
103 /*!
104   @brief 通信品質(リンクレベル) を表す列挙型です。
105 */
106 typedef enum nnacLinkLevel
107 {
108     NN_AC_LINK_LEVEL_0 = 0,   //!< 非常に通信品質が悪い、もしくは通信が成立していない
109     NN_AC_LINK_LEVEL_1,       //!< 通信品質が悪い
110     NN_AC_LINK_LEVEL_2,       //!< 通信品質があまり良くない
111     NN_AC_LINK_LEVEL_3        //!< 通信品質がよい
112 } nnacLinkLevel;
113 
114 /*!
115   @brief 認証サーバの種類を表す列挙型です。
116 */
117 typedef enum nnacAuthServerType
118 {
119     NN_AC_AUTH_SERVER_TYPE_PROD,   //!< 商用サーバ
120     NN_AC_AUTH_SERVER_TYPE_TEST,   //!< 試験用サーバ
121     NN_AC_AUTH_SERVER_TYPE_DEV     //!< 開発用サーバ
122 } nnacAuthServerType;
123 
124 /*!
125   @brief Proxyサーバの認証方式を示す列挙体です。
126  */
127 typedef enum nnacProxyAuthType
128 {
129     NN_AC_PROXY_AUTH_TYPE_NONE,   //!< なし
130     NN_AC_PROXY_AUTH_TYPE_BASIC,  //!< Basic認証
131 
132     NN_AC_PROXY_AUTH_TYPE_NUM     //!< 認証の種類数
133 } nnacProxyAuthType;
134 
135 /*!
136   @brief アプリケーションの種類を示す列挙体です。
137  */
138 typedef enum nnacApplication
139 {
140     NN_AC_APPLICATION,            //!< 一般アプリケーション
141     NN_AC_BOSS,                   //!< BOSS
142     NN_AC_NINTENDO_ZONE_VIEWER,   //!< ニンテンドーゾーンビュアー
143     NN_AC_BROWSER,                //!< ブラウザ
144     NN_AC_SHOP,                   //!< ショップ
145 
146     NN_AC_APPLICATION_NUM     //!< 認証の種類数
147 } nnacApplication;
148 
149 /*!
150  * @brief 自動接続設定を格納する構造体です。
151  */
152 typedef struct nnacConfig
153 {
154     u8 value[512];
155 } nnacConfig;
156 
157 /*!
158  * @brief ニンテンドーゾーンビーコン情報を格納する構造体です。
159  */
160 typedef struct nnacNintendoZoneBeaconSubset
161 {
162     u8 apnum[10];
163     NN_PADDING2;
164     u8 hotspotname[24];
165 } nnacNintendoZoneBeaconSubset;
166 
167 #ifdef __cplusplus
168 
169 namespace nn {
170 namespace ac {
171 namespace CTR {
172 
173     /*!
174      * @brief    接続対象とするAPの種別を示す列挙体です。
175      */
176     enum ApType
177     {
178         AP_TYPE_NONE = 0,                             //!< なし
179         AP_TYPE_USER_SETTING_1 = 1 << 0,              //!< ネットワーク設定1
180         AP_TYPE_USER_SETTING_2 = 1 << 1,              //!< ネットワーク設定2
181         AP_TYPE_USER_SETTING_3 = 1 << 2,              //!< ネットワーク設定3
182         AP_TYPE_NINTENDO_WIFI_USB_CONNECTOR = 1 << 3, //!< ニンテンドーWi-Fi USBコネクタ
183         AP_TYPE_NINTENDO_ZONE = 1 << 4,               //!< ニンテンドーゾーン
184         AP_TYPE_WIFI_STATION = 1 << 5,                //!< Wi-Fiステーション
185         AP_TYPE_FREESPOT = 1 << 6,                    //!< FreeSpot
186         AP_TYPE_HOTSPOT = 1 << 7,                     //!< ホットスポット
187 
188         AP_TYPE_ALL = 0x7FFFFFFF                      //!< 全て
189     };
190 
191     /*!
192      * @brief インフラ接続の要求レベルを示す列挙体です。
193      */
194     enum InfraPriority
195     {
196         INFRA_PRIORITY_FOREGROUND = 0,      //!< アプリケーションの接続要求
197         INFRA_PRIORITY_BACKGROUND = 1,      //!< アプレットの接続要求
198         INFRA_PRIORITY_NOT_CONNECTED = 2    //!< 未接続
199     };
200 
201     /*!
202      * @brief 無線デバイスドライバの省電力モードを示す列挙体です。
203      */
204     enum PowerSaveMode
205     {
206         NO_POWERSAVE,       //!< パワーセーブなし
207         STANDARD_POWERSAVE  //!< パワーセーブあり
208     };
209 
210     /*!
211      * @brief    接続するAPに要求する接続レベルを示す列挙体です。
212      */
213     enum NetworkArea
214     {
215         NETWORK_AREA_WAN = 0,     //!< WAN接続必須
216         NETWORK_AREA_AUTO = 1,    //!< WAN接続推奨。LAN接続でも可
217         NETWORK_AREA_LAN = 2      //!< LAN接続のみで可
218     };
219 
220     /*!
221      * @brief アクセスポイントの認証方式を示す列挙体です。
222      */
223     enum SecurityMode
224     {
225         OPEN,             //!< オープン認証
226         WEP_40BIT,        //!< WEP 40bit
227         WEP_104BIT,       //!< WEP 104bit
228         WEP_128BIT,       //!< WEP 128bit
229         WPA_TKIP,         //!< WPA TKIP
230         WPA2_TKIP,        //!< WPA2 TKIP
231         WPA_AES,          //!< WPA AES
232         WPA2_AES          //!< WPA2 AES
233     };
234 
235     /*!
236      * @brief ACの現在の処理ステートを示す列挙体です。
237      */
238     enum Status
239     {
240         STATUS_NONE = 0,                //!< なし
241         STATUS_IDLE = 1,                //!< 未接続状態
242         STATUS_LAN_CONNECTED = 2,       //!< LAN接続状態
243         STATUS_WAN_CONNECTED = 3,       //!< WAN接続状態
244 
245         STATUS_ACTIVE_SCAN = 100,       //!< 即時接続中
246         STATUS_PASSIVE_SCAN = 101,      //!< 全チャンネルスキャン中
247         STATUS_CONNECT_AP = 102,        //!< AP接続中
248         STATUS_GET_IP_ADDRESS = 103,    //!< IPアドレス取得中
249         STATUS_CONNTEST = 200,          //!< 接続テスト中
250         STATUS_AUTH_HOTSPOT = 201,      //!< ホットスポット認証中
251         STATUS_DISCONNECT_AP = 300      //!< AP切断中
252     };
253 
254     /*!
255       @brief 通信品質(リンクレベル) を表す列挙型です。
256     */
257     enum LinkLevel
258     {
259         LINK_LEVEL_0 = 0,   //!< 非常に通信品質が悪い、もしくは通信が成立していない
260         LINK_LEVEL_1,       //!< 通信品質が悪い
261         LINK_LEVEL_2,       //!< 通信品質があまり良くない
262         LINK_LEVEL_3        //!< 通信品質がよい
263     };
264 
265     /*!
266       @brief 認証サーバの種類を表す列挙型です。
267     */
268     enum AuthServerType
269     {
270         AUTH_SERVER_TYPE_PROD,   //!< 商用サーバ
271         AUTH_SERVER_TYPE_TEST,   //!< 試験用サーバ
272         AUTH_SERVER_TYPE_DEV     //!< 開発用サーバ
273     };
274 
275     /*!
276      * @enum  ProxyAuthType
277      * @brief Proxyサーバの認証方式を示す列挙体です。
278      */
279     enum ProxyAuthType
280     {
281         PROXY_AUTH_TYPE_NONE,   //!< なし
282         PROXY_AUTH_TYPE_BASIC,  //!< Basic認証
283 
284         PROXY_AUTH_TYPE_NUM     //!< 認証の種類数
285     };
286 
287     /*!
288       @brief アプリケーションの種類を示す列挙体です。
289      */
290     enum Application
291     {
292         FROM_APPLICATION,            //!< 一般アプリケーション
293         FROM_BOSS,                   //!< BOSS
294         FROM_NINTENDO_ZONE_VIEWER,   //!< ニンテンドーゾーンビュアー
295         FROM_BROWSER,                //!< ブラウザ
296         FROM_SHOP,                   //!< ショップ
297 
298         FROM_APPLICATION_NUM     //!< 認証の種類数
299     };
300 
301     /*!
302      * @brief 自動接続設定を格納する構造体です。
303      */
304     typedef nnacConfig Config;
305 
306     /*!
307      * @brief    ニンテンドーゾーンビーコン情報を格納する構造体です。
308      */
309     typedef nnacNintendoZoneBeaconSubset NintendoZoneBeaconSubset;
310 
311 } // namespace CTR
312 } // namespace ac
313 } // namespace nn
314 
315 #endif // __cplusplus
316 
317 #endif //NN_AC_CTR_AC_TYPES_H_
318