Summary This project integrates libsane and sane into Solaris. This project requests a minor binding. 4.1 Details SANE is an application programming interface (API) that provides standardized access to any raster image scanner hardware. The standardized interface makes it possible to write just one driver for each scanner device instead of one driver for each scanner and application. SANE is clearly separated into applications(frontends) and scanner drivers(backends). A SANE backend provides an interface with the hardware and describes a number of options which drive each scanner. sane, in this proposal, refers to applications that are delivered by SANE community, http://www.sane-project.org/. "sane-backends" package of FOSS project SANE contains backends, documentation, networking support and the command line frontend "scanimage". In this project, the following components will be ported and integrated into Solaris: 1)sane-backends sane-backends contain drivers for popular scanners on the market. This project proposes to only support local USB scanners. As an effort to enrich desktop applications for Indiana, SANE network feature is not considered essential and hence out of scope for this project. A future case may support this functionality. 2)libsane Standard SANE APIs are provided by libsane. Different frontends are developed on the base of such set of API. 3)sane documentation User manuals. 4)scanimage scanimage is a command-line interface to control image acquisition devices. It is one of the SANE frontends. 5)xscanimage xscanimage provides a graphical user interface to control an image acquisition device such as scanner. It allows previewing and scanning individual images. SANE depends on the scanner's device special file for access control. For USB interface scanners, by default only users on console or superuser have permission to access the devnode, which is controlled by logindevperm(4). It is also possible to restrict access to a scanner using Solaris device allocation subsystem. Sysadmin can enable BSM and put scanner device special file (exported by ugen(7D)) in device_map and device_allocate(4), so that the scanner is allocatable and then can be used by only one qualified user at a time. 4.2 Interface description Exported interfaces ------------------- SUNWsane Uncommitted SANE frontends SUNWsane-backends Uncommitted SANE backends -- library and drivers /usr/include/sane/sane.h Committed SANE API header file /usr/include/sane/saneopts.h Committed SANE options header file /usr/lib/libsane.so Committed SANE library symbolic link /usr/lib/libsane.so.1 Uncommitted SANE library symbolic link /usr/lib/libsane.so.1.0.19 Uncommitted SANE library[1] /usr/lib/sane Committed SANE backends location /usr/lib/sane/* Uncommitted SANE backends /etc/sane.d/dll.conf Committed Contain backend names /etc/sane.d/*.conf Uncommitted Each backend has a .conf /usr/bin/scanimage Uncommitted SANE CLI frontend /usr/bin/xscanimage Uncommitted SANE GUI frontend /usr/bin/sane-config Uncommitted Utility to get information about installed libsane /usr/bin/sane-find-scanner Uncommitted Utility to find scanners Documents delivered: /usr/share/man/man1/scanimage.1 /usr/share/man/man1/xscanimage.1 /usr/share/man/man1/sane-find-scanner.1 /usr/share/man/man1/sane-config.1 /usr/share/man/man7/sane.7 /usr/share/man/man5/sane-*.5 --------------- SANE C API ---------------------------------------- sane_init Committed Initialize the backend sane_exit Committed Terminate use of a backend sane_get_devices Committed Query the list of devices sane_open Committed Establish association with a particular device sane_close Committed Terminates the above association sane_get_option_descriptor Committed Access option descriptors sane_control_option Committed Set/query the current value of option number sane_get_parameters Committed Obtain the current scan parameters sane_start Committed Initiates acquisition of an image sane_read Committed Read image data from the device sane_cancel Committed Cancel the pending operation sane_set_io_mode Committed Set the I/O mode sane_get_select_fd Committed Obtain file-descriptor from handle sane_strstatus Committed Translate SANE status code into printable string Imported Interfaces -------------------- libusb Volatile User-space USB device management library NOTE: [1] Due to lack of 64 bit support of the dependent library - libusb, this case will deliver 32-bit library first. libsane 64-bit support will be delivered in another integration with CR6672460. 5. References [1] http://www.sane-project.org/ [2] PSARC 2003/721 libusb: user level usb library [3] LSARC 2007/018 Sane-backends and Xsane [4] CR6672460 - libusb should provide 64-bit support