[sane-devel] Sane API
pzz at apevzner.com
Wed Oct 21 14:32:39 BST 2020
On 10/21/20 3:04 PM, Thierry HUCHARD wrote:
> I don't see why notifications should be made by sane.
> It is the system that takes care of the connection / disconnection of
> the devices!
Because only backends knows, how system events are mapped to scanner PnP
Applications should not be responsible to poll USB bus for USB-level
events, which some knowledge how to distinguish mouse from scanner, poll
DNS-SD events, with some knowledge, which services are registered by
scanners and so on.
May be in printer world it could work, because there are only one device
class, used by USB printers, and only 3 service types, used by DNS-SD to
advertise a printer, and these is no such thing as SCSI printer, but
scanner hardware is MUCH more chaotic.
>> - If some scanner is identified by multiple backends, it would be nice
>> to let user app to automatically choose one of the list. For this
> I'm for leaving the choice to the user, the automatic choice criteria
> are generally subjective choice
> criteria (specific to the developer), generally they limit the
This is UI (user interface) - level decision, our goal is to provide a
mechanism that makes this decision possible to be implemented.
>> For the following things we just don't have appropriate SANE_Value_Type:
>> - Scanner resolution if a form of X*Y pair. This is important, to
>> support "asymmetrical" resolutions (300*600, for example)
> This change could easily be implemented without SANE-1.0.
OK, but how?
>> For the following options we don't have enough discipline:
>> - SANE_NAME_SCAN_SOURCE. There is no common names for ADF simplex/ADF
>> duplex, ADF front/ADF back
> It's only discipline!
Yes, but in result, every application that care must be aware about all
The existent situation needs at least to be documented, and well-known
names needs to be added to the documentation and C header file.
> Indeed, sane_read should be allowed to return the scanner data without
> processing it!
And it actually affects behavior of some other options and API calls.
For example, if backend doesn't decode, it should not be obliged to
return accurate data from sane_get_parameters. List of possible color
modes could be different for "raw" and decoded modes (in raw mode
backend may support mode that it cannot decode). Scan region settings
may or may not work in the "raw" mode. All emulated options unlikely to
work in the "raw" mode, and so on,
Wishes, Alexander Pevzner (pzz at apevzner.com)
More information about the sane-devel