/*---------------------------------------------------------------------------* Project: Horizon File: boss_Task.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: 26265 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_TASK_H_ #define NN_BOSS_BOSS_TASK_H_ #include #include #include #include #include #include #include #include #include #ifdef __cplusplus namespace nn { namespace boss { /*! @brief タスクを表すクラスです。タスクの登録や登録解除、タスクの操作の際などに利用します。 */ class Task { public: /*! @brief コンストラクタです。 */ explicit Task(void); /*! @brief デストラクタです。 */ virtual ~Task(void); /*! @brief タスクIDを登録します。 @param[in] pTaskId タスクIDを指定します。 TaskId[TASK_ID_LENGTH] @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー */ nn::Result Initialize(const char* pTaskId); /*! @brief タスク登録後、実行間隔を更新します。 @param[in] interval 実行間隔を指定します。単位は時間です。 @return 処理の結果が返ります。
*/ inline nn::Result UpdateInterval(u32 interval){return UpdateIntervalWithSec(interval*60*60);} /*! @brief タスク登録後、実行間隔を更新します。単位は秒です。 @param[in] intervalSec 実行間隔を指定します。単位は秒です。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー */ nn::Result UpdateIntervalWithSec(u32 intervalSec); /*! @brief タスク登録後、実行回数を更新します。 @param[in] count 実行回数を指定します。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー */ nn::Result UpdateCount(u32 count); /*! @brief 実行間隔を取得します。単位は時間です。 @retval 実行間隔が返ります。
*/ inline u32 GetInterval(void) { const u32 intervalSec = GetIntervalSec(); if(intervalSec > 0) { return (intervalSec / (60*60)); } else { return 0; } } /*! @brief 実行間隔を取得します。単位は秒です。 @retval 実行間隔が返ります。
*/ u32 GetIntervalSec(void); /*! @brief 実行回数を取得します。 @return 実行回数が返ります。
@retval U32_CANNOT_GET_DATA データが取得できません。 */ u32 GetCount(void); /*! @brief タスクのサービスステータス取得します。 @return タスクのサービスステータスが返ります。
*/ TaskServiceStatus GetServiceStatus(void); /*! @brief タスクの開始指示します。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー */ nn::Result Start(void); /*! @brief タスクの即時開始指示します。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー */ nn::Result StartImmediate(void); /*! @brief タスクの実行中止指示します。 @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー */ nn::Result Cancel(void); /*! @brief 指定時間内にタスクの完了待ちを行います。 @param[in] timeout タイムアウト時間を指定します。 @return 処理の結果が返ります。
@retval Description== @ref ER_WAITFINISH_TIMEOUT 「WAITFINISHタイムアウト」を表すエラー @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_WAITFINISH_TASK_NOT_DONE 「WAITFINISHタスクがDONE以外で終了」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー */ nn::Result WaitFinish(const nn::fnd::TimeSpan& timeout); /*! @brief タスクの完了待ち指示します。 @return 処理の結果が返ります。
@retval Description== @ref ER_WAITFINISH_TIMEOUT 「WAITFINISHタイムアウト」を表すエラー @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_WAITFINISH_TASK_NOT_DONE 「WAITFINISHタスクがDONE以外で終了」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー */ nn::Result WaitFinish(void); /*! @brief タスク状態の取得します。 @param[out] pCount 残り回数が返ります。 (省略可能) @param[out] pStepID タスクステップIDが返ります。(省略可能) @return タスクの状態を示すコードが返ります。
*/ TaskStateCode GetState(u32* pCount=NULL, u8* pStepID=NULL); /*! @brief 通信エラーコードを取得します。 @param[out] pCount 残り回数が返ります。 (省略可能) @param[out] pStepID タスクステップIDが返ります。(省略可能) @return 通信エラーコードが返ります。
@retval U32_CANNOT_GET_DATA データが取得できません。 */ u32 GetCommErrorCode(u32* pCount=NULL, u8* pStepID=NULL); /*! @brief タスク結果コードを取得します。 @param[out] pCount 残り回数が返ります。 (省略可能) @param[out] pStepID タスクステップIDが返ります。(省略可能) @return タスク結果コードが返ります。
*/ TaskResultCode GetResult(u32* pCount=NULL, u8* pStepID=NULL); /*! @brief タスク状態を取得します。 @param[out] pStatus タスクステータスが返ります。 @param[out] pStepID タスクステップIDが返ります。 @param[in] taskStep タスクステップIDを指定します。 (省略時はカレントステップ) @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASKSTATUS 「タスクステータスのポインタがNULLです。」を表すエラー @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー */ nn::Result GetStatus(TaskStatus* pStatus, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID); /*! @brief タスクエラー状態を取得します。 @param[out] pTaskError タスクエラー状態が返ります。 @param[out] pStepID タスクステップIDが返ります。 @param[in] taskStep タスクステップIDを指定します。 (省略時はカレントステップ) @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASKERROR 「タスクエラー情報のポインタがNULLです。」を表すエラー @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー */ nn::Result GetError(TaskError* pTaskError, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID); /*! @brief タスク情報を取得します。 @param[out] pPolicy タスクポリシーを指定します。 @param[out] pAction タスクアクションを指定します。 @param[out] pOption タスクオプションを指定します。 @param[in] taskStep タスクステップID指定 (省略時はカレントステップ) @return 処理の結果が返ります。
@retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー @retval Description== @ref ER_INVALID_POLICY 「タスクアクションのポインタがNULLです。」を表すエラー @retval Description== @ref ER_INVALID_ACTION 「タスクアクションのポインタがNULLです。」を表すエラー @retval Description== @ref ER_INVALID_OPTION 「タスクオプションのポインタがNULL,またはoptionコードが範囲外です。」を表すエラー @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー */ nn::Result GetInfo(TaskPolicy* pPolicy, TaskAction* pAction, TaskOption* pOption, u8 taskStep=CURRENT_STEP_ID); /*! @brief タスクIDを取得します。 @return 処理の結果が返ります。
*/ char* GetTaskId(void); protected: friend class AccessConfig; TaskConfig m_Task; private: bool CheckTaskId(void); }; } // end of namespace boss } // end of namespace nn #endif // __cplusplus #endif /* NN_BOSS_BOSS_TASK_H_ */