kopia lustrzana https://gitlab.com/sane-project/website
				
				
				
			
		
			
				
	
	
		
			667 wiersze
		
	
	
		
			27 KiB
		
	
	
	
		
			HTML
		
	
	
			
		
		
	
	
			667 wiersze
		
	
	
		
			27 KiB
		
	
	
	
		
			HTML
		
	
	
| <html><body>
 | |
| <a href="doc013.html"><img src=../icons/next.gif alt="Next"></a>
 | |
| <a href="doc000.html"><img src=../icons/up.gif alt="Up"></a>
 | |
| <a href="doc011.html"><img src=../icons/previous.gif alt="Previous"></a>
 | |
| <a href="doc000.html"><img src=../icons/contents.gif alt="Contents"></a>
 | |
| <a href="doc019.html"><img src=../icons/index.gif alt="Index"></a>
 | |
| <hr>
 | |
| 
 | |
| <title>Operations</title>
 | |
| <h2><a name="s4.3">4.3 Operations</a></h2>
 | |
| 
 | |
| <p><h3><a name="s4.3.1">4.3.1 <tt>sane_init</tt></a></h3>
 | |
| 
 | |
| <p>This function must be called before any other SANE function can be called.
 | |
| The behavior of a SANE backend is undefined if this function is not called
 | |
| first or if the status code returned by <tt>sane_init</tt> is different from
 | |
| <tt>SANE_STATUS_GOOD<a name="i72"></tt>.  The version code of the backend is returned
 | |
| in the value pointed to by <tt>version_code</tt>.  If that pointer is
 | |
| <tt>NULL</tt>, no version code is returned.  Argument <tt>authorize</tt> is either
 | |
| a pointer to a function that is invoked when the backend requires
 | |
| authentication for a specific resource or <tt>NULL</tt> if the frontend does not
 | |
| support authentication.
 | |
| <blockquote><a name="i73">
 | |
| <pre>
 | |
| SANE_Status sane_init (SANE_Int * version_code,
 | |
|                        SANE_Authorization_Callback authorize);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p>The authorization function may be called by a backend in response to
 | |
| any of the following calls:
 | |
| <blockquote>
 | |
|   <tt>sane_open</tt>, <tt>sane_control_option</tt>, <tt>sane_start</tt>
 | |
| </blockquote>
 | |
| If a backend was initialized without authorization function, then
 | |
| authorization requests that cannot be handled by the backend itself
 | |
| will fail automatically and the user may be prevented from accessing
 | |
| protected resources.  Backends are encouraged to implement means of
 | |
| authentication that do not require user assistance.  E.g., on a
 | |
| multi-user system that authenticates users through a login process a
 | |
| backend could automatically lookup the apporpriate password based on
 | |
| resource- and user-name.
 | |
| 
 | |
| <p>The authentication function type has the following declaration:
 | |
| <blockquote><a name="i74">
 | |
|   <a name="i75"><a name="i76"><a name="i77">
 | |
| <pre>
 | |
| #define SANE_MAX_USERNAME_LEN   128
 | |
| #define SANE_MAX_PASSWORD_LEN   128
 | |
| 
 | |
| typedef void (*SANE_Authorization_Callback)
 | |
|     (SANE_String_Const resource,
 | |
|      SANE_Char username[SANE_MAX_USERNAME_LEN],
 | |
|      SANE_Char password[SANE_MAX_PASSWORD_LEN]);
 | |
| </pre>
 | |
| </blockquote>
 | |
| Three arguments are passed to the authorization function:
 | |
| <tt>resource</tt> is a string specifying the name of the resource that
 | |
| requires authorization.  A frontend should use this string to build a
 | |
| user-prompt requesting a username and a password.  The <tt>username</tt>
 | |
| and <tt>password</tt> arguments are (pointers to) an array of
 | |
| <tt>SANE_MAX_USERNAME_LEN</tt> and <tt>SANE_MAX_PASSWORD_LEN</tt>
 | |
| characters, respectively.  The authorization call should place the
 | |
| entered username and password in these arrays.  The returned strings
 | |
| <em>must</em> be ASCII-NUL terminated.
 | |
| 
 | |
| <p><h3><a name="s4.3.2">4.3.2 <tt>sane_exit</tt></a></h3>
 | |
