1141cc406Sopenharmony_ci#ifndef KODAK_CMD_H 2141cc406Sopenharmony_ci#define KODAK_CMD_H 3141cc406Sopenharmony_ci 4141cc406Sopenharmony_ci/* 5141cc406Sopenharmony_ci * Part of SANE - Scanner Access Now Easy. 6141cc406Sopenharmony_ci * 7141cc406Sopenharmony_ci * Please see to opening comments in kodak.c 8141cc406Sopenharmony_ci */ 9141cc406Sopenharmony_ci 10141cc406Sopenharmony_ci/* ==================================================================== */ 11141cc406Sopenharmony_ci/* helper char array manipulation functions */ 12141cc406Sopenharmony_ci 13141cc406Sopenharmony_cistatic void 14141cc406Sopenharmony_cisetbitfield (unsigned char *pageaddr, int mask, int shift, int val) 15141cc406Sopenharmony_ci{ 16141cc406Sopenharmony_ci *pageaddr = (*pageaddr & ~(mask << shift)) | ((val & mask) << shift); 17141cc406Sopenharmony_ci} 18141cc406Sopenharmony_ci 19141cc406Sopenharmony_cistatic int 20141cc406Sopenharmony_cigetbitfield (unsigned char *pageaddr, int shift, int mask) 21141cc406Sopenharmony_ci{ 22141cc406Sopenharmony_ci return ((*pageaddr >> shift) & mask); 23141cc406Sopenharmony_ci} 24141cc406Sopenharmony_ci 25141cc406Sopenharmony_cistatic int 26141cc406Sopenharmony_cigetnbyte (unsigned char *pnt, int nbytes) 27141cc406Sopenharmony_ci{ 28141cc406Sopenharmony_ci unsigned int result = 0; 29141cc406Sopenharmony_ci int i; 30141cc406Sopenharmony_ci 31141cc406Sopenharmony_ci for (i = 0; i < nbytes; i++) 32141cc406Sopenharmony_ci result = (result << 8) | (pnt[i] & 0xff); 33141cc406Sopenharmony_ci return result; 34141cc406Sopenharmony_ci} 35141cc406Sopenharmony_ci 36141cc406Sopenharmony_cistatic void 37141cc406Sopenharmony_ciputnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes) 38141cc406Sopenharmony_ci{ 39141cc406Sopenharmony_ci int i; 40141cc406Sopenharmony_ci 41141cc406Sopenharmony_ci for (i = nbytes - 1; i >= 0; i--) { 42141cc406Sopenharmony_ci pnt[i] = value & 0xff; 43141cc406Sopenharmony_ci value = value >> 8; 44141cc406Sopenharmony_ci } 45141cc406Sopenharmony_ci} 46141cc406Sopenharmony_ci 47141cc406Sopenharmony_ci/* ==================================================================== */ 48141cc406Sopenharmony_ci/* SCSI commands */ 49141cc406Sopenharmony_ci 50141cc406Sopenharmony_ci#define set_SCSI_opcode(out, val) out[0]=val 51141cc406Sopenharmony_ci#define set_SCSI_lun(out, val) setbitfield(out + 1, 7, 5, val) 52141cc406Sopenharmony_ci 53141cc406Sopenharmony_ci/* ==================================================================== */ 54141cc406Sopenharmony_ci/* TEST_UNIT_READY */ 55141cc406Sopenharmony_ci 56141cc406Sopenharmony_ci#define TEST_UNIT_READY_code 0x00 57141cc406Sopenharmony_ci#define TEST_UNIT_READY_len 6 58141cc406Sopenharmony_ci 59141cc406Sopenharmony_ci/* ==================================================================== */ 60141cc406Sopenharmony_ci/* REQUEST_SENSE */ 61141cc406Sopenharmony_ci 62141cc406Sopenharmony_ci/* out */ 63141cc406Sopenharmony_ci#define REQUEST_SENSE_code 0x03 64141cc406Sopenharmony_ci#define REQUEST_SENSE_len 6 65141cc406Sopenharmony_ci 66141cc406Sopenharmony_ci#define RS_return_size 0x12 67141cc406Sopenharmony_ci 68141cc406Sopenharmony_ci/* in */ 69141cc406Sopenharmony_ci#define get_RS_information_valid(b) getbitfield(b + 0x00, 7, 1) 70141cc406Sopenharmony_ci#define get_RS_error_code(b) getbitfield(b + 0x00, 0, 0x7f) 71141cc406Sopenharmony_ci#define RS_error_code_current 0x70 72141cc406Sopenharmony_ci#define RS_error_code_deferred 0x71 73141cc406Sopenharmony_ci 74141cc406Sopenharmony_ci#define get_RS_segment_num(b) b[1] 75141cc406Sopenharmony_ci 76141cc406Sopenharmony_ci#define get_RS_filemark(b) getbitfield(b + 0x02, 7, 1) 77141cc406Sopenharmony_ci#define get_RS_EOM(b) getbitfield(b + 0x02, 6, 1) 78141cc406Sopenharmony_ci#define get_RS_ILI(b) getbitfield(b + 0x02, 5, 1) 79141cc406Sopenharmony_ci#define get_RS_sense_key(b) getbitfield(b + 0x02, 0, 0x0f) 80141cc406Sopenharmony_ci 81141cc406Sopenharmony_ci#define get_RS_information(b) getnbyte(b+0x03, 4) 82141cc406Sopenharmony_ci 83141cc406Sopenharmony_ci#define get_RS_additional_length(b) b[0x07] 84141cc406Sopenharmony_ci 85141cc406Sopenharmony_ci#define get_RS_cmd_info(b) getnbyte(b+8, 4) 86141cc406Sopenharmony_ci 87141cc406Sopenharmony_ci#define get_RS_ASC(b) b[0x0c] 88141cc406Sopenharmony_ci#define get_RS_ASCQ(b) b[0x0d] 89141cc406Sopenharmony_ci#define get_RS_FRUC(b) b[0x0e] 90141cc406Sopenharmony_ci#define get_RS_SKSV(b) getbitfield(b+0x0f,7,1) 91141cc406Sopenharmony_ci#define get_RS_SKSB(b) getnbyte(b+0x0f, 3) 92141cc406Sopenharmony_ci 93141cc406Sopenharmony_ci/* ==================================================================== */ 94141cc406Sopenharmony_ci/* INQUIRY */ 95141cc406Sopenharmony_ci 96141cc406Sopenharmony_ci/* out */ 97141cc406Sopenharmony_ci#define INQUIRY_code 0x12 98141cc406Sopenharmony_ci#define INQUIRY_len 6 99141cc406Sopenharmony_ci 100141cc406Sopenharmony_ci#define set_I_evpd(out, val) setbitfield(out + 1, 1, 0, val) 101141cc406Sopenharmony_ci#define set_I_page_code(out, val) out[0x02]=val 102141cc406Sopenharmony_ci#define I_page_code_default 0 103141cc406Sopenharmony_ci#define set_I_data_length(out,n) out[0x04]=n 104141cc406Sopenharmony_ci#define I_data_len 128 105141cc406Sopenharmony_ci 106141cc406Sopenharmony_ci/* in */ 107141cc406Sopenharmony_ci#define get_I_periph_qual(in) getbitfield(in, 5, 7) 108141cc406Sopenharmony_ci#define I_periph_qual_valid 0x00 109141cc406Sopenharmony_ci#define I_periph_qual_nolun 0x03 110141cc406Sopenharmony_ci#define get_I_periph_devtype(in) getbitfield(in, 0, 0x1f) 111141cc406Sopenharmony_ci#define I_periph_devtype_scanner 0x06 112141cc406Sopenharmony_ci#define I_periph_devtype_unknown 0x1f 113141cc406Sopenharmony_ci 114141cc406Sopenharmony_ci/* don't use these, until vendor */ 115141cc406Sopenharmony_ci#define get_I_rmb(in) getbitfield(in + 1, 7, 1) 116141cc406Sopenharmony_ci#define get_I_devtype_qual(in) getbitfield(in + 1, 0, 0x7f) 117141cc406Sopenharmony_ci 118141cc406Sopenharmony_ci#define get_I_iso_version(in) getbitfield(in + 2, 6, 3) 119141cc406Sopenharmony_ci#define get_I_ecma_version(in) getbitfield(in + 2, 3, 7) 120141cc406Sopenharmony_ci#define get_I_ansi_version(in) getbitfield(in + 2, 0, 7) 121141cc406Sopenharmony_ci 122141cc406Sopenharmony_ci#define get_I_aenc(in) getbitfield(in + 3, 7, 1) 123141cc406Sopenharmony_ci#define get_I_trmiop(in) getbitfield(in + 3, 6, 1) 124141cc406Sopenharmony_ci#define get_I_resonse_format(in) getbitfield(in + 3, 0, 0x0f) 125141cc406Sopenharmony_ci 126141cc406Sopenharmony_ci#define get_I_length(in) getnbyte(in + 4, 1) 127141cc406Sopenharmony_ci 128141cc406Sopenharmony_ci#define get_I_reladr(in) getbitfield(in + 7, 7, 1) 129141cc406Sopenharmony_ci#define get_I_wbus32(in) getbitfield(in + 7, 6, 1) 130141cc406Sopenharmony_ci#define get_I_wbus16(in) getbitfield(in + 7, 5, 1) 131141cc406Sopenharmony_ci#define get_I_sync(in) getbitfield(in + 7, 4, 1) 132141cc406Sopenharmony_ci#define get_I_linked(in) getbitfield(in + 7, 3, 1) 133141cc406Sopenharmony_ci#define get_I_cmdque(in) getbitfield(in + 7, 1, 1) 134141cc406Sopenharmony_ci#define get_I_sftre(in) getbitfield(in + 7, 0, 1) 135141cc406Sopenharmony_ci 136141cc406Sopenharmony_ci#define get_I_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \ 137141cc406Sopenharmony_ci 0x08, (char *)in + 0x08) 138141cc406Sopenharmony_ci#define get_I_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \ 139141cc406Sopenharmony_ci 0x10, (char *)in + 0x10) 140141cc406Sopenharmony_ci#define get_I_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \ 141141cc406Sopenharmony_ci 0x04, (char *)in + 0x20) 142141cc406Sopenharmony_ci#define get_I_build(in, buf) snprintf(buf, 0x02 + 1, "%.*s", \ 143141cc406Sopenharmony_ci 0x02, (char *)in + 0x24) 144141cc406Sopenharmony_ci 145141cc406Sopenharmony_ci#define get_I_mf_disable(in) getbitfield(in + 38, 7, 1) 146141cc406Sopenharmony_ci#define get_I_checkdigit(in) getbitfield(in + 38, 6, 1) 147141cc406Sopenharmony_ci#define get_I_front_prism(in) getbitfield(in + 38, 5, 1) 148141cc406Sopenharmony_ci#define get_I_compressed_gray(in) getbitfield(in + 38, 4, 1) 149141cc406Sopenharmony_ci#define get_I_front_toggle(in) getbitfield(in + 38, 3, 1) 150141cc406Sopenharmony_ci#define get_I_front_dp1(in) getbitfield(in + 38, 2, 1) 151141cc406Sopenharmony_ci#define get_I_front_color(in) getbitfield(in + 38, 1, 1) 152141cc406Sopenharmony_ci#define get_I_front_atp(in) getbitfield(in + 38, 0, 1) 153141cc406Sopenharmony_ci 154141cc406Sopenharmony_ci#define get_I_dp1_180(in) getbitfield(in + 39, 7, 1) 155141cc406Sopenharmony_ci#define get_I_mf_pause(in) getbitfield(in + 39, 6, 1) 156141cc406Sopenharmony_ci#define get_I_rear_prism(in) getbitfield(in + 39, 5, 1) 157141cc406Sopenharmony_ci#define get_I_uncompressed_gray(in) getbitfield(in + 39, 4, 1) 158141cc406Sopenharmony_ci#define get_I_rear_toggle(in) getbitfield(in + 39, 3, 1) 159141cc406Sopenharmony_ci#define get_I_rear_dp1(in) getbitfield(in + 39, 2, 1) 160141cc406Sopenharmony_ci#define get_I_rear_color(in) getbitfield(in + 39, 1, 1) 161141cc406Sopenharmony_ci#define get_I_rear_atp(in) getbitfield(in + 39, 0, 1) 162141cc406Sopenharmony_ci 163141cc406Sopenharmony_ci#define get_I_min_bin_res(in) getnbyte(in + 40, 2) 164141cc406Sopenharmony_ci#define get_I_max_bin_res(in) getnbyte(in + 42, 2) 165141cc406Sopenharmony_ci#define get_I_min_col_res(in) getnbyte(in + 44, 2) 166141cc406Sopenharmony_ci#define get_I_max_col_res(in) getnbyte(in + 46, 2) 167141cc406Sopenharmony_ci 168141cc406Sopenharmony_ci#define get_I_max_image_width(in) getnbyte(in + 48, 4) 169141cc406Sopenharmony_ci#define get_I_max_image_length(in) getnbyte(in + 52, 4) 170141cc406Sopenharmony_ci 171141cc406Sopenharmony_ci/* 56-95 reserved */ 172141cc406Sopenharmony_ci 173141cc406Sopenharmony_ci#define get_I_finecrop(in) getbitfield(in + 96, 7, 1) 174141cc406Sopenharmony_ci#define get_I_ithresh(in) getbitfield(in + 96, 6, 1) 175141cc406Sopenharmony_ci#define get_I_ecd(in) getbitfield(in + 96, 3, 1) 176141cc406Sopenharmony_ci#define get_I_vblr(in) getbitfield(in + 96, 2, 1) 177141cc406Sopenharmony_ci#define get_I_elevator(in) getbitfield(in + 96, 1, 1) 178141cc406Sopenharmony_ci#define get_I_relcrop(in) getbitfield(in + 96, 0, 1) 179141cc406Sopenharmony_ci 180141cc406Sopenharmony_ci#define get_I_cdeskew(in) getbitfield(in + 97, 7, 1) 181141cc406Sopenharmony_ci#define get_I_ia(in) getbitfield(in + 97, 6, 1) 182141cc406Sopenharmony_ci#define get_I_patch(in) getbitfield(in + 97, 5, 1) 183141cc406Sopenharmony_ci#define get_I_nullmode(in) getbitfield(in + 97, 4, 1) 184141cc406Sopenharmony_ci#define get_I_sabre(in) getbitfield(in + 97, 3, 1) 185141cc406Sopenharmony_ci#define get_I_lddds(in) getbitfield(in + 97, 2, 1) 186141cc406Sopenharmony_ci#define get_I_uddds(in) getbitfield(in + 97, 1, 1) 187141cc406Sopenharmony_ci#define get_I_fixedgap(in) getbitfield(in + 97, 0, 1) 188141cc406Sopenharmony_ci 189141cc406Sopenharmony_ci#define get_I_hr_printer(in) getbitfield(in + 98, 6, 1) 190141cc406Sopenharmony_ci#define get_I_elev_100_250(in) getbitfield(in + 98, 5, 1) 191141cc406Sopenharmony_ci#define get_I_udds_individual(in) getbitfield(in + 98, 4, 1) 192141cc406Sopenharmony_ci#define get_I_auto_color(in) getbitfield(in + 98, 3, 1) 193141cc406Sopenharmony_ci#define get_I_wb(in) getbitfield(in + 98, 2, 1) 194141cc406Sopenharmony_ci#define get_I_es(in) getbitfield(in + 98, 1, 1) 195141cc406Sopenharmony_ci#define get_I_fc(in) getbitfield(in + 98, 0, 1) 196141cc406Sopenharmony_ci 197141cc406Sopenharmony_ci#define get_I_max_rate(in) getnbyte(in + 99, 2) 198141cc406Sopenharmony_ci#define get_I_buffer_size(in) getnbyte(in + 101, 4) 199141cc406Sopenharmony_ci 200141cc406Sopenharmony_ci/* ==================================================================== */ 201141cc406Sopenharmony_ci/* RESERVE UNIT */ 202141cc406Sopenharmony_ci 203141cc406Sopenharmony_ci#define RESERVE_UNIT_code 0x16 204141cc406Sopenharmony_ci#define RESERVE_UNIT_len 6 205141cc406Sopenharmony_ci 206141cc406Sopenharmony_ci/* ==================================================================== */ 207141cc406Sopenharmony_ci/* RELEASE UNIT */ 208141cc406Sopenharmony_ci 209141cc406Sopenharmony_ci#define RELEASE_UNIT_code 0x17 210141cc406Sopenharmony_ci#define RELEASE_UNIT_len 6 211141cc406Sopenharmony_ci 212141cc406Sopenharmony_ci/* ==================================================================== */ 213141cc406Sopenharmony_ci/* SCAN */ 214141cc406Sopenharmony_ci 215141cc406Sopenharmony_ci#define SCAN_code 0x1b 216141cc406Sopenharmony_ci#define SCAN_len 10 217141cc406Sopenharmony_ci 218141cc406Sopenharmony_ci#define set_SC_xfer_length(sb, val) sb[0x04] = (unsigned char)val 219141cc406Sopenharmony_ci 220141cc406Sopenharmony_ci/* ==================================================================== */ 221141cc406Sopenharmony_ci/* SEND DIAGNOSTIC */ 222141cc406Sopenharmony_ci 223141cc406Sopenharmony_ci#define SEND_DIAGNOSTIC_code 0x1d 224141cc406Sopenharmony_ci#define SEND_DIAGNOSTIC_len 6 225141cc406Sopenharmony_ci 226141cc406Sopenharmony_ci/* ==================================================================== */ 227141cc406Sopenharmony_ci/* SET WINDOW */ 228141cc406Sopenharmony_ci 229141cc406Sopenharmony_ci#define SET_WINDOW_code 0x24 230141cc406Sopenharmony_ci#define SET_WINDOW_len 10 231141cc406Sopenharmony_ci 232141cc406Sopenharmony_ci/* transfer length is header+descriptor (8+64) */ 233141cc406Sopenharmony_ci#define set_SW_xferlen(sb, len) putnbyte(sb + 0x06, len, 3) 234141cc406Sopenharmony_ci 235141cc406Sopenharmony_ci/* ==================================================================== */ 236141cc406Sopenharmony_ci/* GET WINDOW */ 237141cc406Sopenharmony_ci 238141cc406Sopenharmony_ci#define GET_WINDOW_code 0x25 239141cc406Sopenharmony_ci#define GET_WINDOW_len 10 240141cc406Sopenharmony_ci 241141cc406Sopenharmony_ci#define set_GW_single(sb, val) setbitfield(sb + 1, 1, 0, val) 242141cc406Sopenharmony_ci#define set_GW_wid(sb, len) sb[5] = len 243141cc406Sopenharmony_ci 244141cc406Sopenharmony_ci/* window transfer length is for following header+descriptor (8+64) */ 245141cc406Sopenharmony_ci#define set_GW_xferlen(sb, len) putnbyte(sb + 0x06, len, 3) 246141cc406Sopenharmony_ci 247141cc406Sopenharmony_ci/* ==================================================================== */ 248141cc406Sopenharmony_ci/* WINDOW HEADER, used by get and set */ 249141cc406Sopenharmony_ci 250141cc406Sopenharmony_ci#define WINDOW_HEADER_len 8 251141cc406Sopenharmony_ci 252141cc406Sopenharmony_ci/* header transfer length is for following descriptor (64) */ 253141cc406Sopenharmony_ci#define set_WH_data_len(sb, len) putnbyte(sb, len, 2) 254141cc406Sopenharmony_ci#define set_WH_desc_len(sb, len) putnbyte(sb + 0x06, len, 2) 255141cc406Sopenharmony_ci 256141cc406Sopenharmony_ci/* ==================================================================== */ 257141cc406Sopenharmony_ci/* WINDOW descriptor, used by get and set */ 258141cc406Sopenharmony_ci 259141cc406Sopenharmony_ci#define WINDOW_DESCRIPTOR_len 64 260141cc406Sopenharmony_ci 261141cc406Sopenharmony_ci#define set_WD_wid(sb, val) sb[0]=val 262141cc406Sopenharmony_ci#define WD_wid_front_binary 0x01 263141cc406Sopenharmony_ci#define WD_wid_back_binary 0x02 264141cc406Sopenharmony_ci#define WD_wid_front_color 0x03 265141cc406Sopenharmony_ci#define WD_wid_back_color 0x04 266141cc406Sopenharmony_ci 267141cc406Sopenharmony_ci/* color/gray = 100,150,200,240,300 */ 268141cc406Sopenharmony_ci/* binary = 200,240,300,400 */ 269141cc406Sopenharmony_ci#define set_WD_Xres(sb, val) putnbyte(sb + 0x02, val, 2) 270141cc406Sopenharmony_ci#define get_WD_Xres(sb) getnbyte(sb + 0x02, 2) 271141cc406Sopenharmony_ci 272141cc406Sopenharmony_ci/* color/gray = 100,150,200,240,300 */ 273141cc406Sopenharmony_ci/* binary = 200,240,300,400 */ 274141cc406Sopenharmony_ci#define set_WD_Yres(sb, val) putnbyte(sb + 0x04, val, 2) 275141cc406Sopenharmony_ci#define get_WD_Yres(sb) getnbyte(sb + 0x04, 2) 276141cc406Sopenharmony_ci 277141cc406Sopenharmony_ci#define set_WD_ULX(sb, val) putnbyte(sb + 0x06, val, 4) 278141cc406Sopenharmony_ci#define get_WD_ULX(sb) getnbyte(sb + 0x06, 4) 279141cc406Sopenharmony_ci 280141cc406Sopenharmony_ci#define set_WD_ULY(sb, val) putnbyte(sb + 0x0a, val, 4) 281141cc406Sopenharmony_ci#define get_WD_ULY(sb) getnbyte(sb + 0x0a, 4) 282141cc406Sopenharmony_ci 283141cc406Sopenharmony_ci#define set_WD_width(sb, val) putnbyte(sb + 0x0e, val, 4) 284141cc406Sopenharmony_ci#define get_WD_width(sb) getnbyte(sb + 0x0e, 4) 285141cc406Sopenharmony_ci 286141cc406Sopenharmony_ci#define set_WD_length(sb, val) putnbyte(sb + 0x12, val, 4) 287141cc406Sopenharmony_ci#define get_WD_length(sb) getnbyte(sb + 0x12, 4) 288141cc406Sopenharmony_ci 289141cc406Sopenharmony_ci#define set_WD_brightness(sb, val) sb[0x16] = val 290141cc406Sopenharmony_ci#define get_WD_brightness(sb) sb[0x16] 291141cc406Sopenharmony_ci 292141cc406Sopenharmony_ci#define set_WD_threshold(sb, val) sb[0x17] = val 293141cc406Sopenharmony_ci#define get_WD_threshold(sb) sb[0x17] 294141cc406Sopenharmony_ci 295141cc406Sopenharmony_ci#define set_WD_contrast(sb, val) sb[0x18] = val 296141cc406Sopenharmony_ci#define get_WD_contrast(sb) sb[0x18] 297141cc406Sopenharmony_ci 298141cc406Sopenharmony_ci#define set_WD_composition(sb, val) sb[0x19] = val 299141cc406Sopenharmony_ci#define get_WD_composition(sb) sb[0x19] 300141cc406Sopenharmony_ci#define WD_compo_LINEART 0 301141cc406Sopenharmony_ci#define WD_compo_HALFTONE 1 302141cc406Sopenharmony_ci#define WD_compo_MULTILEVEL 5 303141cc406Sopenharmony_ci 304141cc406Sopenharmony_ci/* 1, 8, or 24 */ 305141cc406Sopenharmony_ci#define set_WD_bitsperpixel(sb, val) sb[0x1a] = val 306141cc406Sopenharmony_ci#define get_WD_bitsperpixel(sb) sb[0x1a] 307141cc406Sopenharmony_ci 308141cc406Sopenharmony_ci/* not used? */ 309141cc406Sopenharmony_ci#define set_WD_halftone(sb, val) putnbyte(sb + 0x1b, val, 2) 310141cc406Sopenharmony_ci#define get_WD_halftone(sb) getnbyte(sb + 0x1b, 2) 311141cc406Sopenharmony_ci 312141cc406Sopenharmony_ci#define set_WD_rif(sb, val) setbitfield(sb + 0x1d, 1, 7, val) 313141cc406Sopenharmony_ci#define get_WD_rif(sb) getbitfield(sb + 0x1d, 7, 1) 314141cc406Sopenharmony_ci 315141cc406Sopenharmony_ci/* always set to 1? */ 316141cc406Sopenharmony_ci#define set_WD_bitorder(sb, val) putnbyte(sb + 0x1e, val, 2) 317141cc406Sopenharmony_ci#define get_WD_bitorder(sb) getnbyte(sb + 0x1e, 2) 318141cc406Sopenharmony_ci 319141cc406Sopenharmony_ci#define set_WD_compress_type(sb, val) sb[0x20] = val 320141cc406Sopenharmony_ci#define get_WD_compress_type(sb) sb[0x20] 321141cc406Sopenharmony_ci#define WD_compr_NONE 0 322141cc406Sopenharmony_ci#define WD_compr_FAXG4 3 323141cc406Sopenharmony_ci#define WD_compr_JPEG 0x80 324141cc406Sopenharmony_ci 325141cc406Sopenharmony_ci/* not used? */ 326141cc406Sopenharmony_ci#define set_WD_compress_arg(sb, val) sb[0x21] = val 327141cc406Sopenharmony_ci#define get_WD_compress_arg(sb) sb[0x21] 328141cc406Sopenharmony_ci 329141cc406Sopenharmony_ci/* kodak specific stuff starts here */ 330141cc406Sopenharmony_ci#define set_WD_noise_filter(sb, val) setbitfield(sb + 40, 7, 2, val) 331141cc406Sopenharmony_ci#define WD_nf_NONE 0 332141cc406Sopenharmony_ci#define WD_nf_LONE 1 333141cc406Sopenharmony_ci#define WD_nf_MAJORITY 2 334141cc406Sopenharmony_ci#define get_WD_noise_filter(sb) getbitfield(sb + 40, 7, 1) 335141cc406Sopenharmony_ci 336141cc406Sopenharmony_ci#define set_WD_allow_zero(sb, val) setbitfield(sb + 40, 1, 1, val) 337141cc406Sopenharmony_ci#define get_WD_allow_zero(sb, val) getbitfield(sb + 40, 1, 1) 338141cc406Sopenharmony_ci 339141cc406Sopenharmony_ci#define set_WD_vblr(sb, val) setbitfield(sb + 40, 1, 0, val) 340141cc406Sopenharmony_ci#define get_WD_vblr(sb, val) getbitfield(sb + 40, 0, 1) 341141cc406Sopenharmony_ci 342141cc406Sopenharmony_ci#define set_WD_image_overscan(sb, val) putnbyte(sb + 41, val, 2) 343141cc406Sopenharmony_ci 344141cc406Sopenharmony_ci#define set_WD_IS(sb, val) setbitfield(sb + 43, 1, 7, val) 345141cc406Sopenharmony_ci 346141cc406Sopenharmony_ci#define set_WD_deskew(sb, val) setbitfield(sb + 43, 1, 6, val) 347141cc406Sopenharmony_ci#define WD_deskew_DISABLE 0 348141cc406Sopenharmony_ci#define WD_deskew_ENABLE 1 349141cc406Sopenharmony_ci 350141cc406Sopenharmony_ci#define set_WD_BR(sb, val) setbitfield(sb + 43, 1, 5, val) 351141cc406Sopenharmony_ci#define set_WD_BF(sb, val) setbitfield(sb + 43, 1, 4, val) 352141cc406Sopenharmony_ci#define set_WD_ED(sb, val) setbitfield(sb + 43, 1, 3, val) 353141cc406Sopenharmony_ci#define set_WD_HR(sb, val) setbitfield(sb + 43, 1, 2, val) 354141cc406Sopenharmony_ci 355141cc406Sopenharmony_ci#define set_WD_cropping(sb, val) setbitfield(sb + 43, 3, 0, val) 356141cc406Sopenharmony_ci#define WD_crop_AUTO 0 357141cc406Sopenharmony_ci#define WD_crop_FIXED 1 358141cc406Sopenharmony_ci#define WD_crop_RELATIVE 2 359141cc406Sopenharmony_ci#define WD_crop_FINE 3 360141cc406Sopenharmony_ci 361141cc406Sopenharmony_ci#define set_WD_ithresh(sb, val) setbitfield(sb + 44, 1, 7, val) 362141cc406Sopenharmony_ci#define WD_ithresh_DISABLE 0 363141cc406Sopenharmony_ci#define WD_ithresh_ENABLE 1 364141cc406Sopenharmony_ci 365141cc406Sopenharmony_ci#define set_WD_dropout_color(sb, val) setbitfield(sb + 44, 7, 0, val) 366141cc406Sopenharmony_ci 367141cc406Sopenharmony_ci#define set_WD_dropout_bg(sb, val) sb[45] = val 368141cc406Sopenharmony_ci 369141cc406Sopenharmony_ci#define set_WD_dropout_thresh(sb, val) sb[46] = val 370141cc406Sopenharmony_ci 371141cc406Sopenharmony_ci#define set_WD_dropout_source(sb, val) sb[47] = val 372141cc406Sopenharmony_ci 373141cc406Sopenharmony_ci#define set_WD_disable_gamma(sb, val) sb[48] = val 374141cc406Sopenharmony_ci 375141cc406Sopenharmony_ci#define set_WD_ortho_rotation(sb, val) sb[49] = val 376141cc406Sopenharmony_ci 377141cc406Sopenharmony_ci#define set_WD_fine_crop_max(sb, val) putnbyte(sb + 50, val, 2) 378141cc406Sopenharmony_ci 379141cc406Sopenharmony_ci#define set_WD_color_detect_thresh(sb, val) sb[52] = val 380141cc406Sopenharmony_ci 381141cc406Sopenharmony_ci#define set_WD_color_detect_area(sb, val) sb[53] = val 382141cc406Sopenharmony_ci 383141cc406Sopenharmony_ci#define set_WD_border_add(sb, val) sb[54] = val 384141cc406Sopenharmony_ci 385141cc406Sopenharmony_ci#define max_WDB_size 0xc8 386141cc406Sopenharmony_ci 387141cc406Sopenharmony_ci/* ==================================================================== */ 388141cc406Sopenharmony_ci/* READ */ 389141cc406Sopenharmony_ci 390141cc406Sopenharmony_ci#define READ_code 0x28 391141cc406Sopenharmony_ci#define READ_len 10 392141cc406Sopenharmony_ci 393141cc406Sopenharmony_ci/* ==================================================================== */ 394141cc406Sopenharmony_ci/* SEND */ 395141cc406Sopenharmony_ci 396141cc406Sopenharmony_ci#define SEND_code 0x2a 397141cc406Sopenharmony_ci#define SEND_len 10 398141cc406Sopenharmony_ci 399141cc406Sopenharmony_ci/* ==================================================================== */ 400141cc406Sopenharmony_ci/* READ and SEND are basically the same, so the following 'SR' macros */ 401141cc406Sopenharmony_ci 402141cc406Sopenharmony_ci/* output */ 403141cc406Sopenharmony_ci#define set_SR_datatype_code(sb, val) sb[0x02] = val 404141cc406Sopenharmony_ci#define SR_datatype_imagedata 0x00 405141cc406Sopenharmony_ci#define SR_datatype_random 0x80 406141cc406Sopenharmony_ci#define SR_datatype_imageheader 0x81 407141cc406Sopenharmony_ci#define SR_len_imageheader 1088 408141cc406Sopenharmony_ci 409141cc406Sopenharmony_ci#define set_SR_datatype_qual(sb, val) memcpy(sb + 4, val, 2) 410141cc406Sopenharmony_ci#define set_SR_xfer_length(sb, val) putnbyte(sb + 6, val, 3) 411141cc406Sopenharmony_ci 412141cc406Sopenharmony_ci/* if the data type is 'imageheader': */ 413141cc406Sopenharmony_ci#define get_SR_ih_header_length(in) getnbyte(in + 0x00, 4) 414141cc406Sopenharmony_ci#define get_SR_ih_image_length(in) getnbyte(in + 0x04, 4) 415141cc406Sopenharmony_ci#define get_SR_ih_image_id(in) in[8] 416141cc406Sopenharmony_ci#define get_SR_ih_resolution(in) getnbyte(in + 9, 2) 417141cc406Sopenharmony_ci#define get_SR_ih_ulx(in) getnbyte(in + 11, 4) 418141cc406Sopenharmony_ci#define get_SR_ih_uly(in) getnbyte(in + 15, 4) 419141cc406Sopenharmony_ci#define get_SR_ih_width(in) getnbyte(in + 19, 4) 420141cc406Sopenharmony_ci#define get_SR_ih_length(in) getnbyte(in + 23, 4) 421141cc406Sopenharmony_ci#define get_SR_ih_bpp(in) in[27] 422141cc406Sopenharmony_ci#define get_SR_ih_comp_type(in) in[28] 423141cc406Sopenharmony_ci#define get_SR_ih_ACD(in) getbit(in + 29, 1, 5) 424141cc406Sopenharmony_ci#define get_SR_ih_MF(in) getbit(in + 29, 1, 4) 425141cc406Sopenharmony_ci#define get_SR_ih_RIF(in) getbit(in + 29, 1, 2) 426141cc406Sopenharmony_ci#define get_SR_ih_ID(in) getbit(in + 29, 1, 1) 427141cc406Sopenharmony_ci#define get_SR_ih_DE(in) getbit(in + 29, 1, 0) 428141cc406Sopenharmony_ci#define get_SR_ih_skew_angle(in) getnbyte(in + 30, 2) 429141cc406Sopenharmony_ci#define get_SR_ih_ia_level(in) in[32] 430141cc406Sopenharmony_ci#define get_SR_ih_ia(in) getnbyte(in + 33, 60) 431141cc406Sopenharmony_ci#define get_SR_ih_print_string(in) getnbyte(in + 93, 60) 432141cc406Sopenharmony_ci#define get_SR_ih_seqence_counter(in) getnbyte(in + 173, 4) 433141cc406Sopenharmony_ci#define get_SR_ih_ia_f1_definition(in) in[177] 434141cc406Sopenharmony_ci#define get_SR_ih_ia_f1_value(in) getnbyte(in + 178, 18) 435141cc406Sopenharmony_ci#define get_SR_ih_ia_f2_definition(in) in[196] 436141cc406Sopenharmony_ci#define get_SR_ih_ia_f2_value(in) getnbyte(in + 197, 18) 437141cc406Sopenharmony_ci#define get_SR_ih_ia_f3_definition(in) in[215] 438141cc406Sopenharmony_ci#define get_SR_ih_ia_f3_value(in) getnbyte(in + 216, 18) 439141cc406Sopenharmony_ci#define get_SR_ih_ia_f4_definition(in) in[234] 440141cc406Sopenharmony_ci#define get_SR_ih_ia_f5_value(in) getnbyte(in + 235, 18) 441141cc406Sopenharmony_ci#define get_SR_ih_PD(in) getbit(in + 253, 1, 7) 442141cc406Sopenharmony_ci#define get_SR_ih_patch_type(in) getbit(in + 253, 0x7f, 0) 443141cc406Sopenharmony_ci#define get_SR_ih_deskew_confidence(in) in[255] 444141cc406Sopenharmony_ci#define get_SR_ih_bt_contrast_perc(in) in[256] 445141cc406Sopenharmony_ci#define get_SR_ih_bt_contrast(in) getnbyte(in + 257, 2) 446141cc406Sopenharmony_ci#define get_SR_ih_bt_threshold(in) in[259] 447141cc406Sopenharmony_ci#define get_SR_ih_sum_histogram(in) getnbyte(in + 260, 256) 448141cc406Sopenharmony_ci#define get_SR_ih_diff_histogram(in) getnbyte(in + 516, 256) 449141cc406Sopenharmony_ci#define get_SR_ih_gamma_table(in) getnbyte(in + 772, 256) 450141cc406Sopenharmony_ci#define get_SR_ih_auto_color_area(in) in[1028] 451141cc406Sopenharmony_ci#define get_SR_ih_auto_color_thresh(in) in[1029] 452141cc406Sopenharmony_ci 453141cc406Sopenharmony_ci/* ==================================================================== */ 454141cc406Sopenharmony_ci/* if the data type is 'random', we have all kinds of 2 byte */ 455141cc406Sopenharmony_ci/* qualifiers and oddly sized commands. some are bidirectional */ 456141cc406Sopenharmony_ci/* while others are only send or read */ 457141cc406Sopenharmony_ci 458141cc406Sopenharmony_ci/* all payloads for these seem to start with 4 byte inclusive length? */ 459141cc406Sopenharmony_ci#define set_SR_payload_len(sb, val) putnbyte(sb, val, 4) 460141cc406Sopenharmony_ci 461141cc406Sopenharmony_ci/* */ 462141cc406Sopenharmony_ci#define SR_qual_jpeg_quant "JQ" /*both*/ 463141cc406Sopenharmony_ci#define SR_len_jpeg_quant 262 /*front and back tables*/ 464141cc406Sopenharmony_ci 465141cc406Sopenharmony_ci/* */ 466141cc406Sopenharmony_ci#define SR_qual_config "SC" /*both*/ 467141cc406Sopenharmony_ci#define SR_len_config 512 /*lots of stuff*/ 468141cc406Sopenharmony_ci#define set_SR_sc_length(in,val) putnbyte(in, val, 4) 469141cc406Sopenharmony_ci#define get_SR_sc_length(in) getnbyte(in, 4) 470141cc406Sopenharmony_ci 471141cc406Sopenharmony_ci#define set_SR_sc_io1(in,val) putnbyte(in + 4, val, 1) 472141cc406Sopenharmony_ci#define get_SR_sc_io1(in) getnbyte(in + 4, 1) 473141cc406Sopenharmony_ci#define set_SR_sc_io2(in,val) putnbyte(in + 5, val, 1) 474141cc406Sopenharmony_ci#define get_SR_sc_io2(in) getnbyte(in + 5, 1) 475141cc406Sopenharmony_ci#define set_SR_sc_io3(in,val) putnbyte(in + 6, val, 1) 476141cc406Sopenharmony_ci#define get_SR_sc_io3(in) getnbyte(in + 6, 1) 477141cc406Sopenharmony_ci#define set_SR_sc_io4(in,val) putnbyte(in + 7, val, 1) 478141cc406Sopenharmony_ci#define get_SR_sc_io4(in) getnbyte(in + 7, 1) 479141cc406Sopenharmony_ci#define SR_sc_io_none 0 480141cc406Sopenharmony_ci#define SR_sc_io_front_binary 1 481141cc406Sopenharmony_ci#define SR_sc_io_rear_binary 2 482141cc406Sopenharmony_ci#define SR_sc_io_front_color 3 483141cc406Sopenharmony_ci#define SR_sc_io_rear_color 4 484141cc406Sopenharmony_ci 485141cc406Sopenharmony_ci#define set_SR_sc_trans_to(in,val) putnbyte(in + 13, val, 2) 486141cc406Sopenharmony_ci#define get_SR_sc_trans_to(in) getnbyte(in + 13, 2) 487141cc406Sopenharmony_ci#define set_SR_sc_trans_to_resp(in,val) putnbyte(in + 15, val, 1) 488141cc406Sopenharmony_ci#define get_SR_sc_trans_to_resp(in) getnbyte(in + 15, 1) 489141cc406Sopenharmony_ci 490141cc406Sopenharmony_ci#define get_SR_sc_DLS(in) getbitfield(in + 16, 7, 1) 491141cc406Sopenharmony_ci#define set_SR_sc_DLS(in, val) setbitfield(in + 16, 1, 7) 492141cc406Sopenharmony_ci#define get_SR_sc_DMS(in) getbitfield(in + 16, 6, 1) 493141cc406Sopenharmony_ci#define set_SR_sc_DMS(in, val) setbitfield(in + 16, 1, 6) 494141cc406Sopenharmony_ci#define get_SR_sc_DRS(in) getbitfield(in + 16, 5, 1) 495141cc406Sopenharmony_ci#define set_SR_sc_DRS(in, val) setbitfield(in + 16, 1, 5) 496141cc406Sopenharmony_ci#define get_SR_sc_UD_mode(in) getbitfield(in + 16, 0, 0x1f) 497141cc406Sopenharmony_ci#define set_SR_sc_UD_mode(in, val) setbitfield(in + 16, 0x1f, 0) 498141cc406Sopenharmony_ci#define get_SR_sc_LD_length(in) getnbyte(in + 17, 2) 499141cc406Sopenharmony_ci#define set_SR_sc_LD_length(in, val) setnbyte(in + 17, 2) 500141cc406Sopenharmony_ci#define get_SR_sc_DF_resp(in) getnbyte(in + 19, 1) 501141cc406Sopenharmony_ci#define set_SR_sc_DF_resp(in, val) setnbyte(in + 19, 1) 502141cc406Sopenharmony_ci 503141cc406Sopenharmony_ci#define get_SR_sc_TP_mode(in) getnbyte(in + 20, 1) 504141cc406Sopenharmony_ci#define get_SR_sc_CPT(in) getbitfield(in + 21, 0, 1) 505141cc406Sopenharmony_ci#define get_SR_sc_POD_mode(in) getnbyte(in + 22, 2) 506141cc406Sopenharmony_ci#define get_SR_sc_batch_mode(in) getnbyte(in + 24, 2) 507141cc406Sopenharmony_ci#define get_SR_sc_batch_level(in) getnbyte(in + 26, 1) 508141cc406Sopenharmony_ci#define get_SR_sc_start_batch(in) getnbyte(in + 27, 1) 509141cc406Sopenharmony_ci#define get_SR_sc_end_batch(in) getnbyte(in + 28, 1) 510141cc406Sopenharmony_ci#define get_SR_sc_patch_conf_tone(in) getnbyte(in + 29, 1) 511141cc406Sopenharmony_ci 512141cc406Sopenharmony_ci#define get_SR_sc_T6_patch(in) getbitfield(in + 30, 7, 1) 513141cc406Sopenharmony_ci#define get_SR_sc_T5_patch(in) getbitfield(in + 30, 6, 1) 514141cc406Sopenharmony_ci#define get_SR_sc_T4_patch(in) getbitfield(in + 30, 5, 1) 515141cc406Sopenharmony_ci#define get_SR_sc_T3_patch(in) getbitfield(in + 30, 4, 1) 516141cc406Sopenharmony_ci#define get_SR_sc_T2_patch(in) getbitfield(in + 30, 3, 1) 517141cc406Sopenharmony_ci#define get_SR_sc_T1_patch(in) getbitfield(in + 30, 2, 1) 518141cc406Sopenharmony_ci#define get_SR_sc_trans_patch(in) getbitfield(in + 30, 0, 3) 519141cc406Sopenharmony_ci 520141cc406Sopenharmony_ci#define get_SR_sc_IA_A_start(in) getnbyte(in + 31, 18) 521141cc406Sopenharmony_ci#define get_SR_sc_IA_B_start(in) getnbyte(in + 49, 18) 522141cc406Sopenharmony_ci#define get_SR_sc_IA_C_start(in) getnbyte(in + 67, 18) 523141cc406Sopenharmony_ci#define get_SR_sc_IA_D_start(in) getnbyte(in + 85, 18) 524141cc406Sopenharmony_ci 525141cc406Sopenharmony_ci#define get_SR_sc_IA_A_def(in) getnbyte(in + 103, 1) 526141cc406Sopenharmony_ci#define get_SR_sc_IA_B_def(in) getnbyte(in + 104, 1) 527141cc406Sopenharmony_ci#define get_SR_sc_IA_C_def(in) getnbyte(in + 105, 1) 528141cc406Sopenharmony_ci#define get_SR_sc_IA_D_def(in) getnbyte(in + 106, 1) 529141cc406Sopenharmony_ci 530141cc406Sopenharmony_ci#define get_SR_sc_IA_ltf_3(in) getnbyte(in + 107, 1) 531141cc406Sopenharmony_ci#define get_SR_sc_IA_ltf_2(in) getnbyte(in + 108, 1) 532141cc406Sopenharmony_ci#define get_SR_sc_IA_ltf_1(in) getnbyte(in + 109, 1) 533141cc406Sopenharmony_ci 534141cc406Sopenharmony_ci#define get_SR_sc_DP1_pos(in) getnbyte(in + 110, 4) 535141cc406Sopenharmony_ci#define get_SR_sc_hires_mode(in) getbitfield(in + 114, 4, 0xf) 536141cc406Sopenharmony_ci#define get_SR_sc_DP1_font(in) getbitfield(in + 114, 0, 0xf) 537141cc406Sopenharmony_ci#define get_SR_sc_DP1_orient(in) getnbyte(in + 115, 1) 538141cc406Sopenharmony_ci#define get_SR_sc_DP1_IA_format(in) getnbyte(in + 116, 1) 539141cc406Sopenharmony_ci#define get_SR_sc_DP1_date_format(in) getnbyte(in + 117, 1) 540141cc406Sopenharmony_ci#define get_SR_sc_DP1_date_delim(in) getnbyte(in + 118, 1) 541141cc406Sopenharmony_ci#define get_SR_sc_DP1_start_seq(in) getnbyte(in + 119, 4) 542141cc406Sopenharmony_ci#define get_SR_sc_DP1_seq_date_format(in) getnbyte(in + 123, 1) 543141cc406Sopenharmony_ci#define get_SR_sc_DP1_seq_print_width(in) getnbyte(in + 124, 1) 544141cc406Sopenharmony_ci 545141cc406Sopenharmony_ci#define get_SR_sc_DP1_msg1(in) getnbyte(in + 125, 40) 546141cc406Sopenharmony_ci#define get_SR_sc_DP1_msg2(in) getnbyte(in + 165, 40) 547141cc406Sopenharmony_ci#define get_SR_sc_DP1_msg3(in) getnbyte(in + 205, 40) 548141cc406Sopenharmony_ci#define get_SR_sc_DP1_msg4(in) getnbyte(in + 245, 40) 549141cc406Sopenharmony_ci#define get_SR_sc_DP1_msg5(in) getnbyte(in + 285, 40) 550141cc406Sopenharmony_ci#define get_SR_sc_DP1_msg6(in) getnbyte(in + 325, 40) 551141cc406Sopenharmony_ci#define get_SR_sc_DP1_l1_template(in) getnbyte(in + 365, 20) 552141cc406Sopenharmony_ci#define get_SR_sc_DP1_l2_template(in) getnbyte(in + 385, 20) 553141cc406Sopenharmony_ci#define get_SR_sc_DP1_l3_template(in) getnbyte(in + 405, 20) 554141cc406Sopenharmony_ci 555141cc406Sopenharmony_ci#define get_SR_sc_UDFK1(in) getnbyte(in + 425, 1) 556141cc406Sopenharmony_ci#define get_SR_sc_UDFK2(in) getnbyte(in + 426, 1) 557141cc406Sopenharmony_ci#define get_SR_sc_UDFK3(in) getnbyte(in + 427, 1) 558141cc406Sopenharmony_ci#define get_SR_sc_MPASS(in) getbitfield(in + 428, 1, 1) 559141cc406Sopenharmony_ci#define get_SR_sc_CE(in) getbitfield(in + 428, 0, 1) 560141cc406Sopenharmony_ci#define get_SR_sc_elevator_mode(in) getnbyte(in + 429, 1) 561141cc406Sopenharmony_ci#define get_SR_sc_stacking_mode(in) getnbyte(in + 430, 1) 562141cc406Sopenharmony_ci 563141cc406Sopenharmony_ci#define get_SR_sc_energy_star_to(in) getnbyte(in + 433, 1) 564141cc406Sopenharmony_ci 565141cc406Sopenharmony_ci#define get_SR_sc_PR1(in) getbitfield(in + 435, 3, 1) 566141cc406Sopenharmony_ci#define get_SR_sc_PR2(in) getbitfield(in + 435, 2, 1) 567141cc406Sopenharmony_ci#define get_SR_sc_PR3(in) getbitfield(in + 435, 1, 1) 568141cc406Sopenharmony_ci#define get_SR_sc_PR4(in) getbitfield(in + 435, 0, 1) 569141cc406Sopenharmony_ci 570141cc406Sopenharmony_ci/* */ 571141cc406Sopenharmony_ci#define SR_qual_color_table "CT" /*read*/ 572141cc406Sopenharmony_ci#define SR_len_color_table 52 573141cc406Sopenharmony_ci 574141cc406Sopenharmony_ci/* */ 575141cc406Sopenharmony_ci#define SR_qual_color_table "CT" /*read*/ 576141cc406Sopenharmony_ci#define SR_len_color_table 52 577141cc406Sopenharmony_ci 578141cc406Sopenharmony_ci/* */ 579141cc406Sopenharmony_ci#define SR_qual_clear "CB" /*send*/ 580141cc406Sopenharmony_ci#define SR_len_clear 0 581141cc406Sopenharmony_ci 582141cc406Sopenharmony_ci/* */ 583141cc406Sopenharmony_ci#define SR_qual_end "GX" /*send*/ 584141cc406Sopenharmony_ci#define SR_len_end 0 585141cc406Sopenharmony_ci 586141cc406Sopenharmony_ci/* local and gmt time commands, same format */ 587141cc406Sopenharmony_ci#define SR_qual_clock "LC" /*both*/ 588141cc406Sopenharmony_ci#define SR_qual_gmt "GT" /*send*/ 589141cc406Sopenharmony_ci#define SR_len_time 10 590141cc406Sopenharmony_ci#define set_SR_time_hour(sb, val) putnbyte(sb+4, val, 1) 591141cc406Sopenharmony_ci#define set_SR_time_min(sb, val) putnbyte(sb+5, val, 1) 592141cc406Sopenharmony_ci#define set_SR_time_mon(sb, val) putnbyte(sb+6, val, 1) 593141cc406Sopenharmony_ci#define set_SR_time_day(sb, val) putnbyte(sb+7, val, 1) 594141cc406Sopenharmony_ci#define set_SR_time_year(sb, val) putnbyte(sb+8, val, 2) 595141cc406Sopenharmony_ci 596141cc406Sopenharmony_ci/* */ 597141cc406Sopenharmony_ci#define SR_qual_lamp "LD" /*????*/ 598141cc406Sopenharmony_ci#define SR_len_lamp 0 /*????*/ 599141cc406Sopenharmony_ci 600141cc406Sopenharmony_ci/* */ 601141cc406Sopenharmony_ci#define SR_qual_log_en "L0" /*read*/ 602141cc406Sopenharmony_ci#define SR_qual_log_fr "L1" /*read*/ 603141cc406Sopenharmony_ci#define SR_qual_log_it "L2" /*read*/ 604141cc406Sopenharmony_ci#define SR_qual_log_de "L3" /*read*/ 605141cc406Sopenharmony_ci#define SR_qual_log_br "L4" /*read*/ 606141cc406Sopenharmony_ci#define SR_qual_log_jp "L5" /*read*/ 607141cc406Sopenharmony_ci#define SR_qual_log_nl "L6" /*read*/ 608141cc406Sopenharmony_ci#define SR_qual_log_es "L7" /*read*/ 609141cc406Sopenharmony_ci#define SR_qual_log_cns "L8" /*read*/ 610141cc406Sopenharmony_ci#define SR_qual_log_cnt "L9" /*read*/ 611141cc406Sopenharmony_ci#define SR_qual_log_ko "LA" /*read*/ 612141cc406Sopenharmony_ci#define SR_qual_log_ru "LB" /*read*/ 613141cc406Sopenharmony_ci#define SR_qual_log_cz "LE" /*read*/ 614141cc406Sopenharmony_ci#define SR_qual_log_tr "LF" /*read*/ 615141cc406Sopenharmony_ci 616141cc406Sopenharmony_ci/* */ 617141cc406Sopenharmony_ci#define SR_qual_startstop "SS" /*send*/ 618141cc406Sopenharmony_ci#define SR_len_startstop 5 619141cc406Sopenharmony_ci#define set_SR_startstop_cmd(sb, val) putnbyte(sb+4, val, 1) 620141cc406Sopenharmony_ci 621141cc406Sopenharmony_ci/* */ 622141cc406Sopenharmony_ci#define SR_qual_media "CM" /*read*/ 623141cc406Sopenharmony_ci#define SR_len_media 5 624141cc406Sopenharmony_ci#define get_SR_media_status(sb, val) getnbyte(sb+4, 1) 625141cc406Sopenharmony_ci 626141cc406Sopenharmony_ci/* */ 627141cc406Sopenharmony_ci#define SR_qual_img_cal "IC" /*send*/ 628141cc406Sopenharmony_ci#define SR_len_img_cal 0 629141cc406Sopenharmony_ci 630141cc406Sopenharmony_ci/* */ 631141cc406Sopenharmony_ci#define SR_qual_udds_cal "UC" /*send*/ 632141cc406Sopenharmony_ci#define SR_len_udds_cal 0 633141cc406Sopenharmony_ci 634141cc406Sopenharmony_ci/* ==================================================================== */ 635141cc406Sopenharmony_ci/* WRITE BUFFER */ 636141cc406Sopenharmony_ci 637141cc406Sopenharmony_ci#define WRITE_BUFFER_code 0x3b 638141cc406Sopenharmony_ci#define WRITE_BUFFER_len 10 639141cc406Sopenharmony_ci 640141cc406Sopenharmony_ci#define set_WB_mode(sb, val) setbitfield(sb + 0x01, 7, 0, val) 641141cc406Sopenharmony_ci#define WB_mode_front 6 642141cc406Sopenharmony_ci#define WB_mode_back 7 643141cc406Sopenharmony_ci#define set_WB_buffer_id(sb, val) sb[0x02] = (unsigned char)val 644141cc406Sopenharmony_ci#define WB_buffer_id_block(sb, val) 0 645141cc406Sopenharmony_ci#define WB_buffer_id_last(sb, val) 1 646141cc406Sopenharmony_ci#define set_WB_buffer_offset(sb, val) putnbyte(sb + 3, val, 3) 647141cc406Sopenharmony_ci#define set_WB_list_length(sb, val) putnbyte(sb + 6, val, 3) 648141cc406Sopenharmony_ci 649141cc406Sopenharmony_ci#endif 650