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