kopia lustrzana https://gitlab.com/sane-project/backends
59 wiersze
1.7 KiB
C
59 wiersze
1.7 KiB
C
![]() |
#ifndef snapscan_usb_h
|
||
|
#define snapscan_usb_h
|
||
|
|
||
|
static SANE_Status snapscani_usb_cmd(int fd, const void *src, size_t src_size,
|
||
|
void *dst, size_t * dst_size);
|
||
|
static SANE_Status snapscani_usb_open(const char *dev, int *fdp,
|
||
|
SANEI_SCSI_Sense_Handler handler, void *handler_arg);
|
||
|
static void snapscani_usb_close(int fd);
|
||
|
|
||
|
/*
|
||
|
* USB status codes
|
||
|
*/
|
||
|
#define GOOD 0x00
|
||
|
#define CHECK_CONDITION 0x01
|
||
|
#define CONDITION_GOOD 0x02
|
||
|
#define BUSY 0x04
|
||
|
#define INTERMEDIATE_GOOD 0x08
|
||
|
#define INTERMEDIATE_C_GOOD 0x0a
|
||
|
#define RESERVATION_CONFLICT 0x0c
|
||
|
#define COMMAND_TERMINATED 0x11
|
||
|
#define QUEUE_FULL 0x14
|
||
|
|
||
|
#define STATUS_MASK 0x3e
|
||
|
|
||
|
/*
|
||
|
* USB transaction status
|
||
|
*/
|
||
|
#define TRANSACTION_COMPLETED 0xfb /* Scanner considers the transaction done */
|
||
|
#define TRANSACTION_READ 0xf9 /* Scanner has data to deliver */
|
||
|
#define TRANSACTION_WRITE 0xf8 /* Scanner is expecting more data */
|
||
|
|
||
|
/*
|
||
|
* Busy queue data structure and prototypes
|
||
|
*/
|
||
|
struct usb_busy_queue {
|
||
|
int fd;
|
||
|
void *src;
|
||
|
size_t src_size;
|
||
|
struct usb_busy_queue *next;
|
||
|
};
|
||
|
|
||
|
static struct usb_busy_queue *bqhead,*bqtail;
|
||
|
extern int bqelements;
|
||
|
static int enqueue_bq(int fd,const void *src, size_t src_size);
|
||
|
static void dequeue_bq(void);
|
||
|
static int is_queueable(const char *src);
|
||
|
|
||
|
static SANE_Status atomic_usb_cmd(int fd, const void *src, size_t src_size,
|
||
|
void *dst, size_t * dst_size);
|
||
|
static SANE_Status usb_open(const char *dev, int *fdp,
|
||
|
SANEI_SCSI_Sense_Handler handler, void *handler_arg);
|
||
|
|
||
|
static void usb_close(int fd);
|
||
|
|
||
|
static SANE_Status usb_cmd(int fd, const void *src, size_t src_size,
|
||
|
void *dst, size_t * dst_size);
|
||
|
|
||
|
#endif
|