1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: uds_Result.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: 29889 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_UDS_CTR_UDS_RESULT_H_ 17 #define NN_UDS_CTR_UDS_RESULT_H_ 18 19 #include <nn/Result.h> 20 21 /*! @file 22 @brief UDS ライブラリの Result 群です。 23 */ 24 25 26 namespace nn { 27 namespace uds { 28 namespace CTR { 29 //新しい定義 30 31 /* 32 @brief Result コードの詳細 33 */ 34 enum Description 35 { 36 DESCRIPTION_NETWORK_IS_FULL = 1, //!< ネットワークに接続している台数が最大に達していたために接続できませんでした。 37 DESCRIPTION_WIFI_OFF = 2, //!< システムが無線 OFF モードになっているため失敗しました 38 DESCRIPTION_INVALID_PARAMS = 3, //!< @ref nn::uds::CTR::ResultOutOfRange 、 @ref nn::uds::CTR::ResultTooLarge 、 @ref ResultNotAuthorized 以外の引数エラーです。 39 DESCRIPTION_MISCELLANOUS_SYSTEM_ERROR= 4, //!< システム起因で API が成功しなかった、かつ再度 API を実行すれば成功する可能性があるエラー 40 DESCRIPTION_MALFORMED_DATA = 5, //!< 改ざんの可能性を検知しました。 41 DESCRIPTION_MAX 42 }; 43 44 /*! 45 @name Result 値 46 @{ 47 */ 48 49 /*! 50 :category Result 51 @class nn::uds::CTR::ResultNotFoundNetwork 52 @brief @ref ConnectNetork で接続しようとしたネットワークが見つからなかったことを示します。 53 */ 54 NN_DEFINE_RESULT_CONST( 55 ResultNotFoundNetwork, 56 Result::LEVEL_STATUS, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_FOUND 57 ); 58 59 /*! 60 :category Result 61 @class nn::uds::CTR::ResultAlreadyNetworkIsFull 62 @brief @ref ConnectNetork で接続しようとしたネットワークが既に最大接続台数に達していたことを示します。 63 */ 64 NN_DEFINE_RESULT_CONST( 65 ResultAlreadyNetworkIsFull, 66 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, DESCRIPTION_NETWORK_IS_FULL 67 ); 68 69 /*! 70 :category Result 71 @class nn::uds::CTR::ResultDeniedFromMaster 72 @brief @ref ConnectNetork で接続しようとしたネットワークの Master に何らかの理由で接続を拒否されたことを示します。 73 */ 74 NN_DEFINE_RESULT_CONST( 75 ResultDeniedFromMaster, 76 Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, Result::DESCRIPTION_CANCEL_REQUESTED 77 ); 78 79 /*! 80 :category Result 81 @class nn::uds::CTR::ResultConnectionTimeout 82 @brief @ref ConnectNetork で接続しようとしたネットワークへの接続処理中にタイムアウトが発生したことを示します。 83 */ 84 NN_DEFINE_RESULT_CONST( 85 ResultConnectionTimeout, 86 Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, Result::DESCRIPTION_TIMEOUT 87 ); 88 89 /*! 90 :category Result 91 @class nn::uds::CTR::ResultInvalidState 92 @brief API が実行できるステートではなかったことを示します。通信中に接続が切れる場合などでも発生します。 93 */ 94 NN_DEFINE_RESULT_CONST( 95 ResultInvalidState, 96 Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_AUTHORIZED 97 ); 98 99 /*! 100 :category Result 101 @class nn::uds::CTR::ResultInvalidNode 102 @brief 指定したノードID のノードがネットワークに存在しないことを示します。 103 自身宛にパケット送信を使用とした場合、対象がネットワークから切断した場合などでも発生します。 104 */ 105 NN_DEFINE_RESULT_CONST( 106 ResultInvalidNode, 107 Result::LEVEL_STATUS, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_FOUND 108 ); 109 110 /*! 111 :category Result 112 @class nn::uds::CTR::ResultOutOfResource 113 @brief ライブラリ内部でリソース不足が発生したことを示します。@ref Attach で指定した受信バッファの総量が 114 @ref Initialize 時に指定したバッファを超えた場合などに発生します。 115 */ 116 NN_DEFINE_RESULT_CONST( 117 ResultOutOfResource, 118 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, Result::DESCRIPTION_OUT_OF_MEMORY 119 ); 120 121 /*! 122 :category Result 123 @class nn::uds::CTR::ResultBufferIsFull 124 @brief 主に高頻度に @ref SendTo を呼び出し、送信処理が滞った場合に発生します。エラー時には送信データはロストします。 125 */ 126 NN_DEFINE_RESULT_CONST( 127 ResultBufferIsFull, 128 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, Result::DESCRIPTION_BUSY 129 ); 130 131 /*! 132 :category Result 133 @class nn::uds::CTR::ResultWirelessOff 134 @brief UDS ライブラリを初期化後に無線 OFF モードに遷移したことを示します。 135 136 一度無線 OFF モードに遷移すると、UDS ライブラリはその後無線 ON モードに遷移したとしても @ref Finalize するまで無線 OFF モードだと判定します。 137 再度 UDS 通信を行う場合は無線 ON モードで再度 @ref Initialize からやり直す必要があります。 138 */ 139 NN_DEFINE_RESULT_CONST( 140 ResultWirelessOff, 141 Result::LEVEL_STATUS, Result::SUMMARY_STATUS_CHANGED, Result::MODULE_NN_UDS, DESCRIPTION_WIFI_OFF 142 ); 143 144 /*! 145 :category Result 146 @class nn::uds::CTR::ResultNotInitialized 147 @brief ライブラリが初期化されていないことを示します。 @ref Initalize を実行することで解決します。 148 */ 149 NN_DEFINE_RESULT_CONST( 150 ResultNotInitialized, 151 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_INITIALIZED 152 ); 153 154 /*! 155 :category Result 156 @class nn::uds::CTR::ResultAlreadyOccupiedWirelessDevice 157 @brief 既に別の通信が行われており、UDS 通信が利用できない状態であることを示します。 158 */ 159 NN_DEFINE_RESULT_CONST( 160 ResultAlreadyOccupiedWirelessDevice, 161 Result::LEVEL_USAGE, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, Result::DESCRIPTION_ALREADY_INITIALIZED 162 ); 163 164 /*! 165 :category Result 166 @class nn::uds::CTR::ResultOutOfRange 167 @brief 引数のなかに 本来指定すべき範囲を超えたパラメータ があったことを示します。 168 */ 169 NN_DEFINE_RESULT_CONST( 170 ResultOutOfRange, 171 Result::LEVEL_USAGE, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_OUT_OF_RANGE 172 ); 173 174 /*! 175 :category Result 176 @class nn::uds::CTR::ResultTooLarge 177 @brief 引数のなかに 最大サイズを超えたデータ があったことを示します。送信系 の API で発生します。 178 */ 179 NN_DEFINE_RESULT_CONST( 180 ResultTooLarge, 181 Result::LEVEL_USAGE, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_TOO_LARGE 182 ); 183 184 /*! 185 :category Result 186 @class nn::uds::CTR::ResultNotAuthorized 187 @brief 引数のなかに 特殊なケースでのみ使用が許されている値 があったことを示します。 188 */ 189 NN_DEFINE_RESULT_CONST( 190 ResultNotAuthorized, 191 Result::LEVEL_USAGE, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_AUTHORIZED 192 ); 193 194 /*! 195 :category Result 196 @class nn::uds::CTR::ResultMiscellaneousSystemError 197 @brief システム側の都合による一時的な失敗です。通常、同じ引数でリトライすれば API 成功します。 198 */ 199 NN_DEFINE_RESULT_CONST( 200 ResultMiscellaneousSystemError, 201 Result::LEVEL_TEMPORARY, Result::SUMMARY_INTERNAL, Result::MODULE_NN_UDS, DESCRIPTION_MISCELLANOUS_SYSTEM_ERROR 202 ); 203 204 /*! 205 :category Result 206 @class nn::uds::CTR::ResultNotImplemented 207 @brief API は用意されているものの、現在実装がされていないことを示します。 208 */ 209 NN_DEFINE_RESULT_CONST( 210 ResultNotImplemented, 211 Result::LEVEL_STATUS, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_IMPLEMENTED 212 ); 213 214 /*! 215 :category Result 216 @class nn::uds::CTR::ResultMalformedData 217 @brief 受信したデータが改ざんの可能性のある適切でないデータだったことを示します。 218 */ 219 NN_DEFINE_RESULT_CONST( 220 ResultMalformedData, 221 Result::LEVEL_USAGE, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, DESCRIPTION_MALFORMED_DATA 222 ); 223 /*! 224 @} 225 */ 226 // ライブラリ内部でのみ利用する Result 227 namespace detail 228 { 229 230 /*! 231 下位レイヤが意図しない動作をした場合にこのエラーを返します。これは一時的に用意するもので最終的にはなくなります。 232 */ 233 NN_DEFINE_RESULT_CONST( 234 ResultFatalError, 235 Result::LEVEL_FATAL, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_AUTHORIZED 236 ); 237 } 238 /****************************** 239 下記は CTR-SDK 0.10.2 以前の UDS ライブラリで使用していた古い Result です。 240 過去との互換性の維持のため、しばらくの間残しておきます。 241 CTR-SDK 1.0 正式版までには削除予定ですので、順次対応をお願いします。 242 ******************************/ 243 244 /*--- 成功扱い ---*/ 245 //既に処理は完了している MakeResultAlreadyDone()246 inline nn::Result MakeResultAlreadyDone() 247 { 248 return ResultSuccess(); 249 } 250 251 //取得すべきデータが存在しなかった MakeResultNoData()252 inline nn::Result MakeResultNoData() 253 { 254 return ResultSuccess(); 255 } 256 257 /*--- 接続失敗 ---*/ 258 //対象となるネットワークが見つからなかった MakeResultNotFoundNetwork()259 inline nn::Result MakeResultNotFoundNetwork() 260 { 261 return ResultNotFoundNetwork(); 262 } 263 //対象となるネットワークのリソースが不足している MakeResultInsufficientResourceAtMaster()264 inline nn::Result MakeResultInsufficientResourceAtMaster() 265 { 266 return ResultAlreadyNetworkIsFull(); 267 } 268 //Master から接続を拒否された MakeResultDeniedFromMaster()269 inline nn::Result MakeResultDeniedFromMaster() 270 { 271 return ResultDeniedFromMaster(); 272 } 273 //接続処理中にタイムアウト MakeResultConnectionTimeout()274 inline nn::Result MakeResultConnectionTimeout() 275 { 276 return ResultConnectionTimeout(); 277 } 278 279 /*--- 一般的なエラー ---*/ 280 //現在のステートが実行可能ステートではない MakeResultInvalidState()281 inline nn::Result MakeResultInvalidState() 282 { 283 return ResultInvalidState(); 284 } 285 //ライブラリが初期化されていない MakeResultNotInitialized()286 inline nn::Result MakeResultNotInitialized() 287 { 288 return ResultNotInitialized(); 289 } 290 //既に初期化されている MakeResultAlreadyInitialized()291 inline nn::Result MakeResultAlreadyInitialized() 292 { 293 return ResultAlreadyOccupiedWirelessDevice(); 294 } 295 //引数が不正 MakeResultInvalidParam()296 inline nn::Result MakeResultInvalidParam() 297 { 298 return ResultOutOfRange(); 299 } 300 //バッファが一杯 MakeResultBufferFull()301 inline nn::Result MakeResultBufferFull() 302 { 303 return ResultBufferIsFull(); 304 } 305 //データが大きすぎる MakeResultTooLarge()306 inline nn::Result MakeResultTooLarge() 307 { 308 return ResultTooLarge(); 309 } 310 //対象となるノードが存在しない MakeResultNotFoundTarget()311 inline nn::Result MakeResultNotFoundTarget() 312 { 313 return ResultInvalidNode(); 314 } 315 //機能が未実装 MakeResultNotImplemented()316 inline nn::Result MakeResultNotImplemented() 317 { 318 return ResultNotImplemented(); 319 } 320 //リソースが足りない MakeResultOutOfResouece()321 inline nn::Result MakeResultOutOfResouece() 322 { 323 return ResultNotImplemented(); 324 } 325 326 } // namespace CTR 327 } // namespace uds 328 } // namespace nn 329 330 #endif //NN_UDS_CTR_UDS_RESULT_H_ 331