rk3399_arm_lvds/packages/common.pkg/include/commondef.h

909 lines
22 KiB
C
Raw Permalink Normal View History

2024-03-05 03:46:18 +00:00
#pragma once
#include <functional>
#include <map>
#include <queue>
#define FWVersionEN
#define G200
#ifdef G200
2024-03-18 06:31:20 +00:00
#define FWVersion "G2393D0318"
2024-03-05 03:46:18 +00:00
#define SERIALNUM "G2396021071101"
#else
2024-03-18 06:31:20 +00:00
#define FWVersion "G1393D0318"
2024-03-05 03:46:18 +00:00
#define SERIALNUM "G1396021071101"
#endif
//#ifdef FWVersionEN
//#pragma warnning("WARNNING! current fareware version is :" FWVersion)
//#endif
typedef unsigned int u32;
typedef unsigned char u8;
typedef unsigned char byte;
typedef unsigned short u16;
typedef struct Size
{
long x;
long y;
};
typedef enum Error_Status : uint32_t
{
NO_error = 0,
Dog_error = 1,
Size_error = 2,
Img_Detecting = 0xffff,
};
typedef struct ImgStatus
{
Error_Status status;
uint32_t scannum;
};
typedef union HG_ScanConfig
{
unsigned int value;
struct
{
unsigned int paper : 5;
unsigned int color : 1;
unsigned int dpi : 2;
unsigned int double_feed_enbale : 1;
unsigned int stable_enbale : 1;
unsigned int screw_detect_enable : 1;
unsigned int screw_detect_level : 3; //第十四位
unsigned int iscorrect_mode : 1;
unsigned int is_autopaper : 1;
unsigned int is_textcorrect : 1;
unsigned int is_fixedpaper : 1;
unsigned int en_anlogic_key : 1;
unsigned int en_autosize : 1;
unsigned int pc_correct : 1;
//unsigned int enable_sizecheck : 1;
unsigned int double_out_en : 1;
unsigned int enabledsp_cache : 1;
unsigned int sizeerror_errorratio : 9;
} g200params;
struct
{
unsigned int pageSize : 5;
unsigned int isColor : 1;
unsigned int dpi : 2;
unsigned int doubleFeeded : 1;
unsigned int enableStable : 1;
unsigned int enableLed : 1;
unsigned int reversed1 : 6;
unsigned int isCorrect : 1;
unsigned int dstHeight : 8;
unsigned int reversed2 : 6;
} g400params;
} HGScanConfig;
typedef enum SCAN_STATUS
{
SCAN_NORMAL,
SCAN_SCANNING,
SCAN_COVEROPEN,
SCAN_FEEDERROR,
SCAN_PAPERJAM,
SCAN_DOUBLEFEED,
SCAN_AQUIREIMGTIMEOUT,
SCAN_AQUIREIMGSIZEERROR,
SCAN_DETECTSKREW,
SCAN_DETECTSTABLE,
SCAN_COUNTMODE,
SCAN_NOFEED,
SCAN_AUTOCORRECT_DONE,
SCAN_STOPED
} SCAN_STATUS;
enum img_status : uint32_t
{
IMG_STATUS_OK = 0, // normal
IMG_STATUS_DOUBLE = 1 << 0, // double-feeded paper
IMG_STATUS_JAM = 1 << 1, // jammed paper
IMG_STATUS_STAPLE = 1 << 2, // staples on the paper
IMG_STATUS_SIZE_ERR = 1 << 3, // size check failed
IMG_STATUS_DOGEAR = 1 << 4, // paper has dogear - common
IMG_STATUS_DOGEAR_PARTIAL = 1 << 5, // dogear - scanned partial
IMG_STATUS_BLANK = 1 << 6, // blank image
};
struct MotorBoardGlue
{
MotorBoardGlue(const std::function<void(unsigned int)> error_call,
const std::function<void()> scan_done_call,
const std::function<void(unsigned int)> os_mode_call,
const std::function<void(unsigned int)> set_sleepmode_call,
const std::function<void(unsigned int)> mltop_call,
std::function<void(unsigned int)> auto_paper,
const std::function<void(bool)> coveropen)
: m_error_call(error_call),
m_scan_done_call(scan_done_call),
m_os_mode_call(os_mode_call),
m_set_sleepmode_call(set_sleepmode_call),
m_mltop_call(mltop_call),
m_auto_paper(auto_paper),
m_coveropen_call(coveropen)
{
}
std::function<void(unsigned int)> m_error_call;
std::function<void()> m_scan_done_call;
std::function<void(unsigned int)> m_os_mode_call;
std::function<void(unsigned int)> m_set_sleepmode_call;
std::function<void(unsigned int)> m_mltop_call;
std::function<void(unsigned int)> m_auto_paper;
std::function<void(bool)> m_coveropen_call;
};
struct ScannerNativeParam
{
u32 TotalScanned; //扫描总计<E680BB>?
u32 RollerNum; //滚轴计数
u32 H_ratio; //横向修正系数
u32 V_ratio; //纵向修正系数
u32 JamTimes; //卡纸次数
u32 FeedErrorTimes; //搓纸失败次数
u32 DoubleFeedTimes; //双张次数
u32 ScanSessionsCount; //总计扫描次数
u16 gray_sp; //灰度sp<73>?
u16 color_sp; //彩色sp<73>?
int sleeptime; //休眠模式时间 -1 不休<E4B88D>?
std::string SerialNum; //序列<E5BA8F>?
std::string Token; //识别<E8AF86>?
u32 clr_maxbright; //彩色平场校正最大亮<E5A4A7>?
u32 gray_maxbright; //灰度平场校正最大亮<E5A4A7>?
u32 speedmode; //速度模式 G100 0->70 1->80 2->90 3->100 G200 0->100 1->110 2->120 3->130
u16 Vid; //USB vid
u16 Pid; //USB Pid
std::uint32_t chu_motor_speed_200; // G100 G200 出纸电机速度
std::uint32_t chu_motor_speed_300; // G100 G200 出纸电机速度
std::uint32_t chu_motor_speed_600; // G100 G200 出纸电机速度
};
enum TwSS : unsigned short
{
None = 0,
A4Letter = 1,
A4 = 1,
B5Letter = 2,
JISB5 = 2,
B5 = 2,
USLetter = 3,
USLegal = 4,
A5 = 5,
B4 = 6,
ISOB4 = 6,
B6 = 7,
ISOB6 = 7,
USLedger = 9,
USExecutive = 10,
A3 = 11,
B3 = 12,
ISOB3 = 12,
A6 = 13,
C4 = 14,
C5 = 15,
C6 = 16,
_4A0 = 17,
_2A0 = 18,
A0 = 19,
A1 = 20,
A2 = 21,
A7 = 22,
A8 = 23,
A9 = 24,
A10 = 25,
ISOB0 = 26,
ISOB1 = 27,
ISOB2 = 28,
ISOB5 = 29,
ISOB7 = 30,
ISOB8 = 31,
ISOB9 = 32,
ISOB10 = 33,
JISB0 = 34,
JISB1 = 35,
JISB2 = 36,
JISB3 = 37,
JISB4 = 38,
JISB6 = 39,
JISB7 = 40,
JISB8 = 41,
JISB9 = 42,
JISB10 = 43,
C0 = 44,
C1 = 45,
C2 = 46,
C3 = 47,
C7 = 48,
C8 = 49,
C9 = 50,
C10 = 51,
USStatement = 52,
BusinessCard = 53,
MaxSize = 54,
K8 = 0x81,
K16 = 0x82,
Trigeminy = 0x83,
};
enum class PaperSize
{
G400_A3 = 0,
G400_A4,
G400_A4R,
G400_A5,
G400_A5R,
G400_A6,
G400_A6R,
G400_B4,
G400_B5,
G400_B5R,
G400_B6,
G400_B6R,
G400_DOUBLELETTER,
G400_LEGAL,
G400_LETTER,
G400_LETTERR,
G400_LONGLETTER = 16,
G400_MAXSIZE = 17,
G400_AUTO = 16,
G400_MAXAUTO = 18
};
struct HGSize
{
unsigned int width;
unsigned int height;
bool operator<(HGSize const &right) const
{
if (width < right.width && height < right.height)
return true;
return false;
}
};
//usb int 端点 返回消息的生产<E7949F>?
enum HGType
{
MtBoard = 1,
FPGA,
V4L2,
IMG,
AutoCorrect,
STOPSCAN,
CMD_OUT,
};
//usb int 端点通信结构<E7BB93>?
struct HGIntInfo
{
HGType From;
unsigned int Code;
unsigned int Img_Index;
img_status Img_Status;
};
enum SpeedMode
{
PPM70 = 70,
PPM80 = 80,
PPM90 = 90,
PPM100 = 100,
PPM110 = 110,
PPM120 = 120,
PPM130 = 130
};
typedef struct frame_data_info
{
unsigned int offset;
unsigned int total;
unsigned int frame_count;
unsigned int img_w;
unsigned int img_h;
void* pdata;
bool empty()
{
return (offset *total*frame_count*img_w*img_h== 0) || (pdata == nullptr);
}
std::string to_str()
{
return "offset = " + std::to_string(offset)+ " total = "+ std::to_string(total) + " frame_count = "+ std::to_string(frame_count) +
" img_w = "+ std::to_string(img_w) + " img_h = "+ std::to_string(img_h);
}
};
typedef struct
{
u32 colorSp_200;
u32 graySp_200;
u32 colorSp_300;
u32 graySp_300;
u32 colorSp_600;
u32 graySp_600;
u32 motorSpeed;
} DunNanCisSp;
typedef struct
{
u32 colorSp;
u32 graySp;
u32 motorSpeed;
} CisSp;
static std::map<SpeedMode, DunNanCisSp> cameraparmSp = {
#ifdef G100
{PPM70, {.colorSp_200 = 1150 , .graySp_200= 3450,.colorSp_300 = 1207 ,.graySp_300 = 3621,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 1}},
{PPM80, {.colorSp_200 = 1150 , .graySp_200= 3450,.colorSp_300 = 1207 ,.graySp_300 = 3621,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 2}},
{PPM90, {.colorSp_200 = 944 , .graySp_200= 2834,.colorSp_300 = 1019 ,.graySp_300 = 3059,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 0}},
{PPM100, {.colorSp_200 = 847 , .graySp_200= 2541,.colorSp_300 = 875 ,.graySp_300 = 2626,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 4}},//G100 3399 暂无100 ppm
{PPM110, {.colorSp_200 = 847 , .graySp_200= 2541,.colorSp_300 = 875 ,.graySp_300 = 2626,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 3}},
#else
{PPM90, {.colorSp_200 = 816 , .graySp_200= 2450,.colorSp_300 = 878 ,.graySp_300 = 2637,.colorSp_600 = 1531 ,.graySp_600 = 4595 , 4}},
{PPM100, {.colorSp_200 = 816 , .graySp_200= 2450,.colorSp_300 = 878 ,.graySp_300 = 2637,.colorSp_600 = 1531 ,.graySp_600 = 4595 , 0}},
{PPM110, {.colorSp_200 = 816 , .graySp_200= 2450,.colorSp_300 = 878 ,.graySp_300 = 2637,.colorSp_600 = 1531 ,.graySp_600 = 4595 , 1}},
{PPM120, {.colorSp_200 = 816 , .graySp_200= 2450,.colorSp_300 = 878 ,.graySp_300 = 2637,.colorSp_600 = 1531 ,.graySp_600 = 4595 , 3}},
{PPM130, {.colorSp_200 = 816 , .graySp_200= 2450,.colorSp_300 = 878 ,.graySp_300 = 2637,.colorSp_600 = 1531 ,.graySp_600 = 4595 , 2}} //默认 140
#endif
};
//.colorSp_200 = 2606 , .graySp_200= 7818,.colorSp_300 = 2804 ,.graySp_300 = 8412,.colorSp_600 = 3405 ,.graySp_600 = 10215
static std::map<SpeedMode, DunNanCisSp> cameraparmSp_8478 = {
#ifdef G100
{PPM70, {.colorSp_200 = 1150 , .graySp_200= 3450,.colorSp_300 = 1207 ,.graySp_300 = 3621,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 1}},
{PPM80, {.colorSp_200 = 1150 , .graySp_200= 3450,.colorSp_300 = 1207 ,.graySp_300 = 3621,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 2}},
{PPM90, {.colorSp_200 = 944 , .graySp_200= 2834,.colorSp_300 = 1019 ,.graySp_300 = 3059,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 0}},
{PPM100, {.colorSp_200 = 847 , .graySp_200= 2541,.colorSp_300 = 875 , .graySp_300 = 2626,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 4}},//G100 3399 暂无100 ppm
{PPM110, {.colorSp_200 = 847 , .graySp_200= 2541,.colorSp_300 = 875 , .graySp_300 = 2626,.colorSp_600 = 1822 ,.graySp_600 = 5466 , 3}},
#else
{PPM90, {.colorSp_200 = 7818 , .graySp_200= 7818,.colorSp_300 = 8412 ,.graySp_300 = 8412,.colorSp_600 = 10215 ,.graySp_600 = 10215 , 4}},
{PPM100, {.colorSp_200 = 7818 , .graySp_200= 7818,.colorSp_300 = 8412 ,.graySp_300 = 8412,.colorSp_600 = 10215 ,.graySp_600 = 10215 , 0}},
{PPM110, {.colorSp_200 = 7818 , .graySp_200= 7818,.colorSp_300 = 8412 ,.graySp_300 = 8412,.colorSp_600 = 10215 ,.graySp_600 = 10215 , 1}},
{PPM120, {.colorSp_200 = 7818 , .graySp_200= 7818,.colorSp_300 = 8412 ,.graySp_300 = 8412,.colorSp_600 = 10215 ,.graySp_600 = 10215 , 3}},
{PPM130, {.colorSp_200 = 7818 , .graySp_200= 7818,.colorSp_300 = 8412 ,.graySp_300 = 8412,.colorSp_600 = 10215 ,.graySp_600 = 10215 , 2}} //默认 140
#endif
};
static std::map<SpeedMode,int> anlogic_freq = {
#ifdef G100
{PPM70, 1},
{PPM80, 2},
{PPM90, 3},
{PPM110, 4},
#else
{PPM100, 1},
{PPM110, 2},
{PPM120, 3},
{PPM130, 4}
#endif
};
static std::map<SpeedMode, CisSp> scannerSp = {
#ifdef G100
{PPM70, {0x42d, 0xc88, 1}},
{PPM80, {0x37f, 0xa7f, 2}},
{PPM90, {0x2B6, 0x822, 0}},
{PPM100, {0x27C, 0x775, 4}},//G100 3399 暂无100 ppm
{PPM110, {0x24e, 0x706, 3}},
#else
{PPM90, {0x27C, 0x775, 4}},
{PPM100, {0x27C, 0x775, 0}},
{PPM110, {0x27C, 0x775, 1}},
{PPM120, {0x27C, 0x775, 3}},
{PPM130, {0x27C, 0x775, 2}} //默认 140
#endif
};
static std::map<PaperSize, HGSize> papersMap = {
{PaperSize::G400_A3, {1632, 10800}},
{PaperSize::G400_A4, {1632, 8100}},
{PaperSize::G400_A4R, {1632, 6000}},
{PaperSize::G400_A5, {1632, 6000}},
{PaperSize::G400_A5R, {1632, 6000}},
{PaperSize::G400_A6, {1632, 6000}},
{PaperSize::G400_A6R, {1632, 6000}},
{PaperSize::G400_B4, {1632, 10800}},
{PaperSize::G400_B5, {1632, 8100}},
{PaperSize::G400_B5R, {1632, 6000}},
{PaperSize::G400_B6, {1632, 6000}},
{PaperSize::G400_DOUBLELETTER, {1632, 10800}},
{PaperSize::G400_B6R, {1632, 6000}},
{PaperSize::G400_LEGAL, {1632, 10800}},
{PaperSize::G400_LETTER, {1632, 8100}},
{PaperSize::G400_LETTERR, {1632, 10800}},
{PaperSize::G400_MAXSIZE, {1632, 16002}},
{PaperSize::G400_AUTO, {1632, 10800}},
{PaperSize::G400_MAXAUTO, {1632, 16002}},
};
// pair<papertype,height> unit:mm
static std::map<PaperSize,int> paperHeight={
{PaperSize::G400_A3, 475},
{PaperSize::G400_A4, 337},
{PaperSize::G400_A4R, 240},
{PaperSize::G400_A5, 247},
{PaperSize::G400_A5R, 178},
{PaperSize::G400_A6, 178},
{PaperSize::G400_A6R, 135},
{PaperSize::G400_B4, 383},
{PaperSize::G400_B5, 300},
{PaperSize::G400_B5R, 226},
{PaperSize::G400_B6, 226},
{PaperSize::G400_DOUBLELETTER, 500},
{PaperSize::G400_B6R, 175},
{PaperSize::G400_LEGAL, 386},
{PaperSize::G400_LETTER, 339},
{PaperSize::G400_LETTERR, 276},
{PaperSize::G400_MAXSIZE, 1040},//300 dpi max heigth 690
{PaperSize::G400_AUTO, 1040},//300 dpi max heigth
{PaperSize::G400_MAXAUTO, 1040}//300 dpi max heigth
};
enum Scanner_Reg_Defs
{
SR_CMD,
SR_STATUS,
SR_SCAN_COUNT,
SR_OS,
SR_SENSORS,
SR_MOTOR,
SR_IM_TYPE,
SR_IM_COUNT,
SR_IM_TX,
SR_IM_FRONT_SIZE,
SR_IM_CLEAR,
SR_IM_TXING,
SR_IM_POP,
SR_IM_ABORT,
SR_COUNT,
SR_CONFIG_SCAN_PARAM,
SR_GET_FWVERSION,
SR_SET_FWERSION,
SR_GET_SERIALNUM,
SR_SET_SERIALNUM,
SR_CONFIF_IMGPROCPARAM,
SC_AUTOCORRECT,
SC_GET_CORRECT_PARAM,
SC_SET_CORRECT_PARAM,
SR_GET_H_RATIO,
SR_SET_H_RATIO,
SR_GET_V_RATIO,
SR_SET_V_RATIO,
SR_GET_SERIAL_LEN,
SR_GET_GRAY_SP,
SR_GET_COLOR_SP,
SR_SET_GRAY_SP,
SR_SET_COLOR_SP,
SR_SET_SLEEPTIME,
SR_GET_SLEEPTIME,
SR_GET_SLEEP_STAUTUS,
SR_GET_IMAGEPROCESSDONE,
SR_GET_KEEP_LAST_PAPER,
SR_GET_PAPERON,
SR_SET_SPEEDMODE,
SR_GET_SPEEDMODE,
SR_GET_JOSN_SIZE,
SR_GET_JSON,
SR_SET_JSON_PATH,
SR_SET_JSON,
SR_GET_FILE_POS,
SR_SET_FILE_POS,
SR_NOTIFY_SLEEP,
SR_GET_FEEDMODE,
SR_SET_FEEDMODE,
SR_GET_AUTOMATICCONTROLFEEDMODE_ENABLE,
SR_SET_AUTOMATICCONTROLFEEDMODE_ENABLE,
SR_GET_AUTOMATICCONTROLFEEDMODE_THRESHOLD,
SR_SET_AUTOMATICCONTROLFEEDMODE_THRESHOLD,
SR_GET_TRAYPOSITION,
SR_SET_TRAYPOSITION,
SR_GET_LOCK_STATES,
SR_SET_LOCK_STATES,
SR_GET_TOKEN,
SR_SET_TOKEN,
SR_GET_TOKEN_LENGHT,
SR_DECODE_TOKEN,
SR_CLEAN_PAPER_ROAD,
SR_EXECUTE_CMD,
SR_EXECUTE_CMD_OUT_LENGHT,
SR_GET_EXECUTE_CMD_OUT,
SR_SET_Corrective_Restoration,
SR_BACKUP_RESTORES_HUAGODIR,
SR_SINGLE_CORRECT_MODE,
SR_GET_DAIL_CODE,
2024-03-18 06:31:20 +00:00
SR_GET_COMB_Coefficients_Lenght,
SR_GET_COMB_Coefficients,
SR_SET_COMB_Coefficients,
2024-03-05 03:46:18 +00:00
SR_GET_CUO_ERROR = 0x50,
SR_GET_DOU_ERROR,
SR_GET_JAM_ERROR,
SR_GET_SCANN_NUM,
SR_CLR_ROLLER_NUM,
SR_GET_ROLLER_NUM,
SR_CLR_SCANN_NUM,
SR_GET_H_200_RATIO, //非敦南cis需返回false
SR_SET_H_200_RATIO,
SR_GET_V_200_RATIO,
SR_SET_V_200_RATIO,
SR_GET_H_300_RATIO,
SR_SET_H_300_RATIO,
SR_GET_V_300_RATIO,
SR_SET_V_300_RATIO,
SR_GET_H_600_RATIO,
SR_SET_H_600_RATIO,
SR_GET_V_600_RATIO,
SR_SET_V_600_RATIO,
SR_SET_GRAYCORRECT_MODE,
SR_GET_GRAYCORRECT_MODE,
SR_GET_ARM_DATETIME,
SR_GET_ARM_DATETIME_LENGHT,
SR_SET_ARM_DATETIME,
2024-03-18 06:31:20 +00:00
SR_SET_SENSOR_CONFIG,
SR_GET_SENSOR_CONFIG,
2024-03-05 03:46:18 +00:00
SR_SET_LCD_LANGUAGE,
SR_GET_LCD_LANGUAGE,
2024-03-18 06:31:20 +00:00
SR_GET_SENSOR_CONFIG_LENGHT,
SR_GET_ULTRASONIC_VERSION,
2024-03-05 03:46:18 +00:00
SR_UPDATA_START = 0x100,
SR_UPDATA_STAUTUS = 0x101,
SR_UPDATA_MD5_RELUST = 0x102,
SR_UPDATA_RECOVERY = 0x103,
SR_UPDATA_REBOOT = 0x104,
SR_POWEROFF = 0x105,
SR_REBOOT = 0x106,
SR_FLAT_CLR_MAX_BRIGHT,
SR_FLAT_GRAY_MAX_BRIGHT,
SR_KERNEL_VERSION_INFO_LENGTH,
SR_GET_KERNEL_VERSION,
SR_GET_MBSTATUS,
SR_GET_IPADDR_LENGHT = 0x200,
SR_GET_MACADDR,
SR_GET_IPADDR,
SR_GET_MBVERSION_LENGHT,
SR_GET_MBVERSION,
SR_GET_USBVIDPID,
SR_SET_USBVIDPID,
SR_SET_STARTBACKUP,//开始备份
SR_GET_BACKUPSTATUS//备份状态
};
typedef union Ctrol_Description{
std::uint32_t value;
struct{
std::uint32_t direction : 1;
std::uint32_t unused : 31;
}Param;
}CtrolDescription;
enum Updata_Stautus
{
Start_updata,
Download_file,
Download_file_error,
Download_file_finish,
MD5_Reovery,
MD5_Rboot,
MD5_Error,
Reboot
};
enum Scanner_Cmd_Defs
{
SC_START,
SC_STOP,
SC_CLEAR,
SC_COUNT
};
enum HGScanSide
{
Duplex,
Single,
DisCardBlankNormal,
DisCardBlacnkVince,
Flod
};
enum class HGRotate
{
Rot_0,
Rot_90,
Rot_180,
Rot_270,
Rot_auto
};
typedef union USBVIDPID
{
struct{
unsigned short VID;
unsigned short PID;
}param;
unsigned int value;
};
typedef union HG_ImgProcParms
{
unsigned int value;
struct
{
u32 papertype : 5;
u32 scanside : 3;
u32 res : 10;
u32 rotate : 2;
u32 autodescrew : 1;
u32 fillbackground : 1;
u32 filter : 4;
u32 enhancecolor : 2;
u32 fillhole : 1;
u32 reversed : 3;
} imgprocparams;
} HGImgProcParms;
///用于CIS 自动校正参数保存
typedef struct
{
u32 gainF[6];
u32 gainB[6];
u32 offsetsF[6];
u32 offsetsB[6];
u32 expF[3];
u32 expB[3];
u32 sp;
} HGCISConfig;
typedef struct
{
HGCISConfig colorCorrect;
HGCISConfig color;
HGCISConfig grayCorrect;
HGCISConfig gray;
} HGCorrectConfigs;
enum class CISVendor
{
CIS_UNKNOWUN,
HUALIN_CIS_V0,
DUNNAN_CIS_V0
};
#define STR_CORRECTCOLOR CorrectColor
#define STR_COLOR Color
#define STR_CORRECTGRAY CorrectGray
#define STR_GRAY Gray
#define STR_GAINF GainF
#define STR_GAINB GainB
#define STR_EXPF ExpF
#define STR_EXPB ExpB
#define STR_OFFSETF OffsetF
#define STR_OFFSETB OffsetB
#define STR_SP Sp
#define STR(str) #str
#define STRCON(str1, str2) STR(str1) \
STR(str2)
#define LUT_COLOR_BLACK_PATH "/usr/local/huago/lut_0.bmp"
#define LUT_COLOR_WHITE_PATH "/usr/local/huago/lut_1.bmp"
#define LUT_GRAY_BLACK_PATH "/usr/local/huago/lut_2.bmp"
#define LUT_GRAY_WHITE_PATH "/usr/local/huago/lut_3.bmp"
#define LUT_COLOR_LUT_PATH "/usr/local/huago/color_lut.bmp"
#define LUT_GRAY_LUT_PATH "/usr/local/huago/gray_lut.bmp"
#define IMAGE_COLOR 1
#define IMAGE_GRAY 0
#define JSON_CORRECTFILE_PATH "/usr/local/huago/cisconfig.json"
#define JSON_CORRECTDIR_PATH "/usr/local/huago"
#define JSON_SCANNER_INFO_DIR "/usr/local/huago"
#define JSON_SCANNER_INFO_FILE "/usr/local/huago/scannerinfo.json"
#define S_INFO_TOTALSCANNED "TotalScanned"
#define S_INFO_ROLLERNUM "RollerNum"
#define S_INFO_HRATIO "HRatio"
#define S_INFO_VRATIO "VRatio"
#define S_GRAY_SP "GraySp"
#define S_COLOR_SP "ColorSp"
#define S_INFO_SLEEPTIME "Sleeptime"
#define S_INFO_JAMNUM "JamInNum"
#define S_INFO_FEEDERROR "FeedError"
#define S_INFO_DOUNUM "DoubleNum"
#define S_INFO_SCANSESSIONCOUNT "ScanTimes"
#define S_INFO_SERIALNUM "SerialNum"
#define S_INFO_TOKEN "ScannerToken"
#define S_INFO_CLR_MAXBRT "FlatClrMaxBrt"
#define S_INFO_GRAY_MAXBRT "FlatGrayMaxBrt"
#define S_INFO_SPEEDMODE "SpeedMode"
#define S_INFO_VID "VID"
#define S_INFO_PID "PID"
#define S_INFO_CHUZHI_MOTOR_SPEED_200 "Chu_Motor_Speed_200"
#define S_INFO_CHUZHI_MOTOR_SPEED_300 "Chu_Motor_Speed_300"
#define S_INFO_CHUZHI_MOTOR_SPEED_600 "Chu_Motor_Speed_600"
#pragma pack(push)
#pragma pack(4)
typedef struct tagFillHole
{
uint8_t is_fillhole;
int fillholeratio;
} FillHole;
typedef struct tagDetachNoise
{
uint8_t is_detachnoise;
int detachnoise;
} DetachNoise;
enum LowPowerMode : unsigned int
{
Min_None = 0,
Min_5,
Min_10,
Min_20,
Min_30,
Min_60,
Min_120,
Min_240
};
typedef struct tagHARDWAREPARAMS
{
byte capturepixtype;
byte en_doublefeed;
byte en_stapledetect;
byte en_skrewdetect;
byte skrewdetectlevel;
LowPowerMode lowpowermode;
#ifdef UV
byte en_uv;
#endif
} HardwareCaps;
typedef struct Scan_Rect
{
int width;
int height;
int x;
int y;
} ScanRect;
enum PaperAlign : unsigned char
{
Rot0 = 0,
Rot270 = 3,
AutoTextOrientation = 5
};
typedef enum Enchace_Color : short
{
Enhance_None = 0,
Enhance_Red,
Enhance_Green,
Enhance_Blue
} EnchaceColor;
typedef enum SharpenBlur : short
{
Sharpen_None,
Sharpen_Normal,
Sharpen_More,
Sharpen_Blur,
Sharpen_Blur_More
} SharpenBlur;
typedef struct tagCrop_Rect
{
int enable;
int x; /*****自定义裁切区域左上角x坐标*/
int y; /*****自定义裁切区域左上角y坐标*/
int width; /*****自定义裁切区域宽<E59F9F>?******/
int height; /*****自定义裁切区域高<E59F9F>?******/
}CropRect;
typedef enum tagMulti_Output {
Unused = -1,
All,
ColorGray,
ColorBw,
GrayBw
}MultiOutput;
typedef struct tagSkew_Detection {
int enable;
int level;
}SkewDetection;
typedef struct tagHhardware_Params_3399
{
int capturepixtype;
int doubleFeedDetection;
int bindingDetection;
int sizeDetection;
SkewDetection skewDetection;
}HardwareCaps_3399;
struct GScanCap
{
uint8_t papertype;
PaperAlign paperAlign;
uint8_t en_sizecheck;
float imageRotateDegree;
uint8_t is_duplex;
uint8_t en_fold;
int pixtype;
int automaticcolor;
int automaticcolortype;
//ScanRect scanrect;
float resolution_dst;
float resolution_native;
float gamma;
float contrast;
float brightness;
float threshold;
uint8_t is_autocontrast;
uint8_t is_autocrop;
uint8_t is_autodiscradblank_normal;
int discardblank_percent;
uint8_t is_autodiscradblank_vince;
uint8_t is_switchfrontback;
uint8_t autodescrew;
uint8_t multi_output_red;
uint8_t hsvcorrect;
uint8_t filter;
uint8_t sharpen;
uint8_t enhance_color;
uint8_t fillbackground;
bool is_convex;
int noise;
int indent;
int AutoCrop_threshold;
unsigned short scannum;
uint8_t is_backrotate180;
uint8_t is_dogeardetection;
HardwareCaps hardwarecaps;
FillHole fillhole;
DetachNoise detachnoise;
uint8_t is_autotext;
bool isfillcolor;
int refuseInflow;
int colorCorrection;
int removeMorr;
int errorExtention;
int textureRemove;
int splitImage;
CropRect cropRect;
MultiOutput multiOutput;
bool normalCrop;
uint32_t dogeardistabce;
bool fadeback;
int fadebackrange;
bool isuploadexceptionimage;
int fillholeratio_up;
int fillholeratio_down;
int fillholeratio_left;
int fillholeratio_right;
std::uint8_t fold_concatmode; /*拼接模式*/
int HsvFilterType; /**< 答题卡留红除杂色功能类型 暂定0 为关闭1为留红除杂色>*/
bool is_colorcast; /**< 色偏校正>*/
int discare_edge; /**< 跳过空白页边缘缩进>*/
int discare_dilate; /**< 调过空白页纸张杂点阈值>*/
double discare_meanth; /**< 调过空白页文稿底色阈值>*/
bool en_contaminationdetection; /**< 脏污检测使能>*/
bool detect_size_discard_blank; /**< 基于压缩图像大小跳过空白页使能>*/
uint32_t refuseInflow_level; /**< 防止渗透等级>*/
uint32_t maxszie_sanp_height; /**< 最大幅面采集高度>*/
uint32_t reserve[1024]; /**< 预留4096字节做协议扩展*/
};
#pragma pack(pop)