1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     cfg_Api.h
4 
5   Copyright (C)2009 Nintendo Co., Ltd.  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   $Rev: 31668 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_CFG_CTR_CFG_API_H_
17 #define NN_CFG_CTR_CFG_API_H_
18 
19 /*! @file
20     @brief    本体設定に関するAPIの宣言
21 
22     :include nn/cfg.h
23 */
24 
25 #include <nn/cfg/CTR/cfg_UserInfo.h>
26 #include <nn/cfg/CTR/cfg_LanguageCode.h>
27 #include <nn/cfg/CTR/cfg_CountryCode.h>
28 #include <nn/cfg/CTR/cfg_RegionCode.h>
29 #include <nn/cfg/CTR/cfg_Sound.h>
30 #include <nn/Result.h>
31 
32 #ifdef __cplusplus
33 
34 namespace nn {
35 namespace cfg {
36 namespace CTR {
37 
38 /*!
39     @brief        設定ライブラリを初期化します。
40 
41     @return       なし。
42 */
43 void Initialize(void);
44 
45 /*!
46     @brief        設定ライブラリを終了します。
47 
48     @return       なし。
49 */
50 void Finalize(void);
51 
52 /*!
53     @brief        ユーザ名を取得します。
54 
55     @param[out]   pUserName 取得したユーザ名と NG ワードフラグが格納されます。
56 
57     @return       なし。
58 */
59 void GetUserName(UserName* pUserName);
60 
61 /*!
62     @brief        誕生日を取得します。
63 
64     @param[out]   pBirthday 取得した誕生日が格納されます。
65 
66     @return       なし。
67 */
68 void GetBirthday(Birthday* pBirthday);
69 
70 /*!
71     @brief        国および地域コードを取得します。
72 
73     @return       取得結果が返ります。
74 */
75 CfgCountryCode GetCountry(void);
76 
77 /*!
78     @brief        国および地域コードを ISO 3166-1 alpha-2 に変換します。
79                   本 API はメモリ上の値を返すため高速です。
80 
81     @param[in]    cfgCountryCode    国および地域コードを指定します。
82 
83     @return       国および地域コードに対応する文字列へのポインタが返ります。
84                   対応する文字列がない場合は NULL が返ります。
85 */
86 const char* GetCountryCodeA2(CfgCountryCode cfgCountryCode);
87 
88 /*!
89     @brief        言語コードを取得します。
90 
91     @return       取得した言語コードが返ります。
92 */
93 CfgLanguageCode GetLanguage(void);
94 
95 /*!
96     @brief        言語コードを ISO 639-1 alpha-2 に変換します。
97                   本 API はメモリ上の値を返すため高速です。
98 
99     @param[in]    cfgLanguageCode   言語コードを指定します。
100 
101     @return       言語コードに対応する文字列へのポインタが返ります。
102                   対応する文字列がない場合は NULL が返ります。
103 */
104 const char* GetLanguageCodeA2(CfgLanguageCode cfgLanguageCode);
105 
106 /*!
107     @brief        アドレス情報を取得します。
108 
109     @param[out]   pSimpleAddress    取得したアドレス情報が格納されます。
110 */
111 void GetSimpleAddress(SimpleAddress* pSimpleAddress);
112 
113 /*!
114     @brief        本体仕向地のリージョンコードを取得します。
115 
116     @return       取得したリージョンコードが返ります。
117 */
118 CfgRegionCode GetRegion(void);
119 
120 /*!
121     @brief        本体仕向地のリージョンコードを対応する 3 文字の文字列に変換します。
122                   本 API はメモリ上の値を返すため高速です。
123 
124     @param[in]    cfgRegionCode リージョンコードを指定します。
125 
126     @return       リージョンコードに対応する文字列へのポインタが返ります。
127                   対応する文字列がない場合は NULL が返ります。
128 */
129 const char* GetRegionCodeA3(CfgRegionCode cfgRegionCode);
130 
131 /*!
132     @brief   サウンド出力モードを取得します。
133 
134     @return  本体設定で設定したサウンド出力モードが返ります。
135 */
136 CfgSoundOutputMode GetSoundOutputMode(void);
137 
138 /*!
139     @brief   RTC改変オフセット情報を取得します。
140 
141              RTCオフセット値とは、エンドユーザーがRTCの日付・時刻を変更した際にどれだけ未来に進めたか、
142              もしくは過去へ戻したかを保存しておくオフセット値です。
143 
144              アプリケーションでは起動の都度このオフセット値を確認することで、エンドユーザーが行なった時間の改変を知ることができます。
145 
146     @return  本体に保存されているRTCオフセット値を取得します。
147 */
148 nn::fnd::TimeSpan GetUserTimeOffset();
149 
150 
151 /*!
152     @brief   ペアレンタルコントロールの暗証番号の文字列長です。
153 */
154 const u8 CFG_PARENTAL_CONTROL_PIN_CODE_LENGTH = 4;
155 
156 /*!
157     @brief   ペアレンタルコントロールの暗証番号を取得します。
158 
159     @return  なし。
160 */
161 void GetParentalControlPinCode(char pinCode[CFG_PARENTAL_CONTROL_PIN_CODE_LENGTH]);
162 
163 /*!
164     @brief   ペアレンタルコントロールで写真の交換が制限されているかどうかを取得します。
165 
166     @return  制限されていれば true 、制限されていなければ false が返ります。
167 */
168 bool IsRestrictPhotoExchange(void);
169 
170 /*!
171     @brief   ペアレンタルコントロールでフレンドの追加が制限されているかどうかを取得します。
172 
173     @return  制限されていれば true 、制限されていなければ false が返ります。
174 */
175 bool IsRestrictAddFriend(void);
176 
177 /*!
178     @brief   ペアレンタルコントロールで他のユーザーとのインターネット通信が制限されているかどうかを取得します。
179 
180     @return  制限されていれば true 、制限されていなければ false が返ります。
181 */
182 bool IsRestrictP2pInternet(void);
183 
184 /*!
185     @brief   ペアレンタルコントロールで他のユーザーとのすれ違い通信が制限されているかどうかを取得します。
186 
187     @return  制限されていれば true 、制限されていなければ false が返ります。
188 */
189 bool IsRestrictP2pCec(void);
190 
191 /*!
192     @brief   EULA に同意しているかどうかを取得します。
193 
194              この関数を呼び出す前に nn::fs::Initialize 関数を呼んで fs ライブラリを初期化しておく必要があります。<BR>
195              この関数内でアプリの EULA バージョンを取得します。<BR>
196              アイコンファイルを設定していないと false が返ります。
197 
198     @return  同意していれば true 、同意していなければ false が返ります。
199 */
200 bool IsAgreedEula(void);
201 
202 /*!
203     @brief        本体固有 ID を取得します。
204 
205                   アプリケーションが持つユニーク ID を指定することで、本体固有でかつアプリケーション固有の値を取得することができます。<BR>
206                   複数のアプリケーションで同じ本体固有 ID を使用する場合は、同じユニーク ID を指定する必要があります。
207 
208     @param[in]    uniqueId アプリケーションが持つユニーク ID (20bit) を指定します。
209 
210     @return       本体固有 ID (64bit) が返ります。
211 */
212 bit64 GetTransferableId(bit32 uniqueId);
213 
214 } // namespace CTR {
215 } // namespace cfg {
216 } // namespace nn {
217 
218 #endif
219 
220 #endif //   #ifndef NN_CFG_CTR_CFG_API_H_
221