Commit Graph

40 Commits

Author SHA1 Message Date
pixl
f7638b0905
Properly output TimeoutError
Fixed issue where receiver devices aren't detected (hopefully).
2020-07-12 16:16:50 -04:00
pixl
de8e453bd3
Fix deadlock issue
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.
2020-07-12 16:16:24 -04:00
pixl
0fbeb1e3c9
Add Gesture support
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?)
2020-07-12 16:16:24 -04:00
pixl
41049deb35
Fix compiler warnings 2020-07-12 16:16:24 -04:00
pixl
1f3fa53721
Add workqueue system 2020-07-12 16:16:24 -04:00
pixl
bc8f1a983a
Add configurable I/O timeout 2020-07-12 16:16:24 -04:00
pixl
d6f5c35983
Add HiresScroll hidpp20 feature 2020-07-12 16:16:24 -04:00
pixl
5bf5dc75b5
Implement RemapButton feature
Many changes were made here, too many to list here.
2020-07-12 16:16:22 -04:00
pixl
0b87d3c664
Fixed bug: odd devices would fail Root GetFeature
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.
2020-07-12 16:15:48 -04:00
pixl
3129cda581
Add hidpp20 ReprogControls support 2020-07-12 16:15:48 -04:00
pixl
b445b979d3
Remove some useless debug output 2020-07-12 16:15:48 -04:00
pixl
4e33ad7593
Add SmartShift Device feature 2020-07-12 16:15:48 -04:00
pixl
5abf777e00
Add SmartShift hidpp20 feature 2020-07-12 16:15:48 -04:00
pixl
f6b93b94af
Split Configuration into several classes
Each feature should handle its own configuration.
2020-07-12 16:15:48 -04:00
pixl
5f76ccc4ac
Implement AdjustableDPI feature 2020-07-12 16:15:48 -04:00
pixl
1106133f3c
Move logger into util/log.h 2020-07-12 16:15:48 -04:00
pixl
4ba9248038
Use safe thread class instead of std::thread 2020-07-12 16:15:48 -04:00
pixl
ef0a0fab8d
Support Reset (0x0020) feature 2020-07-12 16:15:48 -04:00
pixl
7ae46c938d
Implement FeatureSet feature 2020-07-12 16:15:48 -04:00
pixl
1d001237ba
Monitor wake up/sleep events with Receiver 2020-07-12 16:15:48 -04:00
pixl
22455af615
Add GPL copyright notice in all C++ source files 2020-07-12 16:15:32 -04:00
pixl
dd75df8c18
Use consistent code style
Only files that are currently used in logid are changed.
2020-07-12 16:14:25 -04:00
pixl
bd080e7ef6
Fix bug described in 698971a
Feels like a hacky workaround, may come back to this later.
2020-07-12 16:14:24 -04:00
pixl
261d82390b
Assert report ID and length before sending 2020-07-12 16:14:24 -04:00
pixl
e40da5f0c0
Implement receiver HID++ connect/disconnect events
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.
2020-07-12 16:14:24 -04:00
pixl
b05e525bbc
Add RawReport log level 2020-07-12 16:14:24 -04:00
pixl
c04408c2dd
Implement logid::backend::dj::ReceiverMonitor 2020-07-12 16:14:24 -04:00
pixl
fb0b8e88ef
Clean up temporary code 2020-07-12 16:14:24 -04:00
pixl
f2a7b7b947
Fix long report descriptor check 2020-07-12 16:14:24 -04:00
pixl
7f1af81910
Rewrite logid::DeviceMonitor 2020-07-12 16:14:21 -04:00
pixl
b41649b0de
Implement dj::Receiver class
Again, many things were done here.
2020-07-12 16:13:54 -04:00
pixl
47db60fad8
Fix swapped DefaultDevice and CordedDevice indexes 2020-07-12 16:13:53 -04:00
pixl
ecc5062e0f
Support getting version of HID++ 1.0 devices 2020-07-12 16:13:53 -04:00
pixl
7571be1f54
Don't create a new thread for each raw event
Threads should be created as necessary, there is no reason to
launch a simple event handler in a new thread.
2020-07-12 16:13:53 -04:00
pixl
cc025d3b96
Fully implement Root and virutal Feature class 2020-07-12 16:13:53 -04:00
pixl
c21a923ab2
Print version number of device 1 on each raw dev.
Only works on HID++ >=2.0 so far. Also solves a race condition where
the wrong response can be sent to a request.
2020-07-12 16:13:53 -04:00
pixl
14d07c220e
Create enum of feature IDs 2020-07-12 16:13:53 -04:00
pixl
91954e8a73
Use shared_ptr for devices in DeviceMonitor 2020-07-12 16:13:53 -04:00
pixl
6b895b3015
Monitor all HID++ reports on wireless device 1
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.
2020-07-12 16:13:53 -04:00
pixl
ec4ae56bc4
Implement raw DeviceMonitor
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.
2020-07-12 16:13:40 -04:00