Skip to main content

UAV 错误码

错误码的头文件为 uav_error.h,本文档描述了错误码相关的宏定义和结构体的关键信息以及使用方法。

宏定义

  • 错误模块索引值偏移量
#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)))

  • 操作返回值

    • 操作成功
    #define UAV_RETURN_CODE_OK                UAV_ERROR_SYSTEM_MODULE_CODE_SUCCESS 
    • 空间分配错误
    #define UAV_RETURN_CODE_ERR_ALLOC UAV_ERROR_SYSTEM_MODULE_CODE_MEMORY_ALLOC_FAILED
    • 操作超时
    #define UAV_RETURN_CODE_ERR_TIMEOUT         UAV_ERROR_SYSTEM_MODULE_CODE_TIMEOUT
    • 对象不存在
    #define UAV_RETURN_CODE_ERR_NOT_FOUND   UAV_ERROR_SYSTEM_MODULE_CODE_NOT_FOUND
    • 超出指定的范围
    #define UAV_RETURN_CODE_ERR_OUT_OF_RANGE   UAV_ERROR_SYSTEM_MODULE_CODE_OUT_OF_RANGE
    • 参数错误
    #define UAV_RETURN_CODE_ERR_PARAM          UAV_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER
    • 系统错误
    #define UAV_RETURN_CODE_ERR_SYSTEM         UAV_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR
    • 系统繁忙
    #define UAV_RETURN_CODE_ERR_BUSY             UAV_ERROR_SYSTEM_MODULE_CODE_BUSY
    • 暂不支持
    #define UAV_RETURN_CODE_ERR_UNSUPPORT      UAV_ERROR_SYSTEM_MODULE_CODE_NONSUPPORT
    • 未知错误
    #define UAV_RETURN_CODE_ERR_UNKNOWN        UAV_ERROR_SYSTEM_MODULE_CODE_UNKNOWN

枚举

  • 错误模块
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;
  • 系统通用模块原始错误码
  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;
  • PSDK 错误码 功能函数原型中的返回值 T_UAVReturnCode 可以从以下 PSDK 错误码全集(enum E_UAVErrorCode)搜索错误码信息。开发者可以获取错误描述、错误原因以及错误恢复建议。
typedef uint64_t T_UAVReturnCode;
enum E_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),

};