/*---------------------------------------------------------------------------* 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: 22063 $ *---------------------------------------------------------------------------*/ #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, //!< 雑多な引数エラー DESCRIPTION_MAX = 4 }; /*! @name 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 ); /*! @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 ); /*! @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 ); /*! @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 ); /*! @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 ); /*! @class nn::uds::CTR::ResultInvalidNode @brief 指定したノードID のノードがネットワークに存在しないことを示します。対象がネットワークから切断した場合などでも発生します。 */ NN_DEFINE_RESULT_CONST( ResultInvalidNode, Result::LEVEL_STATUS, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_UDS, Result::DESCRIPTION_NOT_FOUND ); /*! @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 ); /*! @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 ); /*! @class nn::uds::CTR::ResultWirelessOff @brief UDS ライブラリを初期化後に無線 OFF モードになった場合、 @ref Initialize と @ref Finalize 以外の全ての API はこのエラーを返します。 */ NN_DEFINE_RESULT_CONST( ResultWirelessOff, Result::LEVEL_STATUS, Result::SUMMARY_STATUS_CHANGED, Result::MODULE_NN_UDS, DESCRIPTION_WIFI_OFF ); /*! @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 ); /*! @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 ); /*! @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 ); /*! @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 ); /*! @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 ); /*! @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 ); /*! @} */ // ライブラリ内部でのみ利用する Result namespace detail { enum Description { DESCRIPTION_MALFORMED_DATA = DESCRIPTION_MAX //!< 改ざんの可能性がある不正なデータ }; /*! 受信したデータが改ざんの可能性のある適切でないデータだったことを示します。 */ NN_DEFINE_RESULT_CONST( ResultMalformedData, Result::LEVEL_USAGE, Result::SUMMARY_CANCELLED, Result::MODULE_NN_UDS, DESCRIPTION_MALFORMED_DATA ); /*! 下位レイヤが意図しない動作をした場合にこのエラーを返します。これは一時的に用意するもので最終的にはなくなります。 */ 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_