\contentsline {chapter}{\numberline {1}Preface}{6} \contentsline {section}{\numberline {1.1}About This Document}{6} \contentsline {subsection}{\numberline {1.1.1}Typographic Conventions}{6} \contentsline {chapter}{\numberline {2}Introduction}{7} \contentsline {section}{\numberline {2.1}Terminology}{7} \contentsline {chapter}{\numberline {3}The SANE Environment}{8} \contentsline {section}{\numberline {3.1}Attaching to a SANE backend}{8} \contentsline {section}{\numberline {3.2}Image Data Format}{10} \contentsline {subsection}{\numberline {3.2.1}Image Transmission}{10} \contentsline {chapter}{\numberline {4}The SANE Application Programmer Interface (API)}{13} \contentsline {section}{\numberline {4.1}Version Control}{13} \contentsline {section}{\numberline {4.2}Data Types}{14} \contentsline {subsection}{\numberline {4.2.1}Base Types}{14} \contentsline {subsection}{\numberline {4.2.2}Boolean Type}{15} \contentsline {subsection}{\numberline {4.2.3}Integer Type}{15} \contentsline {subsection}{\numberline {4.2.4}Fixed-point Type}{15} \contentsline {subsection}{\numberline {4.2.5}Text}{16} \contentsline {subsubsection}{Character Type}{16} \contentsline {subsubsection}{String Type}{16} \contentsline {subsection}{\numberline {4.2.6}Scanner Handle Type}{17} \contentsline {subsection}{\numberline {4.2.7}Status Type}{17} \contentsline {subsection}{\numberline {4.2.8}Device Descriptor Type}{17} \contentsline {subsection}{\numberline {4.2.9}Option Descriptor Type}{18} \contentsline {subsubsection}{Option Name}{19} \contentsline {subsubsection}{Option Title}{19} \contentsline {subsubsection}{Option Description}{19} \contentsline {subsubsection}{Option Value Type}{20} \contentsline {subsubsection}{Option Value Unit}{20} \contentsline {subsubsection}{Option Value Size}{21} \contentsline {subsubsection}{Option Capabilities}{21} \contentsline {subsubsection}{Option Value Constraints}{21} \contentsline {section}{\numberline {4.3}Operations}{21} \contentsline {subsection}{\numberline {4.3.1}{\tt sane\_init}}{21} \contentsline {subsection}{\numberline {4.3.2}{\tt sane\_exit}}{24} \contentsline {subsection}{\numberline {4.3.3}{\tt sane\_get\_devices}}{25} \contentsline {subsection}{\numberline {4.3.4}{\tt sane\_open}}{25} \contentsline {subsection}{\numberline {4.3.5}{\tt sane\_close}}{25} \contentsline {subsection}{\numberline {4.3.6}{\tt sane\_get\_option\_descriptor}}{26} \contentsline {subsection}{\numberline {4.3.7}{\tt sane\_control\_option}}{26} \contentsline {subsection}{\numberline {4.3.8}{\tt sane\_get\_parameters}}{28} \contentsline {subsection}{\numberline {4.3.9}{\tt sane\_start}}{29} \contentsline {subsection}{\numberline {4.3.10}{\tt sane\_read}}{30} \contentsline {subsection}{\numberline {4.3.11}{\tt sane\_cancel}}{30} \contentsline {subsection}{\numberline {4.3.12}{\tt sane\_set\_io\_mode}}{31} \contentsline {subsection}{\numberline {4.3.13}{\tt sane\_get\_select\_fd}}{31} \contentsline {subsection}{\numberline {4.3.14}{\tt sane\_strstatus}}{32} \contentsline {section}{\numberline {4.4}Code Flow}{32} \contentsline {section}{\numberline {4.5}Well-Known Options}{33} \contentsline {subsection}{\numberline {4.5.1}Option Number Count}{34} \contentsline {subsection}{\numberline {4.5.2}Scan Resolution Option}{34} \contentsline {subsection}{\numberline {4.5.3}Preview Mode Option}{34} \contentsline {subsection}{\numberline {4.5.4}Scan Area Options}{34} \contentsline {chapter}{\numberline {5}Network Protocol}{36} \contentsline {section}{\numberline {5.1}Data Type Encoding}{37} \contentsline {subsection}{\numberline {5.1.1}Primitive Data Types}{37} \contentsline {subsection}{\numberline {5.1.2}Type Constructors}{37} \contentsline {section}{\numberline {5.2}Remote Procedure Call Requests}{38} \contentsline {subsection}{\numberline {5.2.1}{\tt SANE\_NET\_INIT}}{38} \contentsline {subsection}{\numberline {5.2.2}{\tt SANE\_NET\_GET\_DEVICES}}{39} \contentsline {subsection}{\numberline {5.2.3}{\tt SANE\_NET\_OPEN}}{39} \contentsline {subsection}{\numberline {5.2.4}{\tt SANE\_NET\_CLOSE}}{40} \contentsline {subsection}{\numberline {5.2.5}{\tt SANE\_NET\_GET\_OPTION\_DESCRIPTORS}}{40} \contentsline {subsection}{\numberline {5.2.6}{\tt SANE\_NET\_CONTROL\_OPTION}}{40} \contentsline {subsection}{\numberline {5.2.7}{\tt SANE\_NET\_GET\_PARAMETERS}}{41} \contentsline {subsection}{\numberline {5.2.8}{\tt SANE\_NET\_START}}{41} \contentsline {subsection}{\numberline {5.2.9}{\tt SANE\_NET\_CANCEL}}{42} \contentsline {subsection}{\numberline {5.2.10}{\tt SANE\_NET\_AUTHORIZE}}{43} \contentsline {subsection}{\numberline {5.2.11}{\tt SANE\_NET\_EXIT}}{43} \contentsline {chapter}{\numberline {6}Contact Information}{44}