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: 34247 $
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              この API は将来的に削除される予定です。
160              ペアレンタルコントロールの暗証番号の照合には CheckParentalControlPinCode 関数を使用してください。
161 
162     @return  なし。
163 */
164 void GetParentalControlPinCode(char pinCode[CFG_PARENTAL_CONTROL_PIN_CODE_LENGTH]);
165 
166 /*!
167     @brief        ペアレンタルコントロールの暗証番号の照合を行います。
168 
169     @param[in]    input ペアレンタルコントロールの暗証番号を指定します。
170 
171     @return       引数で与えた暗証番号が合っていれば true 、間違っていれば false が返ります。
172 */
173 bool CheckParentalControlPinCode(const char *input);
174 
175 /*!
176     @brief   ペアレンタルコントロールで写真の交換が制限されているかどうかを取得します。
177 
178     @return  制限されていれば true 、制限されていなければ false が返ります。
179 */
180 bool IsRestrictPhotoExchange(void);
181 
182 /*!
183     @brief   ペアレンタルコントロールでフレンドの追加が制限されているかどうかを取得します。
184 
185     @return  制限されていれば true 、制限されていなければ false が返ります。
186 */
187 bool IsRestrictAddFriend(void);
188 
189 /*!
190     @brief   ペアレンタルコントロールで他のユーザーとのインターネット通信が制限されているかどうかを取得します。
191 
192     @return  制限されていれば true 、制限されていなければ false が返ります。
193 */
194 bool IsRestrictP2pInternet(void);
195 
196 /*!
197     @brief   ペアレンタルコントロールで他のユーザーとのすれ違い通信が制限されているかどうかを取得します。
198 
199     @return  制限されていれば true 、制限されていなければ false が返ります。
200 */
201 bool IsRestrictP2pCec(void);
202 
203 /*!
204     @brief   EULA に同意しているかどうかを取得します。
205 
206              この関数を呼び出す前に nn::fs::Initialize 関数を呼んで fs ライブラリを初期化しておく必要があります。<BR>
207              この関数内でアプリの EULA バージョンを取得します。<BR>
208              アイコンファイルを設定していないと false が返ります。
209 
210     @return  同意していれば true 、同意していなければ false が返ります。
211 */
212 bool IsAgreedEula(void);
213 
214 /*!
215     @brief        本体固有 ID を取得します。
216 
217                   アプリケーションが持つユニーク ID を指定することで、本体固有でかつアプリケーション固有の値を取得することができます。<BR>
218                   複数のアプリケーションで同じ本体固有 ID を使用する場合は、同じユニーク ID を指定する必要があります。
219 
220     @param[in]    uniqueId アプリケーションが持つユニーク ID (20bit) を指定します。
221 
222     @return       本体固有 ID (64bit) が返ります。
223 */
224 bit64 GetTransferableId(bit32 uniqueId);
225 
226 } // namespace CTR {
227 } // namespace cfg {
228 } // namespace nn {
229 
230 #endif
231 
232 #endif //   #ifndef NN_CFG_CTR_CFG_API_H_
233