/*---------------------------------------------------------------------------* Project: Horizon File: boss_Types.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 25661 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_TYPES_H_ #define NN_BOSS_BOSS_TYPES_H_ #include #include #include #include #include #include #include /*=======================================================================* 型定義 *=======================================================================*/ #ifdef __cplusplus #ifdef NN_BOSS_TEST_MODE namespace nn { namespace fs { typedef bit64 TitleId; typedef bit64 ExtSaveDataId; } } #endif /*NN_BOSS_TEST_MODE*/ namespace nn { namespace boss { typedef nn::fs::TitleId AppIdType; typedef nn::fs::ExtSaveDataId BossStorageId; //$ TASK POLICY typedef struct TaskPolicyConfig { u8 priority; /* タスクの優先度値 */ SchedulingPolicy schedulingPolicy; /* タスクのスケジューリング方法の識別子 */ TaskPermission taskPermission; /* タスク許可(EULA、ペアレンタルコントロール */ NN_PADDING1; u32 targetDuration; /* タスクの完了希望時間 */ u32 execInterval; /* 実行間隔 (秒) */ u32 execCount; /* 実行回数 */ } TaskPolicyConfig; //$ TASK OPTION typedef struct TaskOptionConfig { ExecOption option; /* スキップまたは、ジャンプの条件ID */ u8 step; /* ステップID */ u8 targetStep; /* ジャンプする場合のステップID */ NN_PADDING1; u32 param1; /* オプションパラメータ1 */ u32 param2; /* オプションパラメータ2 */ } TaskOptionConfig; //------------------------------------------------------------ // TASK ACTION 1st BOSS版についての注意 // (1) ACTIONは、DownloadとNsaDownload をサポートしており // UploadとSignalについては未実装であるがパラメータは仮で定義している // // (2) SIGNAL ACTION で使用する「nn::os::Event* event;」については // 2nd BOSS以降の開発で検討を要する。 // Event* を構造体に持ち、それがBOSSデータベースに登録されて使うことが問題になる。 // // //$ TASK ACTION = Upload + Download + Signal + NsaDownload のメンバーの合成 typedef struct TaskActionConfig { Action action; /* タスクのスケジューリング方法の識別子 */ u8 privateRootCA; /* プライベートルートCA  (true/false) */ u8 privateClientCert; /* プライベートクライアントCert (true/false) */ ApInfoType infoAP; /* AP(アクセスポイント)情報 */ FileDescriptor fDsec; /* ファイル識別子のタイプ指定 */ NN_PADDING3; u32 execSerialID; /* 起動対象プログラム */ u32 offset; /* オフセット指定 */ nn::os::Event* event; /* Signal用 */ nn::Handle fileHandle; /* ファイルハンドル */ union File { char filePath[MAX_FILEPATH_LENGTH]; /* ファイルパス */ wchar_t filePathW[MAX_FILEPATH_LENGTH]; /* ファイルパス */ } file; char url[MAX_URL_LENGTH]; /* URL */ struct HhttpRequestHeader{ char label[MAX_HTTP_HEADER_LABEL]; /* HTTPリクエスト ラベル */ char value[MAX_HTTP_HEADER_VALUE]; /* HTTPリクエスト 値 */ } httpRequestHeader[MAX_HTTP_HEADER]; /* HTTPリクエストヘッダ */ nn::http::InternalCaCertId rootCA[MAX_ROOT_CA] ; /* */ nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT] ; /* */ u32 rootCANum ; /* rootCA個数 */ u32 clientCertNum ; /* clientCert個数 */ NN_PADDING4; char lastModified[MAX_LASTMODIFIED_LENGTH]; } TaskActionConfig; //$ TASK ACTION1 : Upload typedef TaskActionConfig TaskActionUploadConfig; //$ TASK ACTION2 : Download typedef TaskActionConfig TaskActionDownloadConfig; //$ TASK ACTION3 : Signal typedef TaskActionConfig TaskActionSignalConfig; //$ TASK ACTION4 : NsaDownload typedef TaskActionConfig TaskActionNsaDownloadConfig; //$ TASK typedef struct TaskConfig { u32 execInterval; /* 実行間隔 (秒) */ u32 execCount; /* 実行回数 */ u8 taskId[TASK_ID_LENGTH]; } TaskConfig; typedef struct TaskStatusInfo { s64 taskStartTime; /* 開始時刻 */ s64 stepStartTime; /* タスクステップ実行開始時刻 */ TaskStateCode state; /* 実行状態 */ TaskStateCode taskState; /* 内部実行状態 */ TaskStateCode stateResume; /* BOSS内部用 レジューム用バックアップ */ TaskServiceStatus serviceStatus; /* サービス状態 */ bool serviceTerminated; /* サービス終了 */ TaskResultCode resultCode; /* 結果コード値 */ NN_PADDING2; u32 commErrorCode; /* 通信エラーコード値 */ u32 execCount; /* 実行回数 */ u32 pendingTime; /* ペンディング時刻 */ u32 remainTime; /* リメイン時刻 */ u32 progress; /* ステップ内の予想進捗率 */ u32 dataSize; /* データサイズ値 */ u16 activeRate; /* 平均実行率 */ u16 requestRate; /* 平均リクエスト数 */ u8 activeStep; /* アクティブ(カレント)ステップ */ u8 priority; NN_PADDING2; char lastModified[MAX_LASTMODIFIED_LENGTH]; } TaskStatusInfo; typedef TaskStatusInfo TaskStepStatusInfo ; typedef struct TaskErrorInfo { TaskResultCode errorResultCode; /* エラー結果コード値 */ NN_PADDING3; u32 errorCode; /* エラーコード値 */ char message[MAX_ERROR_MESSAGE]; /* エラーメッセージ */ } TaskErrorInfo; typedef struct ApplicationIdInfoList { u16 size; /* 有効なアプリケーションIDの数 */ NN_PADDING2; NN_PADDING4; AppIdType appId[MAX_APPLICATION_ID]; /* アプリケーションID */ } ApplicationIdInfoList; typedef struct TaskIdInfoList { u16 size; /* 有効なタスクIDの数 */ NN_PADDING2; NN_PADDING4; u8 taskId[MAX_TASK_ID][TASK_ID_LENGTH]; /* タスクID */ } TaskIdInfoList; typedef struct StepIdInfoList { u16 size; /* 有効なタスクステップIDの数 */ NN_PADDING2; u8 StepID[MAX_TASK_ID]; /* タスクステップID */ } StepIdInfoList; typedef struct NsDataIdInfoList { u16 size; /* 有効なシリアルの数 */ u16 lastIndex; /* 最後に取得したインデックス */ u32 lastSerial; /* 最後に取得したシリアル値 */ u32* pSerial; /* シリアルIDリストのポインタ */ size_t serialSize; /* シリアルIDリストの要素数 */ } NsDataIdInfoList; } // end of namespace boss } // end of namespace nn #endif /*__cplusplus*/ #endif /* NN_BOSS_BOSS_TYPES_H_ */