1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_Types.h 4 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 5 These coded instructions, statements, and computer programs contain 6 proprietary information of Nintendo of America Inc. and/or Nintendo 7 Company Ltd., and are protected by Federal copyright law. They may 8 not be disclosed to third parties or copied or duplicated in any form, 9 in whole or in part, without the prior written consent of Nintendo. 10 $Rev: 34250 $ 11 *--------------------------------------------------------------------------- 12 13 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 Type Definitions 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 /* Please see man pages for details 40 41 */ 42 typedef struct TaskPolicyConfig { 43 u8 priority; // 44 SchedulingPolicy schedulingPolicy; // 45 TaskPermission taskPermission; // 46 NN_PADDING1; 47 u32 targetDuration; // 48 u32 execInterval; // 49 u32 execCount; // 50 } TaskPolicyConfig; 51 52 53 /* Please see man pages for details 54 55 */ 56 typedef struct TaskOptionConfig { 57 ExecOption option; // 58 u8 step; // 59 u8 targetStep; // 60 NN_PADDING1; 61 u32 param1; // 62 u32 param2; // 63 } TaskOptionConfig; 64 65 //------------------------------------------------------------ 66 // TASK ACTION Cautions for 1st BOSS version 67 // (1) ACTION supports Download and NsaDownload. Upload and Signal are not implemented, but parameters are defined provisionally 68 // 69 // 70 // (2) "nn::os::Event* event;" used in SIGNAL ACTION needs consideration during the development of 2nd BOSS 71 // 72 // The problem is putting Event* in a structure, and being registered in BOSS Data to use it. 73 // 74 // 75 /* Please see man pages for details 76 77 */ 78 typedef struct TaskActionConfig { 79 Action action; // 80 u8 privateRootCA; // 81 u8 privateClientCert; // 82 ApInfoType infoAP; // 83 FileDescriptor fDsec; // 84 NN_PADDING3; 85 u32 execSerialID; // 86 u32 offset; // 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]; // 94 95 struct HhttpRequestHeader{ 96 char label[MAX_HTTP_HEADER_LABEL]; // 97 char value[MAX_HTTP_HEADER_VALUE]; // 98 } httpRequestHeader[MAX_HTTP_HEADER]; // 99 100 nn::http::InternalCaCertId rootCA[MAX_ROOT_CA]; // 101 nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT];// 102 u32 rootCANum; // 103 u32 clientCertNum; // 104 105 NN_PADDING4; 106 char lastModified[MAX_LASTMODIFIED_LENGTH]; // 107 108 } TaskActionConfig; 109 110 /* Please see man pages for details 111 112 */ 113 typedef TaskActionConfig TaskActionUploadConfig; 114 115 /* Please see man pages for details 116 117 */ 118 typedef TaskActionConfig TaskActionDownloadConfig; 119 120 /* Please see man pages for details 121 122 */ 123 typedef TaskActionConfig TaskActionSignalConfig; 124 125 /* Please see man pages for details 126 127 */ 128 typedef TaskActionConfig TaskActionNsaDownloadConfig; 129 130 131 /* Please see man pages for details 132 133 */ 134 typedef struct TaskConfig { 135 u32 execInterval; // 136 u32 execCount; // 137 u8 taskId[TASK_ID_LENGTH]; // 138 } TaskConfig; 139 140 141 /* Please see man pages for details 142 143 */ 144 typedef struct TaskStatusInfo { 145 s64 taskStartTime; // 146 s64 stepStartTime; // 147 TaskStateCode state; // 148 TaskStateCode taskState; // 149 TaskStateCode stateResume; // 150 TaskServiceStatus serviceStatus; // 151 bool serviceTerminated; // 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; // 161 u16 activeRate; // 162 u16 requestRate; // 163 u8 activeStep; // 164 u8 priority; // 165 NN_PADDING2; 166 char lastModified[MAX_LASTMODIFIED_LENGTH]; // 167 } TaskStatusInfo; 168 169 170 /* Please see man pages for details 171 172 */ 173 typedef TaskStatusInfo TaskStepStatusInfo ; 174 175 /* Please see man pages for details 176 177 */ 178 typedef struct TaskErrorInfo { 179 TaskResultCode errorResultCode; // 180 NN_PADDING3; 181 u32 errorCode; // 182 char message[MAX_ERROR_MESSAGE]; // 183 } TaskErrorInfo; 184 185 /* Please see man pages for details 186 187 */ 188 typedef struct ApplicationIdInfoList { 189 u16 size; // 190 NN_PADDING2; 191 NN_PADDING4; 192 AppIdType appId[MAX_APPLICATION_ID]; // 193 } ApplicationIdInfoList; 194 195 /* Please see man pages for details 196 197 */ 198 typedef struct TaskIdInfoList { 199 u16 size; // 200 NN_PADDING2; 201 NN_PADDING4; 202 u8 taskId[MAX_TASK_ID][TASK_ID_LENGTH];// 203 } TaskIdInfoList; 204 205 /* Please see man pages for details 206 207 */ 208 typedef struct StepIdInfoList { 209 u16 size; // 210 NN_PADDING2; 211 u8 StepID[MAX_TASK_ID]; // 212 } StepIdInfoList; 213 214 /* Please see man pages for details 215 216 */ 217 typedef struct NsDataIdInfoList { 218 u16 size; // 219 u16 lastIndex; // 220 u32 lastSerial; // 221 u32* pSerial; // 222 size_t serialSize; // 223 } NsDataIdInfoList; 224 225 /* Please see man pages for details 226 227 */ 228 typedef struct NsDataHeaderInfo { 229 s64 titleId; // 230 bit32 flags; // 231 bit32 dataType; // 232 s32 length; // 233 u32 serialId; // 234 u32 version; // 235 NN_PADDING4; 236 } NsDataHeaderInfo; 237 238 } // end of namespace boss 239 } // end of namespace nn 240 241 242 #endif /*__cplusplus*/ 243 244 #endif /* NN_BOSS_BOSS_TYPES_H_ */ 245