2026-03-28 10:49:55 +08:00
// clang-format off
/**
\ ~ chinese
* @ file IKapCStat . h
* @ brief IKapC库函数返回值
*/
/**
\ ~ english
* @ file IKapCStat . h
* @ brief IKapC library function return value
*/
# ifndef _IKAPCSTAT_H
# define _IKAPCSTAT_H
# include "IKapCType.h"
/**
\ ~ chinese
* @ brief 函 数 返 回 值 定 义
* @ note 函 数 返 回 值 是 一 个 32 bit数据 , 数 据 各 位 描 述 如 下 所 示 :
* | 位 数 | 描 述 |
* | - - - - - - - - - | - - - - - - - - - - - - |
* | [ 0 : 15 ] | 错 误 码 ID |
* | [ 16 : 19 ] | 错 误 类 别 ID |
* | [ 20 : 23 ] | 模 块 ID |
* | [ 24 : 31 ] | 预 留 |
*/
/**
\ ~ english
* @ brief Function return value definition
* @ note The return value of function is a 32 bit data , which is described as follows :
* | Bit | Description |
* | - - - - - - - - - - | - - - - - - - - - - - - - - - |
* | [ 0 : 15 ] | Error code ID |
* | [ 16 : 19 ] | Error type ID |
* | [ 20 : 23 ] | Module ID |
* | [ 24 : 31 ] | Reversed |
*/
# define ITKSTATUS uint32_t
# define ITKSTATUS_MODULE_BIT_OFFSET 20u ///< @brief \~chinese 模块ID偏移位置 \~english Module ID offset
# define ITKSTATUS_LEVEL_BIT_OFFSET 16u ///< @brief \~chinese 错误类别ID偏移位置 \~english Error type ID offset
# define ITKSTATUS_STATUS_BIT_OFFSET 0u ///< @brief \~chinese 错误码ID偏移位置 \~english Error code ID offset
# define ITKSTATUS_MODULE_BIT_MASK 0x0Fu ///< @brief \~chinese 模块ID切块 \~english Module ID mask
# define ITKSTATUS_LEVEL_BIT_MASK 0x0Fu ///< @brief \~chinese 错误类别ID切块 \~english Error type ID mask
# define ITKSTATUS_STATUS_BIT_MASK 0xFFFFu ///< @brief \~chinese 错误码ID切块 \~english Error code ID mask
///@{
/**
\ ~ chinese
* @ name 模 块 ID
* @ see ItkManGetStatusText
*/
/**
\ ~ english
* @ name Module ID
* @ see ItkManGetStatusText
*/
# define ITKSTATUS_MODULE(status) (((status) >> ITKSTATUS_MODULE_BIT_OFFSET) & ITKSTATUS_MODULE_BIT_MASK)
# define ITKSTATUS_MODULE_UNKNOWN 0x00u ///< @brief \~chinese 未指明的错误 \~english Unknown error
# define ITKSTATUS_MODULE_DEVICE 0x01u ///< @brief \~chinese 设备模块 \~english Device module
# define ITKSTATUS_MODULE_BUFFER 0x02u ///< @brief \~chinese 缓冲区模块 \~english Buffer module
# define ITKSTATUS_MODULE_LOG 0x03u ///< @brief \~chinese 日志模块 \~english Log module
# define ITKSTATUS_MODULE_MANAGER 0x04u ///< @brief \~chinese 全局模块 \~english Management module
# define ITKSTATUS_MODULE_STREAM 0x05u ///< @brief \~chinese 数据流模块 \~english Data stream module
# define ITKSTATUS_MODULE_PARAM 0x06u ///< @brief \~chinese 参数模块 \~english Parameter module
# define ITKSTATUS_MODULE_SERIAL 0x07u ///< @brief \~chinese 串口模块 \~english Serial port module
# define ITKSTATUS_MODULE_EVENTINFO 0x08u ///< @brief \~chinese 事件信息模块 \~english Event information module
# define ITKSTATUS_MODULE_FEATURE 0x09u ///< @brief \~chinese 特征模块 \~english Feature module
# define ITKSTATUS_MODULE_VIEW 0x0Au ///< @brief \~chinese 视图模块 \~english View module
# define ITKSTATUS_MODULE_BOARD 0x0Bu ///< @brief \~chinese 采集卡模块 \~english Frame grabber module
# define ITKSTATUS_MODULE_FILE 0x0Cu ///< @brief \~chinese 文件模块 \~english File module
///@}
///@{
/**
\ ~ chinese
* @ name 错 误 类 别 ID
* @ see ItkManGetStatusText
*/
/**
\ ~ english
* @ name Error type ID
* @ see ItkManGetStatusText
*/
# define ITKSTATUS_LEVEL(status) (((status) >> ITKSTATUS_LEVEL_BIT_OFFSET) & ITKSTATUS_LEVEL_BIT_MASK)
# define ITKSTATUS_LEVEL_FAT 0u ///< @brief \~chinese 致命错误 \~english Fatal error
# define ITKSTATUS_LEVEL_ERR 1u ///< @brief \~chinese 普通错误 \~english Ordinary error
# define ITKSTATUS_LEVEL_WRN 2u ///< @brief \~chinese 警告 \~english Warning
# define ITKSTATUS_LEVEL_INF 3u ///< @brief \~chinese 信息 \~english Information
///@}
///@{
/**
\ ~ chinese
* @ name 错 误 码 ID
* @ see ItkManGetStatusText
*/
/**
\ ~ english
* @ name Error code ID
* @ see ItkManGetStatusText
*/
# define ITKSTATUS_ID(status) ((status)&ITKSTATUS_STATUS_BIT_MASK)
# define ITKSTATUS_OK 0x0000u ///< @brief \~chinese 成功 \~english Successful
# define ITKSTATUS_INVALID_HANDLE 0x0001u ///< @brief \~chinese 无效的句柄 \~english Invalid handle
# define ITKSTATUS_INSUFFICIENT_RESOURCES 0x0002u ///< @brief \~chinese 资源不足 \~english Insufficient resources
# define ITKSTATUS_BUFFER_TOO_SMALL 0x0003u ///< @brief \~chinese 输入缓冲区太小 \~english Input buffer is too small
# define ITKSTATUS_MISSING_RESOURCE 0x0004u ///< @brief \~chinese 资源缺失 \~english Resources missing
# define ITKSTATUS_UNINITIALIZE 0x0005u ///< @brief \~chinese IKapC没有初始化运行环境 \~english IKapC has no initialized runtime environment
# define ITKSTATUS_DEVICE_ID_OUTOF_RANGE 0x0006u ///< @brief \~chinese 设备索引越界 \~english Device index is out of range
# define ITKSTATUS_SERAIL_PORT_NOT_AVAILABLE 0x0007u ///< @brief \~chinese 设备串口不可用 \~english Serial port is unavailable
# define ITKSTATUS_XML_NOT_FOUND 0x0008u ///< @brief \~chinese 设备XML描述文件丢失 \~english Device XML description file is lost
# define ITKSTATUS_DEVICE_NOT_ACCESSABLE 0x0009u ///< @brief \~chinese 设备无法访问 \~english Device is inaccessible
# define ITKSTATUS_DEVICE_PERMISSION_DENY 0x000Au ///< @brief \~chinese 设备访问被拒绝 \~english Device access is denied
# define ITKSTATUS_REGISTRY_NOT_FOUND 0x000Bu ///< @brief \~chinese 注册表丢失 \~english Registry missing
# define ITKSTATUS_XML_PARSE_ERROR 0x000Cu ///< @brief \~chinese XML文件无法解析 \~english XML file cannot be parsed
# define ITKSTATUS_INVALID_ARG 0x000Du ///< @brief \~chinese 无效的输入参数 \~english Invalid input parameter
# define ITKSTATUS_INVALID_NAME 0x000Eu ///< @brief \~chinese 无效的特征名称 \~english Invalid feature name
# define ITKSTATUS_INCOMPATIBLE_FEATURE_TYPE 0x000Fu ///< @brief \~chinese 特征类型不匹配函数类型 \~english Feature type does not match function type
# define ITKSTATUS_TIME_OUT 0x0010u ///< @brief \~chinese 操作超时 \~english Operation timed out
# define ITKSTATUS_COMMAND_CRASH 0x0011u ///< @brief \~chinese 相机命令冲突 \~english Camera command conflict
# define ITKSTATUS_COMMAND_PARAM_OUT_OF_RANGE 0x0012u ///< @brief \~chinese 相机参数越界 \~english Camera parameter is out of range
# define ITKSTATUS_COMMAND_NOT_ALLOW 0x0013u ///< @brief \~chinese 当前状态下不允许执行该命令 \~english Command cannot be executed in the current state
# define ITKSTATUS_COMMAND_NOT_PRASE 0x0014u ///< @brief \~chinese 相机命令无法解析 \~english Camera command cannot be parsed
# define ITKSTATUS_COMMAND_PENDING 0x0015u ///< @brief \~chinese 执行命令被挂起 \~english Execution command is suspended
# define ITKSTATUS_ARG_OUT_OF_RANGE 0x0016u ///< @brief \~chinese 输入参数越界 \~english Input parameter is out of bounds
# define ITKSTATUS_NOT_IMPLEMENT 0x0017u ///< @brief \~chinese 未实现 \~english Not realized
# define ITKSTATUS_NO_MEMORY 0x0018u ///< @brief \~chinese 内存不足 \~english Out of memory
# define ITKSTATUS_INCOMPATIBLE_ARG_TYPE 0x0019u ///< @brief \~chinese 参数不匹配 \~english Parameter mismatch
# define ITKSTATUS_STREAM_IN_PROCESS 0x001Au ///< @brief \~chinese 数据流正在传输 \~english Data stream has being transferred
# define ITKSTATUS_PRM_READ_ONLY 0x001Bu ///< @brief \~chinese 参数只读 \~english Parameters are read-only
# define ITKSTATUS_STREAM_IS_OPENED 0x001Cu ///< @brief \~chinese 数据流已经被打开 \~english Data stream has been opened
# define ITKSTATUS_SYSTEM_ERROR 0x001Du ///< @brief \~chinese 系统函数调用错误 \~english System function call error
# define ITKSTATUS_INVALID_ADDRESS 0x001Eu ///< @brief \~chinese 无效的地址 \~english Invalid address
# define ITKSTATUS_BAD_ALIGNMENT 0x001Fu ///< @brief \~chinese 参数边界不适配 \~english Parameter boundaries do not match
# define ITKSTATUS_DEVICE_BUSY 0x0020u ///< @brief \~chinese 设备正忙,无法响应命令 \~english Device is busy and cannot respond to commands
# define ITKSTATUS_DEVICE_IS_REMOVED 0x0021u ///< @brief \~chinese 设备已经被移除 \~english Device has been removed
# define ITKSTATUS_DEVICE_NOT_FOUND 0x0022u ///< @brief \~chinese 未找到设备 \~english Device not found
# define ITKSATTUS_BOARD_IS_OPENED 0x0023u ///< @brief \~chinese 设备已经打开,不允许重复打开相同的设备 \~english Device has been enabled. Do not enable the same device repeatedly
# define ITKSTATUS_BOARD_NO_OPENED 0x0024u ///< @brief \~chinese 设备未打开 \~english Device is not opened
# define ITKSTATUS_PRM_WRITE_ONLY 0x0025u ///< @brief \~chinese 参数只支持写操作 \~english Parameter supports only write operations
# define ITKSTATUS_BOARD_CONNECTION_FAIL 0x0026u ///< @brief \~chinese 采集卡和相机连接断开 \~english Frame grabber is disconnected from camera
# define ITKSTATUS_RUNTIME_ERROR 0x0027u ///< @brief \~chinese 程序运行时错误 \~english Program runtime error
# define ITKSTATUS_IO_ERROR 0x0028u ///< @brief \~chinese IO错误 \~english IO error
# define ITKSTATUS_BUFFER_OVERFLOW 0x0029u ///< @brief \~chinese 缓冲区溢出 \~english Buffer overflow
# define ITKSTATUS_COMMUNICATION_ERROR 0x0030u ///< @brief \~chinese 通信异常 \~english Abnormal communication
# define ITKSTATUS_CXP_CONTROL_CRC_ERROR 0x0031u ///< @brief \~chinese CXP相机CRC错误 \~english CXP camera CRC error
# define ITKSTATUS_ACK_ID_NOT_COMPATIABLE 0x0032u ///< @brief \~chinese gvcp的ack回复中acknowledge字段不正确或ack_id与cmd_id不匹配 \~english Acknowledge field in gvcp's ack reply is error or ack_id does not match cmd_id
# define ITKSTATUS_DEV_INVALID_HEADER 0x0033u ///< @brief \~chinese 命令头部无效 \~english Command header is invalid
# define ITKSTATUS_DEV_DSI_ENDPOINT_HALTED 0x0034u ///< @brief \~chinese 设备流接口端点已停止 \~english Endpoint of device stream interface has stopped
# define ITKSTATUS_DEV_DEI_ENDPOINT_HALTED 0x0035u ///< @brief \~chinese 设备事件接口端点已停止 \~english Device event interface endpoint has stopped
# define ITKSTATUS_DEV_DATA_DISCARDED 0x0036u ///< @brief \~chinese 当前块发生数据丢弃 \~english Data loss occurred in the current chunk
# define ITKSTATUS_DEV_DATA_OVERRUN 0x0037u ///< @brief \~chinese 设备无法发送所有数据 \~english Device is unable to send all data
# define ITKSTATUS_STREAM_ABORTED 0x0038u ///< @brief \~chinese 数据流被中止 \~english Data stream has been aborted
# define ITKSTATUS_DRIVER_NOT_MATCH 0x0039u ///< @brief \~chinese 驱动版本不匹配 \~english Driver version mismatch
# define ITKSTATUS_DEVICE_WRONG_USB_PORT 0x0040u ///< @brief \~chinese USB接口非3.0版本 \~english USB interface not version 3.0
# define ITKSTATUS_DEVICE_IS_FAULTY 0x0041u ///< @brief \~chinese 设备故障 \~english Device error
# define ITKSTATUS_CXP_TOPOLOGY_ERROR 0x0042u ///< @brief \~chinese CXP拓扑连接错误 \~english CXP topology connection error
# define ITKSTATUS_STREAM_PENDING 0x0043u ///< @brief \~chinese 数据流还未开始 \~english Data stream has not been started
# define ITKSTATUS_STREAM_TIMEOUT 0x0044u ///< @brief \~chinese 数据流超时 \~english Data stream has been timed out
# define ITKSTATUS_STREAM_ABORT 0x0045u ///< @brief \~chinese 数据流终止 \~english Data stream has been abort
# define ITKSTATUS_INVALID_BUFFER 0x0046u ///< @brief \~chinese 无效的缓冲区句柄 \~english Invalid buffer handle
///@}
// level first so that it be visible instantly
# define ITKSTATUS_BUILD(level, id, module) ((id) | (((level)&ITKSTATUS_LEVEL_BIT_MASK) << ITKSTATUS_LEVEL_BIT_OFFSET) | (((module)&ITKSTATUS_MODULE_BIT_MASK) << ITKSTATUS_MODULE_BIT_OFFSET))
/* Macros for adding single fields to status */
# define ITKSTATUS_ADD_ID(status, id) ((status) | ((id)&ITKSTATUS_STATUS_BIT_MASK))
# define ITKSTATUS_ADD_LEVEL(status, level) ((status) | (((level)&ITKSTATUS_LEVEL_BIT_MASK) << ITKSTATUS_LEVEL_BIT_OFFSET))
# define ITKSTATUS_ADD_MODULE(status, module) ((status) | (((module)&ITKSTATUS_MODULE_BIT_MASK) << ITKSTATUS_MODULE_BIT_OFFSET))
/* Macros for adding module to status */
# define ITKSTATUS_DEVICE(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_DEVICE)
# define ITKSTATUS_BUFFER(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_BUFFER)
# define ITKSTATUS_LOG(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_LOG)
# define ITKSTATUS_MANAGER(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_MANAGER)
# define ITKSTATUS_STREAM(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_STREAM)
# define ITKSTATUS_PARAM(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_PARAM)
# define ITKSTATUS_SERIAL(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_SERIAL)
# define ITKSTATUS_EVENTINFO(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_EVENTINFO)
# define ITKSTATUS_FEATURE(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_FEATURE)
# endif
// clang-format on