1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_Task.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: 26265 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_TASK_H_ 17 #define NN_BOSS_BOSS_TASK_H_ 18 19 #include <nn/fnd/fnd_TimeSpan.h> 20 #include <nn/boss/boss_Const.h> 21 #include <nn/boss/boss_Result.h> 22 #include <nn/boss/boss_Types.h> 23 #include <nn/boss/boss_TaskAction.h> 24 #include <nn/boss/boss_TaskPolicy.h> 25 #include <nn/boss/boss_TaskStatus.h> 26 #include <nn/boss/boss_TaskError.h> 27 #include <nn/boss/boss_TaskOption.h> 28 29 30 #ifdef __cplusplus 31 32 namespace nn { 33 namespace boss { 34 35 /*! 36 @brief タスクを表すクラスです。タスクの登録や登録解除、タスクの操作の際などに利用します。 37 */ 38 class Task 39 { 40 public: 41 /*! 42 @brief コンストラクタです。 43 */ 44 explicit Task(void); 45 46 /*! 47 @brief デストラクタです。 48 */ 49 virtual ~Task(void); 50 51 /*! 52 @brief タスクIDを登録します。 53 @param[in] pTaskId タスクIDを指定します。 TaskId[TASK_ID_LENGTH] 54 @return 処理の結果が返ります。<BR> 55 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 56 */ 57 nn::Result Initialize(const char* pTaskId); 58 59 /*! 60 @brief タスク登録後、実行間隔を更新します。 61 @param[in] interval 実行間隔を指定します。単位は時間です。 62 @return 処理の結果が返ります。<BR> 63 */ UpdateInterval(u32 interval)64 inline nn::Result UpdateInterval(u32 interval){return UpdateIntervalWithSec(interval*60*60);} 65 66 /*! 67 @brief タスク登録後、実行間隔を更新します。単位は秒です。 68 @param[in] intervalSec 実行間隔を指定します。単位は秒です。 69 @return 処理の結果が返ります。<BR> 70 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 71 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 72 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 73 */ 74 nn::Result UpdateIntervalWithSec(u32 intervalSec); 75 76 /*! 77 @brief タスク登録後、実行回数を更新します。 78 @param[in] count 実行回数を指定します。 79 @return 処理の結果が返ります。<BR> 80 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 81 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 82 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 83 */ 84 nn::Result UpdateCount(u32 count); 85 86 /*! 87 @brief 実行間隔を取得します。単位は時間です。 88 @retval 実行間隔が返ります。<BR> 89 */ GetInterval(void)90 inline u32 GetInterval(void) 91 { 92 const u32 intervalSec = GetIntervalSec(); 93 if(intervalSec > 0) 94 { 95 return (intervalSec / (60*60)); 96 } 97 else 98 { 99 return 0; 100 } 101 } 102 103 /*! 104 @brief 実行間隔を取得します。単位は秒です。 105 @retval 実行間隔が返ります。<BR> 106 */ 107 u32 GetIntervalSec(void); 108 109 /*! 110 @brief 実行回数を取得します。 111 @return 実行回数が返ります。<BR> 112 @retval U32_CANNOT_GET_DATA データが取得できません。 113 */ 114 u32 GetCount(void); 115 116 /*! 117 @brief タスクのサービスステータス取得します。 118 @return タスクのサービスステータスが返ります。<BR> 119 */ 120 TaskServiceStatus GetServiceStatus(void); 121 122 /*! 123 @brief タスクの開始指示します。 124 @return 処理の結果が返ります。<BR> 125 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 126 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 127 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 128 */ 129 nn::Result Start(void); 130 131 /*! 132 @brief タスクの即時開始指示します。 133 @return 処理の結果が返ります。<BR> 134 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 135 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 136 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 137 */ 138 nn::Result StartImmediate(void); 139 140 /*! 141 @brief タスクの実行中止指示します。 142 @return 処理の結果が返ります。<BR> 143 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 144 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 145 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 146 */ 147 nn::Result Cancel(void); 148 149 /*! 150 @brief 指定時間内にタスクの完了待ちを行います。 151 @param[in] timeout タイムアウト時間を指定します。 152 @return 処理の結果が返ります。<BR> 153 @retval Description== @ref ER_WAITFINISH_TIMEOUT 「WAITFINISHタイムアウト」を表すエラー 154 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 155 @retval Description== @ref ER_WAITFINISH_TASK_NOT_DONE 「WAITFINISHタスクがDONE以外で終了」を表すエラー 156 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 157 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 158 */ 159 nn::Result WaitFinish(const nn::fnd::TimeSpan& timeout); 160 /*! 161 @brief タスクの完了待ち指示します。 162 @return 処理の結果が返ります。<BR> 163 @retval Description== @ref ER_WAITFINISH_TIMEOUT 「WAITFINISHタイムアウト」を表すエラー 164 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 165 @retval Description== @ref ER_WAITFINISH_TASK_NOT_DONE 「WAITFINISHタスクがDONE以外で終了」を表すエラー 166 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 167 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 168 */ 169 nn::Result WaitFinish(void); 170 171 /*! 172 @brief タスク状態の取得します。 173 @param[out] pCount 残り回数が返ります。 (省略可能) 174 @param[out] pStepID タスクステップIDが返ります。(省略可能) 175 @return タスクの状態を示すコードが返ります。<BR> 176 */ 177 TaskStateCode GetState(u32* pCount=NULL, u8* pStepID=NULL); 178 179 /*! 180 @brief 通信エラーコードを取得します。 181 @param[out] pCount 残り回数が返ります。 (省略可能) 182 @param[out] pStepID タスクステップIDが返ります。(省略可能) 183 @return 通信エラーコードが返ります。<BR> 184 @retval U32_CANNOT_GET_DATA データが取得できません。 185 */ 186 u32 GetCommErrorCode(u32* pCount=NULL, u8* pStepID=NULL); 187 188 /*! 189 @brief タスク結果コードを取得します。 190 @param[out] pCount 残り回数が返ります。 (省略可能) 191 @param[out] pStepID タスクステップIDが返ります。(省略可能) 192 @return タスク結果コードが返ります。<BR> 193 */ 194 TaskResultCode GetResult(u32* pCount=NULL, u8* pStepID=NULL); 195 196 /*! 197 @brief タスク状態を取得します。 198 @param[out] pStatus タスクステータスが返ります。 199 @param[out] pStepID タスクステップIDが返ります。 200 @param[in] taskStep タスクステップIDを指定します。 (省略時はカレントステップ) 201 @return 処理の結果が返ります。<BR> 202 @retval Description== @ref ER_INVALID_TASKSTATUS 「タスクステータスのポインタがNULLです。」を表すエラー 203 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 204 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 205 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 206 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 207 */ 208 nn::Result GetStatus(TaskStatus* pStatus, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID); 209 210 /*! 211 @brief タスクエラー状態を取得します。 212 @param[out] pTaskError タスクエラー状態が返ります。 213 @param[out] pStepID タスクステップIDが返ります。 214 @param[in] taskStep タスクステップIDを指定します。 (省略時はカレントステップ) 215 @return 処理の結果が返ります。<BR> 216 @retval Description== @ref ER_INVALID_TASKERROR 「タスクエラー情報のポインタがNULLです。」を表すエラー 217 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 218 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 219 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 220 */ 221 nn::Result GetError(TaskError* pTaskError, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID); 222 223 /*! 224 @brief タスク情報を取得します。 225 @param[out] pPolicy タスクポリシーを指定します。 226 @param[out] pAction タスクアクションを指定します。 227 @param[out] pOption タスクオプションを指定します。 228 @param[in] taskStep タスクステップID指定 (省略時はカレントステップ) 229 @return 処理の結果が返ります。<BR> 230 @retval Description== @ref ER_INVALID_TASK_ID 「タスクIDのポインタがNULLまたは0文字列です。」を表すエラー 231 @retval Description== @ref ER_INVALID_POLICY 「タスクアクションのポインタがNULLです。」を表すエラー 232 @retval Description== @ref ER_INVALID_ACTION 「タスクアクションのポインタがNULLです。」を表すエラー 233 @retval Description== @ref ER_INVALID_OPTION 「タスクオプションのポインタがNULL,またはoptionコードが範囲外です。」を表すエラー 234 @retval Description== @ref ER_TASK_NOT_EXIST 「指定されたタスクIDが見つからない。」を表すエラー 235 @retval Description== @ref ER_TASK_STEP_NOT_EXIST 「指定されたタスクステップが見つからない。」を表すエラー 236 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 237 */ 238 nn::Result GetInfo(TaskPolicy* pPolicy, TaskAction* pAction, TaskOption* pOption, u8 taskStep=CURRENT_STEP_ID); 239 240 /*! 241 @brief タスクIDを取得します。 242 @return 処理の結果が返ります。<BR> 243 */ 244 char* GetTaskId(void); 245 246 protected: 247 friend class AccessConfig; 248 TaskConfig m_Task; 249 private: 250 bool CheckTaskId(void); 251 252 }; 253 254 } // end of namespace boss 255 } // end of namespace nn 256 257 #endif // __cplusplus 258 259 #endif /* NN_BOSS_BOSS_TASK_H_ */ 260