kopia lustrzana https://gitlab.com/sane-project/website
619 wiersze
21 KiB
HTML
619 wiersze
21 KiB
HTML
<!-- received="Tue Apr 6 12:18:31 1999 PDT" -->
|
|
<!-- sent="Tue, 6 Apr 1999 21:18:29 +0200" -->
|
|
<!-- name="Petter Reinholdtsen" -->
|
|
<!-- email="pere@hungry.com" -->
|
|
<!-- subject="AGFA 1236s patch 5 available" -->
|
|
<!-- id="199904061918.VAA21111@lee.Cc.Uit.No" -->
|
|
<!-- inreplyto="" -->
|
|
<title>sane-devel: AGFA 1236s patch 5 available</title>
|
|
<h1>AGFA 1236s patch 5 available</h1>
|
|
<b>Petter Reinholdtsen</b> (<a href="mailto:pere@hungry.com"><i>pere@hungry.com</i></a>)<br>
|
|
<i>Tue, 6 Apr 1999 21:18:29 +0200</i>
|
|
<p>
|
|
<ul>
|
|
<li> <b>Messages sorted by:</b> <a href="date.html#112">[ date ]</a><a href="index.html#112">[ thread ]</a><a href="subject.html#112">[ subject ]</a><a href="author.html#112">[ author ]</a>
|
|
<!-- next="start" -->
|
|
<li> <b>Next message:</b> <a href="0113.html">Allan Strand: "Re: configuring sane-1.00"</a>
|
|
<li> <b>Previous message:</b> <a href="0111.html">Oliver Rauch: "Re: 16 bit per sample support"</a>
|
|
<!-- nextthread="start" -->
|
|
<!-- reply="end" -->
|
|
</ul>
|
|
<!-- body="start" -->
|
|
A new version of my AGFA 1236s patch is available. This is the 5 try.<br>
|
|
This is mostly bugfixes and cleanup compared to the earlier. It is<br>
|
|
relative to 1.01 pre4.<br>
|
|
<p>
|
|
There was a bug in the vendor recognizing code which should now be<br>
|
|
fixed.<br>
|
|
<p>
|
|
It is available from <URL:<a href="http://www.student.uit.no/~pere/linux/">http://www.student.uit.no/~pere/linux/</a>>, and <br>
|
|
included here:<br>
|
|
<p>
|
|
diff -ru sane-pre1.01-4/ChangeLog sane-pre1.01-4-pere/ChangeLog<br>
|
|
--- sane-pre1.01-4/ChangeLog Tue Apr 6 19:27:56 1999<br>
|
|
+++ sane-pre1.01-4-pere/ChangeLog Tue Apr 6 20:00:21 1999<br>
|
|
@@ -1,3 +1,25 @@<br>
|
|
+1999-04-06 Petter Reinholdtsen <<a href="mailto:pere@td.org.uit.no">pere@td.org.uit.no</a>><br>
|
|
+ * backend/snapscan.c (sane_exit sane_get_devices): Removed memory<br>
|
|
+ leak.<br>
|
|
+ (sane_open): Give more sensible error message when unable to open<br>
|
|
+ temp file. Open temp file in /var/tmp, not in current directory.<br>
|
|
+ (mini_inquiry add_device): Make sure to only match listed models.<br>
|
|
+ Earlier, substrings would also match.<br>
|
|
+<br>
|
|
+1999-04-04 Petter Reinholdtsen <<a href="mailto:pere@td.org.uit.no">pere@td.org.uit.no</a>><br>
|
|
+ * backend/snapscan.c (sane_snapscan_*): Changed API entries from<br>
|
|
+ sane_snapscan_* to sane_*.<br>
|
|
+<br>
|
|
+1999-03-10 Petter Reinholdtsen <<a href="mailto:pere@td.org.uit.no">pere@td.org.uit.no</a>><br>
|
|
+ * backend/snapscan.c (add_device init_options inquiry<br>
|
|
+ sane_snapscan_get_parameters sane_snapscan_start<br>
|
|
+ sane_snapscan_set_io_mode sane_snapscan_read) backend/snapscan.h<br>
|
|
+ backend/snapscan.desc: Rewrote scanner detection code to loop over<br>
|
|
+ array of supported SCSI names. Added AGFA SnapScan 1236s support.<br>
|
|
+ It seems to be compatible with SnapScan 600.<br>
|
|
+ Make sure to not add the same device more then once to the device<br>
|
|
+ list. Bugfix in sane_snapscan_read() triggered on EOF.<br>
|
|
+<br>
|
|
1999-04-03 David Mosberger-Tang <<a href="mailto:David.Mosberger@acm.org">David.Mosberger@acm.org</a>><br>
|
|
<br>
|
|
* include/sane/sanei_debug.h: Define sanei_debug_BACKEND_NAME only<br>
|
|
diff -ru sane-pre1.01-4/backend/snapscan.desc sane-pre1.01-4-pere/backend/snapscan.desc<br>
|
|
--- sane-pre1.01-4/backend/snapscan.desc Tue Apr 6 19:27:45 1999<br>
|
|
+++ sane-pre1.01-4-pere/backend/snapscan.desc Sun Apr 4 18:44:11 1999<br>
|
|
@@ -28,6 +28,8 @@<br>
|
|
:comment "Ditto"<br>
|
|
:model "SnapScan 600"<br>
|
|
:comment "Ditto"<br>
|
|
+:model "SnapScan 1236s"<br>
|
|
+:comment "Ditto"<br>
|
|
:mfg "Vuego"<br>
|
|
:model "310S"<br>
|
|
:comment "Close SnapScan 310 compatible."<br>
|
|
diff -ru sane-pre1.01-4/backend/snapscan.h sane-pre1.01-4-pere/backend/snapscan.h<br>
|
|
--- sane-pre1.01-4/backend/snapscan.h Tue Apr 6 19:27:41 1999<br>
|
|
+++ sane-pre1.01-4-pere/backend/snapscan.h Tue Apr 6 20:18:03 1999<br>
|
|
@@ -53,23 +53,45 @@<br>
|
|
<br>
|
|
/* snapscan device field values */<br>
|
|
<br>
|
|
-#define SNAPSCAN_NAME "/dev/sga"<br>
|
|
-#define SNAPSCAN_VENDOR "AGFA"<br>
|
|
-#define VUEGO_VENDOR "COLOR"<br>
|
|
-#define SNAPSCAN_MODEL300 "SnapScan"<br>
|
|
-#define SNAPSCAN_MODEL310 "SNAPSCAN 310"<br>
|
|
-#define VUEGO_MODEL310S "FlatbedScanner_4"<br>
|
|
-#define SNAPSCAN_MODEL600 "SNAPSCAN 600"<br>
|
|
+#define DEFAULT_DEVICE "/dev/scanner" /* Check this if config is missing */<br>
|
|
#define SNAPSCAN_TYPE "flatbed scanner"<br>
|
|
/*#define INOPERATIVE*/<br>
|
|
+#define TMP_FILE_PREFIX "/var/tmp/snapscan"<br>
|
|
<br>
|
|
typedef enum<br>
|
|
{<br>
|
|
+ UNKNOWN,<br>
|
|
SNAPSCAN300, /* the original SnapScan or SnapScan 300 */<br>
|
|
SNAPSCAN310, /* the SnapScan 310 */<br>
|
|
SNAPSCAN600, /* the SnapScan 600 */<br>
|
|
+ SNAPSCAN1236S, /* the SnapScan 1236s */<br>
|
|
VUEGO310S /* Vuego-Version of SnapScan 310 WG changed */<br>
|
|
} SnapScan_Model;<br>
|
|
+<br>
|
|
+struct SnapScan_Model_desc<br>
|
|
+{<br>
|
|
+ char *scsi_name;<br>
|
|
+ SnapScan_Model id;<br>
|
|
+};<br>
|
|
+<br>
|
|
+static struct SnapScan_Model_desc scanners[] =<br>
|
|
+{<br>
|
|
+ /* SCSI model name -> enum value */<br>
|
|
+ { "FlatbedScanner_4", VUEGO310S },<br>
|
|
+ { "SNAPSCAN 1236", SNAPSCAN1236S },<br>
|
|
+ { "SNAPSCAN 310", SNAPSCAN310 },<br>
|
|
+ { "SNAPSCAN 600", SNAPSCAN600 },<br>
|
|
+ { "SnapScan", SNAPSCAN300 },<br>
|
|
+};<br>
|
|
+#define known_scanners (sizeof(scanners)/sizeof(scanners[0]))<br>
|
|
+<br>
|
|
+static char *vendors[] =<br>
|
|
+{<br>
|
|
+ /* SCSI Vendor name */<br>
|
|
+ "AGFA",<br>
|
|
+ "COLOR",<br>
|
|
+};<br>
|
|
+#define known_vendors (sizeof(vendors)/sizeof(vendors[0]))<br>
|
|
<br>
|
|
typedef enum<br>
|
|
{<br>
|
|
diff -ru sane-pre1.01-4/backend/snapscan.c sane-pre1.01-4-pere/backend/snapscan.c<br>
|
|
--- sane-pre1.01-4/backend/snapscan.c Tue Apr 6 19:27:40 1999<br>
|
|
+++ sane-pre1.01-4-pere/backend/snapscan.c Tue Apr 6 20:23:07 1999<br>
|
|
@@ -161,7 +161,6 @@<br>
|
|
#define DEFAULT_BRX (x_range.max)<br>
|
|
#define DEFAULT_BRY (y_range.max)<br>
|
|
<br>
|
|
-<br>
|
|
#ifdef INOPERATIVE<br>
|
|
static const SANE_Range percent_range =<br>
|
|
{<br>
|
|
@@ -339,6 +338,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
po[OPT_MODE].constraint.string_list = names_310;<br>
|
|
break;<br>
|
|
@@ -370,6 +370,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
po[OPT_PREVIEW_MODE].constraint.string_list = names_310;<br>
|
|
break;<br>
|
|
@@ -888,6 +889,19 @@<br>
|
|
pc[3] = (0x000000ff & x);<br>
|
|
}<br>
|
|
<br>
|
|
+/* Convert 'STRING ' to 'STRING' by adding 0 after last non-space */<br>
|
|
+static void<br>
|
|
+remove_trailing_space(char *s)<br>
|
|
+{<br>
|
|
+ int position;<br>
|
|
+<br>
|
|
+ if (NULL == s)<br>
|
|
+ return;<br>
|
|
+<br>
|
|
+ for (position = strlen(s); position > 0 && ' ' == s[position-1];<br>
|
|
+ position--);<br>
|
|
+ s[position] = 0; <br>
|
|
+}<br>
|
|
<br>
|
|
#define INQUIRY_LEN 6<br>
|
|
#define INQUIRY_RET_LEN 120<br>
|
|
@@ -936,6 +950,9 @@<br>
|
|
memcpy (model, data + 16, 16);<br>
|
|
model[16] = 0;<br>
|
|
<br>
|
|
+ remove_trailing_space(vendor);<br>
|
|
+ remove_trailing_space(model);<br>
|
|
+<br>
|
|
return SANE_STATUS_GOOD;<br>
|
|
}<br>
|
|
<br>
|
|
@@ -995,6 +1012,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
rgb_buf_set_diff (pss,<br>
|
|
pss->buf[INQUIRY_G2R_DIFF],<br>
|
|
@@ -1523,13 +1541,23 @@<br>
|
|
/*----- global data structures and access utilities -----*/<br>
|
|
<br>
|
|
<br>
|
|
-/* for now, we support only one possible device, a SnapScan on /dev/sga */<br>
|
|
-<br>
|
|
/* available device list */<br>
|
|
<br>
|
|
static SnapScan_Device *first_device = NULL; /* device list head */<br>
|
|
static int n_devices = 0; /* the device count */<br>
|
|
<br>
|
|
+/* list returned from sane_get_devices() */<br>
|
|
+static const SANE_Device **get_devices_list = NULL;<br>
|
|
+<br>
|
|
+static SANE_Bool<br>
|
|
+device_already_in_list(SnapScan_Device *current, SANE_String_Const name)<br>
|
|
+{<br>
|
|
+ for ( ;NULL != current; current = current->pnext )<br>
|
|
+ if (0 == strcmp(name, current->dev.name))<br>
|
|
+ return SANE_TRUE;<br>
|
|
+ return SANE_FALSE;<br>
|
|
+}<br>
|
|
+<br>
|
|
static SANE_Status<br>
|
|
add_device (SANE_String_Const name)<br>
|
|
{<br>
|
|
@@ -1537,10 +1565,16 @@<br>
|
|
static const char me[] = "add_device";<br>
|
|
SANE_Status status;<br>
|
|
SnapScan_Device *pd;<br>
|
|
- SnapScan_Model model_num;<br>
|
|
+ SnapScan_Model model_num = UNKNOWN;<br>
|
|
+ int i, supported_vendor = 0;<br>
|
|
char vendor[8], model[17];<br>
|
|
<br>
|
|
- DBG (DL_CALL_TRACE, "%s\n", me);<br>
|
|
+ DBG (DL_CALL_TRACE, "%s(%s)\n", me, name);<br>
|
|
+<br>
|
|
+ /* Avoid adding the same device more then once */<br>
|
|
+ if (device_already_in_list(first_device, name)) {<br>
|
|
+ return SANE_STATUS_GOOD;<br>
|
|
+ }<br>
|
|
<br>
|
|
vendor[0] = model[0] = '\0';<br>
|
|
<br>
|
|
@@ -1561,38 +1595,41 @@<br>
|
|
return status;<br>
|
|
}<br>
|
|
<br>
|
|
- if ((strncasecmp (vendor, SNAPSCAN_VENDOR, strlen (SNAPSCAN_VENDOR)) == 0)<br>
|
|
- ||<br>
|
|
- (strncasecmp (vendor, VUEGO_VENDOR, strlen (VUEGO_VENDOR)) == 0)) /* WG changed */<br>
|
|
- {<br>
|
|
- /* original SnapScan */<br>
|
|
- if (strncasecmp (model, SNAPSCAN_MODEL310,<br>
|
|
- strlen (SNAPSCAN_MODEL310)) == 0)<br>
|
|
- model_num = SNAPSCAN310;<br>
|
|
- else if (strncasecmp (model, SNAPSCAN_MODEL600,<br>
|
|
- strlen (SNAPSCAN_MODEL600)) == 0)<br>
|
|
- model_num = SNAPSCAN600;<br>
|
|
- else if (strncasecmp (model, SNAPSCAN_MODEL300,<br>
|
|
- strlen (SNAPSCAN_MODEL300)) == 0)<br>
|
|
- model_num = SNAPSCAN300;<br>
|
|
- else if (strncasecmp (model, VUEGO_MODEL310S, /* WG changed */<br>
|
|
- strlen (VUEGO_MODEL310S)) == 0)<br>
|
|
- model_num = VUEGO310S;<br>
|
|
- else<br>
|
|
+ DBG (DL_VERBOSE, "%s: Is vendor \"%s\" model \"%s\" a supported scanner?\n",<br>
|
|
+ me, vendor, model);<br>
|
|
+<br>
|
|
+ /* check if this is one of our supported vendors */<br>
|
|
+ for (i = 0; i < known_vendors; i++)<br>
|
|
+ if (0 == strcasecmp (vendor, vendors[i]))<br>
|
|
+ {<br>
|
|
+ supported_vendor = 1;<br>
|
|
+ break;<br>
|
|
+ }<br>
|
|
+ if (!supported_vendor)<br>
|
|
+ {<br>
|
|
+ DBG (DL_MINOR_ERROR, "%s: \"%s %s\" is not an %s\n",<br>
|
|
+ me, vendor, model,<br>
|
|
+ "AGFA SnapScan model 300, 310, 600 and 1236s"<br>
|
|
+ " or VUEGO model 310S"); /* WG changed */<br>
|
|
+ sanei_scsi_close (fd);<br>
|
|
+ return SANE_STATUS_INVAL;<br>
|
|
+ }<br>
|
|
+<br>
|
|
+ /* Known vendor. Check if it is one of our supported models */<br>
|
|
+ for (i = 0; i < known_scanners; i++)<br>
|
|
+ {<br>
|
|
+ if (0 == strcasecmp (model, scanners[i].scsi_name))<br>
|
|
{<br>
|
|
- DBG (DL_INFO, "%s: sorry, model %s is not supported.\n"<br>
|
|
- "Currently supported models are the SnapScan 300 and 310.\n",<br>
|
|
- me, model);<br>
|
|
- sanei_scsi_close (fd);<br>
|
|
- return SANE_STATUS_INVAL;<br>
|
|
+ model_num = scanners[i].id;<br>
|
|
+ break;<br>
|
|
}<br>
|
|
}<br>
|
|
- else<br>
|
|
+ if (UNKNOWN == model_num)<br>
|
|
{<br>
|
|
- DBG (DL_MINOR_ERROR, "%s: \"%s %s\" is not an %s %s\n",<br>
|
|
- me, vendor, model,<br>
|
|
- SNAPSCAN_VENDOR,<br>
|
|
- "AGFA SnapScan model 300, 310, and 600 or VUEGO model 310S"); /* WG changed */<br>
|
|
+ DBG (DL_INFO, "%s: sorry, model %s is not supported.\n"<br>
|
|
+ "Currently supported models are AGFA SnapScan model 300, 310, 600\n"<br>
|
|
+ "and 1236s and VUEGO model 310S\n",<br>
|
|
+ me, model);<br>
|
|
sanei_scsi_close (fd);<br>
|
|
return SANE_STATUS_INVAL;<br>
|
|
}<br>
|
|
@@ -1666,7 +1703,7 @@<br>
|
|
<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_init (SANE_Int * version_code,<br>
|
|
+sane_init (SANE_Int * version_code,<br>
|
|
SANE_Auth_Callback authorize)<br>
|
|
{<br>
|
|
static const char me[] = "sane_snapscan_init";<br>
|
|
@@ -1705,11 +1742,11 @@<br>
|
|
fp = sanei_config_open (SNAPSCAN_CONFIG_FILE);<br>
|
|
if (!fp)<br>
|
|
{<br>
|
|
+ /* default to DEFAULT_DEVICE instead of insisting on config file */<br>
|
|
DBG (DL_INFO,<br>
|
|
- "%s: configuration file not found, defaulting to /dev/scanner.\n",<br>
|
|
- me);<br>
|
|
- /* default to /dev/scanner instead of insisting on config file */<br>
|
|
- status = add_device ("/dev/scanner");<br>
|
|
+ "%s: configuration file not found, defaulting to %s.\n",<br>
|
|
+ me, DEFAULT_DEVICE);<br>
|
|
+ status = add_device (DEFAULT_DEVICE);<br>
|
|
if (status != SANE_STATUS_GOOD)<br>
|
|
{<br>
|
|
DBG (DL_MINOR_ERROR, "%s: failed to add device \"%s\"\n",<br>
|
|
@@ -1752,22 +1789,30 @@<br>
|
|
}<br>
|
|
<br>
|
|
void<br>
|
|
-sane_snapscan_exit (void)<br>
|
|
+sane_exit (void)<br>
|
|
{<br>
|
|
DBG (DL_CALL_TRACE, "sane_snapscan_exit\n");<br>
|
|
<br>
|
|
+ if (NULL != get_devices_list)<br>
|
|
+ free(get_devices_list);<br>
|
|
+ get_devices_list = NULL;<br>
|
|
+<br>
|
|
/* just for safety, reset things to known values */<br>
|
|
auth = NULL;<br>
|
|
}<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_get_devices (const SANE_Device *** device_list,<br>
|
|
+sane_get_devices (const SANE_Device *** device_list,<br>
|
|
SANE_Bool local_only)<br>
|
|
{<br>
|
|
static const char *me = "sane_snapscan_get_devices";<br>
|
|
DBG (DL_CALL_TRACE, "%s (%p, %ld)\n", me, (void *) device_list,<br>
|
|
(long) local_only);<br>
|
|
<br>
|
|
+ /* Waste the last list returned from this function */<br>
|
|
+ if (NULL != get_devices_list)<br>
|
|
+ free(get_devices_list);<br>
|
|
+<br>
|
|
*device_list = (const SANE_Device **)<br>
|
|
malloc ((n_devices + 1) * sizeof (SANE_Device *));<br>
|
|
<br>
|
|
@@ -1787,13 +1832,13 @@<br>
|
|
return SANE_STATUS_NO_MEM;<br>
|
|
}<br>
|
|
<br>
|
|
+ get_devices_list = *device_list;<br>
|
|
+<br>
|
|
return SANE_STATUS_GOOD;<br>
|
|
}<br>
|
|
<br>
|
|
-#define TMP_FILE "snapscan-tmp"<br>
|
|
-<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_open (SANE_String_Const name, SANE_Handle * h)<br>
|
|
+sane_open (SANE_String_Const name, SANE_Handle * h)<br>
|
|
{<br>
|
|
static const char *me = "sane_snapscan_open";<br>
|
|
SnapScan_Device *psd;<br>
|
|
@@ -1842,11 +1887,13 @@<br>
|
|
/* temp file name and the temp file */<br>
|
|
{<br>
|
|
char tname[128];<br>
|
|
- sprintf (tname, TMP_FILE "-%p", (void *) pss);<br>
|
|
+ snprintf (tname, sizeof(tname), TMP_FILE_PREFIX "-%p", (void *) pss);<br>
|
|
if ((pss->tfd = open (tname, O_CREAT | O_RDWR | O_TRUNC, 0600)) == -1)<br>
|
|
{<br>
|
|
- DBG (DL_MAJOR_ERROR, "%s: can't open temp file %s\n", me, tname);<br>
|
|
- perror ("File error: ");<br>
|
|
+ char str[200];<br>
|
|
+ snprintf(str, sizeof(str), "Can't open temp file %s", tname);<br>
|
|
+ DBG (DL_MAJOR_ERROR, "%s: %s\n", me, str);<br>
|
|
+ perror (str);<br>
|
|
free (*h);<br>
|
|
return SANE_STATUS_ACCESS_DENIED;<br>
|
|
}<br>
|
|
@@ -1905,7 +1952,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
void<br>
|
|
-sane_snapscan_close (SANE_Handle h)<br>
|
|
+sane_close (SANE_Handle h)<br>
|
|
{<br>
|
|
SnapScan_Scanner *pss = (SnapScan_Scanner *) h;<br>
|
|
DBG (DL_CALL_TRACE, "sane_snapscan_close (%p)\n", (void *) h);<br>
|
|
@@ -1925,7 +1972,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
const SANE_Option_Descriptor *<br>
|
|
-sane_snapscan_get_option_descriptor (SANE_Handle h, SANE_Int n)<br>
|
|
+sane_get_option_descriptor (SANE_Handle h, SANE_Int n)<br>
|
|
{<br>
|
|
DBG (DL_CALL_TRACE, "sane_snapscan_get_option_descriptor (%p, %ld)\n",<br>
|
|
(void *) h, (long) n);<br>
|
|
@@ -1938,7 +1985,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_control_option (SANE_Handle h, SANE_Int n,<br>
|
|
+sane_control_option (SANE_Handle h, SANE_Int n,<br>
|
|
SANE_Action a, void *v,<br>
|
|
SANE_Int * i)<br>
|
|
{<br>
|
|
@@ -2621,7 +2668,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_get_parameters (SANE_Handle h,<br>
|
|
+sane_get_parameters (SANE_Handle h,<br>
|
|
SANE_Parameters * p)<br>
|
|
{<br>
|
|
static const char *me = "sane_snapscan_get_parameters";<br>
|
|
@@ -2673,6 +2720,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
if (!pss->preview)<br>
|
|
{<br>
|
|
@@ -2699,6 +2747,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
pss->lines += line_offset;<br>
|
|
p->lines -= line_offset;<br>
|
|
@@ -2960,7 +3009,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_start (SANE_Handle h)<br>
|
|
+sane_start (SANE_Handle h)<br>
|
|
{<br>
|
|
static const char *me = "sane_snapscan_start";<br>
|
|
SANE_Status status;<br>
|
|
@@ -3114,6 +3163,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
if (SANE_STATUS_GOOD != rgb_buf_init (pss))<br>
|
|
return SANE_STATUS_NO_MEM;<br>
|
|
@@ -3134,6 +3184,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
rgb_buf_clean (pss);<br>
|
|
break;<br>
|
|
@@ -3153,6 +3204,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
transfer_data_diff (other_buf, pss);<br>
|
|
break;<br>
|
|
@@ -3186,6 +3238,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
rgb_buf_clean (pss);<br>
|
|
break;<br>
|
|
@@ -3231,13 +3284,14 @@<br>
|
|
pss->bytes_per_line / pss->ms_per_line);<br>
|
|
<br>
|
|
/* allocate and initialize rgb ring buffer if the device is<br>
|
|
- a snapscan 310 or 600 model, in colour mode */<br>
|
|
+ a snapscan 310, 600 or 1236s model, in colour mode */<br>
|
|
if (colour)<br>
|
|
{<br>
|
|
switch (pss->pdev->model)<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
rgb_buf_init (pss);<br>
|
|
break;<br>
|
|
@@ -3268,7 +3322,7 @@<br>
|
|
<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_read (SANE_Handle h, SANE_Byte * buf,<br>
|
|
+sane_read (SANE_Handle h, SANE_Byte * buf,<br>
|
|
SANE_Int maxlen, SANE_Int * plen)<br>
|
|
{<br>
|
|
static const char *me = "sane_snapscan_read";<br>
|
|
@@ -3279,6 +3333,8 @@<br>
|
|
DBG (DL_CALL_TRACE, "%s (%p, %p, %ld, %p)\n",<br>
|
|
me, (void *) h, (void *) buf, (long) maxlen, (void *) plen);<br>
|
|
<br>
|
|
+ *plen = 0;<br>
|
|
+<br>
|
|
if (!pss->expected_data_len)<br>
|
|
{<br>
|
|
if (pss->child > 0)<br>
|
|
@@ -3292,8 +3348,6 @@<br>
|
|
return SANE_STATUS_EOF;<br>
|
|
}<br>
|
|
<br>
|
|
- *plen = 0;<br>
|
|
-<br>
|
|
if (pss->preview)<br>
|
|
mode = pss->preview_mode;<br>
|
|
<br>
|
|
@@ -3302,13 +3356,15 @@<br>
|
|
maxlen /= 8;<br>
|
|
<br>
|
|
/* reset maxlen to a scan line boundary */<br>
|
|
+ /* XXX Why is this here? The non-blocking client should have no<br>
|
|
+ buffer limits */<br>
|
|
maxlen = (maxlen / pss->bytes_per_line) * pss->bytes_per_line;<br>
|
|
<br>
|
|
/* expected data per read is the minimum of the scanner effective<br>
|
|
buffer length , the frontend effective buffer length, and the<br>
|
|
total remaining data in the scan */<br>
|
|
- pss->expected_read_bytes = MIN (pss->buf_sz, pss->expected_data_len);<br>
|
|
- pss->expected_read_bytes = MIN (maxlen, pss->expected_read_bytes);<br>
|
|
+ pss->expected_read_bytes =<br>
|
|
+ MIN (MIN (pss->buf_sz, maxlen), pss->expected_data_len);<br>
|
|
<br>
|
|
/* since a cancellation happens asynchronously, it seems in practice<br>
|
|
that we need to check for cancellation both before and after IO<br>
|
|
@@ -3413,6 +3469,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
transferred_bytes = transfer_data_diff (buf, pss);<br>
|
|
break;<br>
|
|
@@ -3466,7 +3523,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
void<br>
|
|
-sane_snapscan_cancel (SANE_Handle h)<br>
|
|
+sane_cancel (SANE_Handle h)<br>
|
|
{<br>
|
|
char *me = "sane_snapscan_cancel";<br>
|
|
SnapScan_Scanner *pss = (SnapScan_Scanner *) h;<br>
|
|
@@ -3486,6 +3543,7 @@<br>
|
|
{<br>
|
|
case SNAPSCAN310:<br>
|
|
case SNAPSCAN600:<br>
|
|
+ case SNAPSCAN1236S:<br>
|
|
case VUEGO310S: /* WG changed */<br>
|
|
rgb_buf_clean (pss);<br>
|
|
break;<br>
|
|
@@ -3506,7 +3564,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_set_io_mode (SANE_Handle h, SANE_Bool m)<br>
|
|
+sane_set_io_mode (SANE_Handle h, SANE_Bool m)<br>
|
|
{<br>
|
|
static char me[] = "sane_snapscan_set_io_mode";<br>
|
|
SnapScan_Scanner *pss = (SnapScan_Scanner *) h;<br>
|
|
@@ -3541,7 +3599,7 @@<br>
|
|
}<br>
|
|
<br>
|
|
SANE_Status<br>
|
|
-sane_snapscan_get_select_fd (SANE_Handle h, SANE_Int * fd)<br>
|
|
+sane_get_select_fd (SANE_Handle h, SANE_Int * fd)<br>
|
|
{<br>
|
|
static char me[] = "sane_snapscan_get_select_fd";<br>
|
|
SnapScan_Scanner *pss = (SnapScan_Scanner *) h;<br>
|
|
<pre>
|
|
--
|
|
##> Petter Reinholdtsen <## | <a href="mailto:pere@td.org.uit.no">pere@td.org.uit.no</a>
|
|
O- <SCRIPT Language="Javascript">window.close()</SCRIPT>
|
|
<a href="http://www.hungry.com/~pere/">http://www.hungry.com/~pere/</a> | Go Mozilla, go! Go!
|
|
<p>
|
|
<p>
|
|
<pre>
|
|
--
|
|
Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a>
|
|
To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a>
|
|
</pre>
|
|
<!-- body="end" -->
|
|
<p>
|
|
<ul>
|
|
<!-- next="start" -->
|
|
<li> <b>Next message:</b> <a href="0113.html">Allan Strand: "Re: configuring sane-1.00"</a>
|
|
<li> <b>Previous message:</b> <a href="0111.html">Oliver Rauch: "Re: 16 bit per sample support"</a>
|
|
<!-- nextthread="start" -->
|
|
<!-- reply="end" -->
|
|
</ul>
|