Commit Graph

159 Commits

Author SHA1 Message Date
pixl
a2718d9023
Fix undetected CIDs 2020-07-13 15:29:40 -04:00
pixl
0f60c3896c
Fix usbhid-dump SIGSEGV on #100 2020-07-13 15:12:28 -04:00
pixl
dde2993223
Fix crashes when logid starts as root
If logid scans every device, it will either SIGSEGV or not work at all.
This commit should fix bug #100.
2020-07-13 01:14:15 -04:00
pixl
8f073d66c3
Remove unused dependencies 2020-07-12 16:21:26 -04:00
pixl
4ce76f5927
Listen for events on receiver device on timeout
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)
2020-07-12 16:16:50 -04:00
pixl
1a056a1ecf
Add mutex for events on Receiver 2020-07-12 16:16:50 -04:00
pixl
f7638b0905
Properly output TimeoutError
Fixed issue where receiver devices aren't detected (hopefully).
2020-07-12 16:16:50 -04:00
pixl
214bbbecbc
Remove unused files 2020-07-12 16:16:47 -04:00
pixl
b00b4645e4
Add ChangeDPI action 2020-07-12 16:16:25 -04:00
pixl
949a1ee283
Add CycleDPI action 2020-07-12 16:16:24 -04:00
pixl
21b7455919
Add NullAction support 2020-07-12 16:16:24 -04:00
pixl
4117d71c9d
Add NoPress gesture mode 2020-07-12 16:16:24 -04:00
pixl
10bb10e5c5
Add Axis gesture 2020-07-12 16:16:24 -04:00
pixl
ecfd03fd21
Add OnInterval/OnFewPixels gesture 2020-07-12 16:16:24 -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
d478ef3309
Add error check for bad action type 2020-07-12 16:16:24 -04:00
pixl
1f3fa53721
Add workqueue system 2020-07-12 16:16:24 -04:00
pixl
02d361b541
Add ToggleHiresScroll action 2020-07-12 16:16:24 -04:00
pixl
77f4240ec7
Add ToggleSmartShift action 2020-07-12 16:16:24 -04:00
pixl
bc8f1a983a
Add configurable I/O timeout 2020-07-12 16:16:24 -04:00
pixl
055d136b09
Add HiresScroll device feature 2020-07-12 16:16:24 -04:00
pixl
d6f5c35983
Add HiresScroll hidpp20 feature 2020-07-12 16:16:24 -04:00
pixl
71b0ddd279
Add reset mechanism to logid::Device 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
c382ba1c0b
Add getFeature function to Device 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
07b8fc1af4
Add DPI 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
181be50f88
Use unique pointer for global device manager
Changed from raw pointer to a unique_ptr, also renamed from finder to
device_manager
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
d84363019b
Create a safe thread wrapper 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
60e47572d6
Add GPL copyright notice to DeviceFeature.h 2020-07-12 16:15:48 -04:00
pixl
152b9e6cfd
Add interface for device features in logid::Device 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
6bfa52e5c1
Remove libhidpp submodule 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
f0c903d539
Rename DeviceMonitor to DeviceManager 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
PixlOne
526ffec61a
Implement reload method 2020-07-12 16:03:32 -04:00
PixlOne
6316b89840
Reorganise logid.cpp 2020-07-12 16:01:52 -04:00
PixlOne
6e7445b197
Add versioning to logiops binaries 2020-07-12 16:00:33 -04:00
Azeem Jiva
d0242f53c8 Add string headers to allow building on latest gcc 2020-07-04 11:36:53 -07:00
pixl
ef84577b9c
Add ability to blacklist devices 2020-07-04 00:10:44 -04:00
zvon
a8abe89cd1 Only prit CIDs the first time a device connects 2020-06-11 18:26:42 +02:00
zvon
a69ba7787e Log device's available CIDs 2020-06-10 15:26:45 +02:00
pixl
78f2d74cc1 Update hiddp submodule 2020-05-15 18:57:05 -04:00
PixlOne
0c5291083d Move StartLimitIntervalSec to Unit
Solution to #51, thanks levaidaniel
2020-05-15 04:07:17 -04:00
Fabio Streun
97b174f6df Fix DeviceConfig default initialization
Initialize smartshift to nullptr.
Otherwise, the device configuration contains a SmartshiftStatus, even though, none was declared in the configuration file.
This causes later an error if the device does not support SmartShift.
2020-05-14 12:43:25 +02:00
PixlOne
2ed3efaed4 Make logid service restart after failure
Workaround, should fix bug #39.
2020-04-07 15:07:06 -04:00
PixlOne
00298c00ab Make gesture constructor require fewer arguments 2020-04-02 02:09:03 -04:00
PixlOne
5a913552b1 Make OnFewPixels require a pixels field.
Fixes bug #29.
2020-04-01 02:31:46 -04:00
PixlOne
da689cad35 Set timeout error severity to DEBUG 2020-03-31 16:07:55 -04:00
PixlOne
f3edab82ce Fix unsupported functions on ReprogControls 2020-03-29 18:05:52 -04:00
PixlOne
38dcc65d4b Use camelCase for function names 2019-10-05 21:27:17 -04:00
PixlOne
9272666ffe Use logid namespace 2019-10-04 21:56:17 -04:00
PixlOne
295a469505 Update hidpp submodule 2019-10-04 21:54:38 -04:00
Ayman Bagabas
1e86dc49f6 Add libconfig to CMake pkg_check_modules 2019-10-02 21:13:06 -04:00
PixlOne
ca04204a8c Use receiver events to listen for devices 2019-10-02 18:41:10 -04:00
PixlOne
00df833c54 Add libhidpp as submodule 2019-09-22 22:51:01 -04:00
PixlOne
0002d9f536 Fix bluetooth reconnection events 2019-09-21 13:29:12 -04:00
rockerbacon
a03e13936c Renamed method 2019-09-20 18:48:44 -03:00
rockerbacon
874b9101e5 Removed list include in DeviceFinder 2019-09-20 18:36:21 -03:00
rockerbacon
cf39d9f680 Fixed map include in DeviceFinder 2019-09-20 18:34:36 -03:00
rockerbacon
21b6c2367f Formatted variable names to conform with snail case standard 2019-09-20 18:24:30 -03:00
rockerbacon
34509ad6d6 Using error code to check for resource error 2019-09-20 18:15:52 -03:00
rockerbacon
03560b08df Fixed error that caused logid to stop querying asleep devices 2019-09-20 18:03:23 -03:00
rockerbacon
ba0bf93b80 Switched device removal and insertion responsibility to DeviceFinder 2019-09-20 17:20:06 -03:00
rockerbacon
13bce5cc76 Added mutex to devices to avoid cuncurrency issues 2019-09-13 11:21:26 -03:00
pixl
d5c5c9040c
Merge pull request #2 from rockerbacon/clean-warnings
Add virtual destructor to ButtonAction + extra warning flag
2019-09-11 20:45:46 -04:00
PixlOne
4dff144798 I forget what I did here. 2019-09-11 20:41:44 -04:00
rockerbacon
15ed6dd454 Changed tab to 4 spaces 2019-09-11 12:50:23 -03:00
rockerbacon
934a76f017 Added virtual destructor to abstract class ButtonActions to avoid errors during destruction of child classes 2019-09-11 12:40:06 -03:00