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: 25661 $ 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 #ifdef NN_BOSS_TEST_MODE 34 namespace nn { 35 namespace fs { 36 37 typedef bit64 TitleId; 38 typedef bit64 ExtSaveDataId; 39 40 } 41 } 42 #endif /*NN_BOSS_TEST_MODE*/ 43 44 namespace nn { 45 namespace boss { 46 47 typedef nn::fs::TitleId AppIdType; 48 typedef nn::fs::ExtSaveDataId BossStorageId; 49 50 //$ TASK POLICY 51 typedef struct TaskPolicyConfig { 52 u8 priority; /* タスクの優先度値 */ 53 SchedulingPolicy schedulingPolicy; /* タスクのスケジューリング方法の識別子 */ 54 TaskPermission taskPermission; /* タスク許可(EULA、ペアレンタルコントロール */ 55 NN_PADDING1; 56 u32 targetDuration; /* タスクの完了希望時間 */ 57 u32 execInterval; /* 実行間隔 (秒) */ 58 u32 execCount; /* 実行回数 */ 59 } TaskPolicyConfig; 60 61 62 //$ TASK OPTION 63 typedef struct TaskOptionConfig { 64 ExecOption option; /* スキップまたは、ジャンプの条件ID */ 65 u8 step; /* ステップID */ 66 u8 targetStep; /* ジャンプする場合のステップID */ 67 NN_PADDING1; 68 u32 param1; /* オプションパラメータ1 */ 69 u32 param2; /* オプションパラメータ2 */ 70 } TaskOptionConfig; 71 72 //------------------------------------------------------------ 73 // TASK ACTION 1st BOSS版についての注意 74 // (1) ACTIONは、DownloadとNsaDownload をサポートしており 75 // UploadとSignalについては未実装であるがパラメータは仮で定義している 76 // 77 // (2) SIGNAL ACTION で使用する「nn::os::Event* event;」については 78 // 2nd BOSS以降の開発で検討を要する。 79 // Event* を構造体に持ち、それがBOSSデータベースに登録されて使うことが問題になる。 80 // 81 // 82 //$ TASK ACTION = Upload + Download + Signal + NsaDownload のメンバーの合成 83 typedef struct TaskActionConfig { 84 Action action; /* タスクのスケジューリング方法の識別子 */ 85 u8 privateRootCA; /* プライベートルートCA (true/false) */ 86 u8 privateClientCert; /* プライベートクライアントCert (true/false) */ 87 ApInfoType infoAP; /* AP(アクセスポイント)情報 */ 88 FileDescriptor fDsec; /* ファイル識別子のタイプ指定 */ 89 NN_PADDING3; 90 u32 execSerialID; /* 起動対象プログラム */ 91 u32 offset; /* オフセット指定 */ 92 nn::os::Event* event; /* Signal用 */ 93 nn::Handle fileHandle; /* ファイルハンドル */ 94 union File { 95 char filePath[MAX_FILEPATH_LENGTH]; /* ファイルパス */ 96 wchar_t filePathW[MAX_FILEPATH_LENGTH]; /* ファイルパス */ 97 } file; 98 char url[MAX_URL_LENGTH]; /* URL */ 99 100 struct HhttpRequestHeader{ 101 char label[MAX_HTTP_HEADER_LABEL]; /* HTTPリクエスト ラベル */ 102 char value[MAX_HTTP_HEADER_VALUE]; /* HTTPリクエスト 値 */ 103 } httpRequestHeader[MAX_HTTP_HEADER]; /* HTTPリクエストヘッダ */ 104 105 nn::http::InternalCaCertId rootCA[MAX_ROOT_CA] ; /* */ 106 nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT] ; /* */ 107 u32 rootCANum ; /* rootCA個数 */ 108 u32 clientCertNum ; /* clientCert個数 */ 109 110 NN_PADDING4; 111 char lastModified[MAX_LASTMODIFIED_LENGTH]; 112 113 } TaskActionConfig; 114 115 //$ TASK ACTION1 : Upload 116 typedef TaskActionConfig TaskActionUploadConfig; 117 118 //$ TASK ACTION2 : Download 119 typedef TaskActionConfig TaskActionDownloadConfig; 120 121 //$ TASK ACTION3 : Signal 122 typedef TaskActionConfig TaskActionSignalConfig; 123 124 //$ TASK ACTION4 : NsaDownload 125 typedef TaskActionConfig TaskActionNsaDownloadConfig; 126 127 128 //$ TASK 129 typedef struct TaskConfig { 130 u32 execInterval; /* 実行間隔 (秒) */ 131 u32 execCount; /* 実行回数 */ 132 u8 taskId[TASK_ID_LENGTH]; 133 } TaskConfig; 134 135 136 typedef struct TaskStatusInfo { 137 s64 taskStartTime; /* 開始時刻 */ 138 s64 stepStartTime; /* タスクステップ実行開始時刻 */ 139 TaskStateCode state; /* 実行状態 */ 140 TaskStateCode taskState; /* 内部実行状態 */ 141 TaskStateCode stateResume; /* BOSS内部用 レジューム用バックアップ */ 142 TaskServiceStatus serviceStatus; /* サービス状態 */ 143 bool serviceTerminated; /* サービス終了 */ 144 TaskResultCode resultCode; /* 結果コード値 */ 145 NN_PADDING2; 146 147 u32 commErrorCode; /* 通信エラーコード値 */ 148 u32 execCount; /* 実行回数 */ 149 u32 pendingTime; /* ペンディング時刻 */ 150 u32 remainTime; /* リメイン時刻 */ 151 u32 progress; /* ステップ内の予想進捗率 */ 152 u32 dataSize; /* データサイズ値 */ 153 u16 activeRate; /* 平均実行率 */ 154 u16 requestRate; /* 平均リクエスト数 */ 155 u8 activeStep; /* アクティブ(カレント)ステップ */ 156 u8 priority; 157 NN_PADDING2; 158 char lastModified[MAX_LASTMODIFIED_LENGTH]; 159 } TaskStatusInfo; 160 161 162 typedef TaskStatusInfo TaskStepStatusInfo ; 163 164 typedef struct TaskErrorInfo { 165 TaskResultCode errorResultCode; /* エラー結果コード値 */ 166 NN_PADDING3; 167 u32 errorCode; /* エラーコード値 */ 168 char message[MAX_ERROR_MESSAGE]; /* エラーメッセージ */ 169 } TaskErrorInfo; 170 171 172 173 174 typedef struct ApplicationIdInfoList { 175 u16 size; /* 有効なアプリケーションIDの数 */ 176 NN_PADDING2; 177 NN_PADDING4; 178 AppIdType appId[MAX_APPLICATION_ID]; /* アプリケーションID */ 179 } ApplicationIdInfoList; 180 181 182 typedef struct TaskIdInfoList { 183 u16 size; /* 有効なタスクIDの数 */ 184 NN_PADDING2; 185 NN_PADDING4; 186 u8 taskId[MAX_TASK_ID][TASK_ID_LENGTH]; /* タスクID */ 187 } TaskIdInfoList; 188 189 190 typedef struct StepIdInfoList { 191 u16 size; /* 有効なタスクステップIDの数 */ 192 NN_PADDING2; 193 u8 StepID[MAX_TASK_ID]; /* タスクステップID */ 194 } StepIdInfoList; 195 196 197 typedef struct NsDataIdInfoList { 198 u16 size; /* 有効なシリアルの数 */ 199 u16 lastIndex; /* 最後に取得したインデックス */ 200 u32 lastSerial; /* 最後に取得したシリアル値 */ 201 u32* pSerial; /* シリアルIDリストのポインタ */ 202 size_t serialSize; /* シリアルIDリストの要素数 */ 203 } NsDataIdInfoList; 204 205 206 } // end of namespace boss 207 } // end of namespace nn 208 209 210 #endif /*__cplusplus*/ 211 212 #endif /* NN_BOSS_BOSS_TYPES_H_ */ 213