1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     boss_Lib.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: 34507 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_BOSS_BOSS_LIB_H_
17 #define NN_BOSS_BOSS_LIB_H_
18 
19 #include <nn/os/os_Event.h>
20 #include <nn/fs/fs_Parameters.h>
21 
22 #include <nn/boss/boss_Const.h>
23 #include <nn/boss/boss_Result.h>
24 #include <nn/boss/boss_Types.h>
25 
26 #include <nn/boss/boss_TaskPolicy.h>
27 #include <nn/boss/boss_TaskStatus.h>
28 #include <nn/boss/boss_TaskOption.h>
29 #include <nn/boss/boss_TaskError.h>
30 #include <nn/boss/boss_TaskAction.h>
31 #include <nn/boss/boss_Task.h>
32 #include <nn/boss/boss_TaskIdList.h>
33 #include <nn/boss/boss_StepIdList.h>
34 #include <nn/boss/boss_NsDataIdList.h>
35 
36 
37 #ifdef __cplusplus
38 
39 namespace nn {
40 namespace boss {
41 
42 /*!
43   @brief        BOSSライブラリの初期化を実施します。BOSSライブラリをリンクしているプロセスは、ライブラリ利用前に一度呼び出す必要があります。
44 
45   @attention    @ref Initialize 以外のI/Fは、@ref Initialize 成功前に実行した場合は、 「初期化されていない」を表すエラー(ResultIpcNotSessionInitialized)を返します。
46   @return       関数の実行結果を返します。以下に挙げる Result を返します。
47   @retval       ResultSuccess               初期化に成功しました。
48   @retval       ResultAlreadyInitialized    すでに初期化済みです。
49   @retval       上記以外                    想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
50 */
51     nn::Result Initialize(void);
52 
53 /*!
54   @brief        BOSSライブラリの終了処理を実施します。BOSSライブラリをリンクしているプロセスは、ライブラリ利用終了後に一度呼び出す必要があります。
55 
56   @return       関数の実行結果を返します。以下に挙げる Result を返します。
57   @retval       ResultSuccess                   終了処理に成功しました。
58   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。
59   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
60 */
61     nn::Result Finalize(void);
62 
63 /*!
64   @brief        https通信で使用することができる独自ルート証明書をライブラリに登録します。
65 
66                 登録された証明書をタスクで使用するためには、DownloadActionクラスまたは、NsaDownloadActionクラスのSetPrivateRootCa()を使用してください。
67                 1ルート証明書のみを登録できます。重複登録した場合は、後で登録した内容が有効になります。
68 
69   @param[in]    pCertData           ルート証明書データ。データフォーマットは、ASN.1フォーマットです。
70   @param[in]    certDataSize        クライアント証明書データのサイズを指定します。
71   @return       関数の実行結果を返します。以下に挙げる Result を返します。
72   @retval       ResultSuccess                   登録に成功しました。
73   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
74   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
75 */
76     nn::Result RegisterPrivateRootCa(const u8* pCertData, size_t certDataSize);
77 
78 /*!
79   @brief        https通信で使用することができる独自クライアント証明書および、プライベートキーをライブラリに登録します。
80 
81                 登録された証明書をタスクで使用するためには、DownloadActionクラスまたは、NsaDownloadActionクラスのSetPrivateClientCert()を使用してください。
82                 1クライアント証明書のみを登録できます。重複登録した場合は、後で登録した内容が有効になります。
83 
84   @param[in]    pCertData           クライアント証明書のデータ。データフォーマットは、ASN.1フォーマットです。
85   @param[in]    certDataSize        クライアント証明書データデータのサイズを指定します。
86   @param[in]    pPrivateKeyData     プライベート秘密鍵のデータ。データフォーマットは、ASN.1フォーマットです。
87   @param[in]    privateKeyDataSize  プライベート秘密鍵のデータデータのサイズを指定します。
88   @return       関数の実行結果を返します。以下に挙げる Result を返します。
89   @retval       ResultSuccess                   登録に成功しました。
90   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
91   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
92 */
93     nn::Result RegisterPrivateClientCert(const u8* pCertData, size_t certDataSize
94                                         , const u8* pPrivateKeyData, size_t privateKeyDataSize);
95 
96 /*!
97   @brief        タスクをライブラリに登録します。
98 
99                 登録できるタスクの種類は、RawダウンロードタスクとNSAダウンロードタスクの2種類があります。
100                 タスク登録には、@ref TaskPolicy クラス、TaskActionクラスのサブクラスの @ref DownloadAction クラスまたは、@ref NsaDownloadActionクラス、
101                 省略可能な @ref TaskOptionタスクを用意する必要があります。設定が必要な属性は、各クラスを参照してください。
102                 タスクを登録が終わった後は、それぞれのインスタンスは、必要に応じ Initilize() を行うことにより再利用ができます。
103                 なお、登録したタスクは、@ref Task クラスのStart()を呼び出すことによって、スケジューリング・実行がされます。
104          <BR>
105                 よくあるタスク登録時のエラーについて <BR>
106                 ①NSAダウンロードタスクの登録でストレージが未登録の場合 <BR>
107                   @ref ResultStorageNotFound <BR>
108                   @ref RegisterStorage でNSAダウンロードタスク用のストレージを登録してください。
109                 ②すでに同名のタスクが登録済である場合 <BR>
110                   @ref ResultTaskIdAlreadyExist <BR>
111                   @ref UnregisterTask で該当のタスクを削除するか、すでに登録されているタスクを再利用してください。
112                 ③タスク用データベースが一杯かつ削除可能なタスクが存在しないため、タスク用データベースに空きがなく、タスク登録ができない場合 <BR>
113                   @ref ResultDatabaseFull <BR>
114                   タスク用データベースが一杯の場合は、消尽回数がゼロのタスクの情報が自動的に削除され、新たなタスクの登録が成功します。
115                   しかし消尽回数がゼロのタスクが一つも存在しなかった場合、いずれのタスク情報も削除できず、本エラーとなります。
116                   アプリケーションが自身で登録したタスクの中に削除可能なタスクがある場合は、
117                   そのタスクを @ref UnregisterTask で削除してから、再度登録を行う対応を採る事ができます。
118                   (@ref GetTaskIdList を実行すると、実行したアプリケーションが登録したタスクのID一覧を取得することができます。)
119                   また時間が経てば、他のタスク(他アプリケーションのタスクも含む)の消尽回数が ゼロ になり、タスクの登録に成功する可能性があります。
120                   ですので、時間を置いて(例えば次回アプリケーション起動時などに)タスクの登録をリトライするような対応を採ることもできます。
121          <BR>
122 
123   @param[in]    pTask           タスク名を指定したタスクを指定します。最大7文字の名前を使用できます。
124   @param[in]    pPolicy         タスクポリシーを指定します。
125   @param[in]    pAction         タスクアクションを指定します。 (現在、@ref NsaDownloadAction または、 @ref DownloadActionを指定可)
126   @param[in]    pOption         タスクオプションを指定します。(省略可能)
127   @param[in]    taskStep        タスクステップのIDを指定します。 (1つのタスク実行ステップしかない場合は、省略可)
128   @return       関数の実行結果を返します。以下に挙げる Result を返します。
129   @retval       ResultSuccess                       登録に成功しました。
130   @retval       ResultInvalidTaskId                 タスクIDのポインタがNULLまたは0文字列です。
131   @retval       ResultInvalidPolicy                 ポリシィ情報のポインタがNULLです。
132   @retval       ResultInvalidAction                 タスクアクションのポインタがNULLです。
133   @retval       ResultInvalidTaskPriolity           タスクプライオリティの指定が範囲外です。@ref TaskPriority の範囲か確認してください。
134   @retval       ResultTaskPermissionOutOfRange      タスク許可情報が範囲外です。@ref TaskPermission の範囲か確認してください。
135   @retval       ResultSchedulingPolicyOutOfRange    スケジュールポリシィが範囲外です。@ref SchedulingPolicy の範囲か確認してください。
136   @retval       ResultInvalidTaskTargetDuration     タスク継続時間が範囲外です。(将来的な拡張用です)
137   @retval       ResultActionCodeOutOfRange          タスクアクションコードが範囲外です。@ref Action の範囲か確認してください。
138   @retval       ResultInvalidUrl                    URL文字列のポインタがNULLまたは0文字列です。
139   @retval       ResultApInfoTypeOutOfRange          AP情報タイプが範囲外です。@ref ApInfoType の範囲か確認してください。
140   @retval       ResultInvalidFilePath               ファイルパス文字列のポインタがNULLまたは0文字列です。
141   @retval       ResultInvalidOption                 タスクオプションのポインタがNULL,またはoptionコードが範囲外です。@ref ExecOption の範囲か確認してください。
142   @retval       ResultStorageNotFound               該当のアプリIDに対応したストレージ登録がされていません。
143   @retval       ResultTaskIdAlreadyExist            既に同名タスクが登録されています。
144   @retval       ResultDatabaseFull                  アプリID・タスク登録数が上限に達し、ストレージ登録やタスク登録ができません。
145   @retval       ResultIpcNotSessionInitialized      セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
146   @retval       上記以外                            想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
147 */
148     nn::Result RegisterTask(Task* pTask, TaskPolicy* pPolicy  , TaskAction* pAction
149                             , TaskOption* pOption=NULL
150                             , u8 taskStep=DEFAULT_STEP_ID);
151 
152 /*!
153   @brief        ライブラリに登録済のタスクを削除します。
154 
155                 実行待ち、または実行中のタスクでも削除可能ですが、この場合タスクの実行結果が確認できません。実行結果まで確認したい場合は、タスクの実行完了後、実行結果を確認した上で、@ref Task クラスのCancel()で次のタスク実行が行われないようにしてから、削除を行って下さい。
156 
157   @param[in]    pTask           登録済のタスクを指定します。
158   @param[in]    taskStep        タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可)
159   @return       関数の実行結果を返します。以下に挙げる Result を返します。
160   @retval       ResultSuccess                   削除に成功しました。
161   @retval       ResultInvalidTaskId             タスクIDのポインタがNULLまたは0文字列です。
162   @retval       ResultTaskNotExist              指定されたタスクIDが見つかりません。登録済であるか確認ください。
163   @retval       ResultCantUnregisterTask        タスク状態(たとえば、実行中・スケジュール済み)により、タスクの削除ができません。@ref Task クラスのCancel()を呼び出した後、再度削除をしてください。
164   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
165   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
166 */
167     nn::Result UnregisterTask(Task* pTask, u8 taskStep=DEFAULT_STEP_ID);
168 
169 /*!
170   @brief        ライブラリに登録済のタスクのポリシーを更新します。
171 
172   @param[in]    pTask           登録済のタスクを指定します。
173   @param[in]    pPolicy         変更内容が入ったタスクポリシーを指定します。
174   @param[in]    taskStep        タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可)
175   @return       関数の実行結果を返します。以下に挙げる Result を返します。
176   @retval       ResultSuccess                       更新に成功しました。
177   @retval       ResultInvalidTaskId                 タスクIDのポインタがNULLまたは0文字列です。
178   @retval       ResultInvalidPolicy                 ポリシィ情報のポインタがNULLです。
179   @retval       ResultInvalidTaskPriolity           タスクプライオリティの指定が範囲外です。@ref TaskPriority の範囲か確認してください。
180   @retval       ResultTaskPermissionOutOfRange      タスク許可情報が範囲外です。@ref TaskPermission の範囲か確認してください。
181   @retval       ResultSchedulingPolicyOutOfRange    スケジュールポリシィが範囲外です。@ref SchedulingPolicy の範囲か確認してください。
182   @retval       ResultInvalidTaskTargetDuration     タスク継続時間が範囲外です。(将来的な拡張用です)
183   @retval       ResultTaskNotExist                  指定されたタスクIDが見つかりません。登録済であるか確認ください。
184   @retval       ResultIpcNotSessionInitialized      セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
185   @retval       上記以外                            想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
186 */
187     nn::Result ReconfigureTask(Task* pTask, TaskPolicy* pPolicy, u8 taskStep=DEFAULT_STEP_ID);
188 
189 /*!
190   @brief        登録済のタスクのID覧取得を取得します。
191 
192                 あらかじめ、@ref TaskIdList クラスのインスタンスを作成しておく必要があります。
193                 また、このインスタンスは、一覧を取得するために1KB程度のメモリを必要としますのでご注意ください。
194 
195   @param[out]   pTaskIdList     タスクID一覧を格納するオブジェクトを指定します。
196   @return       関数の実行結果を返します。以下に挙げる Result を返します。
197   @retval       ResultSuccess                   取得に成功しました。
198   @retval       ResultInvalidTaskIdList         タスクID一覧取得用のポインタがNULLです。
199   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
200   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
201 */
202     nn::Result GetTaskIdList(TaskIdList* pTaskIdList);
203 
204 /*!
205   @brief        登録済の指定したタスクの各ステップ一覧を取得します。
206 
207                 あらかじめ、@ref StepIdList クラスのインスタンスを作成しておく必要があります。
208                 また、このインスタンスは、一覧を取得するために256B程度のメモリを必要としますのでご注意ください。
209 
210   @param[in]    pTaskId         登録済のタスクを指定します。
211   @param[out]   pStepIdList     タスクステップID一覧を格納するオブジェクトを指定します。
212   @return       関数の実行結果を返します。以下に挙げる Result を返します。
213   @retval       ResultSuccess                   取得に成功しました。
214   @retval       ResultInvalidTaskId             タスクIDのポインタがNULLまたは0文字列です。
215   @retval       ResultInvalidStepIdList         ステップID一覧取得用のポインタがNULLです。
216   @retval       ResultAppNotExist               タスク、ストレージおよび、独自証明書のいずれも登録がされていない場合に発生します。
217   @retval       ResultTaskNotExist              指定されたタスクIDが見つかりません。
218   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
219   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
220 */
221     nn::Result GetStepIdList(const char* pTaskId, StepIdList* pStepIdList);
222 
223 /*!
224   @brief        NSAタスクなどでBOSSDが利用するBOSSストレージを登録します。<BR/>
225 
226                 登録に先立ち、あらかじめ、拡張セーブデータ領域を作成する必要があります。
227                 このとき、size で指定する使用可能な合計サイズが確保できる容量を確保ください。
228                 また、格納したいシリアルの総数以上のファイル数を指定して作成が必要になります。
229                 アプリケーションがアクセス権を持たない拡張セーブデータIDを指定した場合は、エラーが返ります。
230                 この登録をしないと、NSデータは、ダウンロードされません。<BR/>
231         <BR/>
232                 1)アプリがタスク登録しないが、NSデータを取得したい場合<BR/>
233                   この登録をしておくと、管理者がダウンロードしたNSAフォーマットの中に
234                   アプリ宛のNSデータがあれば、自動的に登録済ストレージにコピーしてもらえます。<BR/>
235         <BR/>
236                 2)アプリがタスク登録して、アプリ宛のNSデータをダウンロードしたい場合<BR/>
237                   この登録をして、タスク登録・実行すると、タスク登録時のストレージにアプリ宛のNSデータをダウンロードできます。
238                   また、1)と同様に、管理者がダウンロードしたNSAフォーマットの中に<BR/>
239                   アプリ宛のNSデータがあれば、自動的に登録済ストレージにコピーしてもらえます。<BR/>
240         <BR/>
241                 3)他のアプリのNSデータを共有したい場合<BR/>
242                   他のアプリと同じストレージ領域を登録を行っておくと、<BR/>
243                   他のアプリ宛にダウンロードされたNSデータを取得できます。<BR/>
244                   また、自分宛のNSデータをダウンロードした場合も、他のアプリからも取得が可能になります。<BR/>
245                   この操作については、@ref GetNsDataIdList @ref GetNewDataNsDataIdList を参照ください。<BR/>
246         <BR/>
247                 NSデータのダウンロード時に、領域サイズが不足して最大の合計サイズに収まらない場合、
248                 シリアルIDが古い(小さな値のID)が自動削除されます。
249                 この機能により合計サイズを最大データサイズ以下保ちますが、削除しても入りきらない場合はエラーとなりますので、適切な容量を設定ください。
250 
251   @param[in]    storageId       ストレージ(追加データ)の識別子を指定します。
252   @param[in]    size            ストレージ領域内で使用可能な最大の合計サイズを指定します。
253   @param[in]    storageType     ストレージ領域の種類を指定します。(通常はデフォルトの「ユーザ拡張セーブデータ領域のBOSSストレージ」を使用するので、省略してください。)
254   @return       関数の実行結果を返します。以下に挙げる Result を返します。
255   @retval       ResultSuccess                   登録に成功しました。
256   @retval       ResultStorageAccessPermission   ストレージのアクセス権がありません。アクセス権の再確認をしてください。
257   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
258   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
259 */
260     nn::Result RegisterStorage(bit32 storageId, size_t size, nn::boss::StorageType storageType=nn::boss::USER_EXT_SAVEDATA_STORAGE);
261 
262 /*!
263   @brief        登録済のBOSSストレージを削除します。
264 
265   @return       関数の実行結果を返します。以下に挙げる Result を返します。
266   @retval       ResultSuccess                   削除に成功しました。
267   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
268   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
269   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
270 */
271     nn::Result UnregisterStorage(void);
272 
273 
274 /*!
275   @brief        登録済のBOSSストレージの領域サイズを取得します。ストレージ登録が済んでいるか確認できます。
276 
277   @param[out]   pStorageSize    BOSSストレージの領域サイズが返ります。(省略可)
278   @return       関数の実行結果を返します。以下に挙げる Result を返します。
279   @retval       ResultSuccess                   取得に成功しました。
280   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
281   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
282   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
283 */
284     nn::Result GetStorageInfo(size_t* pStorageSize=NULL);
285 
286 
287 /*!
288   @brief        ダウンロードされた新着NSコンテンツがあるか確認します。但し、新着フラグを立てないNSデータをダウンロードした場合は、新着フラグは変化しません。
289 
290                 ストレージを共有していない場合、GetNewDataNsDataIdList でNSデータ一覧取得ができます。
291                 ストレージ共有している場合、GetOwnNewDataNsDataIdList で自分のアプリ宛のみのNSデータ一覧取得ができます。
292                 上記の一覧取得を行うとこの新着フラグは落ちます。
293 
294   @param[out]   pFlag           新着NSコンテンツがあればtrueが返ります。
295   @return       関数の実行結果を返します。以下に挙げる Result を返します。
296   @retval       ResultSuccess                   取得に成功しました。
297   @retval       ResultInvalidNewArrivalFlag     新着フラグのポインタがNULLです。
298   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
299   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
300   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
301 */
302     nn::Result GetNewArrivalFlag(bool* pFlag);
303 
304 /*!
305   @brief        新着NSコンテンツがあった場合にシグナルされるイベントを登録します。
306 
307                 初期化したnn::os::Eventのインスタンスを登録してください。
308                 なお、NSデータをダウンロードしてもバージョンが新しくなっていないと、NSデータが更新されないため、
309                 本イベントは、シグナルされませんので、ご注意ください。
310 
311   @param[in]    event         イベントクラスを指定します。
312   @return       関数の実行結果を返します。以下に挙げる Result を返します。
313   @retval       ResultSuccess                   登録に成功しました。
314   @retval       ResultInvalidNewArrivalEvent    新着イベントのポインタがNULLです。
315   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
316   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
317 */
318     nn::Result RegisterNewArrivalEvent(nn::os::Event* event);
319 
320 /*!
321   @brief        @ref nn::boss::RegisterNewArrivalEvent の旧名です。
322                  互換性のために残しているものですので、新規利用は避けてください。
323 */
324     nn::Result GetNewArrivalEvent(nn::os::Event* event) NN_ATTRIBUTE_DEPRECATED;
325 
326 /*!
327   @brief        OptoutFlagを設定します。
328 
329                 このフラグを有効に設定すると、NSAダウンロードタスクの実行時に、管理者用NSデータが受信されても、管理者用ストレージ領域に書き込みません。
330 
331   @param[in]    flag            OptoutFlagを指定します。
332   @return       関数の実行結果を返します。以下に挙げる Result を返します。
333   @retval       ResultSuccess                   設定に成功しました。
334   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
335   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
336   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
337 */
338     nn::Result SetOptoutFlag(bool flag);
339 
340 /*!
341   @brief        OptoutFlagを取得します。
342 
343   @param[out]   pFlag           OptoutFlagが返ります。
344   @return       関数の実行結果を返します。以下に挙げる Result を返します。
345   @retval       ResultSuccess                   取得に成功しました。
346   @retval       ResultInvalidOptoutFlag         OPTOUTフラグのポインタがNULLです。
347   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
348   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
349   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
350 */
351     nn::Result GetOptoutFlag(bool* pFlag);
352 
353 /*!
354   @brief        データタイプを指定して、ストレージを登録された拡張セーブ領域からNSコンテンツの一覧を取得します。
355 
356                 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。
357                 また、継続して取得したとき、新たなダウンロードなどで、一覧内容の変更が検出された場合、
358                 @ref ER_NSDATA_LIST_UPDATED が返りますので、先頭から取り直しが必要になります。
359                 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。
360   @param[in]    dataType        データタイプを指定します。 (@ref DATA_TYPE_ALL で全データタイプを指定可(ただしアプリケーションからは取得できない「おしらせリスト用データ」は除く))
361   @param[out]   pNsDataId       コンテンツデータ一覧を格納するオブジェクトを指定します。
362   @return       関数の実行結果を返します。以下に挙げる Result を返します。
363   @retval       ResultSuccess                   取得に成功しました。
364   @retval       ResultNsDataListSizeShortage    NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。
365   @retval       ResultNsDataListUpdated         前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。
366   @retval       ResultInvalidNsDataIdList       NSデータリスト情報のポインタがNULLです。
367   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
368   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
369   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
370 */
371     nn::Result GetNsDataIdList(u32 dataType, NsDataIdList* pNsDataId);
372 
373 /*!
374   @brief        共有NSデータを除外して、ストレージを登録された拡張セーブ領域から自分宛のNSコンテンツの一覧を取得します。つまり共有NSデータが存在しても、呼び出したアプリ自身のNSデータのみ一覧に含まれます。
375 
376                 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。
377                 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、
378                 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。
379                 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。
380   @param[in]    dataType        データタイプを指定します。 (@ref DATA_TYPE_ALL で全データタイプを指定可(ただしアプリケーションからは取得できない「おしらせリスト用データ」は除く))
381   @param[out]   pNsDataId       コンテンツデータ一覧を格納するオブジェクトを指定します。
382   @return       関数の実行結果を返します。以下に挙げる Result を返します。
383   @retval       ResultSuccess                   取得に成功しました。
384   @retval       ResultNsDataListSizeShortage    NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。
385   @retval       ResultNsDataListUpdated         前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。
386   @retval       ResultInvalidNsDataIdList       NSデータリスト情報のポインタがNULLです。
387   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
388   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
389   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
390 */
391     nn::Result GetOwnNsDataIdList(u32 dataType, NsDataIdList* pNsDataId);
392 
393 /*!
394   @brief        データタイプを指定して、ストレージを登録された拡張セーブ領域からNS新着コンテンツの一覧を取得します。
395 
396                 この操作で、すべての一覧を取得すると、新着フラグは落ちます。
397                 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。
398                 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、
399                 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。
400                 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。
401   @param[in]    dataType        データタイプを指定します。 (@ref DATA_TYPE_ALL で全データタイプを指定可(ただしアプリケーションからは取得できない「おしらせリスト用データ」は除く))
402   @param[out]   pNsDataId       コンテンツデータ一覧を格納するオブジェクトを指定します。
403   @return       関数の実行結果を返します。以下に挙げる Result を返します。
404   @retval       ResultSuccess                   取得に成功しました。
405   @retval       ResultNsDataListSizeShortage    NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。
406   @retval       ResultNsDataListUpdated         前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。
407   @retval       ResultInvalidNsDataIdList       NSデータリスト情報のポインタがNULLです。
408   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
409   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
410   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
411 */
412     nn::Result GetNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId);
413 
414 /*!
415   @brief        共有NSデータを除外して、ストレージを登録された拡張セーブ領域から自分宛のNS新着コンテンツの一覧を取得します。つまり共有NSデータが存在しても、呼び出したアプリ自身のNSデータのみ一覧に含まれます。
416 
417                 この操作で、すべての一覧を取得すると、新着フラグは落ちます。
418                 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。
419                 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、
420                 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。
421                 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。
422   @param[in]    dataType        データタイプを指定します。 (@ref DATA_TYPE_ALL で全データタイプを指定可(ただしアプリケーションからは取得できない「おしらせリスト用データ」は除く))
423   @param[out]   pNsDataId       コンテンツデータ一覧を格納するオブジェクトを指定します。
424   @return       関数の実行結果を返します。以下に挙げる Result を返します。
425   @retval       ResultSuccess                   取得に成功しました。
426   @retval       ResultNsDataListSizeShortage    NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。
427   @retval       ResultNsDataListUpdated         前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。
428   @retval       ResultInvalidNsDataIdList       NSデータリスト情報のポインタがNULLです。
429   @retval       ResultStorageNotFound           該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。
430   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
431   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
432 */
433     nn::Result GetOwnNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId);
434 
435 
436 /*!
437   @brief        タスクの結果コード(@ref nn::boss::TaskResultCode)から、エラーコードを取得します。
438 
439                 タスクの結果コードは、@ref nn::boss::Task::GetResult で取得できます。
440 
441   @param[out]   pOut            エラーコードを格納するためのバッファ。
442   @param[out]   targetResult    対象の結果コード。
443   @return       関数の実行結果を返します。以下に挙げる Result を返します。
444   @retval       ResultSuccess                   取得に成功しました。
445   @retval       ResultUnexpect                  想定外の結果コード(エラーコードが割り当てられていない結果コード)が渡されました。(pOut引数がNULLの場合も、本Resultが返ります。)
446   @retval       ResultIpcNotSessionInitialized  セッションが初期化されていません。@ref Initialize の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize を呼び出してください。
447   @retval       上記以外                        想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。
448 */
449     nn::Result GetErrorCode( u32* pOut, TaskResultCode targetResult );
450 
451 } // end of namespace boss
452 } // end of namespace nn
453 
454 #endif // __cplusplus
455 
456 #endif /* NN_BOSS_BOSS_LIB_H_ */
457