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