Previously, if a receiver device didn't respond during the initial scan,
logid would not recognize it until it sent a wakeup/connect event.
This makes it so if the device times out, logid will listen for the next
event from the device and try detecting it. (e.g. shaking the mouse will
make it become detected)
RawDevice would deadlock in some situations because I/O occured while
the listener was turning on. This also seems to have fixed logid
sometimes not detecting devices on receivers.
Only supports OnRelease right now. Also, some bugs were spotted while
writing this:
- Sometimes deadlocks on startup (cause unknown)
- Sometimes valid CIDs will be unknown (bug may have been fixed?)
Some devices throw an hidpp20::Error InvalidFeatureIndex when Root
GetFeature is called with some features (e.g. 0x1b04) as the parameter.
Since Root is a required feature in the HID++ 2.0 protocol, this error
can safely be ignored and treated as an UnsupportedFeature.
Fixes bug in #20 where the Logitech PRO headset would not work.
Many changes were made here but that was the biggest one.
There's currently a bug where std::system_error: Broken pipe is thrown
after launching the daemon with a receiver connector.
A workaround for this bug is to simply shake the mouse while starting
the daemon. I will investigate this soon.