1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649
|
#ifndef KODAK_CMD_H
#define KODAK_CMD_H
/*
* Part of SANE - Scanner Access Now Easy.
*
* Please see to opening comments in kodak.c
*/
/* ==================================================================== */
/* helper char array manipulation functions */
static void
setbitfield (unsigned char *pageaddr, int mask, int shift, int val)
{
*pageaddr = (*pageaddr & ~(mask << shift)) | ((val & mask) << shift);
}
static int
getbitfield (unsigned char *pageaddr, int shift, int mask)
{
return ((*pageaddr >> shift) & mask);
}
static int
getnbyte (unsigned char *pnt, int nbytes)
{
unsigned int result = 0;
int i;
for (i = 0; i < nbytes; i++)
result = (result << 8) | (pnt[i] & 0xff);
return result;
}
static void
putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
{
int i;
for (i = nbytes - 1; i >= 0; i--) {
pnt[i] = value & 0xff;
value = value >> 8;
}
}
/* ==================================================================== */
/* SCSI commands */
#define set_SCSI_opcode(out, val) out[0]=val
#define set_SCSI_lun(out, val) setbitfield(out + 1, 7, 5, val)
/* ==================================================================== */
/* TEST_UNIT_READY */
#define TEST_UNIT_READY_code 0x00
#define TEST_UNIT_READY_len 6
/* ==================================================================== */
/* REQUEST_SENSE */
/* out */
#define REQUEST_SENSE_code 0x03
#define REQUEST_SENSE_len 6
#define RS_return_size 0x12
/* in */
#define get_RS_information_valid(b) getbitfield(b + 0x00, 7, 1)
#define get_RS_error_code(b) getbitfield(b + 0x00, 0, 0x7f)
#define RS_error_code_current 0x70
#define RS_error_code_deferred 0x71
#define get_RS_segment_num(b) b[1]
#define get_RS_filemark(b) getbitfield(b + 0x02, 7, 1)
#define get_RS_EOM(b) getbitfield(b + 0x02, 6, 1)
#define get_RS_ILI(b) getbitfield(b + 0x02, 5, 1)
#define get_RS_sense_key(b) getbitfield(b + 0x02, 0, 0x0f)
#define get_RS_information(b) getnbyte(b+0x03, 4)
#define get_RS_additional_length(b) b[0x07]
#define get_RS_cmd_info(b) getnbyte(b+8, 4)
#define get_RS_ASC(b) b[0x0c]
#define get_RS_ASCQ(b) b[0x0d]
#define get_RS_FRUC(b) b[0x0e]
#define get_RS_SKSV(b) getbitfield(b+0x0f,7,1)
#define get_RS_SKSB(b) getnbyte(b+0x0f, 3)
/* ==================================================================== */
/* INQUIRY */
/* out */
#define INQUIRY_code 0x12
#define INQUIRY_len 6
#define set_I_evpd(out, val) setbitfield(out + 1, 1, 0, val)
#define set_I_page_code(out, val) out[0x02]=val
#define I_page_code_default 0
#define set_I_data_length(out,n) out[0x04]=n
#define I_data_len 128
/* in */
#define get_I_periph_qual(in) getbitfield(in, 5, 7)
#define I_periph_qual_valid 0x00
#define I_periph_qual_nolun 0x03
#define get_I_periph_devtype(in) getbitfield(in, 0, 0x1f)
#define I_periph_devtype_scanner 0x06
#define I_periph_devtype_unknown 0x1f
/* don't use these, until vendor */
#define get_I_rmb(in) getbitfield(in + 1, 7, 1)
#define get_I_devtype_qual(in) getbitfield(in + 1, 0, 0x7f)
#define get_I_iso_version(in) getbitfield(in + 2, 6, 3)
#define get_I_ecma_version(in) getbitfield(in + 2, 3, 7)
#define get_I_ansi_version(in) getbitfield(in + 2, 0, 7)
#define get_I_aenc(in) getbitfield(in + 3, 7, 1)
#define get_I_trmiop(in) getbitfield(in + 3, 6, 1)
#define get_I_resonse_format(in) getbitfield(in + 3, 0, 0x0f)
#define get_I_length(in) getnbyte(in + 4, 1)
#define get_I_reladr(in) getbitfield(in + 7, 7, 1)
#define get_I_wbus32(in) getbitfield(in + 7, 6, 1)
#define get_I_wbus16(in) getbitfield(in + 7, 5, 1)
#define get_I_sync(in) getbitfield(in + 7, 4, 1)
#define get_I_linked(in) getbitfield(in + 7, 3, 1)
#define get_I_cmdque(in) getbitfield(in + 7, 1, 1)
#define get_I_sftre(in) getbitfield(in + 7, 0, 1)
#define get_I_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
0x08, (char *)in + 0x08)
#define get_I_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
0x10, (char *)in + 0x10)
#define get_I_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
0x04, (char *)in + 0x20)
#define get_I_build(in, buf) snprintf(buf, 0x02 + 1, "%.*s", \
0x02, (char *)in + 0x24)
#define get_I_mf_disable(in) getbitfield(in + 38, 7, 1)
#define get_I_checkdigit(in) getbitfield(in + 38, 6, 1)
#define get_I_front_prism(in) getbitfield(in + 38, 5, 1)
#define get_I_compressed_gray(in) getbitfield(in + 38, 4, 1)
#define get_I_front_toggle(in) getbitfield(in + 38, 3, 1)
#define get_I_front_dp1(in) getbitfield(in + 38, 2, 1)
#define get_I_front_color(in) getbitfield(in + 38, 1, 1)
#define get_I_front_atp(in) getbitfield(in + 38, 0, 1)
#define get_I_dp1_180(in) getbitfield(in + 39, 7, 1)
#define get_I_mf_pause(in) getbitfield(in + 39, 6, 1)
#define get_I_rear_prism(in) getbitfield(in + 39, 5, 1)
#define get_I_uncompressed_gray(in) getbitfield(in + 39, 4, 1)
#define get_I_rear_toggle(in) getbitfield(in + 39, 3, 1)
#define get_I_rear_dp1(in) getbitfield(in + 39, 2, 1)
#define get_I_rear_color(in) getbitfield(in + 39, 1, 1)
#define get_I_rear_atp(in) getbitfield(in + 39, 0, 1)
#define get_I_min_bin_res(in) getnbyte(in + 40, 2)
#define get_I_max_bin_res(in) getnbyte(in + 42, 2)
#define get_I_min_col_res(in) getnbyte(in + 44, 2)
#define get_I_max_col_res(in) getnbyte(in + 46, 2)
#define get_I_max_image_width(in) getnbyte(in + 48, 4)
#define get_I_max_image_length(in) getnbyte(in + 52, 4)
/* 56-95 reserved */
#define get_I_finecrop(in) getbitfield(in + 96, 7, 1)
#define get_I_ithresh(in) getbitfield(in + 96, 6, 1)
#define get_I_ecd(in) getbitfield(in + 96, 3, 1)
#define get_I_vblr(in) getbitfield(in + 96, 2, 1)
#define get_I_elevator(in) getbitfield(in + 96, 1, 1)
#define get_I_relcrop(in) getbitfield(in + 96, 0, 1)
#define get_I_cdeskew(in) getbitfield(in + 97, 7, 1)
#define get_I_ia(in) getbitfield(in + 97, 6, 1)
#define get_I_patch(in) getbitfield(in + 97, 5, 1)
#define get_I_nullmode(in) getbitfield(in + 97, 4, 1)
#define get_I_sabre(in) getbitfield(in + 97, 3, 1)
#define get_I_lddds(in) getbitfield(in + 97, 2, 1)
#define get_I_uddds(in) getbitfield(in + 97, 1, 1)
#define get_I_fixedgap(in) getbitfield(in + 97, 0, 1)
#define get_I_hr_printer(in) getbitfield(in + 98, 6, 1)
#define get_I_elev_100_250(in) getbitfield(in + 98, 5, 1)
#define get_I_udds_individual(in) getbitfield(in + 98, 4, 1)
#define get_I_auto_color(in) getbitfield(in + 98, 3, 1)
#define get_I_wb(in) getbitfield(in + 98, 2, 1)
#define get_I_es(in) getbitfield(in + 98, 1, 1)
#define get_I_fc(in) getbitfield(in + 98, 0, 1)
#define get_I_max_rate(in) getnbyte(in + 99, 2)
#define get_I_buffer_size(in) getnbyte(in + 101, 4)
/* ==================================================================== */
/* RESERVE UNIT */
#define RESERVE_UNIT_code 0x16
#define RESERVE_UNIT_len 6
/* ==================================================================== */
/* RELEASE UNIT */
#define RELEASE_UNIT_code 0x17
#define RELEASE_UNIT_len 6
/* ==================================================================== */
/* SCAN */
#define SCAN_code 0x1b
#define SCAN_len 10
#define set_SC_xfer_length(sb, val) sb[0x04] = (unsigned char)val
/* ==================================================================== */
/* SEND DIAGNOSTIC */
#define SEND_DIAGNOSTIC_code 0x1d
#define SEND_DIAGNOSTIC_len 6
/* ==================================================================== */
/* SET WINDOW */
#define SET_WINDOW_code 0x24
#define SET_WINDOW_len 10
/* transfer length is header+descriptor (8+64) */
#define set_SW_xferlen(sb, len) putnbyte(sb + 0x06, len, 3)
/* ==================================================================== */
/* GET WINDOW */
#define GET_WINDOW_code 0x25
#define GET_WINDOW_len 10
#define set_GW_single(sb, val) setbitfield(sb + 1, 1, 0, val)
#define set_GW_wid(sb, len) sb[5] = len
/* window transfer length is for following header+descriptor (8+64) */
#define set_GW_xferlen(sb, len) putnbyte(sb + 0x06, len, 3)
/* ==================================================================== */
/* WINDOW HEADER, used by get and set */
#define WINDOW_HEADER_len 8
/* header transfer length is for following descriptor (64) */
#define set_WH_data_len(sb, len) putnbyte(sb, len, 2)
#define set_WH_desc_len(sb, len) putnbyte(sb + 0x06, len, 2)
/* ==================================================================== */
/* WINDOW descriptor, used by get and set */
#define WINDOW_DESCRIPTOR_len 64
#define set_WD_wid(sb, val) sb[0]=val
#define WD_wid_front_binary 0x01
#define WD_wid_back_binary 0x02
#define WD_wid_front_color 0x03
#define WD_wid_back_color 0x04
/* color/gray = 100,150,200,240,300 */
/* binary = 200,240,300,400 */
#define set_WD_Xres(sb, val) putnbyte(sb + 0x02, val, 2)
#define get_WD_Xres(sb) getnbyte(sb + 0x02, 2)
/* color/gray = 100,150,200,240,300 */
/* binary = 200,240,300,400 */
#define set_WD_Yres(sb, val) putnbyte(sb + 0x04, val, 2)
#define get_WD_Yres(sb) getnbyte(sb + 0x04, 2)
#define set_WD_ULX(sb, val) putnbyte(sb + 0x06, val, 4)
#define get_WD_ULX(sb) getnbyte(sb + 0x06, 4)
#define set_WD_ULY(sb, val) putnbyte(sb + 0x0a, val, 4)
#define get_WD_ULY(sb) getnbyte(sb + 0x0a, 4)
#define set_WD_width(sb, val) putnbyte(sb + 0x0e, val, 4)
#define get_WD_width(sb) getnbyte(sb + 0x0e, 4)
#define set_WD_length(sb, val) putnbyte(sb + 0x12, val, 4)
#define get_WD_length(sb) getnbyte(sb + 0x12, 4)
#define set_WD_brightness(sb, val) sb[0x16] = val
#define get_WD_brightness(sb) sb[0x16]
#define set_WD_threshold(sb, val) sb[0x17] = val
#define get_WD_threshold(sb) sb[0x17]
#define set_WD_contrast(sb, val) sb[0x18] = val
#define get_WD_contrast(sb) sb[0x18]
#define set_WD_composition(sb, val) sb[0x19] = val
#define get_WD_composition(sb) sb[0x19]
#define WD_compo_LINEART 0
#define WD_compo_HALFTONE 1
#define WD_compo_MULTILEVEL 5
/* 1, 8, or 24 */
#define set_WD_bitsperpixel(sb, val) sb[0x1a] = val
#define get_WD_bitsperpixel(sb) sb[0x1a]
/* not used? */
#define set_WD_halftone(sb, val) putnbyte(sb + 0x1b, val, 2)
#define get_WD_halftone(sb) getnbyte(sb + 0x1b, 2)
#define set_WD_rif(sb, val) setbitfield(sb + 0x1d, 1, 7, val)
#define get_WD_rif(sb) getbitfield(sb + 0x1d, 7, 1)
/* always set to 1? */
#define set_WD_bitorder(sb, val) putnbyte(sb + 0x1e, val, 2)
#define get_WD_bitorder(sb) getnbyte(sb + 0x1e, 2)
#define set_WD_compress_type(sb, val) sb[0x20] = val
#define get_WD_compress_type(sb) sb[0x20]
#define WD_compr_NONE 0
#define WD_compr_FAXG4 3
#define WD_compr_JPEG 0x80
/* not used? */
#define set_WD_compress_arg(sb, val) sb[0x21] = val
#define get_WD_compress_arg(sb) sb[0x21]
/* kodak specific stuff starts here */
#define set_WD_noise_filter(sb, val) setbitfield(sb + 40, 7, 2, val)
#define WD_nf_NONE 0
#define WD_nf_LONE 1
#define WD_nf_MAJORITY 2
#define get_WD_noise_filter(sb) getbitfield(sb + 40, 7, 1)
#define set_WD_allow_zero(sb, val) setbitfield(sb + 40, 1, 1, val)
#define get_WD_allow_zero(sb, val) getbitfield(sb + 40, 1, 1)
#define set_WD_vblr(sb, val) setbitfield(sb + 40, 1, 0, val)
#define get_WD_vblr(sb, val) getbitfield(sb + 40, 0, 1)
#define set_WD_image_overscan(sb, val) putnbyte(sb + 41, val, 2)
#define set_WD_IS(sb, val) setbitfield(sb + 43, 1, 7, val)
#define set_WD_deskew(sb, val) setbitfield(sb + 43, 1, 6, val)
#define WD_deskew_DISABLE 0
#define WD_deskew_ENABLE 1
#define set_WD_BR(sb, val) setbitfield(sb + 43, 1, 5, val)
#define set_WD_BF(sb, val) setbitfield(sb + 43, 1, 4, val)
#define set_WD_ED(sb, val) setbitfield(sb + 43, 1, 3, val)
#define set_WD_HR(sb, val) setbitfield(sb + 43, 1, 2, val)
#define set_WD_cropping(sb, val) setbitfield(sb + 43, 3, 0, val)
#define WD_crop_AUTO 0
#define WD_crop_FIXED 1
#define WD_crop_RELATIVE 2
#define WD_crop_FINE 3
#define set_WD_ithresh(sb, val) setbitfield(sb + 44, 1, 7, val)
#define WD_ithresh_DISABLE 0
#define WD_ithresh_ENABLE 1
#define set_WD_dropout_color(sb, val) setbitfield(sb + 44, 7, 0, val)
#define set_WD_dropout_bg(sb, val) sb[45] = val
#define set_WD_dropout_thresh(sb, val) sb[46] = val
#define set_WD_dropout_source(sb, val) sb[47] = val
#define set_WD_disable_gamma(sb, val) sb[48] = val
#define set_WD_ortho_rotation(sb, val) sb[49] = val
#define set_WD_fine_crop_max(sb, val) putnbyte(sb + 50, val, 2)
#define set_WD_color_detect_thresh(sb, val) sb[52] = val
#define set_WD_color_detect_area(sb, val) sb[53] = val
#define set_WD_border_add(sb, val) sb[54] = val
#define max_WDB_size 0xc8
/* ==================================================================== */
/* READ */
#define READ_code 0x28
#define READ_len 10
/* ==================================================================== */
/* SEND */
#define SEND_code 0x2a
#define SEND_len 10
/* ==================================================================== */
/* READ and SEND are basically the same, so the following 'SR' macros */
/* output */
#define set_SR_datatype_code(sb, val) sb[0x02] = val
#define SR_datatype_imagedata 0x00
#define SR_datatype_random 0x80
#define SR_datatype_imageheader 0x81
#define SR_len_imageheader 1088
#define set_SR_datatype_qual(sb, val) memcpy(sb + 4, val, 2)
#define set_SR_xfer_length(sb, val) putnbyte(sb + 6, val, 3)
/* if the data type is 'imageheader': */
#define get_SR_ih_header_length(in) getnbyte(in + 0x00, 4)
#define get_SR_ih_image_length(in) getnbyte(in + 0x04, 4)
#define get_SR_ih_image_id(in) in[8]
#define get_SR_ih_resolution(in) getnbyte(in + 9, 2)
#define get_SR_ih_ulx(in) getnbyte(in + 11, 4)
#define get_SR_ih_uly(in) getnbyte(in + 15, 4)
#define get_SR_ih_width(in) getnbyte(in + 19, 4)
#define get_SR_ih_length(in) getnbyte(in + 23, 4)
#define get_SR_ih_bpp(in) in[27]
#define get_SR_ih_comp_type(in) in[28]
#define get_SR_ih_ACD(in) getbit(in + 29, 1, 5)
#define get_SR_ih_MF(in) getbit(in + 29, 1, 4)
#define get_SR_ih_RIF(in) getbit(in + 29, 1, 2)
#define get_SR_ih_ID(in) getbit(in + 29, 1, 1)
#define get_SR_ih_DE(in) getbit(in + 29, 1, 0)
#define get_SR_ih_skew_angle(in) getnbyte(in + 30, 2)
#define get_SR_ih_ia_level(in) in[32]
#define get_SR_ih_ia(in) getnbyte(in + 33, 60)
#define get_SR_ih_print_string(in) getnbyte(in + 93, 60)
#define get_SR_ih_seqence_counter(in) getnbyte(in + 173, 4)
#define get_SR_ih_ia_f1_definition(in) in[177]
#define get_SR_ih_ia_f1_value(in) getnbyte(in + 178, 18)
#define get_SR_ih_ia_f2_definition(in) in[196]
#define get_SR_ih_ia_f2_value(in) getnbyte(in + 197, 18)
#define get_SR_ih_ia_f3_definition(in) in[215]
#define get_SR_ih_ia_f3_value(in) getnbyte(in + 216, 18)
#define get_SR_ih_ia_f4_definition(in) in[234]
#define get_SR_ih_ia_f5_value(in) getnbyte(in + 235, 18)
#define get_SR_ih_PD(in) getbit(in + 253, 1, 7)
#define get_SR_ih_patch_type(in) getbit(in + 253, 0x7f, 0)
#define get_SR_ih_deskew_confidence(in) in[255]
#define get_SR_ih_bt_contrast_perc(in) in[256]
#define get_SR_ih_bt_contrast(in) getnbyte(in + 257, 2)
#define get_SR_ih_bt_threshold(in) in[259]
#define get_SR_ih_sum_histogram(in) getnbyte(in + 260, 256)
#define get_SR_ih_diff_histogram(in) getnbyte(in + 516, 256)
#define get_SR_ih_gamma_table(in) getnbyte(in + 772, 256)
#define get_SR_ih_auto_color_area(in) in[1028]
#define get_SR_ih_auto_color_thresh(in) in[1029]
/* ==================================================================== */
/* if the data type is 'random', we have all kinds of 2 byte */
/* qualifiers and oddly sized commands. some are bidirectional */
/* while others are only send or read */
/* all payloads for these seem to start with 4 byte inclusive length? */
#define set_SR_payload_len(sb, val) putnbyte(sb, val, 4)
/* */
#define SR_qual_jpeg_quant "JQ" /*both*/
#define SR_len_jpeg_quant 262 /*front and back tables*/
/* */
#define SR_qual_config "SC" /*both*/
#define SR_len_config 512 /*lots of stuff*/
#define set_SR_sc_length(in,val) putnbyte(in, val, 4)
#define get_SR_sc_length(in) getnbyte(in, 4)
#define set_SR_sc_io1(in,val) putnbyte(in + 4, val, 1)
#define get_SR_sc_io1(in) getnbyte(in + 4, 1)
#define set_SR_sc_io2(in,val) putnbyte(in + 5, val, 1)
#define get_SR_sc_io2(in) getnbyte(in + 5, 1)
#define set_SR_sc_io3(in,val) putnbyte(in + 6, val, 1)
#define get_SR_sc_io3(in) getnbyte(in + 6, 1)
#define set_SR_sc_io4(in,val) putnbyte(in + 7, val, 1)
#define get_SR_sc_io4(in) getnbyte(in + 7, 1)
#define SR_sc_io_none 0
#define SR_sc_io_front_binary 1
#define SR_sc_io_rear_binary 2
#define SR_sc_io_front_color 3
#define SR_sc_io_rear_color 4
#define set_SR_sc_trans_to(in,val) putnbyte(in + 13, val, 2)
#define get_SR_sc_trans_to(in) getnbyte(in + 13, 2)
#define set_SR_sc_trans_to_resp(in,val) putnbyte(in + 15, val, 1)
#define get_SR_sc_trans_to_resp(in) getnbyte(in + 15, 1)
#define get_SR_sc_DLS(in) getbitfield(in + 16, 7, 1)
#define set_SR_sc_DLS(in, val) setbitfield(in + 16, 1, 7)
#define get_SR_sc_DMS(in) getbitfield(in + 16, 6, 1)
#define set_SR_sc_DMS(in, val) setbitfield(in + 16, 1, 6)
#define get_SR_sc_DRS(in) getbitfield(in + 16, 5, 1)
#define set_SR_sc_DRS(in, val) setbitfield(in + 16, 1, 5)
#define get_SR_sc_UD_mode(in) getbitfield(in + 16, 0, 0x1f)
#define set_SR_sc_UD_mode(in, val) setbitfield(in + 16, 0x1f, 0)
#define get_SR_sc_LD_length(in) getnbyte(in + 17, 2)
#define set_SR_sc_LD_length(in, val) setnbyte(in + 17, 2)
#define get_SR_sc_DF_resp(in) getnbyte(in + 19, 1)
#define set_SR_sc_DF_resp(in, val) setnbyte(in + 19, 1)
#define get_SR_sc_TP_mode(in) getnbyte(in + 20, 1)
#define get_SR_sc_CPT(in) getbitfield(in + 21, 0, 1)
#define get_SR_sc_POD_mode(in) getnbyte(in + 22, 2)
#define get_SR_sc_batch_mode(in) getnbyte(in + 24, 2)
#define get_SR_sc_batch_level(in) getnbyte(in + 26, 1)
#define get_SR_sc_start_batch(in) getnbyte(in + 27, 1)
#define get_SR_sc_end_batch(in) getnbyte(in + 28, 1)
#define get_SR_sc_patch_conf_tone(in) getnbyte(in + 29, 1)
#define get_SR_sc_T6_patch(in) getbitfield(in + 30, 7, 1)
#define get_SR_sc_T5_patch(in) getbitfield(in + 30, 6, 1)
#define get_SR_sc_T4_patch(in) getbitfield(in + 30, 5, 1)
#define get_SR_sc_T3_patch(in) getbitfield(in + 30, 4, 1)
#define get_SR_sc_T2_patch(in) getbitfield(in + 30, 3, 1)
#define get_SR_sc_T1_patch(in) getbitfield(in + 30, 2, 1)
#define get_SR_sc_trans_patch(in) getbitfield(in + 30, 0, 3)
#define get_SR_sc_IA_A_start(in) getnbyte(in + 31, 18)
#define get_SR_sc_IA_B_start(in) getnbyte(in + 49, 18)
#define get_SR_sc_IA_C_start(in) getnbyte(in + 67, 18)
#define get_SR_sc_IA_D_start(in) getnbyte(in + 85, 18)
#define get_SR_sc_IA_A_def(in) getnbyte(in + 103, 1)
#define get_SR_sc_IA_B_def(in) getnbyte(in + 104, 1)
#define get_SR_sc_IA_C_def(in) getnbyte(in + 105, 1)
#define get_SR_sc_IA_D_def(in) getnbyte(in + 106, 1)
#define get_SR_sc_IA_ltf_3(in) getnbyte(in + 107, 1)
#define get_SR_sc_IA_ltf_2(in) getnbyte(in + 108, 1)
#define get_SR_sc_IA_ltf_1(in) getnbyte(in + 109, 1)
#define get_SR_sc_DP1_pos(in) getnbyte(in + 110, 4)
#define get_SR_sc_hires_mode(in) getbitfield(in + 114, 4, 0xf)
#define get_SR_sc_DP1_font(in) getbitfield(in + 114, 0, 0xf)
#define get_SR_sc_DP1_orient(in) getnbyte(in + 115, 1)
#define get_SR_sc_DP1_IA_format(in) getnbyte(in + 116, 1)
#define get_SR_sc_DP1_date_format(in) getnbyte(in + 117, 1)
#define get_SR_sc_DP1_date_delim(in) getnbyte(in + 118, 1)
#define get_SR_sc_DP1_start_seq(in) getnbyte(in + 119, 4)
#define get_SR_sc_DP1_seq_date_format(in) getnbyte(in + 123, 1)
#define get_SR_sc_DP1_seq_print_width(in) getnbyte(in + 124, 1)
#define get_SR_sc_DP1_msg1(in) getnbyte(in + 125, 40)
#define get_SR_sc_DP1_msg2(in) getnbyte(in + 165, 40)
#define get_SR_sc_DP1_msg3(in) getnbyte(in + 205, 40)
#define get_SR_sc_DP1_msg4(in) getnbyte(in + 245, 40)
#define get_SR_sc_DP1_msg5(in) getnbyte(in + 285, 40)
#define get_SR_sc_DP1_msg6(in) getnbyte(in + 325, 40)
#define get_SR_sc_DP1_l1_template(in) getnbyte(in + 365, 20)
#define get_SR_sc_DP1_l2_template(in) getnbyte(in + 385, 20)
#define get_SR_sc_DP1_l3_template(in) getnbyte(in + 405, 20)
#define get_SR_sc_UDFK1(in) getnbyte(in + 425, 1)
#define get_SR_sc_UDFK2(in) getnbyte(in + 426, 1)
#define get_SR_sc_UDFK3(in) getnbyte(in + 427, 1)
#define get_SR_sc_MPASS(in) getbitfield(in + 428, 1, 1)
#define get_SR_sc_CE(in) getbitfield(in + 428, 0, 1)
#define get_SR_sc_elevator_mode(in) getnbyte(in + 429, 1)
#define get_SR_sc_stacking_mode(in) getnbyte(in + 430, 1)
#define get_SR_sc_energy_star_to(in) getnbyte(in + 433, 1)
#define get_SR_sc_PR1(in) getbitfield(in + 435, 3, 1)
#define get_SR_sc_PR2(in) getbitfield(in + 435, 2, 1)
#define get_SR_sc_PR3(in) getbitfield(in + 435, 1, 1)
#define get_SR_sc_PR4(in) getbitfield(in + 435, 0, 1)
/* */
#define SR_qual_color_table "CT" /*read*/
#define SR_len_color_table 52
/* */
#define SR_qual_color_table "CT" /*read*/
#define SR_len_color_table 52
/* */
#define SR_qual_clear "CB" /*send*/
#define SR_len_clear 0
/* */
#define SR_qual_end "GX" /*send*/
#define SR_len_end 0
/* local and gmt time commands, same format */
#define SR_qual_clock "LC" /*both*/
#define SR_qual_gmt "GT" /*send*/
#define SR_len_time 10
#define set_SR_time_hour(sb, val) putnbyte(sb+4, val, 1)
#define set_SR_time_min(sb, val) putnbyte(sb+5, val, 1)
#define set_SR_time_mon(sb, val) putnbyte(sb+6, val, 1)
#define set_SR_time_day(sb, val) putnbyte(sb+7, val, 1)
#define set_SR_time_year(sb, val) putnbyte(sb+8, val, 2)
/* */
#define SR_qual_lamp "LD" /*????*/
#define SR_len_lamp 0 /*????*/
/* */
#define SR_qual_log_en "L0" /*read*/
#define SR_qual_log_fr "L1" /*read*/
#define SR_qual_log_it "L2" /*read*/
#define SR_qual_log_de "L3" /*read*/
#define SR_qual_log_br "L4" /*read*/
#define SR_qual_log_jp "L5" /*read*/
#define SR_qual_log_nl "L6" /*read*/
#define SR_qual_log_es "L7" /*read*/
#define SR_qual_log_cns "L8" /*read*/
#define SR_qual_log_cnt "L9" /*read*/
#define SR_qual_log_ko "LA" /*read*/
#define SR_qual_log_ru "LB" /*read*/
#define SR_qual_log_cz "LE" /*read*/
#define SR_qual_log_tr "LF" /*read*/
/* */
#define SR_qual_startstop "SS" /*send*/
#define SR_len_startstop 5
#define set_SR_startstop_cmd(sb, val) putnbyte(sb+4, val, 1)
/* */
#define SR_qual_media "CM" /*read*/
#define SR_len_media 5
#define get_SR_media_status(sb, val) getnbyte(sb+4, 1)
/* */
#define SR_qual_img_cal "IC" /*send*/
#define SR_len_img_cal 0
/* */
#define SR_qual_udds_cal "UC" /*send*/
#define SR_len_udds_cal 0
/* ==================================================================== */
/* WRITE BUFFER */
#define WRITE_BUFFER_code 0x3b
#define WRITE_BUFFER_len 10
#define set_WB_mode(sb, val) setbitfield(sb + 0x01, 7, 0, val)
#define WB_mode_front 6
#define WB_mode_back 7
#define set_WB_buffer_id(sb, val) sb[0x02] = (unsigned char)val
#define WB_buffer_id_block(sb, val) 0
#define WB_buffer_id_last(sb, val) 1
#define set_WB_buffer_offset(sb, val) putnbyte(sb + 3, val, 3)
#define set_WB_list_length(sb, val) putnbyte(sb + 6, val, 3)
#endif
|