uav_error.h 6.2 KB
/******************************************************************
 * Author     : tyh (tangyinghao@autelrobotics.cn)
 * CreateTime : 2024/2/19
 * Copyright (c) 2024 Shenzhen Autel Robotics Co., Ltd.
 * File Desc  :
 *******************************************************************/

#ifndef PAYLOADSDK_UAV_ERROR_H
#define PAYLOADSDK_UAV_ERROR_H
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Exported constants --------------------------------------------------------*/
#define UAV_ERROR_MODULE_INDEX_OFFSET  32u
#define UAV_ERROR_MODULE_INDEX_MASK    0x000000FF00000000u
#define UAV_ERROR_RAW_CODE_OFFSET      0u
#define UAV_ERROR_RAW_CODE_MASK        0x00000000FFFFFFFFu

#define UAV_ERROR_CODE(moduleIndex, rawErrCode) \
((uint64_t)0 | \
((((uint64_t)(moduleIndex)) << (UAV_ERROR_MODULE_INDEX_OFFSET)) & (UAV_ERROR_MODULE_INDEX_MASK)) | \
((((uint64_t)(rawErrCode)) << (UAV_ERROR_RAW_CODE_OFFSET)) & (UAV_ERROR_RAW_CODE_MASK)))


/* Exported types ------------------------------------------------------------*/
/**
 * @brief UAV module enum for defining error code.
 */
typedef enum {
  UAV_ERROR_MODULE_SYSTEM = 0,
  UAV_ERROR_MODULE_PLATFORM,
  UAV_ERROR_MODULE_LOGGER,
  UAV_ERROR_MODULE_TIME_SYNC,
  UAV_ERROR_MODULE_COMMAND,
  UAV_ERROR_MODULE_CAMERA,
  UAV_ERROR_MODULE_GIMBAL,
  UAV_ERROR_MODULE_XPORT,
  UAV_ERROR_MODULE_PAYLOAD_COLLABORATION,
  UAV_ERROR_MODULE_WIDGET,
  UAV_ERROR_MODULE_CORE,
  UAV_ERROR_MODULE_IDENTITY,
  UAV_ERROR_MODULE_TRANSMISSION,
  UAV_ERROR_MODULE_DATA_CHANNEL,
  UAV_ERROR_MODULE_SUBSCRIPTION,
  UAV_ERROR_MODULE_MOP_CHANNEL,
  UAV_ERROR_MODULE_POSITIONING,
  UAV_ERROR_MODULE_POWER_MANAGEMENT,
  UAV_ERROR_MODULE_AIRCRAFTINFO,
  UAV_ERROR_MODULE_PRODUCTINFO,
  UAV_ERROR_MODULE_FLOWCONTROLLER,
  UAV_ERROR_MODULE_DOWNLOADER,
  UAV_ERROR_MODULE_PARAMETER,
  UAV_ERROR_MODULE_UTIL,
  UAV_ERROR_MODULE_USER,
  UAV_ERROR_MODULE_NEGOTIATE,
  UAV_ERROR_MODULE_UPGRADE,
  UAV_ERROR_MODULE_FC_BASIC,
  UAV_ERROR_MODULE_FC_JOYSTICK,
  UAV_ERROR_MODULE_FC_ACTION,
  UAV_ERROR_MODULE_FC_ARREST_FLYING,
  UAV_ERROR_MODULE_FC_HOME_LOCATION,
  UAV_ERROR_MODULE_FC_EMERGENCY_STOP_MOTOR,
  UAV_ERROR_MODULE_CAMERA_MANAGER,
  UAV_ERROR_MODULE_GIMBAL_MANAGER,
  UAV_ERROR_MODULE_WAYPOINT_V2,
  UAV_ERROR_MODULE_WAYPOINT_V3,
  UAV_ERROR_MODULE_ERROR,
} E_UavErrorModule;


/**
 * @brief Raw error code of system module.
 */
typedef enum {
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_SUCCESS = 0x000,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_INVALID_REQUEST_PARAMETER = 0x0D4,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_EXECUTING_HIGHER_PRIORITY_TASK = 0x0D7,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_NONSUPPORT = 0x0E0,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_TIMEOUT = 0x0E1,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_MEMORY_ALLOC_FAILED = 0x0E2,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_INVALID_PARAMETER = 0x0E3,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_NONSUPPORT_IN_CURRENT_STATE = 0x0E4,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_SYSTEM_ERROR = 0x0EC,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_HARDWARE_ERR = 0x0FA,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_INSUFFICIENT_ELECTRICITY = 0x0FB,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_UNKNOWN = 0x0FF,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_NOT_FOUND = 0x100,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_OUT_OF_RANGE = 0x101,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_BUSY = 0x102,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_DUPLICATE = 0x103,
  UAV_ERROR_SYSTEM_MODULE_RAW_CODE_ADAPTER_NOT_MATCH = 0x104,
} E_UavErrorSystemModuleRawCode;
/**
 * @brief UAV error code complete works. Users can search all error messages here.
 * @details Please get error description, error reason and error recovery suggestion of every error code from
 * ::UAV_ERROR_OBJECTS macro.
 */
enum UAVErrorCode {
  /* system module error code, including some common error code */
  UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_SUCCESS),
  UAV_ERROR_SYSTEM_MODULE_CODE_INVALID_REQUEST_PARAMETER = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_INVALID_REQUEST_PARAMETER),
  UAV_ERROR_SYSTEM_MODULE_CODE_EXECUTING_HIGHER_PRIORITY_TASK = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_EXECUTING_HIGHER_PRIORITY_TASK),
  UAV_ERROR_SYSTEM_MODULE_CODE_NONSUPPORT = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_NONSUPPORT),
  UAV_ERROR_SYSTEM_MODULE_CODE_TIMEOUT = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_TIMEOUT),
  UAV_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_MEMORY_ALLOC_FAILED),
  UAV_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_INVALID_PARAMETER),
  UAV_ERROR_SYSTEM_MODULE_CODE_NONSUPPORT_IN_CURRENT_STATE = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_NONSUPPORT_IN_CURRENT_STATE),
  UAV_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_SYSTEM_ERROR),
  UAV_ERROR_SYSTEM_MODULE_CODE_HARDWARE_ERR = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_HARDWARE_ERR),
  UAV_ERROR_SYSTEM_MODULE_CODE_INSUFFICIENT_ELECTRICITY = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_INSUFFICIENT_ELECTRICITY),
  UAV_ERROR_SYSTEM_MODULE_CODE_UNKNOWN = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_UNKNOWN),
  UAV_ERROR_SYSTEM_MODULE_CODE_NOT_FOUND = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_NOT_FOUND),
  UAV_ERROR_SYSTEM_MODULE_CODE_OUT_OF_RANGE = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_OUT_OF_RANGE),
  UAV_ERROR_SYSTEM_MODULE_CODE_BUSY = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_BUSY),
  UAV_ERROR_SYSTEM_MODULE_CODE_DUPLICATE = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_DUPLICATE),
  UAV_ERROR_SYSTEM_MODULE_CODE_ADAPTER_NOT_MATCH = UAV_ERROR_CODE(UAV_ERROR_MODULE_SYSTEM, UAV_ERROR_SYSTEM_MODULE_RAW_CODE_ADAPTER_NOT_MATCH),
  
 };
















/* Exported functions --------------------------------------------------------*/

#ifdef __cplusplus
}
#endif
#endif // PAYLOADSDK_UAV_ERROR_H