| 
 | |
| <p>This function must be called to terminate use of a backend.  The
 | |
| function will first close all device handles that still might be open
 | |
| (it is recommended to close device handles explicitly through a call
 | |
| to <tt>sane_close()</tt>, but backends are required to release all
 | |
| resources upon a call to this function).  After this function returns,
 | |
| no function other than <tt>sane_init()</tt> may be called (regardless
 | |
| of the status value returned by <tt>sane_exit()</tt>.  Neglecting to
 | |
| call this function may result in some resources not being released
 | |
| properly.
 | |
| <blockquote><a name="i78">
 | |
| <pre>
 | |
| void sane_exit (void);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.3">4.3.3 <tt>sane_get_devices</tt></a></h3>
 | |
| 
 | |
| <p>This function can be used to query the list of devices that are
 | |
| available.  If the function executes successfully, it stores a pointer
 | |
| to a <tt>NULL</tt> terminated array of pointers to <tt>SANE_Device</tt>
 | |
| structures in <tt>*device_list</tt>.  The returned list is guaranteed
 | |
| to remain unchanged and valid until (a) another call to this function
 | |
| is performed or (b) a call to <tt>sane_exit()</tt> is performed.  This
 | |
| function can be called repeatedly to detect when new devices become
 | |
| available.  If argument <tt>local_only</tt> is true, only local devices
 | |
| are returned (devices directly attached to the machine that SANE is
 | |
| running on).  If it is false, the device list includes all remote
 | |
| devices that are accessible to the SANE library.
 | |
| <blockquote><a name="i79">
 | |
| <pre>
 | |
| SANE_Status sane_get_devices (const SANE_Device *** device_list,
 | |
|                               SANE_Bool local_only);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p>This function may fail with <tt>SANE_STATUS_NO_MEM</tt> if an
 | |
| insufficient amount of memory is available.
 | |
| 
 | |
| <p><blockquote>
 | |
|   <center>
 | |
|     <b>Backend Implementation Note</b>
 | |
|   </center>
 | |
|   SANE does not require that this function is called before a
 | |
|   <tt>sane_open()</tt> call is performed.  A device name may be
 | |
|   specified explicitly by a user which would make it unnecessary and
 | |
|   undesirable to call this function first.
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.4">4.3.4 <tt>sane_open</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to establish a connection to a particular
 | |
| device.  The name of the device to be opened is passed in argument
 | |
| <tt>name</tt>.  If the call completes successfully, a handle for the
 | |
| device is returned in <tt>*h</tt>.  As a special case, specifying a
 | |
| zero-length string as the device requests opening the first available
 | |
| device (if there is such a device).
 | |
| <blockquote><a name="i80">
 | |
| <pre>
 | |
| SANE_Status sane_open (SANE_String_Const name, SANE_Handle * h);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p>This function may fail with one of the following status codes.
 | |
| <blockquote>
 | |
| <dl>
 | |
| <dt><tt>SANE_STATUS_DEVICE_BUSY</tt>:<dd> The device is currently
 | |
|   busy (in use by somebody else).
 | |
| <dt><tt>SANE_STATUS_INVAL</tt>:<dd> The device name is not valid.
 | |
| <dt><tt>SANE_STATUS_IO_ERROR</tt>:<dd> An error occured while
 | |
|   communicating with the device.
 | |
| <dt><tt>SANE_STATUS_NO_MEM</tt>:<dd> An insufficent amount of memory
 | |
|   is available.
 | |
| <dt><tt>SANE_STATUS_ACCESS_DENIED</tt>:<dd> Access to the device has
 | |
|   been denied due to insufficient or invalid authentication.
 | |
| </dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.5">4.3.5 <tt>sane_close</tt></a></h3>
 | |
| 
 | |
| <p>This function terminates the association between the device handle
 | |
| passed in argument <tt>h</tt> and the device it represents.  If the
 | |
| device is presently active, a call to <tt>sane_cancel()</tt> is
 | |
| performed first.  After this function returns, handle <tt>h</tt> must
 | |
| not be used anymore.
 | |
| 
 | |
| <p><blockquote><a name="i81">
 | |
| <pre>
 | |
| void sane_close (SANE_Handle h);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.6">4.3.6 <tt>sane_get_option_descriptor</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to access option descriptors.  The function
 | |
| returns the option descriptor for option number <tt>n</tt> of the device
 | |
| represented by handle <tt>h</tt>.  Option number 0 is guaranteed to be a
 | |
| valid option.  Its value is an integer that specifies the number of
 | |
| options that are available for device handle <tt>h</tt> (the count
 | |
| includes option 0).  If n is not a valid option index, the function
 | |
| returns <tt>NULL</tt>.  The returned option descriptor is guaranteed to
 | |
| remain valid (and at the returned address) until the device is closed.
 | |
| 
 | |
| <p><blockquote><a name="i82">
 | |
| <pre>
 | |
| const SANE_Option_Descriptor *
 | |
|     sane_get_option_descriptor (SANE_Handle h, SANE_Int n);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.7">4.3.7 <tt>sane_control_option</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to set or inquire the current value of option
 | |
| number <tt>n</tt> of the device represented by handle <tt>h</tt>.  The
 | |
| manner in which the option is controlled is specified by parameter
 | |
| <tt>a</tt>.  The possible values of this parameter are described in more
 | |
| detail below.  The value of the option is passed through argument
 | |
| <tt>v</tt>.  It is a pointer to the memory that holds the option value.
 | |
| The memory area pointed to by <tt>v</tt> must be big enough to hold the
 | |
| entire option value (determined by member <tt>size</tt> in the
 | |
| corresponding option descriptor).  The only exception to this rule is
 | |
| that when setting the value of a string option, the string pointed to
 | |
| by argument <tt>v</tt> may be shorter since the backend will stop
 | |
| reading the option value upon encountering the first <tt>NUL</tt>
 | |
| terminator in the string.  If argument <tt>i</tt> is not <tt>NULL</tt>,
 | |
| the value of <tt>*i</tt> will be set to provide details on how well the
 | |
| request has been met.  The meaning of this argument is described in
 | |
| more detail below.
 | |
| <blockquote><a name="i83">
 | |
| <pre>
 | |
| SANE_Status sane_control_option (SANE_Handle h, SANE_Int n,
 | |
|                                  SANE_Action a, void *v,
 | |
|                                  SANE_Int * i);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p>The way the option is affected by a call to this function is
 | |
| controlled by parameter <tt>a</tt> which is a value of type
 | |
| <tt>SANE_Action<a name="i84"></tt>.  The possible values and their meaning is
 | |
| described in Table <a href="doc012.html#t7">7</a>.
 | |
| 
 | |
| <p><p><a name="t7"></a>
 | |
|   <center>
 | |
|     
 | |
|     <table cellpadding=0 cellspacing=0 border=1>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=center nowrap><b>Symbol</b></td>
 | |
| <td colspan=1 align=center nowrap><b>Code</b></td>
 | |
| <td colspan=1 align=center nowrap><b>Description</b></td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>
 | |
| 
 | |
| <p><tt>SANE_ACTION_GET_VALUE<a name="i85"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 0 </td>
 | |
| <td colspan=1 align=left> Get current option value. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p><tt>SANE_ACTION_SET_VALUE<a name="i86"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 1 </td>
 | |
| <td colspan=1 align=left> Set option value.  The
 | |
|   option value passed through argument <tt>v</tt> may be modified by the
 | |
|   backend if the value cannot be set exactly.  </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap> 
 | |
| 
 | |
| <p><tt>SANE_ACTION_SET_AUTO<a name="i87"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 2 </td>
 | |
| <td colspan=1 align=left> Turn on automatic mode.  Backend
 | |
|   or device will automatically select an appropriate value.  This mode
 | |
|   remains effective until overridden by an explicit set value request.
 | |
|   The value of parameter <tt>v</tt> is completely ignored in this case and
 | |
|   may be <tt>NULL</tt>.  </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>
 | |
|     </td></tr>
 | |
| </table>
 | |
|     <p><center>Table 7: Action Values (<tt>SANE_Action</tt>)</center>
 | |
|     
 | |
|   </center>
 | |
| <p>
 | |
| 
 | |
| <p>After setting a value via an action value of
 | |
| <tt>SANE_ACTION_SET_VALUE</tt>, additional information on how well the
 | |
| request has been met is returned in <tt>*i</tt> (if <tt>i</tt> is
 | |
| non-<tt>NULL</tt>).  The returned value is a bitset that may contain any
 | |
| combination of the values described in Table <a href="doc012.html#t8">8</a>.
 | |
| <p><a name="t8"></a>
 | |
|   <center>
 | |
|     
 | |
|     <table cellpadding=0 cellspacing=0 border=1>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=center nowrap><b>Symbol</b></td>
 | |
| <td colspan=1 align=center nowrap><b>Code</b></td>
 | |
| <td colspan=1 align=center nowrap><b>Description</b></td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>
 | |
| 
 | |
| <p><tt>SANE_INFO_INEXACT<a name="i88"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 1 </td>
 | |
| <td colspan=1 align=left> This value is returned when
 | |
|   setting an option value resulted in a value being selected that does
 | |
|   not exactly match the requested value.  For example, if a scanner
 | |
|   can adjust the resolution in increments of 30dpi only, setting the
 | |
|   resolution to 307dpi may result in an actual setting of 300dpi.
 | |
|   When this happens, the bitset returned in <tt>*i</tt> has this member
 | |
|   set.  In addition, the option value is modified to reflect the
 | |
|   actual (rounded) value that was used by the backend.  Note that
 | |
|   inexact values are admissible for strings as well.  A backend may
 | |
|   choose to ``round'' a string to the closest matching legal string
 | |
|   for a constrained string value. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>  <tt>SANE_INFO_RELOAD_OPTIONS<a name="i89"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 2 </td>
 | |
| <td colspan=1 align=left> The setting of an
 | |
|   option may affect the value or availability of one or more <em>
 | |
|     other</em> options.  When this happens, the SANE backend sets this
 | |
|   member in <tt>*i</tt> to indicate that the application should reload
 | |
|   all options.  This member may be set if and only if at least one
 | |
|   option changed. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p><tt>SANE_INFO_RELOAD_PARAMS<a name="i90"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 4 </td>
 | |
| <td colspan=1 align=left> The setting of an option may
 | |
|   affect the parameter values (see <tt>sane_get_parameters()</tt>).
 | |
|   If setting an option affects the parameter values, this member will
 | |
|   be set in <tt>*i</tt>.  Note that this member may be set even if the
 | |
|   parameters did not actually change.  However, it is guaranteed that
 | |
|   the parameters never change without this member being set. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>
 | |
|     </td></tr>
 | |
| </table>
 | |
|     <p><center>Table 8: Additional Information Returned When Setting an Option</center>
 | |
|     
 | |
|   </center>
 | |
| <p>
 | |
| 
 | |
| <p>This function may fail with one of the following status codes.
 | |
| <blockquote>
 | |
| <dl>
 | |
| <dt><tt>SANE_STATUS_UNSUPPORTED</tt>:<dd> The operation is not
 | |
|   supported for the specified handle and option number.
 | |
| <dt><tt>SANE_STATUS_INVAL</tt>:<dd> The option value is not valid.
 | |
| <dt><tt>SANE_STATUS_IO_ERROR</tt>:<dd> An error occured while
 | |
|   communicating with the device.
 | |
| <dt><tt>SANE_STATUS_NO_MEM</tt>:<dd> An insufficent amount of memory
 | |
|   is available.
 | |
| <dt><tt>SANE_STATUS_ACCESS_DENIED</tt>:<dd> Access to the option has
 | |
|   been denied due to insufficient or invalid authentication.
 | |
| </dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.8">4.3.8 <tt>sane_get_parameters</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to obtain the current scan parameters.  The
 | |
| returned parameters are guaranteed to be accurate between the time a
 | |
| scan has been started (<tt>sane_start()</tt> has been called) and the
 | |
| completion of that request.  Outside of that window, the returned
 | |
| values are best-effort estimates of what the parameters will be when
 | |
| <tt>sane_start()</tt> gets invoked.  Calling this function before a
 | |
| scan has actually started allows, for example, to get an estimate of
 | |
| how big the scanned image will be.  The parameters passed to this
 | |
| function are the handle <tt>h</tt> of the device for which the
 | |
| parameters should be obtained and a pointer <tt>p</tt> to a parameter
 | |
| structure.  The parameter structure is described in more detail below.
 | |
| 
 | |
| <p><blockquote><a name="i91">
 | |
| <pre>
 | |
| SANE_Status sane_get_parameters (SANE_Handle h,
 | |
|                                  SANE_Parameters * p);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p>The scan parameters are returned in a structure of type
 | |
| <tt>SANE_Parameters<a name="i92"></tt>.  The C declaration of this structure
 | |
| is given below.
 | |
| <blockquote>
 | |
| <pre>
 | |
| typedef struct
 | |
|   {
 | |
|     SANE_Frame format;
 | |
|     SANE_Bool last_frame;
 | |
|     SANE_Int lines;
 | |
|     SANE_Int depth;
 | |
|     SANE_Int pixels_per_line;
 | |
|     SANE_Int bytes_per_line;
 | |
|   }
 | |
| SANE_Parameters;
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p>Member <tt>format</tt> specifies the format of the next frame to be
 | |
| returned.  The possible values for type <tt>SANE_Frame<a name="i93"></tt> are
 | |
| described in Table <a href="doc012.html#t9">9</a>.  The meaning of these
 | |
| values is described in more detail in Section <a href="doc008.html#s3.2">3.2</a>.
 | |
| <p><a name="t9"></a>
 | |
|   <center>
 | |
|     
 | |
|     <table cellpadding=0 cellspacing=0 border=1>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=center nowrap><b>Symbol</b></td>
 | |
| <td colspan=1 align=center nowrap><b>Code</b></td>
 | |
| <td colspan=1 align=center nowrap><b>Description</b></td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>
 | |
| 
 | |
| <p><tt>SANE_FRAME_GRAY<a name="i94"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 0 </td>
 | |
| <td colspan=1 align=left nowrap> Band covering human visual range. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| <tt>SANE_FRAME_RGB<a name="i95"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 1 </td>
 | |
| <td colspan=1 align=left nowrap> Pixel-interleaved red/green/blue bands. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| <tt>SANE_FRAME_RED<a name="i96"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 2 </td>
 | |
| <td colspan=1 align=left nowrap> Red band of a red/green/blue image. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| <tt>SANE_FRAME_GREEN<a name="i97"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 3 </td>
 | |
| <td colspan=1 align=left nowrap> Green band of a red/green/blue image. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| <tt>SANE_FRAME_BLUE<a name="i98"></tt> </td>
 | |
| <td colspan=1 align=right nowrap> 4 </td>
 | |
| <td colspan=1 align=left nowrap> Blue band of a red/green/blue image. </td></tr>
 | |
| <tr valign=top>
 | |
| <td colspan=1 align=left nowrap>
 | |
| 
 | |
| <p>
 | |
|     </td></tr>
 | |
| </table>
 | |
|     <p><center>Table 9: Frame Format (<tt>SANE_Frame</tt>)</center>
 | |
|     
 | |
|   </center>
 | |
| <p>
 | |
| 
 | |
| <p>Member <tt>last_frame</tt> is set to <tt>SANE_TRUE</tt> if and only if
 | |
| the frame that is currently being acquired (or the frame that will be
 | |
| acquired next if there is no current frame) is the last frame of a
 | |
| multi frame image (e.g., the current frame is the blue component of a
 | |
| red, green, blue image).
 | |
| 
 | |
| <p>Member <tt>lines</tt> specifies how many scan lines the frame is
 | |
| comprised of.  If this value is -1, the number of lines is not known a
 | |
| priori and the frontend should call <tt>sane_read()</tt> until it
 | |
| returns a status of <tt>SANE_STATUS_EOF</tt>.
 | |
| 
 | |
| <p>Member <tt>bytes_per_line</tt> specifies the number of bytes that
 | |
| comprise one scan line.
 | |
| 
 | |
| <p>Member <tt>depth</tt> specifies the number of bits per sample.
 | |
| 
 | |
| <p>Member <tt>pixels_per_line</tt> specifies the number of pixels that
 | |
| comprise one scan line.
 | |
| 
 | |
| <p>Assume B is the number of channels in the frame, then the bit depth
 | |
| d (as given by member <tt>depth</tt>) and the number of pixels per
 | |
| line n (as given by this member <tt>pixels_per_line</tt>) are
 | |
| related to c, the number of bytes per line (as given by member
 | |
| <tt>bytes_per_line</tt>) as follows:
 | |
| 
 | |
| <p>
 | |
| <center>
 | |
| 
 | |
|   c >= \left{
 | |
|   ll
 | |
|     \lceil B*n / 8\rceil  if d=1
 | |
| </td><td align=right>(1)</td></tr><tr><td align=center>
 | |
| 
 | |
|     B*n *\lceil (d + 7)/8 \rceil  if d>1
 | |
|   
 | |
|   \right.
 | |
| </center>
 | |
| <p>
 | |
| Note that the number of bytes per line can be larger than the minimum
 | |
| value imposed by the right side of this equation.  A frontend must be
 | |
| able to properly cope with such ``padded'' image formats.
 | |
| 
 | |
| <p><h3><a name="s4.3.9">4.3.9 <tt>sane_start</tt></a></h3>
 | |
| 
 | |
| <p>This function initiates aquisition of an image from the device
 | |
| represented by handle <tt>h</tt>.
 | |
| <blockquote><a name="i99">
 | |
| <pre>
 | |
| SANE_Status sane_start (SANE_Handle h);
 | |
| </pre>
 | |
| </blockquote>
 | |
| This function may fail with one of the following status codes.
 | |
| <blockquote>
 | |
| <dl>
 | |
| <dt><tt>SANE_STATUS_CANCELLED</tt>:<dd> The operation was cancelled through
 | |
|   a call to <tt>sane_cancel</tt>.
 | |
| <dt><tt>SANE_STATUS_DEVICE_BUSY</tt>:<dd> The device is busy. The
 | |
|   operation should be retried later.
 | |
| <dt><tt>SANE_STATUS_JAMMED</tt>:<dd> The document feeder is jammed.
 | |
| <dt><tt>SANE_STATUS_NO_DOCS</tt>:<dd> The document feeder is out of
 | |
|   documents.
 | |
| <dt><tt>SANE_STATUS_COVER_OPEN</tt>:<dd> The scanner cover is open.
 | |
| <dt><tt>SANE_STATUS_IO_ERROR</tt>:<dd> An error occurred while communicating
 | |
|   with the device.
 | |
| <dt><tt>SANE_STATUS_NO_MEM</tt>:<dd> An insufficent amount of memory
 | |
|   is available.
 | |
| <dt><tt>SANE_STATUS_INVAL</tt>:<dd> The scan cannot be started with the current
 | |
|   set of options. The frontend should reload the option descriptors, as if
 | |
|   <tt>SANE_INFO_RELOAD_OPTIONS<a name="i100"></tt> had been returned from a call to
 | |
|   <tt>sane_control_option()</tt>, since the device's capabilities may have
 | |
|   changed.
 | |
| </dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.10">4.3.10 <tt>sane_read</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to read image data from the device represented
 | |
| by handle <tt>h</tt>.  Argument <tt>buf</tt> is a pointer to a memory area
 | |
| that is at least <tt>maxlen</tt> bytes long.  The number of bytes
 | |
| returned is stored in <tt>*len</tt>.  A backend must set this to zero
 | |
| when a status other than <tt>SANE_STATUS_GOOD</tt> is returned.
 | |
| When the call succeeds, the number of bytes returned can be anywhere in
 | |
| the range from 0 to <tt>maxlen</tt> bytes.
 | |
| <blockquote><a name="i101">
 | |
| <pre>
 | |
| SANE_Status sane_read (SANE_Handle h, SANE_Byte * buf,
 | |
|                        SANE_Int maxlen, SANE_Int * len);
 | |
| </pre>
 | |
| </blockquote>
 | |
| If this function is called when no data is available, one of two
 | |
| things may happen, depending on the I/O mode that is in effect for
 | |
| handle <tt>h</tt>.
 | |
| <ol>
 | |
| <li>If the device is in blocking I/O mode (the default mode), the
 | |
|   call blocks until at least one data byte is available (or until some
 | |
|   error occurs).
 | |
| 
 | |
| <p><li>If the device is in non-blocking I/O mode, the call returns
 | |
|   immediately with status <tt>SANE_STATUS_GOOD</tt> and with
 | |
|   <tt>*len</tt> set to zero.
 | |
| </ol>
 | |
| The I/O mode of handle <tt>h</tt> can be set via a call to
 | |
| <tt>sane_set_io_mode()</tt>.
 | |
| 
 | |
| <p>This function may fail with one of the following status codes.
 | |
| <blockquote>
 | |
| <dl>
 | |
| <dt><tt>SANE_STATUS_CANCELLED</tt>:<dd> The operation was cancelled through
 | |
|   a call to <tt>sane_cancel</tt>.
 | |
| <dt><tt>SANE_STATUS_EOF</tt>:<dd> No more data is available for the
 | |
|   current frame.
 | |
| <dt><tt>SANE_STATUS_JAMMED</tt>:<dd> The document feeder is jammed.
 | |
| <dt><tt>SANE_STATUS_NO_DOCS</tt>:<dd> The document feeder is out of
 | |
|   documents.
 | |
| <dt><tt>SANE_STATUS_COVER_OPEN</tt>:<dd> The scanner cover is open.
 | |
| <dt><tt>SANE_STATUS_IO_ERROR</tt>:<dd> An error occurred while communicating
 | |
|   with the device.
 | |
| <dt><tt>SANE_STATUS_NO_MEM</tt>:<dd> An insufficent amount of memory
 | |
|   is available.
 | |
| <dt><tt>SANE_STATUS_ACCESS_DENIED</tt>:<dd> Access to the device has
 | |
|   been denied due to insufficient or invalid authentication.
 | |
| </dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.11">4.3.11 <tt>sane_cancel</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to immediately or as quickly as possible cancel
 | |
| the currently pending operation of the device represented by handle
 | |
| <tt>h</tt>.
 | |
| <blockquote><a name="i102">
 | |
| <pre>
 | |
| void sane_cancel (SANE_Handle h);
 | |
| </pre>
 | |
| </blockquote>
 | |
| This function can be called at any time (as long as handle <tt>h</tt> is
 | |
| a valid handle) but usually affects long-running operations only (such
 | |
| as image is acquisition).  It is safe to call this function
 | |
| asynchronously (e.g., from within a signal handler).  It is important
 | |
| to note that completion of this operaton does <em>not</em> imply that
 | |
| the currently pending operation has been cancelled.  It only
 | |
| guarantees that cancellation has been <em>initiated</em>.  Cancellation
 | |
| completes only when the cancelled call returns (typically with a
 | |
| status value of <tt>SANE_STATUS_CANCELLED</tt>).  Since the SANE API
 | |
| does not require any other operations to be re-entrant, this implies
 | |
| that a frontend must <em>not</em> call any other operation until the
 | |
| cancelled operation has returned.
 | |
| 
 | |
| <p><h3><a name="s4.3.12">4.3.12 <tt>sane_set_io_mode</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to set the I/O mode of handle <tt>h</tt>.  The I/O mode
 | |
| can be either blocking or non-blocking.  If argument <tt>m</tt> is
 | |
| <tt>SANE_TRUE</tt>, the mode is set to non-blocking mode, otherwise it's set to
 | |
| blocking mode.  This function can be called only after a call to
 | |
| <tt>sane_start()</tt> has been performed.
 | |
| <blockquote><a name="i103">
 | |
| <pre>
 | |
| SANE_Status sane_set_io_mode (SANE_Handle h, SANE_Bool m);
 | |
| </pre>
 | |
| </blockquote>
 | |
| By default, newly opened handles operate in blocking mode.  A backend
 | |
| may elect not to support non-blocking I/O mode.  In such a case the
 | |
| status value <tt>SANE_STATUS_UNSUPPORTED</tt> is returned.  Blocking
 | |
| I/O must be supported by all backends, so calling this function with
 | |
| argument <tt>m</tt> set to <tt>SANE_FALSE</tt> is guaranteed to complete
 | |
| successfully.
 | |
| 
 | |
| <p>This function may fail with one of the following status codes:
 | |
| <blockquote>
 | |
| <dl>
 | |
| <dt><tt>SANE_STATUS_INVAL</tt>:<dd> No image acquisition is pending.
 | |
| <dt><tt>SANE_STATUS_UNSUPPORTED</tt>:<dd> The backend does not support
 | |
|   the requested I/O mode.
 | |
| </dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.13">4.3.13 <tt>sane_get_select_fd</tt></a></h3>
 | |
| 
 | |
| <p>This function is used to obtain a (platform-specific) file-descriptor
 | |
| for handle <tt>h</tt> that is readable if and only if image data is
 | |
| available (i.e., when a call to <tt>sane_read()</tt> will return at
 | |
| least one byte of data).  If the call completes successfully, the
 | |
| select file-descriptor is returned in <tt>*fd</tt>.
 | |
| <blockquote><a name="i104">
 | |
| <pre>
 | |
| SANE_Status sane_get_select_fd (SANE_Handle h, SANE_Int *fd);
 | |
| </pre>
 | |
| </blockquote>
 | |
| This function can be called only after a call to <tt>sane_start()</tt>
 | |
| has been performed and the returned file-descriptor is guaranteed to
 | |
| remain valid for the duration of the current image acquisition (i.e.,
 | |
| until <tt>sane_cancel()</tt> or <tt>sane_start()</tt> get called again
 | |
| or until <tt>sane_read()</tt> returns with status
 | |
| <tt>SANE_STATUS_EOF</tt>).  Indeed, a backend must guarantee to
 | |
| close the returned select file descriptor at the point when the next
 | |
| <tt>sane_read()</tt> call would return <tt>SANE_STATUS_EOF</tt>.
 | |
| This is necessary to ensure the application can detect when this
 | |
| condition occurs without actually having to call <tt>sane_read()</tt>.
 | |
| 
 | |
| <p>A backend may elect not to support this operation.  In such a case,
 | |
| the function returns with status code
 | |
| <tt>SANE_STATUS_UNSUPPORTED</tt>.
 | |
| 
 | |
| <p>Note that the only operation supported by the returned file-descriptor
 | |
| is a host operating-system dependent test whether the file-descriptor
 | |
| is readable (e.g., this test can be implemented using <tt>select()</tt>
 | |
| or <tt>poll()</tt> under UNIX).  If any other operation is performed on
 | |
| the file descriptor, the behavior of the backend becomes
 | |
| unpredictable.  Once the file-descriptor signals ``readable'' status,
 | |
| it will remain in that state until a call to <tt>sane_read()</tt> is
 | |
| performed.  Since many input devices are very slow, support for this
 | |
| operation is strongly encouraged as it permits an application to do
 | |
| other work while image acquisition is in progress.
 | |
| 
 | |
| <p>This function may fail with one of the following status codes:
 | |
| <blockquote>
 | |
| <dl>
 | |
| <dt><tt>SANE_STATUS_INVAL</tt>:<dd> No image acquisition is pending.
 | |
| <dt><tt>SANE_STATUS_UNSUPPORTED</tt>:<dd> The backend does not support
 | |
|   this operation.
 | |
| </dl>
 | |
| </blockquote>
 | |
| 
 | |
| <p><h3><a name="s4.3.14">4.3.14 <tt>sane_strstatus</tt></a></h3>
 | |
| 
 | |
| <p>This function can be used to translate a SANE status code into a
 | |
| printable string.  The returned string is a single line of text that
 | |
| forms a complete sentence, but without the trailing period
 | |
| (full-stop).  The function is guaranteed to never return <tt>NULL</tt>.
 | |
| The returned pointer is valid at least until the next call to this
 | |
| function is performed.
 | |
| <blockquote><a name="i105">
 | |
| <pre>
 | |
| const SANE_String_Const sane_strstatus (SANE_Status status);
 | |
| </pre>
 | |
| </blockquote>
 | |
| 
 | |
| <p><p><hr>
 | |
| <a href="doc013.html"><img src=../icons/next.gif alt="Next"></a>
 | |
| <a href="doc000.html"><img src=../icons/up.gif alt="Up"></a>
 | |
| <a href="doc011.html"><img src=../icons/previous.gif alt="Previous"></a>
 | |
| <a href="doc000.html"><img src=../icons/contents.gif alt="Contents"></a>
 | |
| <a href="doc019.html"><img src=../icons/index.gif alt="Index"></a>
 | |
| <hr>
 | |
| </body></html>
 |