2025-12-10 00:01:32 +08:00

187 lines
14 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 函数返回值是一个32bit数据数据各位描述如下所示
* | 位数 | 描述 |
* |---------|------------|
* | [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 32bit 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