/** * @file IKapCStat.h * @brief IKapC Status returned when function executed. * @author iTek OptoElectronics Ltd * @par Copyright (c) iTek OptoElectronics Ltd. * All Rights Reserved * @date 2017:06:19 * @version <1.0.0.1> */ #ifndef _IKAPCSTAT_H #define _IKAPCSTAT_H #include "IKapCType.h" /* status format status ID: 16 bits - a ITKSTATUS_... constant level: 4 bits - a ITKSTATUS_LEVEL_... constant module: 4 bits - a ITKSTATUS_MODULE_... constant |------------------|-------------------|-------------|------------------| |31 reserved 24|23 module ID 20|19 level 16|15 status ID 0| |------------------|-------------------|-------------|------------------| */ #define ITKSTATUS uint32_t // Status format location definitions #define ITKSTATUS_MODULE_BIT_OFFSET 20 #define ITKSTATUS_LEVEL_BIT_OFFSET 16 #define ITKSTATUS_STATUS_BIT_OFFSET 0 // Status format size definitions #define ITKSTATUS_MODULE_BIT_MASK 0x0f #define ITKSTATUS_LEVEL_BIT_MASK 0x0f #define ITKSTATUS_STATUS_BIT_MASK 0xffff // module #define ITKSTATUS_MODULE(status) (((status) >> ITKSTATUS_MODULE_BIT_OFFSET) & ITKSTATUS_MODULE_BIT_MASK) #define ITKSTATUS_MODULE_DEVICE 0x01 // 1: Device module #define ITKSTATUS_MODULE_BUFFER 0x02 // 2: Buffer module #define ITKSTATUS_MODULE_LOG 0x03 // 3: Log module #define ITKSTATUS_MODULE_MANAGER 0x04 // 4: API control module #define ITKSTATUS_MODULE_STREAM 0x05 // 5: Stream module #define ITKSTATUS_MODULE_PARAM 0x06 // 6: Parameter module #define ITKSTATUS_MODULE_SERIAL 0x07 // 7: Serial module #define ITKSTATUS_MODULE_EVENTINFO 0x08 // 8: Event information module #define ITKSTATUS_MODULE_FEATURE 0x09 // 9: Feature module #define ITKSTATUS_MODULE_VIEW 0x0A // 10: View module #define ITKSTATUS_MODULE_BOARD 0x0B // 11: Board module #define ITKSTATUS_MODULE_FILE 0x0C // 12: File module // level #define ITKSTATUS_LEVEL(status) (((status) >> ITKSTATUS_LEVEL_BIT_OFFSET) & ITKSTATUS_LEVEL_BIT_MASK) #define ITKSTATUS_LEVEL_FAT 0 // fatal errors #define ITKSTATUS_LEVEL_ERR 1 // general errors #define ITKSTATUS_LEVEL_WRN 2 // warnings #define ITKSTATUS_LEVEL_INF 3 // informations // id #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 system resources #define ITKSTATUS_BUFFER_TOO_SMALL 0x0003u ///< @brief \~chinese 输入缓冲区太小 \~english Input buffer is too small #define ITKSTATUS_MISSING_RESOURCE 0x0004u ///< @brief \~chinese 丢失系统资源 \~english Losing system resources #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 Parameter 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 Windows系统函数调用错误 \~english Windows 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 // 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) #define ITKSATTUS_VIEW(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_VIEW) #define ITKSATTUS_BOARD(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_BOARD) #define ITKSATTUS_FILE(status) ITKSTATUS_ADD_MODULE(status, ITKSTATUS_MODULE_FILE) #endif