Lines Matching +full:- +full:- +full:container +full:- +full:cmd
4 /* sane - Scanner Access Now Easy.
5 Panasonic KV-S1020C / KV-S1025C USB scanners.
62 dev->bus_mode = KV_USB_BUS; in attach_scanner_usb()
63 dev->usb_fd = -1; in attach_scanner_usb()
64 dev->scsi_fd = -1; in attach_scanner_usb()
65 strcpy (dev->device_name, device_name); in attach_scanner_usb()
67 dev->buffer0 = (unsigned char *) malloc (SCSI_BUFFER_SIZE + 12); in attach_scanner_usb()
68 dev->buffer = dev->buffer0 + 12; in attach_scanner_usb()
70 if (dev->buffer0 == NULL) in attach_scanner_usb()
76 dev->scsi_type = 6; in attach_scanner_usb()
77 strcpy (dev->scsi_type_str, "ADF Scanner"); in attach_scanner_usb()
78 strcpy (dev->scsi_vendor, "Panasonic"); in attach_scanner_usb()
79 strcpy (dev->scsi_product, in attach_scanner_usb()
80 product == (int) KV_S1020C ? "KV-S1020C" : in attach_scanner_usb()
81 product == (int) KV_S1025C ? "KV-S1025C" : in attach_scanner_usb()
82 product == (int) KV_S1045C ? "KV-S1045C" : in attach_scanner_usb()
83 "KV-S10xxC"); in attach_scanner_usb()
84 strcpy (dev->scsi_version, "1.00"); in attach_scanner_usb()
87 dev->sane.name = dev->device_name; in attach_scanner_usb()
88 dev->sane.vendor = dev->scsi_vendor; in attach_scanner_usb()
89 dev->sane.model = dev->scsi_product; in attach_scanner_usb()
90 dev->sane.type = dev->scsi_type_str; in attach_scanner_usb()
93 dev->next = g_devices; in attach_scanner_usb()
121 for (pd = g_devices; pd; pd=pd->next) { in kv_usb_enum_devices()
130 "kv_usb_enum_devices: leave on error " " --out of memory\n"); in kv_usb_enum_devices()
137 g_devlist[i] = (const SANE_Device *) &pd->sane; in kv_usb_enum_devices()
138 pd = pd->next; in kv_usb_enum_devices()
151 return (dev->usb_fd > -1); in kv_usb_already_open()
163 DBG (DBG_proc, "kv_usb_open: leave -- already open\n"); in kv_usb_open()
167 ret = sanei_usb_open (dev->device_name, &(dev->usb_fd)); in kv_usb_open()
170 DBG (DBG_error, "kv_usb_open: leave -- cannot open device\n"); in kv_usb_open()
174 sanei_usb_clear_halt (dev->usb_fd); in kv_usb_open()
187 sanei_usb_close(dev->usb_fd); in kv_usb_close()
188 dev->usb_fd = -1; in kv_usb_close()
208 cmd_buff[3] = 0x18; /* container length */ in kv_usb_escape()
209 cmd_buff[5] = 1; /* container type: command block */ in kv_usb_escape()
217 memcpy (cmd_buff + 12, header->cdb, header->cdb_size); in kv_usb_escape()
224 if (sanei_usb_write_bulk (dev->usb_fd, (SANE_Byte *) cmd_buff, &len)) in kv_usb_escape()
227 hexdump (DBG_error, "cmd block", cmd_buff, 24); in kv_usb_escape()
232 if (header->direction == KV_CMD_IN) in kv_usb_escape()
234 size_t size = header->data_size + 12; in kv_usb_escape()
236 unsigned char *data = ((unsigned char *) header->data) - 12; in kv_usb_escape()
239 ret = sanei_usb_read_bulk (dev->usb_fd, (SANE_Byte *) data, &size_read); in kv_usb_escape()
243 sanei_usb_clear_halt (dev->usb_fd); in kv_usb_escape()
248 sanei_usb_clear_halt (dev->usb_fd); in kv_usb_escape()
255 DBG (DBG_shortread, "usb_bulk_read: Warning - short read\n"); in kv_usb_escape()
263 if (header->direction == KV_CMD_OUT) in kv_usb_escape()
265 size_t size = header->data_size + 12; in kv_usb_escape()
267 unsigned char *data = ((unsigned char *) header->data) - 12; in kv_usb_escape()
272 data[5] = 0x02; /* container type: data block */ in kv_usb_escape()
275 ret = sanei_usb_write_bulk (dev->usb_fd, (SANE_Byte *) data, &size_written); in kv_usb_escape()
279 sanei_usb_clear_halt (dev->usb_fd); in kv_usb_escape()
284 sanei_usb_clear_halt (dev->usb_fd); in kv_usb_escape()
291 DBG (DBG_shortread, "usb_bulk_write: Warning - short written\n"); in kv_usb_escape()
305 ret = sanei_usb_read_bulk (dev->usb_fd, (SANE_Byte *) cmd_buff, &len); in kv_usb_escape()
311 sanei_usb_clear_halt (dev->usb_fd); in kv_usb_escape()
336 response->status = KV_FAILED; in kv_usb_send_command()
355 hdr.data = &response->sense; in kv_usb_send_command()
360 hexdump (DBG_error, "sense data", (unsigned char *) &response->sense, in kv_usb_send_command()
363 response->status = KV_CHK_CONDITION; in kv_usb_send_command()
367 response->status = KV_SUCCESS; in kv_usb_send_command()