[sane-devel] [PATCH 08/10] epjitsu: introduce object_position()

Hiroshi Miura miurahr at linux.com
Sun Nov 4 10:38:48 UTC 2012


Rename ingest() to object_position()
now it can do both ingest and eject.
This is required by S1100 support.

chunk come from
http://ubuntuforums.org/showthread.php?t=1678335

Signed-off-by: Hiroshi Miura <miurahr at linux.com>
---
 backend/epjitsu.c |   28 ++++++++++++++--------------
 backend/epjitsu.h |    5 ++++-
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/backend/epjitsu.c b/backend/epjitsu.c
index 83d30d3..9bcd1eb 100644
--- a/backend/epjitsu.c
+++ b/backend/epjitsu.c
@@ -2176,7 +2176,7 @@ sane_start (SANE_Handle handle)
     /* ingest paper with adf */
     if( s->source == SOURCE_ADF_BACK || s->source == SOURCE_ADF_FRONT
      || (s->source == SOURCE_ADF_DUPLEX && s->side == SIDE_FRONT) ){
-        ret = ingest(s);
+        ret = object_position(s,EPJITSU_PAPER_INGEST);
         if (ret != SANE_STATUS_GOOD) {
             DBG (5, "sane_start: ERROR: failed to ingest\n");
             sane_cancel((SANE_Handle)s);
@@ -3442,11 +3442,10 @@ get_hardware_status (struct scanner *s)
 }
 
 static SANE_Status
-ingest(struct scanner *s)
+object_position(struct scanner *s, int ingest)
 {
     SANE_Status ret = SANE_STATUS_GOOD;
     int i;
-
     unsigned char cmd[2];
     size_t cmdLen = sizeof(cmd);
     unsigned char stat[1];
@@ -3454,10 +3453,11 @@ ingest(struct scanner *s)
     unsigned char pay[2];
     size_t payLen = sizeof(pay);
 
-    DBG (10, "ingest: start\n");
+    DBG (10, "object_position: start\n");
 
-    for(i=0;i<5;i++){
-    
+    i = (ingest)?5:1;
+
+    while(i--){    
         /*send paper load cmd*/
         cmd[0] = 0x1b;
         cmd[1] = 0xd4;
@@ -3470,18 +3470,18 @@ ingest(struct scanner *s)
           stat, &statLen
         );
         if(ret){
-            DBG (5, "ingest: error sending cmd\n");
+            DBG (5, "object_position: error sending cmd\n");
             return ret;
         }
         if(stat[0] != 6){
-            DBG (5, "ingest: cmd bad status? %d\n",stat[0]);
+            DBG (5, "object_position: cmd bad status? %d\n",stat[0]);
             continue;
         }
     
         /*send payload*/
         statLen = 1;
         payLen = 1;
-        pay[0] = 1;
+        pay[0] = ingest;
         
         ret = do_cmd(
           s, 0,
@@ -3490,25 +3490,25 @@ ingest(struct scanner *s)
           stat, &statLen
         );
         if(ret){
-            DBG (5, "ingest: error sending payload\n");
+            DBG (5, "object_position: error sending payload\n");
             return ret;
         }
         if(stat[0] == 6){
-            DBG (5, "ingest: found paper?\n");
+            DBG (5, "object_position: found paper?\n");
             break;
         }
         else if(stat[0] == 0x15 || stat[0] == 0){
-            DBG (5, "ingest: no paper?\n");
+            DBG (5, "object_position: no paper?\n");
             ret=SANE_STATUS_NO_DOCS;
 	    continue;
         }
         else{
-            DBG (5, "ingest: payload bad status?\n");
+            DBG (5, "object_position: payload bad status?\n");
             return SANE_STATUS_IO_ERROR;
         }
     }
 
-    DBG (10, "ingest: finish\n");
+    DBG (10, "object_position: finish\n");
     return ret;
 }
 
diff --git a/backend/epjitsu.h b/backend/epjitsu.h
index 68a997b..3d70e73 100644
--- a/backend/epjitsu.h
+++ b/backend/epjitsu.h
@@ -280,6 +280,9 @@ struct scanner
 #define WINDOW_SENDCAL 2
 #define WINDOW_SCAN 3
 
+#define EPJITSU_PAPER_INGEST 1
+#define EPJITSU_PAPER_EJECT 0
+
 /* ------------------------------------------------------------------------- */
 
 #define MM_PER_UNIT_UNFIX SANE_UNFIX(SANE_FIX(MM_PER_INCH / 1200.0))
@@ -359,7 +362,7 @@ static SANE_Status destroy(struct scanner *s);
 static SANE_Status teardown_buffers(struct scanner *s);
 static SANE_Status setup_buffers(struct scanner *s);
 
-static SANE_Status ingest(struct scanner *s);
+static SANE_Status object_position(struct scanner *s, int ingest);
 static SANE_Status coarsecal(struct scanner *s);
 static SANE_Status finecal(struct scanner *s);
 static SANE_Status send_lut(struct scanner *s);
-- 
1.7.9.5





More information about the sane-devel mailing list