kopia lustrzana https://gitlab.com/sane-project/backends
132 wiersze
3.1 KiB
C
132 wiersze
3.1 KiB
C
#ifndef __KVS20XX_CMD_H
|
|
#define __KVS20XX_CMD_H
|
|
|
|
/*
|
|
Copyright (C) 2008, Panasonic Russia Ltd.
|
|
Copyright (C) 2010, m. allan noah
|
|
*/
|
|
/*
|
|
Panasonic KV-S20xx USB-SCSI scanners.
|
|
*/
|
|
|
|
#define COMMAND_BLOCK 1
|
|
#define DATA_BLOCK 2
|
|
#define RESPONSE_BLOCK 3
|
|
|
|
#define COMMAND_CODE 0x9000
|
|
#define DATA_CODE 0xb000
|
|
#define RESPONSE_CODE 0xa000
|
|
#define STATUS_SIZE 4
|
|
|
|
struct bulk_header
|
|
{
|
|
u32 length;
|
|
u16 type;
|
|
u16 code;
|
|
u32 transaction_id;
|
|
};
|
|
|
|
#define TEST_UNIT_READY 0x00
|
|
#define INQUIRY 0x12
|
|
#define SET_WINDOW 0x24
|
|
#define SCAN 0x1B
|
|
#define SEND_10 0x2A
|
|
#define READ_10 0x28
|
|
#define REQUEST_SENSE 0x03
|
|
#define GET_BUFFER_STATUS 0x34
|
|
#define SET_TIMEOUT 0xE1
|
|
#define GET_ADJUST_DATA 0xE0
|
|
#define GOOD 0
|
|
#define CHECK_CONDITION 2
|
|
|
|
typedef enum
|
|
{
|
|
CMD_NONE = 0,
|
|
CMD_IN = 0x81, /* scanner to pc */
|
|
CMD_OUT = 0x02 /* pc to scanner */
|
|
} CMD_DIRECTION; /* equals to endpoint address */
|
|
|
|
#define RESPONSE_SIZE 0x12
|
|
#define MAX_CMD_SIZE 12
|
|
struct cmd
|
|
{
|
|
unsigned char cmd[MAX_CMD_SIZE];
|
|
int cmd_size;
|
|
void *data;
|
|
int data_size;
|
|
int dir;
|
|
};
|
|
struct response
|
|
{
|
|
int status;
|
|
unsigned char data[RESPONSE_SIZE];
|
|
};
|
|
|
|
#define END_OF_MEDIUM (1<<6)
|
|
#define INCORRECT_LENGTH_INDICATOR (1<<5)
|
|
static const struct
|
|
{
|
|
unsigned sense, asc, ascq;
|
|
SANE_Status st;
|
|
} s_errors[] =
|
|
{
|
|
{
|
|
0, 0, 0, SANE_STATUS_GOOD},
|
|
{
|
|
2, 0, 0, SANE_STATUS_DEVICE_BUSY},
|
|
{
|
|
2, 4, 1, SANE_STATUS_DEVICE_BUSY},
|
|
{
|
|
2, 4, 0x80, SANE_STATUS_COVER_OPEN},
|
|
{
|
|
2, 4, 0x81, SANE_STATUS_COVER_OPEN},
|
|
{
|
|
2, 4, 0x82, SANE_STATUS_COVER_OPEN},
|
|
{
|
|
2, 4, 0x83, SANE_STATUS_COVER_OPEN},
|
|
{
|
|
2, 4, 0x84, SANE_STATUS_COVER_OPEN},
|
|
{
|
|
2, 0x80, 1, SANE_STATUS_CANCELLED},
|
|
{
|
|
2, 0x80, 2, SANE_STATUS_CANCELLED},
|
|
{
|
|
3, 0x3a, 0, SANE_STATUS_NO_DOCS},
|
|
{
|
|
3, 0x80, 1, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 2, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 3, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 4, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 5, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 6, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 7, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 8, SANE_STATUS_JAMMED},
|
|
{
|
|
3, 0x80, 9, SANE_STATUS_JAMMED},};
|
|
|
|
SANE_Status usb_send_command (struct scanner *s, struct cmd *c,
|
|
struct response *r, void *buf);
|
|
SANE_Status send_command (struct scanner * s, struct cmd * c);
|
|
SANE_Status test_unit_ready (struct scanner *s);
|
|
SANE_Status set_timeout (struct scanner *s, int timeout);
|
|
SANE_Status set_window (struct scanner *s, int wnd_id);
|
|
SANE_Status reset_window (struct scanner *s);
|
|
SANE_Status read_picture_element (struct scanner *s, unsigned side,
|
|
SANE_Parameters * p);
|
|
SANE_Status read_image_data (struct scanner *s, unsigned page, unsigned side,
|
|
void *buf, unsigned max_size, unsigned *size);
|
|
SANE_Status document_exist (struct scanner *s);
|
|
SANE_Status get_buffer_status (struct scanner *s, unsigned *data_avalible);
|
|
SANE_Status scan (struct scanner *s);
|
|
SANE_Status get_adjust_data (struct scanner *s, unsigned *dummy_length);
|
|
SANE_Status sense_handler (int fd, u_char * sense_buffer, void *arg);
|
|
|
|
#endif /*__KVS20XX_CMD_H*/
|