1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_Types.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: 27041 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_TYPES_H_ 17 #define NN_BOSS_BOSS_TYPES_H_ 18 19 #include <nn/types.h> 20 #include <nn/os/os_Event.h> 21 #include <nn/Handle.h> 22 #include <nn/http/http_Types.h> 23 #include <nn/fs/fs_Parameters.h> 24 #include <nn/boss/boss_Const.h> 25 #include <nn/boss/boss_Result.h> 26 27 /*=======================================================================* 28 型定義 29 *=======================================================================*/ 30 31 #ifdef __cplusplus 32 33 namespace nn { 34 namespace boss { 35 36 typedef nn::fs::TitleId AppIdType; 37 typedef nn::fs::ExtSaveDataId BossStorageId; 38 39 /*! 40 @brief TaskPolicyクラスの属性情報を保持する内部構造体定義です。 41 */ 42 typedef struct TaskPolicyConfig { 43 u8 priority; //!< タスク登録時のタスク実行優先順位。 44 SchedulingPolicy schedulingPolicy; //!< タスクのスケジューリングポリシー。 45 TaskPermission taskPermission; //!< タスク実行に伴うペアレンタルコントロール・EULAパーミッションの制御設定。 46 NN_PADDING1; 47 u32 targetDuration; //!< 目標とするタスク実行時間。(将来的な拡張用ですので使用できません) 48 u32 execInterval; //!< タスクの実行間隔。単位は、(秒)です。 49 u32 execCount; //!< タスクの消尽回数。 50 } TaskPolicyConfig; 51 52 53 /*! 54 @brief TaskOptionクラスの属性情報を保持する内部構造体定義です。 55 */ 56 typedef struct TaskOptionConfig { 57 ExecOption option; //!< タスク実行オプション。 58 u8 step; //!< タスクステップのID番号。 59 u8 targetStep; //!< タスクステップのオプションID番号。(将来的な拡張用ですので使用できません) 60 NN_PADDING1; 61 u32 param1; //!< タスクステップ実行のオプションパラメータ1。(将来的な拡張用ですので使用できません) 62 u32 param2; //!< タスクステップ実行のオプションパラメータ2。(将来的な拡張用ですので使用できません) 63 } TaskOptionConfig; 64 65 //------------------------------------------------------------ 66 // TASK ACTION 1st BOSS版についての注意 67 // (1) ACTIONは、DownloadとNsaDownload をサポートしており 68 // UploadとSignalについては未実装であるがパラメータは仮で定義している 69 // 70 // (2) SIGNAL ACTION で使用する「nn::os::Event* event;」については 71 // 2nd BOSS以降の開発で検討を要する。 72 // Event* を構造体に持ち、それがBOSSデータベースに登録されて使うことが問題になる。 73 // 74 // 75 /*! 76 @brief TaskActionクラスの属性情報を保持する内部構造体定義です。 77 */ 78 typedef struct TaskActionConfig { 79 Action action; //!< タスクの種別コード。 80 u8 privateRootCA; //!< プライベートルート証明書の有効フラグ。 81 u8 privateClientCert; //!< プライベートクライアント証明書の有効フラグ。 82 ApInfoType infoAP; //!< HTTPクエリーへAP情報付与のためのアクセスポイント情報種別。 83 FileDescriptor fDsec; //!< ファイル識別子のタイプ。 84 NN_PADDING3; 85 u32 execSerialID; //!< 起動タスク用のイベント。(将来的な拡張用ですので使用できません) 86 u32 offset; //!< URLで指定したデータの先頭位置オフセット。 87 nn::os::Event* event; //!< 起動タスク用のイベント。(将来的な拡張用ですので使用できません) 88 nn::Handle fileHandle; //!< ダウンロード先のファイルハンドル。 89 union File { 90 char filePath[MAX_FILEPATH_LENGTH]; //!< ダウンロード先のファイルパス。 91 wchar_t filePathW[MAX_FILEPATH_LENGTH]; //!< ダウンロード先のファイルパス。 92 } file; 93 char url[MAX_URL_LENGTH]; //!< 対象のURL。 94 95 struct HhttpRequestHeader{ 96 char label[MAX_HTTP_HEADER_LABEL]; //!< URLのオプションリクエストヘッダのラベル部。 97 char value[MAX_HTTP_HEADER_VALUE]; //!< URLのオプションリクエストヘッダのバリュー部。 98 } httpRequestHeader[MAX_HTTP_HEADER]; //!< URLのオプションリクエストヘッダ構造体。 99 100 nn::http::InternalCaCertId rootCA[MAX_ROOT_CA]; //!< https通信用の内蔵ルート証明書。 101 nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT];//!< https通信用の内蔵クライアント証明書。 102 u32 rootCANum; //!< 内蔵ルート証明書を指定の設定数。 103 u32 clientCertNum; //!< 内蔵クライアント証明書の設定数。 104 105 NN_PADDING4; 106 char lastModified[MAX_LASTMODIFIED_LENGTH]; //!< HTTPリクエストヘッダに設定する最終更新日時。 107 108 } TaskActionConfig; 109 110 /*! 111 @brief TaskActionUploadクラスの属性情報を保持する内部構造体定義です。(将来的な拡張用ですので使用できません) 112 */ 113 typedef TaskActionConfig TaskActionUploadConfig; 114 115 /*! 116 @brief TaskActionDownloadクラスの属性情報を保持する内部構造体定義です。 117 */ 118 typedef TaskActionConfig TaskActionDownloadConfig; 119 120 /*! 121 @brief TaskActionSignalクラスの属性情報を保持する内部構造体定義です。(将来的な拡張用ですので使用できません) 122 */ 123 typedef TaskActionConfig TaskActionSignalConfig; 124 125 /*! 126 @brief TaskActionNsaDownloadクラスの属性情報を保持する内部構造体定義です。 127 */ 128 typedef TaskActionConfig TaskActionNsaDownloadConfig; 129 130 131 /*! 132 @brief Taskクラスの属性情報を保持する内部構造体定義です。 133 */ 134 typedef struct TaskConfig { 135 u32 execInterval; //!< タスクの実行間隔。単位は、(秒)です。(内部処理用) 136 u32 execCount; //!< タスクの消尽回数。(内部処理用) 137 u8 taskId[TASK_ID_LENGTH]; //!< タスクID。(内部処理用) 138 } TaskConfig; 139 140 141 /*! 142 @brief TaskStatusクラスの属性情報を保持する内部構造体定義です。 143 */ 144 typedef struct TaskStatusInfo { 145 s64 taskStartTime; //!< 2000/1/1を基点としたタスク実行指示時刻。単位は、(ナノ秒) です。 146 s64 stepStartTime; //!< 2000/1/1を基点としたタスク実行指示時刻。単位は、(ナノ秒) です。(将来的な拡張用ですので使用できません) 147 TaskStateCode state; //!< タスクの状態情報。 148 TaskStateCode taskState; //!< 内部的なタスクの状態情報。 149 TaskStateCode stateResume; //!< 内部的なリジューム時用のタスクの状態情報。 150 TaskServiceStatus serviceStatus; //!< タスク属性で指定したURLのサービス利用可能ステータス。 151 bool serviceTerminated; //!< タスク属性で指定したURLのサービス利用可能フラグ。 152 TaskResultCode resultCode; //!< タスク実行結果コード。 153 NN_PADDING2; 154 155 u32 commErrorCode; //!< タスク実行時の通信エラーコード。 156 u32 execCount; //!< タスクの消尽回数。 157 u32 pendingTime; //!< タスク実行指示時刻からの経過時間。 158 u32 remainTime; //!< タスク実行までの残り時間。(将来的な拡張用ですので使用できません) 159 u32 progress; //!< ダウンロード済みバイト数。 160 u32 dataSize; //!< ダウンロード対象のURLの総バイト数。 161 u16 activeRate; //!< 平均実行率。(将来的な拡張用ですので使用できません) 162 u16 requestRate; //!< 平均通信リクエスト率。(将来的な拡張用ですので使用できません) 163 u8 activeStep; //!< 実行中のタスクステップID番号。 164 u8 priority; //!< 現在のタスク実行の優先順位。 165 NN_PADDING2; 166 char lastModified[MAX_LASTMODIFIED_LENGTH]; //!< HTTPレスポンスヘッダで返された最終更新日時。 167 } TaskStatusInfo; 168 169 170 /*! 171 @brief TaskStepStatusInfo内部構造体定義です。(内部処理用) 172 */ 173 typedef TaskStatusInfo TaskStepStatusInfo ; 174 175 /*! 176 @brief TaskErrorクラスの属性情報を保持する内部構造体定義です。 177 */ 178 typedef struct TaskErrorInfo { 179 TaskResultCode errorResultCode; //!< タスク実行結果コード。 180 NN_PADDING3; 181 u32 errorCode; //!< タスク実行時の通信エラーコード。 182 char message[MAX_ERROR_MESSAGE]; //!< タスク実行時の通信エラーメッセージ。(将来的な拡張用ですので使用できません) 183 } TaskErrorInfo; 184 185 /*! 186 @brief ApplicationIdListクラスの属性情報を保持する内部構造体定義です。 187 */ 188 typedef struct ApplicationIdInfoList { 189 u16 size; //!< アプリIDリストの有効なサイズ。 190 NN_PADDING2; 191 NN_PADDING4; 192 AppIdType appId[MAX_APPLICATION_ID]; //!< アプリケーションIDリスト。 193 } ApplicationIdInfoList; 194 195 /*! 196 @brief TaskIdListクラスの属性情報を保持する内部構造体定義です。 197 */ 198 typedef struct TaskIdInfoList { 199 u16 size; //!< タスクIDリストの有効なサイズ。 200 NN_PADDING2; 201 NN_PADDING4; 202 u8 taskId[MAX_TASK_ID][TASK_ID_LENGTH];//!< タスクIDリスト。 203 } TaskIdInfoList; 204 205 /*! 206 @brief StepIdListクラスの属性情報を保持する内部構造体定義です。 207 */ 208 typedef struct StepIdInfoList { 209 u16 size; //!< タスクステップIDリストの有効なサイズ。 210 NN_PADDING2; 211 u8 StepID[MAX_TASK_ID]; //!< タスクステップIDリスト。 212 } StepIdInfoList; 213 214 /*! 215 @brief NsDataIdListクラスの属性情報を保持する内部構造体定義です。 216 */ 217 typedef struct NsDataIdInfoList { 218 u16 size; //!< 有効なシリアルの数。 219 u16 lastIndex; //!< 最後に取得したインデックス値 220 u32 lastSerial; //!< 最後に取得したシリアル値 221 u32* pSerial; //!< シリアルIDリストを格納する領域ポインタ 222 size_t serialSize; //!< シリアルIDリストを格納する領域の要素数 223 } NsDataIdInfoList; 224 225 226 } // end of namespace boss 227 } // end of namespace nn 228 229 230 #endif /*__cplusplus*/ 231 232 #endif /* NN_BOSS_BOSS_TYPES_H_ */ 233