/*---------------------------------------------------------------------------* 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: 27041 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_TYPES_H_ #define NN_BOSS_BOSS_TYPES_H_ #include #include #include #include #include #include #include /*=======================================================================* 型定義 *=======================================================================*/ #ifdef __cplusplus namespace nn { namespace boss { typedef nn::fs::TitleId AppIdType; typedef nn::fs::ExtSaveDataId BossStorageId; /*! @brief TaskPolicyクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskPolicyConfig { u8 priority; //!< タスク登録時のタスク実行優先順位。 SchedulingPolicy schedulingPolicy; //!< タスクのスケジューリングポリシー。 TaskPermission taskPermission; //!< タスク実行に伴うペアレンタルコントロール・EULAパーミッションの制御設定。 NN_PADDING1; u32 targetDuration; //!< 目標とするタスク実行時間。(将来的な拡張用ですので使用できません) u32 execInterval; //!< タスクの実行間隔。単位は、(秒)です。 u32 execCount; //!< タスクの消尽回数。 } TaskPolicyConfig; /*! @brief TaskOptionクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskOptionConfig { ExecOption option; //!< タスク実行オプション。 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データベースに登録されて使うことが問題になる。 // // /*! @brief TaskActionクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskActionConfig { Action action; //!< タスクの種別コード。 u8 privateRootCA; //!< プライベートルート証明書の有効フラグ。 u8 privateClientCert; //!< プライベートクライアント証明書の有効フラグ。 ApInfoType infoAP; //!< HTTPクエリーへAP情報付与のためのアクセスポイント情報種別。 FileDescriptor fDsec; //!< ファイル識別子のタイプ。 NN_PADDING3; u32 execSerialID; //!< 起動タスク用のイベント。(将来的な拡張用ですので使用できません) u32 offset; //!< URLで指定したデータの先頭位置オフセット。 nn::os::Event* event; //!< 起動タスク用のイベント。(将来的な拡張用ですので使用できません) 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]; //!< URLのオプションリクエストヘッダのラベル部。 char value[MAX_HTTP_HEADER_VALUE]; //!< URLのオプションリクエストヘッダのバリュー部。 } httpRequestHeader[MAX_HTTP_HEADER]; //!< URLのオプションリクエストヘッダ構造体。 nn::http::InternalCaCertId rootCA[MAX_ROOT_CA]; //!< https通信用の内蔵ルート証明書。 nn::http::InternalClientCertId clientCert[MAX_CLIENT_CERT];//!< https通信用の内蔵クライアント証明書。 u32 rootCANum; //!< 内蔵ルート証明書を指定の設定数。 u32 clientCertNum; //!< 内蔵クライアント証明書の設定数。 NN_PADDING4; char lastModified[MAX_LASTMODIFIED_LENGTH]; //!< HTTPリクエストヘッダに設定する最終更新日時。 } TaskActionConfig; /*! @brief TaskActionUploadクラスの属性情報を保持する内部構造体定義です。(将来的な拡張用ですので使用できません) */ typedef TaskActionConfig TaskActionUploadConfig; /*! @brief TaskActionDownloadクラスの属性情報を保持する内部構造体定義です。 */ typedef TaskActionConfig TaskActionDownloadConfig; /*! @brief TaskActionSignalクラスの属性情報を保持する内部構造体定義です。(将来的な拡張用ですので使用できません) */ typedef TaskActionConfig TaskActionSignalConfig; /*! @brief TaskActionNsaDownloadクラスの属性情報を保持する内部構造体定義です。 */ typedef TaskActionConfig TaskActionNsaDownloadConfig; /*! @brief Taskクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskConfig { u32 execInterval; //!< タスクの実行間隔。単位は、(秒)です。(内部処理用) u32 execCount; //!< タスクの消尽回数。(内部処理用) u8 taskId[TASK_ID_LENGTH]; //!< タスクID。(内部処理用) } TaskConfig; /*! @brief TaskStatusクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskStatusInfo { s64 taskStartTime; //!< 2000/1/1を基点としたタスク実行指示時刻。単位は、(ナノ秒) です。 s64 stepStartTime; //!< 2000/1/1を基点としたタスク実行指示時刻。単位は、(ナノ秒) です。(将来的な拡張用ですので使用できません) TaskStateCode state; //!< タスクの状態情報。 TaskStateCode taskState; //!< 内部的なタスクの状態情報。 TaskStateCode stateResume; //!< 内部的なリジューム時用のタスクの状態情報。 TaskServiceStatus serviceStatus; //!< タスク属性で指定したURLのサービス利用可能ステータス。 bool serviceTerminated; //!< タスク属性で指定したURLのサービス利用可能フラグ。 TaskResultCode resultCode; //!< タスク実行結果コード。 NN_PADDING2; u32 commErrorCode; //!< タスク実行時の通信エラーコード。 u32 execCount; //!< タスクの消尽回数。 u32 pendingTime; //!< タスク実行指示時刻からの経過時間。 u32 remainTime; //!< タスク実行までの残り時間。(将来的な拡張用ですので使用できません) u32 progress; //!< ダウンロード済みバイト数。 u32 dataSize; //!< ダウンロード対象のURLの総バイト数。 u16 activeRate; //!< 平均実行率。(将来的な拡張用ですので使用できません) u16 requestRate; //!< 平均通信リクエスト率。(将来的な拡張用ですので使用できません) u8 activeStep; //!< 実行中のタスクステップID番号。 u8 priority; //!< 現在のタスク実行の優先順位。 NN_PADDING2; char lastModified[MAX_LASTMODIFIED_LENGTH]; //!< HTTPレスポンスヘッダで返された最終更新日時。 } TaskStatusInfo; /*! @brief TaskStepStatusInfo内部構造体定義です。(内部処理用) */ typedef TaskStatusInfo TaskStepStatusInfo ; /*! @brief TaskErrorクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskErrorInfo { TaskResultCode errorResultCode; //!< タスク実行結果コード。 NN_PADDING3; u32 errorCode; //!< タスク実行時の通信エラーコード。 char message[MAX_ERROR_MESSAGE]; //!< タスク実行時の通信エラーメッセージ。(将来的な拡張用ですので使用できません) } TaskErrorInfo; /*! @brief ApplicationIdListクラスの属性情報を保持する内部構造体定義です。 */ typedef struct ApplicationIdInfoList { u16 size; //!< アプリIDリストの有効なサイズ。 NN_PADDING2; NN_PADDING4; AppIdType appId[MAX_APPLICATION_ID]; //!< アプリケーションIDリスト。 } ApplicationIdInfoList; /*! @brief TaskIdListクラスの属性情報を保持する内部構造体定義です。 */ typedef struct TaskIdInfoList { u16 size; //!< タスクIDリストの有効なサイズ。 NN_PADDING2; NN_PADDING4; u8 taskId[MAX_TASK_ID][TASK_ID_LENGTH];//!< タスクIDリスト。 } TaskIdInfoList; /*! @brief StepIdListクラスの属性情報を保持する内部構造体定義です。 */ typedef struct StepIdInfoList { u16 size; //!< タスクステップIDリストの有効なサイズ。 NN_PADDING2; u8 StepID[MAX_TASK_ID]; //!< タスクステップIDリスト。 } StepIdInfoList; /*! @brief NsDataIdListクラスの属性情報を保持する内部構造体定義です。 */ 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_ */