148 lines
7.6 KiB
C
148 lines
7.6 KiB
C
/*
|
|
* Copyright (c) 2012-2022 DSR Corporation, Denver CO, USA
|
|
* Copyright (c) 2021-2022 Espressif Systems (Shanghai) PTE LTD
|
|
* All rights reserved.
|
|
*
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form, except as embedded into a Espressif Systems
|
|
* integrated circuit in a product or a software update for such product,
|
|
* must reproduce the above copyright notice, this list of conditions and
|
|
* the following disclaimer in the documentation and/or other materials
|
|
* provided with the distribution.
|
|
*
|
|
* 3. Neither the name of the copyright holder nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software without
|
|
* specific prior written permission.
|
|
*
|
|
* 4. Any software provided in binary form under this license must not be reverse
|
|
* engineered, decompiled, modified and/or disassembled.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
/* PURPOSE: Error codes
|
|
*/
|
|
|
|
#ifndef ZB_ERRORS_H
|
|
#define ZB_ERRORS_H 1
|
|
|
|
/**
|
|
* @addtogroup base_types
|
|
* @{
|
|
*/
|
|
/** @brief Return type for ZB functions returning execution status. @see ::RET_OK. */
|
|
typedef zb_int32_t zb_ret_t;
|
|
/** @} */
|
|
|
|
/*! @cond internals_doc */
|
|
|
|
/* categories */
|
|
|
|
#define ERROR_CATEGORY_INTERVAL 256
|
|
|
|
#define ERROR_CATEGORY_GENERIC 0
|
|
#define ERROR_CATEGORY_SYSTEM 1
|
|
#define ERROR_CATEGORY_MAC 2
|
|
#define ERROR_CATEGORY_NWK 3
|
|
#define ERROR_CATEGORY_APS 4
|
|
#define ERROR_CATEGORY_ZDO 5
|
|
#define ERROR_CATEGORY_CBKE 6
|
|
#define ERROR_CATEGORY_WATCHDOG 7
|
|
#define ERROR_CATEGORY_SERIAL 8
|
|
#define ERROR_CATEGORY_NVRAM 9
|
|
#define ERROR_CATEGORY_MACSPLIT 10
|
|
#define ERROR_CATEGORY_NCP 11
|
|
|
|
/* Let's always return 0 for RET_OK - in any category. */
|
|
#define ERROR_CODE(category, code) ((zb_ret_t)(((zb_ret_t)code) != 0 ? -(((category) * ERROR_CATEGORY_INTERVAL) + ((zb_ret_t)code)) : 0))
|
|
#define GENERIC_ERROR_CODE(code) ERROR_CODE(ERROR_CATEGORY_GENERIC, code)
|
|
#define SYSTEM_ERROR_CODE(code) ERROR_CODE(ERROR_CATEGORY_SYSTEM, code)
|
|
|
|
#define ERROR_GET_CATEGORY(err) (((-(zb_int_t)(err))) / ERROR_CATEGORY_INTERVAL)
|
|
#define ERROR_GET_CODE(err) ((-(zb_int_t)(err)) % ERROR_CATEGORY_INTERVAL)
|
|
|
|
/** @endcond */ /* internals_doc */
|
|
|
|
/**
|
|
* @addtogroup error_codes
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Error codes for non-void stack functions.
|
|
* In general, function can return OK, BLOCKED or some error. Errors are negative.
|
|
*
|
|
* Error can be "generic" or some additional error code.
|
|
*/
|
|
|
|
/* Most common return types: ok, generic error, BLOCKED, thread exit indication. */
|
|
#define RET_OK 0
|
|
#define RET_ERROR ERROR_CODE(ERROR_CATEGORY_GENERIC, 1) /* -1 indeed */
|
|
#define RET_BLOCKED ERROR_CODE(ERROR_CATEGORY_GENERIC, 2)
|
|
#define RET_EXIT ERROR_CODE(ERROR_CATEGORY_GENERIC, 3)
|
|
#define RET_BUSY ERROR_CODE(ERROR_CATEGORY_GENERIC, 4)
|
|
#define RET_EOF ERROR_CODE(ERROR_CATEGORY_GENERIC, 5)
|
|
#define RET_OUT_OF_RANGE ERROR_CODE(ERROR_CATEGORY_GENERIC, 6)
|
|
#define RET_EMPTY ERROR_CODE(ERROR_CATEGORY_GENERIC, 7)
|
|
#define RET_CANCELLED ERROR_CODE(ERROR_CATEGORY_GENERIC, 8)
|
|
|
|
|
|
#define RET_INVALID_PARAMETER_1 ERROR_CODE(ERROR_CATEGORY_GENERIC, 10)
|
|
#define RET_INVALID_PARAMETER_2 ERROR_CODE(ERROR_CATEGORY_GENERIC, 11)
|
|
#define RET_INVALID_PARAMETER_3 ERROR_CODE(ERROR_CATEGORY_GENERIC, 12)
|
|
#define RET_INVALID_PARAMETER_4 ERROR_CODE(ERROR_CATEGORY_GENERIC, 13)
|
|
#define RET_INVALID_PARAMETER_6 ERROR_CODE(ERROR_CATEGORY_GENERIC, 15)
|
|
#define RET_PENDING ERROR_CODE(ERROR_CATEGORY_GENERIC, 21)
|
|
#define RET_NO_MEMORY ERROR_CODE(ERROR_CATEGORY_GENERIC, 22)
|
|
#define RET_INVALID_PARAMETER ERROR_CODE(ERROR_CATEGORY_GENERIC, 23)
|
|
#define RET_OPERATION_FAILED ERROR_CODE(ERROR_CATEGORY_GENERIC, 24)
|
|
#define RET_BUFFER_TOO_SMALL ERROR_CODE(ERROR_CATEGORY_GENERIC, 25)
|
|
#define RET_END_OF_LIST ERROR_CODE(ERROR_CATEGORY_GENERIC, 26)
|
|
#define RET_ALREADY_EXISTS ERROR_CODE(ERROR_CATEGORY_GENERIC, 27)
|
|
#define RET_NOT_FOUND ERROR_CODE(ERROR_CATEGORY_GENERIC, 28)
|
|
#define RET_OVERFLOW ERROR_CODE(ERROR_CATEGORY_GENERIC, 29)
|
|
#define RET_TIMEOUT ERROR_CODE(ERROR_CATEGORY_GENERIC, 30)
|
|
#define RET_NOT_IMPLEMENTED ERROR_CODE(ERROR_CATEGORY_GENERIC, 31)
|
|
#define RET_NO_RESOURCES ERROR_CODE(ERROR_CATEGORY_GENERIC, 32)
|
|
#define RET_UNINITIALIZED ERROR_CODE(ERROR_CATEGORY_GENERIC, 33)
|
|
#define RET_INVALID_STATE ERROR_CODE(ERROR_CATEGORY_GENERIC, 35)
|
|
#define RET_CONNECTION_FAILED ERROR_CODE(ERROR_CATEGORY_GENERIC, 37)
|
|
#define RET_CONNECTION_LOST ERROR_CODE(ERROR_CATEGORY_GENERIC, 38)
|
|
#define RET_UNAUTHORIZED ERROR_CODE(ERROR_CATEGORY_GENERIC, 40)
|
|
#define RET_CONFLICT ERROR_CODE(ERROR_CATEGORY_GENERIC, 41)
|
|
#define RET_INVALID_FORMAT ERROR_CODE(ERROR_CATEGORY_GENERIC, 42)
|
|
#define RET_NO_MATCH ERROR_CODE(ERROR_CATEGORY_GENERIC, 43)
|
|
#define RET_PROTOCOL_ERROR ERROR_CODE(ERROR_CATEGORY_GENERIC, 44)
|
|
#define RET_VERSION ERROR_CODE(ERROR_CATEGORY_GENERIC, 45)
|
|
#define RET_FILE_NOT_FOUND ERROR_CODE(ERROR_CATEGORY_GENERIC, 48)
|
|
#define RET_CONVERSION_ERROR ERROR_CODE(ERROR_CATEGORY_GENERIC, 50)
|
|
#define RET_FILE_CORRUPTED ERROR_CODE(ERROR_CATEGORY_GENERIC, 56)
|
|
#define RET_PAGE_NOT_FOUND ERROR_CODE(ERROR_CATEGORY_GENERIC, 57)
|
|
#define RET_ILLEGAL_REQUEST ERROR_CODE(ERROR_CATEGORY_GENERIC, 62)
|
|
#define RET_INVALID_GROUP ERROR_CODE(ERROR_CATEGORY_GENERIC, 64)
|
|
#define RET_TABLE_FULL ERROR_CODE(ERROR_CATEGORY_GENERIC, 65)
|
|
#define RET_IGNORE ERROR_CODE(ERROR_CATEGORY_GENERIC, 69)
|
|
#define RET_AGAIN ERROR_CODE(ERROR_CATEGORY_GENERIC, 70)
|
|
#define RET_DEVICE_NOT_FOUND ERROR_CODE(ERROR_CATEGORY_GENERIC, 71)
|
|
#define RET_OBSOLETE ERROR_CODE(ERROR_CATEGORY_GENERIC, 72)
|
|
#define RET_INTERRUPTED ERROR_CODE(ERROR_CATEGORY_GENERIC, 73)
|
|
#define RET_NULL_POINTER ERROR_CODE(ERROR_CATEGORY_GENERIC, 74)
|
|
|
|
/** @} */ /* Error codes */
|
|
|
|
#endif /* ZB_ERRORS_H */
|