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: 26265 $ 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 /*! 44 @brief ライブラリを初期化します。 45 @return 処理の結果が返ります。<BR> 46 @retval Description== @ref ER_ALREADY_INITIALIZED 「初期化済み」を表すエラー 47 */ 48 nn::Result Initialize(void); 49 50 //-------------------------------------------------------------- 51 /*! 52 @brief ライブラリの終了処理を行います。 53 @return 処理の結果が返ります。<BR> 54 @retval Description== @ref ER_IPC_NOT_SESSION_INITIALIZED 「IPCのセッションが初期化されていない。(権限不適合の場合など)」を表すエラー 55 */ 56 nn::Result Finalize(void); 57 58 //-------------------------------------------------------------- 59 /*! 60 @brief https用の独自ルート証明書をライブラリに登録します。 61 他ルート証明書がすでに設定されている状況でこのAPIが呼ばれた場合、エラーとなります。 62 @param[in] pCertData ルート証明書データ。データフォーマットは、ASN.1フォーマットです。 63 @param[in] certDataSize クライアント証明書データのサイズを指定します。 64 @return 処理の結果が返ります。<BR> 65 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 66 */ 67 nn::Result RegisterPrivateRootCa(const u8* pCertData, size_t certDataSize); 68 69 //-------------------------------------------------------------- 70 /*! 71 @brief https用の独自クライアント証明書および、プライベートキーをライブラリに登録します。 72 他クライアント証明書がすでに設定されている状況でこのAPIが呼ばれた場合、エラーとなります。 73 @param[in] pCertData クライアント証明書のデータ。データフォーマットは、ASN.1フォーマットです。 74 @param[in] certDataSize クライアント証明書データデータのサイズを指定します。 75 @param[in] pPrivateKeyData プライベート秘密鍵のデータ。データフォーマットは、ASN.1フォーマットです。 76 @param[in] privateKeyDataSize プライベート秘密鍵のデータデータのサイズを指定します。 77 @return 処理の結果が返ります。<BR> 78 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 79 */ 80 nn::Result RegisterPrivateClientCert(const u8* pCertData, size_t certDataSize 81 , const u8* pPrivateKeyData, size_t privateKeyDataSize); 82 83 //-------------------------------------------------------------- 84 /*! 85 @brief タスクをライブラリに登録します。 86 @param[in] pTask タスク名を指定したタスクを指定します。 87 @param[in] pPolicy タスクポリシーを指定します。 88 @param[in] pAction タスクアクションを指定します。 (現在、@ref NsaDownloadAction を指定可) 89 @param[in] pOption タスクオプションを指定します。(省略可能) 90 @param[in] taskStep タスクステップのIDを指定します。 (1つのタスク実行ステップしかない場合は、省略可) 91 @return 処理の結果が返ります。<BR> 92 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 93 @retval Description== @ref ER_INVALID_POLICY 「ポリシィ情報のポインタがNULLです。」を表すエラー 94 @retval Description== @ref ER_INVALID_ACTION 「タスクアクションのポインタがNULLです。」を表すエラー 95 @retval Description== @ref ER_INVALID_TASK_STEP 「タスク登録でカレントステップIDが指定されました。」を表すエラー 96 @retval Description== @ref ER_INVALID_TASK_PRIOLITY 「タスクプライオリティの指定が範囲外です。」を表すエラー 97 @retval Description== @ref ER_TASK_PERMISSION_OUT_OF_RANGE 「タスク許可情報が範囲外です。」を表すエラー 98 @retval Description== @ref ER_SCHEDULING_POLICY_OUT_OF_RANGE 「スケジュールポリシィが範囲外です」を表すエラー 99 @retval Description== @ref ER_INVALID_TASK_TARGETDURATION 「タスク継続時間が範囲外です。」を表すエラー 100 @retval Description== @ref ER_ACTIONCODE_OUT_OF_RANGE 「タスクアクションコードが範囲外です。」を表すエラー 101 @retval Description== @ref ER_INVALID_URL 「URL文字列のポインタがNULLまたは0文字列です。」を表すエラー 102 @retval Description== @ref ER_APINFOTYPE_OUT_OF_RANGE 「AP情報タイプが範囲外です。」を表すエラー 103 @retval Description== @ref ER_INVALID_FILEPATH 「ファイルパス文字列のポインタがNULLまたは0文字列です。」を表すエラー 104 @retval Description== @ref ER_INVALID_OPTION 「タスクオプションのポインタがNULL,またはoptionコードが範囲外です。」を表すエラー 105 @retval Description== @ref ER_CANT_DELETE_SDB_DATA 「*****」を表すエラー 106 @retval Description== @ref ER_INVALID_MEM_ALOCATE 「不正なメモリアロケーション」を表すエラー 107 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 108 */ 109 nn::Result RegisterTask(Task* pTask, TaskPolicy* pPolicy , TaskAction* pAction 110 , TaskOption* pOption=NULL 111 , u8 taskStep=DEFAULT_STEP_ID); 112 113 //-------------------------------------------------------------- 114 /*! 115 @brief ライブラリに登録済のタスクを削除します。 116 @param[in] pTask 登録済のタスクを指定します。 117 @param[in] taskStep タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可) 118 @return 処理の結果が返ります。<BR> 119 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 120 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 121 @retval Description== @ref ER_CANT_UNREGISTER_TASK 「タスク状態により、UnregisterTask 出来ない」を表すエラー 122 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 123 */ 124 nn::Result UnregisterTask(Task* pTask, u8 taskStep=DEFAULT_STEP_ID); 125 126 //-------------------------------------------------------------- 127 /*! 128 @brief ライブラリに登録済のタスクのポリシーを更新します。 129 @param[in] pTask 登録済のタスクを指定します。 130 @param[in] pPolicy 変更内容が入ったタスクポリシーを指定します。 131 @param[in] taskStep タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可) 132 @return 処理の結果が返ります。<BR> 133 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。 」を表すエラー 134 @retval Description== @ref ER_INVALID_POLICY 「ポリシィ情報のポインタがNULLです。」を表すエラー 135 @retval Description== @ref ER_INVALID_TASK_PRIOLITY 「タスクプライオリティの指定が範囲外です。」を表すエラー 136 @retval Description== @ref ER_TASK_PERMISSION_OUT_OF_RANGE 「タスク許可情報が範囲外です。」を表すエラー 137 @retval Description== @ref ER_SCHEDULING_POLICY_OUT_OF_RANGE 「スケジュールポリシィが範囲外です」を表すエラー 138 @retval Description== @ref ER_INVALID_TASK_TARGETDURATION 「タスク継続時間が範囲外です。」を表すエラー 139 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 140 */ 141 nn::Result ReconfigureTask(Task* pTask, TaskPolicy* pPolicy, u8 taskStep=DEFAULT_STEP_ID); 142 143 //-------------------------------------------------------------- 144 /*! 145 @brief 登録済のタスクのID覧取得を取得します。 146 @param[out] pTaskIdList タスクID一覧を格納するオブジェクトを指定します。 147 @return 処理の結果が返ります。<BR> 148 @retval Description== @ref ER_INVALID_TASKID_LIST 「タスクID一覧取得用のポインタがNULLです。」を表すエラー 149 @retval Description== @ref ER_APLI_NOT_EXIST 「指定されたアプリIDが見つからない。」を表すエラー 150 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 151 */ 152 nn::Result GetTaskIdList(TaskIdList* pTaskIdList); 153 154 //-------------------------------------------------------------- 155 /*! 156 @brief 登録済の指定したタスクの各ステップ一覧を取得します。 157 @param[in] pTaskId 登録済のタスクを指定します。 158 @param[out] pStepIdList タスクステップID一覧を格納するオブジェクトを指定します。 159 @return 処理の結果が返ります。<BR> 160 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 161 @retval Description== @ref ER_INVALID_STEPID_LIST 「ステップID一覧取得用のポインタがNULLです。」を表すエラー 162 @retval Description== @ref ER_APLI_NOT_EXIST 「指定されたアプリIDが見つからない。」を表すエラー 163 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 164 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 165 */ 166 nn::Result GetStepIdList(const char* pTaskId, StepIdList* pStepIdList); 167 168 //-------------------------------------------------------------- 169 /*! 170 @brief NADLタスクなどでBOSSDが利用するBOSSストレージを登録します。 171 この登録をしないと、NSデータは、ダウンロードされません。 172 @param[in] storageId ストレージ(追加データ)の識別子を指定します。 173 @param[in] size ストレージ領域内で使用可能な最大の合計サイズを指定します。 174 @return 処理の結果が返ります。<BR> 175 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 176 */ 177 nn::Result RegisterStorage(nn::fs::ExtSaveDataId storageId, size_t size); 178 179 //-------------------------------------------------------------- 180 /*! 181 @brief 登録済のBOSSストレージを削除します。 182 @return 処理の結果が返ります。<BR> 183 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 184 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 185 */ 186 nn::Result UnregisterStorage(void); 187 188 189 //-------------------------------------------------------------- 190 /*! 191 @brief ダウンロードされた新着NSコンテンツがあるか確認します。 192 @param[out] pFlag 新着NSコンテンツがあればtrueが返ります。 193 @return 処理の結果が返ります。<BR> 194 @retval Description== @ref ER_INVALID_NEWARRIVAL_FLAG 「新着フラグのポインタがNULLです。」を表すエラー 195 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 196 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 197 */ 198 nn::Result GetNewArrivalFlag(bool* pFlag); 199 200 //-------------------------------------------------------------- 201 /*! 202 @brief 新着NSコンテンツがあった場合にシグナルされるイベントを登録します。 203 @param[in] event イベントクラスを指定します。 204 @return 処理の結果が返ります。<BR> 205 @retval Description== @ref ER_INVALID_NEWARRIVAL_FLAG 「新着フラグのポインタがNULLです。」を表すエラー 206 */ 207 nn::Result GetNewArrivalEvent(nn::os::Event* event); 208 209 //-------------------------------------------------------------- 210 /*! 211 @brief OptoutFlagを設定します。 212 @param[in] flag OptoutFlagを指定します。 213 @return 処理の結果が返ります。<BR> 214 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 215 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 216 */ 217 nn::Result SetOptoutFlag(bool flag); 218 219 //-------------------------------------------------------------- 220 /*! 221 @brief OptoutFlagを取得します。 222 @param[out] pFlag OptoutFlagが返ります。 223 @return 処理の結果が返ります。<BR> 224 @retval Description== @ref ER_INVALID_OPTOUT_FLAG 「OPTOUTフラグのポインタがNULLです。」を表すエラー 225 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 226 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 227 */ 228 nn::Result GetOptoutFlag(bool* pFlag); 229 230 //-------------------------------------------------------------- 231 /*! 232 @brief データタイプを指定して、NSコンテンツの一覧を取得します。 233 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 234 @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 235 @return 処理の結果が返ります。<BR> 236 @retval Description== @ref ER_INVALID_NSDATA_IDLIST 「NSデータリスト情報のポインタがNULLです。」を表すエラー 237 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 238 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 239 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 240 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 241 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 242 */ 243 nn::Result GetNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 244 245 //-------------------------------------------------------------- 246 /*! 247 @brief 共有NSDを除外して、NSコンテンツの一覧を取得します。つまり共有NSDが存在しても、呼び出したアプリ自身のNSDのみ一覧に含まれます。 248 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 249 @param[out] pNsDataId NSDのシリアルID一覧を格納するオブジェクトを指定します。 250 @return 処理の結果が返ります。<BR> 251 @retval Description== @ref ER_INVALID_NSDATA_IDLIST 「NSデータリスト情報のポインタがNULLです。」を表すエラー 252 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 253 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 254 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 255 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 256 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 257 */ 258 nn::Result GetOwnNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 259 260 //-------------------------------------------------------------- 261 /*! 262 @brief NS新着コンテンツの一覧を取得します。 263 この操作で、すべての一覧を取得すると、新着フラグは落ちます。 264 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 265 @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 266 @return 処理の結果が返ります。<BR> 267 @retval Description== @ref ER_INVALID_NSDATA_IDLIST 「NSデータリスト情報のポインタがNULLです。」を表すエラー 268 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 269 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 270 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 271 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 272 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 273 */ 274 nn::Result GetNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 275 276 //-------------------------------------------------------------- 277 /*! 278 @brief 共有NSDを除外して、NS新着コンテンツの一覧を取得します。つまり共有NSDが存在しても、呼び出したアプリ自身のNSDのみ一覧に含まれます。 279 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 280 @param[out] pNsDataId NSDのシリアルID一覧を格納するオブジェクトを指定します。 281 @return 処理の結果が返ります。<BR> 282 @retval Description== @ref ER_INVALID_NSDATA_IDLIST 「NSデータリスト情報のポインタがNULLです。」を表すエラー 283 @retval Description== @ref ER_INVALID_APPID_STORAGE_NOTFOUND 「APPIDに対応したストレージがない」を表すエラー 284 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 285 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 286 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 287 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 288 */ 289 nn::Result GetOwnNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 290 291 292 } // end of namespace boss 293 } // end of namespace nn 294 295 #endif // __cplusplus 296 297 #endif /* NN_BOSS_BOSS_LIB_H_ */ 298