diff options
Diffstat (limited to 'backend/canon_dr-cmd.h')
| -rw-r--r-- | backend/canon_dr-cmd.h | 65 | 
1 files changed, 60 insertions, 5 deletions
| diff --git a/backend/canon_dr-cmd.h b/backend/canon_dr-cmd.h index e9fc54b..0ef883f 100644 --- a/backend/canon_dr-cmd.h +++ b/backend/canon_dr-cmd.h @@ -131,9 +131,12 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)  #define IN_periph_devtype_unknown             0x1f  #define get_IN_response_format(in)         getbitfield(in + 0x03, 0x07, 0)  #define IN_recognized                         0x02 -#define get_IN_vendor(in, buf)            strncpy(buf, (char *)in + 0x08, 0x08) -#define get_IN_product(in, buf)           strncpy(buf, (char *)in + 0x10, 0x010) -#define get_IN_version(in, buf)           strncpy(buf, (char *)in + 0x20, 0x04) +#define get_IN_vendor(in, buf)             snprintf(buf, 0x08 + 1, "%.*s", \ +                                                    0x08, (char*)in + 0x08) +#define get_IN_product(in, buf)            snprintf(buf, 0x10 + 1, "%.*s", \ +                                                    0x10, (char*)in + 0x10) +#define get_IN_version(in, buf)            snprintf(buf, 0x04 + 1, "%.*s", \ +                                                    0x04, (char*)in + 0x20)  /* the VPD response */  #define get_IN_page_length(in)             in[0x04] @@ -219,6 +222,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)  #define SR_datatype_endorser            0x90  #define SR_datatype_fineoffset          0x90  #define SR_datatype_finegain            0x91 +#define SR_datatype_imprinters          0x96 /*DR-X10C*/  /* ==================================================================== */  /* READ */ @@ -252,7 +256,20 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)  /*counters*/  #define R_COUNTERS_len                 0x80 -#define get_R_COUNTERS_scans(in)       getnbyte(in + 0x04, 4) +#define get_R_COUNTERS_total(in)       getnbyte(in + 0x04, 4) +#define get_R_COUNTERS_last_srv(in)    getnbyte(in + 0x44, 4) + +/*imprinters*/ +#define R_IMPRINTER_len                0x20 +#define R_PRE_IMPRINTER                0 +#define R_POST_IMPRINTER               1 +#define get_R_IMPRINTER_found(in)      getbitfield(in+1, 1, 0) +/*4 bytes at in + 0: (DR-X10C) +pre-imprinter on:   0x07010000 +pre-imprinter off:  0x06000000 +post-imprinter on:  0x03010000 +post-imprinter off: 0x02000000 +*/  /*endorser unread?*/ @@ -454,6 +471,14 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)  #define SM2_pc_buffer                   0x02  #define SM2_pc_hw_enhancement           0x03  #define SM2_pc_dropout                  0x06 +#define SM2_pc_date_time                0x07 +#define SM2_pc_imprinter_settings       0x33 +#define SM2_pc_imprinter_specstring     0x34 + +/* ==================================================================== */ +/* GET SCAN MODE 2 */ +#define GET_SCAN_MODE2_code             0xe4 +#define GET_SCAN_MODE2_len              12  /* ==================================================================== */  /* SET SCAN MODE 2 */ @@ -465,11 +490,15 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)  /* the payload */  #define SSM2_PAY_len                     0x10 +#define SSM2_IMPRINTER_STRING_PAY_len    0x8e  /* for DF (0x00) page */ -#define set_SSM2_DF_thick(sb, val)       setbitfield(sb+3, 1, 2, val) +#define set_SSM2_DF_imprint(sb, val)     setbitfield(sb+2, 1, 0, val) +#define set_SSM2_DF_post_addon(sb, val)  setbitfield(sb+2, 1, 1, val)  #define set_SSM2_DF_len(sb, val)         setbitfield(sb+3, 1, 0, val) +#define set_SSM2_DF_thick(sb, val)       setbitfield(sb+3, 1, 2, val)  #define set_SSM2_DF_staple(sb, val)      setbitfield(sb+3, 1, 4, val) +#define set_SSM2_DF_imprint2(sb, val)    setbitfield(sb+3, 1, 6, val)  /* for ULTRA (0x01) page */  #define set_SSM2_ULTRA_top(sb, val)      putnbyte(sb + 0x07, val, 2) @@ -489,6 +518,32 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)  #define set_SSM2_DO_en(sb, val)              sb[0x0a] = val  #define set_SSM2_DO_side(sb, val)            sb[0x05] = val +/* for IMPRINT DATE & TIME (0x07) */ +#define set_SSM2_imprint_year(sb, val)       putnbyte(sb + 0x02, val, 2) +#define set_SSM2_imprint_month(sb, val)      putnbyte(sb + 0x04, val, 1) +#define set_SSM2_imprint_day(sb, val)        putnbyte(sb + 0x05, val, 1) +#define set_SSM2_imprint_hour(sb, val)       putnbyte(sb + 0x06, val, 1) +#define set_SSM2_imprint_min(sb, val)        putnbyte(sb + 0x07, val, 1) +#define set_SSM2_imprint_sec(sb, val)        putnbyte(sb + 0x08, val, 1) + +/* for IMPRINTER SETTINGS (0x33) page */ +#define set_SSM2_postimprint_cmd(sb)         sb[0x04] = 1 +#define set_SSM2_postimprint_addon(sb)       setbitfield(sb, 1, 1, 1) +#define set_SSM2_imprint_hoffset(sb, val)    putnbyte(sb + 0x05, val, 2) +#define set_SSM2_imprint_voffset(sb, val)    putnbyte(sb + 0x07, val, 2) + +/* for IMPRINTER STRING SPECIFICATION (0x34) page */ +#define IMPRINTER_12x12_FONT                 0 +#define IMPRINTER_8x12_FONT                  1 +#define set_SSM2_imprint_fontsize(sb, val)   setbitfield(sb + 0xA, 1, 0, val) +#define set_SSM2_imprint_spacing(sb, val)    setbitfield(sb + 0xA, 1, 1, val) +#define set_SSM2_imprint_addonmode(sb, val)  setbitfield(sb + 0x9, 3, 4, val) +#define IMPRINTER_0_FONT_ROT                 0 +#define IMPRINTER_90_FONT_ROT                1 +#define IMPRINTER_180_FONT_ROT               2 +#define IMPRINTER_270_FONT_ROT               3 +#define set_SSM2_imprint_fontrot(sb, val)    setbitfield(sb + 0x9, 3, 0, val) +  /* ==================================================================== */  /* window descriptor macros for SET_WINDOW and GET_WINDOW */ | 
