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
events.
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
possibilities.
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
existent variants.
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 ([email protected])