Commit Graph

6 Commits

Author SHA1 Message Date
Gerhard Sittig 8e5dbaf6e9 dcttech-usbrelay: support conn=vid.pid specs in addition to paths
Extend the scan code path, accept user provided conn= specs in the
"vid.pid" format. Everything else is assumed to be a hidapi compatible
"path" and may suffer from conn= parser limitations. Unfortunately the
hidapi API won't let us lookup paths from bus.addr specs which would
work when multiple cards need to be told apart.
2021-07-23 19:58:46 +02:00
Gerhard Sittig 0498ef4e42 dcttech-usbrelay: accept conn= spec different from hidapi enum details
Rework the scan and probe routines. Skip the USB enumeration's result
set when the user provided a conn= spec, instead exclusively open the
specified device. It's acceptable when this user spec does not match
the details which the hidapi enumeration would yield. [ This version
prepares but does not implement yet support for "funny" hidapi(3) paths
on platforms beyond Linux. ]

This also weakens the logic which determines the relay count from the
USB product string. Any trailing number is accepted. Which allows to use
compatible devices with differing vendor/product strings when conn= is
specified. The previous "USBRelay" prefix check remains in place for
automatic enumeration.

Beautify diagnostics, even phrase debug and spew level messages such
that they can be presented to users. Makes -l 5 look more consistent.
2021-07-23 19:58:46 +02:00
Gerhard Sittig 996331ce9b dcttech-usbrelay: rework scan (enumeration) and probe (identification)
Move all of the sdi creation into the probe routine which communicates
to the relay card. Extend diagnostics in that code path. Which leaves
pure USB enumeration in the scan routine.
2021-07-22 07:59:34 +02:00
Gerhard Sittig e333a40c1c dcttech-usbrelay: adjust serial number and connection string logic
Store the USB relay card's serial number such that users can tell apart
multiple connected cards. Hold the HIDAPI path in the 'connection_id'
member because 'conn' is something internal, not for display purposes.
2021-07-22 07:09:48 +02:00
Gerhard Sittig 321f85fb07 dcttech-usbrelay: implement multiplexer driver for USB relay card
Implement support for the "www.dcttech.com USBRelay<n>" card. This V-USB
based HID device communicates HID reports to control up to 8 relays. The
driver depends on the HIDAPI external dependency for maximum portability.

Support for the conn= parameters is limited. A path that HIDAPI can open
is expected, which depends on the platform and HIDAPI implementation,
and may not always be expressed by means of sigrok command line options.
See README.devices for a discussion.

The USB serial number is not considered. This is an implementation
detail of the relay card's firmware. HID reports carry a five character
identifier for the board.

Relay state is cached in the driver. It's assumed that relay state won't
change outside of libsigrok control as long as the device is opened. The
single request to activate/deactivate all relays at once is supported.
2021-07-21 22:03:18 +02:00
Gerhard Sittig 64d54a719a dcttech-usbrelay: Initial driver skeleton. 2021-07-21 20:41:16 +02:00