/** * \file MS_error.h * * This file lists all the Error Codes returned by EtherMind * Mesh APIs. */ /* * Copyright (C) 2017. Mindtree Ltd. * All rights reserved. */ #ifndef _H_MS_ERROR_ #define _H_MS_ERROR_ /** * \addtogroup ms_common_defines Defines * \{ */ /** * \defgroup MS_ERROR_CODES Mesh Error Codes * \{ * This section contains all the error codes defined for Mesh stack * and profiles. *
* \anchor error_code_overview * Theory: *
* Every API under Mesh Protocol Suite returns \ref API_RESULT, * which is a 2 Byte Unsigned Short variable. The higher order byte * signifies the Module from which the Error has been generated, and * the lower order byte encodes the actual reason of Error. *
* Each module under Mesh Stack is given unique * Error ID (the higher order byte). Also, for each module the Error * Code (the lower order byte) signifies an unique error situation. *
* For Mesh Protocol Modules (eg, Transport, Network etc.), Error IDs are * assigned from the range 0x10 to 0x4F. For Profiles, the range * is from 0x50 to 0x7F. *
* The definition of \ref API_SUCCESS is 0x0000 - which is the 'Success' * return value for an API returning \ref API_RESULT. All other values for * should be treated as Errors. *
* The definition of \ref API_FAILURE is 0xFFFF - which stands for * "Unknown Error Situation". *
* Note: *
* The applications using native/profile Mesh API should NOT do * any check on the basis of \ref API_FAILURE - rather, the correct way to * detect an error situation is by doing a negative check on \ref * API_SUCCESS. *
* For example, * \code if ( API_FAILURE == MS_access_register_model(x, y, z) ) \endcode * ... Wrong ! *
*
* \code if ( API_SUCCESS != MS_access_register_model(x, y, z) ) \endcode * ... Correct ! */ /** * \defgroup ms_error_codes_defines Defines * \{ */ /** Definition of API_RESULT */ #ifndef API_RESULT_DEFINED typedef UINT16 API_RESULT; #define API_RESULT_DEFINED #endif /* API_RESULT_DEFINED */ /* Definitions of API_SUCCESS & API_FAILURE */ #ifdef API_SUCCESS #undef API_SUCCESS #endif /* API_SUCCESS */ /** Status - 'Success' */ #define API_SUCCESS 0x0000 #ifdef API_FAILURE #undef API_FAILURE #endif /* API_FAILURE */ /** Status - 'Failure' */ #define API_FAILURE 0xFFFF /** \} */ /* ====================== EtherMind Module Error IDs ====================== */ /** * \defgroup ms_error_codes_groups Error Grouping * \{ */ /** * \defgroup ms_error_codes_groups_std Specification Error Codes (0x00 - 0x0F) * Error IDs for Bluetooth Specification Defined Error Codes (0x00 - 0x0F). * \{ */ /** Error Codes for Mesh - \ref ms_error_codes_module_mesh */ #define MS_ERR_ID 0x0000 /** \cond ignore */ /** \endcond */ /** \} */ /** * \defgroup ms_error_codes_groups_core Core Modules (0x10 - 0x1F) * Error IDs for Mesh Core Modules (0x10 - 0x1F). * \{ */ /** Error Codes for MS Common - \ref ms_error_codes_module_common */ #define MS_COMMON_ERR_ID 0x1000 /** Error Codes for Timer - \ref ms_error_codes_module_timer */ #define TIMER_ERR_ID 0x1200 /** \} */ /** * \defgroup ms_error_codes_groups_protocols Protocols (0x20 - 0x3F) * Error IDs for Mesh Protocol Modules (0x20 - 0x3F). * \{ */ /** Error Codes for Bearer - \ref ms_error_codes_module_brr */ #define BRR_ERR_ID 0x2000 #define NET_ERR_ID 0x2100 #define LTRN_ERR_ID 0x2200 #define TRN_ERR_ID 0x2300 #define ACCESS_ERR_ID 0x2400 #define PROV_ERR_ID 0x3000 #define HEALTH_ERR_ID 0x8000 /** \} */ /** \} */ /** \} */ /** \} */ /* ================== EtherMind Common Reason Error Codes ================= */ /** * \addtogroup ms_common_defines Defines * \{ */ /** * \defgroup ms_error_codes_module_common Common * \{ */ #define MUTEX_INIT_FAILED 0x0001 #define COND_INIT_FAILED 0x0002 #define MUTEX_LOCK_FAILED 0x0003 #define MUTEX_UNLOCK_FAILED 0x0004 #define MEMORY_ALLOCATION_FAILED 0x0005 /** \} */ /** \} */ /* ======================================= Section 'Mesh' */ /** * \addtogroup MS_ERROR_CODES * \{ */ /** * \defgroup ms_error_codes_module_mesh Mesh Result Codes * \{ */ #define MS_SUCCESS (0x0000 | MS_ERR_ID) /** Invalid Address */ #define MS_INVALID_ADDRESS (0x0001 | MS_ERR_ID) /** Invalid Model */ #define MS_INVALID_MODEL (0x0002 | MS_ERR_ID) /** Invalid AppKey Index */ #define MS_INVALID_APPKEY_INDEX (0x0003 | MS_ERR_ID) /** Invalid NetKey Index */ #define MS_INVALID_NETKEY_INDEX (0x0004 | MS_ERR_ID) /** Insufficient Resources */ #define MS_INSUFFICIENT_RESOURCES (0x0005 | MS_ERR_ID) /** Key Index Already Stored */ #define MS_KEY_INDEX_ALREADY_STORED (0x0006 | MS_ERR_ID) /** Invalid Publish Parameters */ #define MS_INVALID_PUBLISH_PARAMETER (0x0007 | MS_ERR_ID) /** Not a Subscribe Model */ #define MS_NOT_A_SUBSCRIBE_MODEL (0x0008 | MS_ERR_ID) /** Storage Failure */ #define MS_STORAGE_FAILURE (0x0009 | MS_ERR_ID) /** Feature Not Supported */ #define MS_FEATURE_NOT_SUPPORTED (0x000A | MS_ERR_ID) /** Cannot Update */ #define MS_CANNOT_UPDATE (0x000B | MS_ERR_ID) /** Cannot Remove */ #define MS_CANNOT_REMOVE (0x000C | MS_ERR_ID) /** Cannot Bind */ #define MS_CANNOT_BIND (0x000D | MS_ERR_ID) /** Temporarily Unable to Change State */ #define MS_TEMP_UNABLE_TO_CHANGE_STATE (0x000E | MS_ERR_ID) /** Cannot Set */ #define MS_CANNOT_SET (0x000F | MS_ERR_ID) /** Unspecified Error */ #define MS_UNSPECIFIED_ERROR (0x0010 | MS_ERR_ID) /** Invalid Binding */ #define MS_INVALID_BINDING (0x0011 | MS_ERR_ID) /** \} */ /** \} */ /* ===================== EtherMind Module Error Codes ===================== */ /* ======================================= Section 'Timer' */ /** * \cond ignore_this * \{ */ /** * \defgroup ms_error_codes_module_timer Timer * \{ */ #define TIMER_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | TIMER_ERR_ID) #define TIMER_COND_INIT_FAILED \ (COND_INIT_FAILED | TIMER_ERR_ID) #define TIMER_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | TIMER_ERR_ID) #define TIMER_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | TIMER_ERR_ID) #define TIMER_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | TIMER_ERR_ID) #define TIMER_HANDLE_IS_NULL (0x0011 | TIMER_ERR_ID) #define TIMER_CALLBACK_IS_NULL (0x0012 | TIMER_ERR_ID) #define TIMER_QUEUE_EMPTY (0x0013 | TIMER_ERR_ID) #define TIMER_QUEUE_FULL (0x0014 | TIMER_ERR_ID) #define TIMER_ENTITY_SEARCH_FAILED (0x0015 | TIMER_ERR_ID) #define TIMER_NULL_PARAMETER_NOT_ALLOWED (0x0016 | TIMER_ERR_ID) #define TIMER_TIMEOUT_ZERO_NOT_ALLOWED (0x0017 | TIMER_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Bearer' */ /** * \addtogroup brr_defines * \{ */ /** * \defgroup ms_error_codes_module_brr Error Code * \{ */ #define BRR_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | BRR_ERR_ID) #define BRR_COND_INIT_FAILED \ (COND_INIT_FAILED | BRR_ERR_ID) #define BRR_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | BRR_ERR_ID) #define BRR_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | BRR_ERR_ID) #define BRR_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | BRR_ERR_ID) #define BRR_INVALID_PARAMETER_VALUE (0x0011 | BRR_ERR_ID) #define BRR_PARAMETER_OUTSIDE_RANGE (0x0012 | BRR_ERR_ID) #define BRR_NULL_PARAMETER_NOT_ALLOWED (0x0013 | BRR_ERR_ID) #define BRR_INTERFACE_NOT_READY (0x0014 | BRR_ERR_ID) #define BRR_API_NOT_SUPPORTED (0x00FF | BRR_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Network' */ /** * \addtogroup net_defines * \{ */ /** * \defgroup ms_error_codes_module_net Error Code * \{ */ #define NET_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | NET_ERR_ID) #define NET_COND_INIT_FAILED \ (COND_INIT_FAILED | NET_ERR_ID) #define NET_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | NET_ERR_ID) #define NET_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | NET_ERR_ID) #define NET_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | NET_ERR_ID) #define NET_INVALID_PARAMETER_VALUE (0x0011 | NET_ERR_ID) #define NET_PARAMETER_OUTSIDE_RANGE (0x0012 | NET_ERR_ID) #define NET_NULL_PARAMETER_NOT_ALLOWED (0x0013 | NET_ERR_ID) #define NET_TX_QUEUE_FULL (0x0014 | NET_ERR_ID) #define NET_TX_QUEUE_EMPTY (0x0015 | NET_ERR_ID) /** * Error Codes returned by Network Callback, indicating if it detected * an invalid packet format or if the packet to be further processed, * by the network layer like to be relayed or proxied etc. */ #define NET_INVALID_RX_PKT_FORMAT (0x0016 | NET_ERR_ID) #define NET_RX_LOCAL_SRC_ADDR_PKT (0x0017 | NET_ERR_ID) #define NET_POST_PROCESS_RX_PKT (0x0018 | NET_ERR_ID) #define NET_API_NOT_SUPPORTED (0x00FF | NET_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Lower Transport' */ /** * \addtogroup ltrn_defines * \{ */ /** * \defgroup ms_error_codes_module_ltrn Error Code * \{ */ #define LTRN_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | LTRN_ERR_ID) #define LTRN_COND_INIT_FAILED \ (COND_INIT_FAILED | LTRN_ERR_ID) #define LTRN_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | LTRN_ERR_ID) #define LTRN_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | LTRN_ERR_ID) #define LTRN_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | LTRN_ERR_ID) #define LTRN_INVALID_PARAMETER_VALUE (0x0011 | LTRN_ERR_ID) #define LTRN_PARAMETER_OUTSIDE_RANGE (0x0012 | LTRN_ERR_ID) #define LTRN_NULL_PARAMETER_NOT_ALLOWED (0x0013 | LTRN_ERR_ID) #define LTRN_SAR_CTX_ALLOCATION_FAILED (0x0014 | LTRN_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Transport' */ /** * \addtogroup trn_defines * \{ */ /** * \defgroup ms_error_codes_module_trn Error Code * \{ */ #define TRN_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | TRN_ERR_ID) #define TRN_COND_INIT_FAILED \ (COND_INIT_FAILED | TRN_ERR_ID) #define TRN_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | TRN_ERR_ID) #define TRN_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | TRN_ERR_ID) #define TRN_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | TRN_ERR_ID) #define TRN_INVALID_PARAMETER_VALUE (0x0011 | TRN_ERR_ID) #define TRN_PARAMETER_OUTSIDE_RANGE (0x0012 | TRN_ERR_ID) #define TRN_NULL_PARAMETER_NOT_ALLOWED (0x0013 | TRN_ERR_ID) #define TRN_QUEUE_FULL (0x0014 | TRN_ERR_ID) #define TRN_QUEUE_EMPTY (0x0015 | TRN_ERR_ID) #define TRN_INCOMPLETE_PKT_RECEIVED (0x0016 | TRN_ERR_ID) #define TRN_INVALID_FRNDSHIP_STATE (0x0017 | TRN_ERR_ID) #define TRN_API_NOT_SUPPORTED (0x00FF | TRN_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Access' */ /** * \addtogroup access_defines * \{ */ /** * \defgroup ms_error_codes_module_access Error Code * \{ */ #define ACCESS_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | ACCESS_ERR_ID) #define ACCESS_COND_INIT_FAILED \ (COND_INIT_FAILED | ACCESS_ERR_ID) #define ACCESS_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | ACCESS_ERR_ID) #define ACCESS_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | ACCESS_ERR_ID) #define ACCESS_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | ACCESS_ERR_ID) #define ACCESS_INVALID_PARAMETER_VALUE (0x0011 | ACCESS_ERR_ID) #define ACCESS_PARAMETER_OUTSIDE_RANGE (0x0012 | ACCESS_ERR_ID) #define ACCESS_NULL_PARAMETER_NOT_ALLOWED (0x0013 | ACCESS_ERR_ID) #define ACCESS_NO_RESOURCE (0x0020 | ACCESS_ERR_ID) #define ACCESS_NO_MATCH (0x0021 | ACCESS_ERR_ID) #define ACCESS_INVALID_HANDLE (0x0022 | ACCESS_ERR_ID) #define ACCESS_MODEL_ALREADY_REGISTERED (0x0023 | ACCESS_ERR_ID) #define ACCESS_INVALID_SRC_ADDR (0x0024 | ACCESS_ERR_ID) #define ACCESS_DEV_KEY_TABLE_FULL (0x0025 | ACCESS_ERR_ID) #define ACCESS_MASTER_NID_ON_LPN (0x0026 | ACCESS_ERR_ID) #define ACCESS_INVALID_PUBLICATION_STATE (0x0027 | ACCESS_ERR_ID) #define ACCESS_API_NOT_SUPPORTED (0x00FF | ACCESS_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Provisioning' */ /** * \addtogroup prov_defines * \{ */ /** * \defgroup ms_error_codes_module_provisioning Error Code * \{ */ #define PROV_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | PROV_ERR_ID) #define PROV_COND_INIT_FAILED \ (COND_INIT_FAILED | PROV_ERR_ID) #define PROV_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | PROV_ERR_ID) #define PROV_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | PROV_ERR_ID) #define PROV_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | PROV_ERR_ID) #define PROV_INVALID_STATE (0x0011 | PROV_ERR_ID) #define PROV_INVALID_PARAMETER (0x0012 | PROV_ERR_ID) #define PROV_CONTEXT_ALLOC_FAILED (0x0013 | PROV_ERR_ID) #define PROV_CONTEXT_ASSERT_FAILED (0x0014 | PROV_ERR_ID) #define PROV_CONTEXT_LINK_OPEN (0x0015 | PROV_ERR_ID) #define PROV_BEARER_ASSERT_FAILED (0x0016 | PROV_ERR_ID) #define PROV_PROCEDURE_TIMEOUT (0x0017 | PROV_ERR_ID) /** \} */ /** \} */ /* ======================================= Section 'Health Server' */ /** * \addtogroup health_server_defines * \{ */ /** * \defgroup ms_error_codes_module_health_server Error Code * \{ */ #define HEALTH_MUTEX_INIT_FAILED \ (MUTEX_INIT_FAILED | HEALTH_ERR_ID) #define HEALTH_COND_INIT_FAILED \ (COND_INIT_FAILED | HEALTH_ERR_ID) #define HEALTH_MUTEX_LOCK_FAILED \ (MUTEX_LOCK_FAILED | HEALTH_ERR_ID) #define HEALTH_MUTEX_UNLOCK_FAILED \ (MUTEX_UNLOCK_FAILED | HEALTH_ERR_ID) #define HEALTH_MEMORY_ALLOCATION_FAILED \ (MEMORY_ALLOCATION_FAILED | HEALTH_ERR_ID) #define HEALTH_INVALID_STATE (0x0011 | HEALTH_ERR_ID) #define HEALTH_INVALID_PARAMETER (0x0012 | HEALTH_ERR_ID) #define HEALTH_CONTEXT_ALLOC_FAILED (0x0013 | HEALTH_ERR_ID) #define HEALTH_CONTEXT_ASSERT_FAILED (0x0014 | HEALTH_ERR_ID) /** \} */ /** \} */ #endif /* _H_MS_ERROR_ */