For some reason, hidpp20 device names were badly set (e.g.
'Wireless Mouse MWireless' instead of 'Wireless Mouse MX Master').
Adding a 100ms delay to addDevice seems to have fixed it.
RawDevice will now interruptRead() on pushing an event to the I/O
queue. This will prevent the listener from waiting for an event to
be received before handling an I/O request.
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.
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.
Again, many things were done in this commit such as implementing an
I/O queue, a mutex_queue, and implementing the hidpp::Report class.
I'm expecting commits to be like this until I can get a clean
codebase for the backend.
Multiple things have been done in this commit; the base of the new
backend has effectively been created. This branch currently has many
vital parts commented out. Therefore, this branch is currently only
intended for debugging.