/*---------------------------------------------------------------------------* Project: Horizon File: uds_Result.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: 29889 $ *---------------------------------------------------------------------------*/ #ifndef NN_UDS_CTR_UDS_RESULT_H_ #define NN_UDS_CTR_UDS_RESULT_H_ #include /*! @file @brief UDS ライブラリの Result 群です。 */ namespace nn { namespace uds { namespace CTR { //新しい定義 /* @brief Result コードの詳細 */ enum Description { DESCRIPTION_NETWORK_IS_FULL = 1, //!< ネットワークに接続している台数が最大に達していたために接続できませんでした。 DESCRIPTION_WIFI_OFF = 2, //!< システムが無線 OFF モードになっているため失敗しました DESCRIPTION_INVALID_PARAMS = 3, //!< @ref nn::uds::CTR::ResultOutOfRange 、 @ref nn::uds::CTR::ResultTooLarge 、 @ref ResultNotAuthorized 以外の引数エラーです。 DESCRIPTION_MISCELLANOUS_SYSTEM_ERROR= 4, //!< システム起因で API が成功しなかった、かつ再度 API を実行すれば成功する可能性があるエラー DESCRIPTION_MALFORMED_DATA = 5, //!< 改ざんの可能性を検知しました。 DESCRIPTION_MAX }; /*! @name Result 値 @{ */ /*! :category Result @class nn::uds::CTR::ResultNotFoundNetwork @brief @ref ConnectNetork で接続しようとしたネットワークが見つからなかったことを示します。 */ NN_DEFINE_RESULT_CONST( ResultNotFoundNetwork, Result::LEVEL_STATUS, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_FOUND ); /*! :category Result @class nn::uds::CTR::ResultAlreadyNetworkIsFull @brief @ref ConnectNetork で接続しようとしたネットワークが既に最大接続台数に達していたことを示します。 */ NN_DEFINE_RESULT_CONST( ResultAlreadyNetworkIsFull, Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, DESCRIPTION_NETWORK_IS_FULL ); /*! :category Result @class nn::uds::CTR::ResultDeniedFromMaster @brief @ref ConnectNetork で接続しようとしたネットワークの Master に何らかの理由で接続を拒否されたことを示します。 */ NN_DEFINE_RESULT_CONST( ResultDeniedFromMaster, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, Result::DESCRIPTION_CANCEL_REQUESTED ); /*! :category Result @class nn::uds::CTR::ResultConnectionTimeout @brief @ref ConnectNetork で接続しようとしたネットワークへの接続処理中にタイムアウトが発生したことを示します。 */ NN_DEFINE_RESULT_CONST( ResultConnectionTimeout, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, Result::DESCRIPTION_TIMEOUT ); /*! :category Result @class nn::uds::CTR::ResultInvalidState @brief API が実行できるステートではなかったことを示します。通信中に接続が切れる場合などでも発生します。 */ NN_DEFINE_RESULT_CONST( ResultInvalidState, Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_AUTHORIZED ); /*! :category Result @class nn::uds::CTR::ResultInvalidNode @brief 指定したノードID のノードがネットワークに存在しないことを示します。 自身宛にパケット送信を使用とした場合、対象がネットワークから切断した場合などでも発生します。 */ NN_DEFINE_RESULT_CONST( ResultInvalidNode, Result::LEVEL_STATUS, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_FOUND ); /*! :category Result @class nn::uds::CTR::ResultOutOfResource @brief ライブラリ内部でリソース不足が発生したことを示します。@ref Attach で指定した受信バッファの総量が @ref Initialize 時に指定したバッファを超えた場合などに発生します。 */ NN_DEFINE_RESULT_CONST( ResultOutOfResource, Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, Result::DESCRIPTION_OUT_OF_MEMORY ); /*! :category Result @class nn::uds::CTR::ResultBufferIsFull @brief 主に高頻度に @ref SendTo を呼び出し、送信処理が滞った場合に発生します。エラー時には送信データはロストします。 */ NN_DEFINE_RESULT_CONST( ResultBufferIsFull, Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, Result::DESCRIPTION_BUSY ); /*! :category Result @class nn::uds::CTR::ResultWirelessOff @brief UDS ライブラリを初期化後に無線 OFF モードに遷移したことを示します。 一度無線 OFF モードに遷移すると、UDS ライブラリはその後無線 ON モードに遷移したとしても @ref Finalize するまで無線 OFF モードだと判定します。 再度 UDS 通信を行う場合は無線 ON モードで再度 @ref Initialize からやり直す必要があります。 */ NN_DEFINE_RESULT_CONST( ResultWirelessOff, Result::LEVEL_STATUS, Result::SUMMARY_STATUS_CHANGED, Result::MODULE_NN_UDS, DESCRIPTION_WIFI_OFF ); /*! :category Result @class nn::uds::CTR::ResultNotInitialized @brief ライブラリが初期化されていないことを示します。 @ref Initalize を実行することで解決します。 */ NN_DEFINE_RESULT_CONST( ResultNotInitialized, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_INITIALIZED ); /*! :category Result @class nn::uds::CTR::ResultAlreadyOccupiedWirelessDevice @brief 既に別の通信が行われており、UDS 通信が利用できない状態であることを示します。 */ NN_DEFINE_RESULT_CONST( ResultAlreadyOccupiedWirelessDevice, Result::LEVEL_USAGE, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_UDS, Result::DESCRIPTION_ALREADY_INITIALIZED ); /*! :category Result @class nn::uds::CTR::ResultOutOfRange @brief 引数のなかに 本来指定すべき範囲を超えたパラメータ があったことを示します。 */ NN_DEFINE_RESULT_CONST( ResultOutOfRange, Result::LEVEL_USAGE, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_OUT_OF_RANGE ); /*! :category Result @class nn::uds::CTR::ResultTooLarge @brief 引数のなかに 最大サイズを超えたデータ があったことを示します。送信系 の API で発生します。 */ NN_DEFINE_RESULT_CONST( ResultTooLarge, Result::LEVEL_USAGE, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_TOO_LARGE ); /*! :category Result @class nn::uds::CTR::ResultNotAuthorized @brief 引数のなかに 特殊なケースでのみ使用が許されている値 があったことを示します。 */ NN_DEFINE_RESULT_CONST( ResultNotAuthorized, Result::LEVEL_USAGE, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_AUTHORIZED ); /*! :category Result @class nn::uds::CTR::ResultMiscellaneousSystemError @brief システム側の都合による一時的な失敗です。通常、同じ引数でリトライすれば API 成功します。 */ NN_DEFINE_RESULT_CONST( ResultMiscellaneousSystemError, Result::LEVEL_TEMPORARY, Result::SUMMARY_INTERNAL, Result::MODULE_NN_UDS, DESCRIPTION_MISCELLANOUS_SYSTEM_ERROR ); /*! :category Result @class nn::uds::CTR::ResultNotImplemented @brief API は用意されているものの、現在実装がされていないことを示します。 */ NN_DEFINE_RESULT_CONST( ResultNotImplemented, Result::LEVEL_STATUS, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_IMPLEMENTED ); /*! :category Result @class nn::uds::CTR::ResultMalformedData @brief 受信したデータが改ざんの可能性のある適切でないデータだったことを示します。 */ NN_DEFINE_RESULT_CONST( ResultMalformedData, Result::LEVEL_USAGE, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, DESCRIPTION_MALFORMED_DATA ); /*! @} */ // ライブラリ内部でのみ利用する Result namespace detail { /*! 下位レイヤが意図しない動作をした場合にこのエラーを返します。これは一時的に用意するもので最終的にはなくなります。 */ NN_DEFINE_RESULT_CONST( ResultFatalError, Result::LEVEL_FATAL, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_AUTHORIZED ); } /****************************** 下記は CTR-SDK 0.10.2 以前の UDS ライブラリで使用していた古い Result です。 過去との互換性の維持のため、しばらくの間残しておきます。 CTR-SDK 1.0 正式版までには削除予定ですので、順次対応をお願いします。 ******************************/ /*--- 成功扱い ---*/ //既に処理は完了している inline nn::Result MakeResultAlreadyDone() { return ResultSuccess(); } //取得すべきデータが存在しなかった inline nn::Result MakeResultNoData() { return ResultSuccess(); } /*--- 接続失敗 ---*/ //対象となるネットワークが見つからなかった inline nn::Result MakeResultNotFoundNetwork() { return ResultNotFoundNetwork(); } //対象となるネットワークのリソースが不足している inline nn::Result MakeResultInsufficientResourceAtMaster() { return ResultAlreadyNetworkIsFull(); } //Master から接続を拒否された inline nn::Result MakeResultDeniedFromMaster() { return ResultDeniedFromMaster(); } //接続処理中にタイムアウト inline nn::Result MakeResultConnectionTimeout() { return ResultConnectionTimeout(); } /*--- 一般的なエラー ---*/ //現在のステートが実行可能ステートではない inline nn::Result MakeResultInvalidState() { return ResultInvalidState(); } //ライブラリが初期化されていない inline nn::Result MakeResultNotInitialized() { return ResultNotInitialized(); } //既に初期化されている inline nn::Result MakeResultAlreadyInitialized() { return ResultAlreadyOccupiedWirelessDevice(); } //引数が不正 inline nn::Result MakeResultInvalidParam() { return ResultOutOfRange(); } //バッファが一杯 inline nn::Result MakeResultBufferFull() { return ResultBufferIsFull(); } //データが大きすぎる inline nn::Result MakeResultTooLarge() { return ResultTooLarge(); } //対象となるノードが存在しない inline nn::Result MakeResultNotFoundTarget() { return ResultInvalidNode(); } //機能が未実装 inline nn::Result MakeResultNotImplemented() { return ResultNotImplemented(); } //リソースが足りない inline nn::Result MakeResultOutOfResouece() { return ResultNotImplemented(); } } // namespace CTR } // namespace uds } // namespace nn #endif //NN_UDS_CTR_UDS_RESULT_H_