2
* SANE backend for Xerox Phaser 3200MFP
3
* Copyright 2008 ABC <abc@telekom.ru>
5
* This program is licensed under GPL + SANE exception.
6
* More info at http://www.sane-project.org/license.html
10
#define BACKEND_NAME xerox_mfp
11
#define DEBUG_DECLARE_ONLY
12
#define DEBUG_NOT_STATIC
13
#include "sane/config.h"
14
#include "sane/saneopts.h"
15
#include "sane/sanei_config.h"
16
#include "sane/sanei_backend.h"
17
#include "sane/sanei_debug.h"
18
#include "sane/sanei_usb.h"
19
#include "xerox_mfp.h"
22
extern int sanei_debug_xerox_mfp;
25
usb_dev_request (struct device *dev,
26
SANE_Byte *cmd, size_t cmdlen,
27
SANE_Byte *resp, size_t *resplen)
33
status = sanei_usb_write_bulk (dev->dn, cmd, &cmdlen);
34
if (status != SANE_STATUS_GOOD) {
35
DBG (1, "%s: sanei_usb_write_bulk: %s\n", __FUNCTION__,
36
sane_strstatus (status));
37
return SANE_STATUS_IO_ERROR;
41
DBG (1, "%s: sanei_usb_write_bulk: wanted %lu bytes, wrote %lu bytes\n",
42
__FUNCTION__, (size_t)len, (size_t)cmdlen);
43
return SANE_STATUS_IO_ERROR;
47
if (resp && resplen) {
48
status = sanei_usb_read_bulk (dev->dn, resp, resplen);
49
if (status != SANE_STATUS_GOOD) {
50
DBG (1, "%s: sanei_usb_read_bulk: %s\n", __FUNCTION__,
51
sane_strstatus (status));
52
return SANE_STATUS_IO_ERROR;
56
return SANE_STATUS_GOOD;
61
usb_dev_open (struct device *dev)
65
DBG (3, "%s: open %p\n", __FUNCTION__, (void *)dev);
66
status = sanei_usb_open (dev->sane.name, &dev->dn);
67
if (status != SANE_STATUS_GOOD) {
68
DBG (1, "%s: sanei_usb_open(%s): %s\n", __FUNCTION__,
69
dev->sane.name, sane_strstatus (status));
73
sanei_usb_clear_halt (dev->dn);
74
return SANE_STATUS_GOOD;
78
usb_dev_close (struct device *dev)
82
DBG (3, "%s: closing dev %p\n", __FUNCTION__, (void *)dev);
84
/* finish all operations */
87
/* flush READ_IMAGE data */
89
sane_read(dev, NULL, 1, NULL);
90
/* send cancel if not sent before */
91
if (dev->state != SANE_STATUS_CANCELLED)
95
sanei_usb_clear_halt (dev->dn); /* unstall for next users */
96
sanei_usb_close (dev->dn);
101
/* SANE API ignores return code of this callback */
103
usb_configure_device (const char *devname, SANE_Status (*attach) (const char *dev))
105
sanei_usb_set_timeout (1000);
106
sanei_usb_attach_matching_devices (devname, attach);
107
sanei_usb_set_timeout (30000);
108
return SANE_STATUS_GOOD;
112
/* xerox_mfp-usb.c */