1
0
forked from drath/libratbag
Commit Graph

537 Commits

Author SHA1 Message Date
Peter Hutterer
bf4e288dfe Mark log_msg and log_msg_va with attribute(printf)
And fix the warnings resulting from that.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-15 10:38:12 +10:00
Peter Hutterer
1b20beaada README: fix device-notes repository link
We renamed it, a bit less awkward this way.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-15 09:48:51 +10:00
Peter Hutterer
0b74605779 README: link to mailing list, devices-notes repo, etc.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-15 09:15:45 +10:00
Peter Hutterer
2bd900822e hidpp10: align the "received" message with the "expected" messages
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-14 08:10:53 +10:00
Peter Hutterer
c37f45f125 hidpp10: ignore the response length when comparing expected vs real response
The request length doesn't tell us what the expected response length is, e.g.
0x63 (current resolution) is set with a long request but replies with a short
ack.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-14 08:10:53 +10:00
Peter Hutterer
2f5b49fb68 Merge pull request #34 from whot/wip/hidpp10-specs
a bunch of HID++ 1.0 requests fixed or added
2015-10-14 07:13:32 +10:00
Peter Hutterer
1b6e65bf88 hidpp10: implement 0x64 set usb refresh rate call
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-14 06:38:48 +10:00
Peter Hutterer
7003fd567c hidpp10: implement 0x0D Battery Mileage
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:44:17 +10:00
Peter Hutterer
9617baf647 hidpp10: add a helper function to dump all pages
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:33:48 +10:00
Peter Hutterer
633c5cb106 hidpp10: extend handling of 0x51 LEDs
First: there are 6 LEDs, not just 4. If the LEDs don't exist, the value is
UNCHANGED on the read request.

The value is more than a simple on/off, though at least the G500s only looks
at the lower two bits, so heartbeat and slow off both translate into "on" and
blink and slow on both translate to "off".

There doesn't seem to be a detection mechanism for what a device really
supports.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:33:42 +10:00
Peter Hutterer
bc7c48ecc0 hidpp10: implement 0x54 LED intensity
Untested, my devices don't handle this request

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:33:38 +10:00
Peter Hutterer
3c5443d203 hidpp10: Add a note to the 0x57 LED color command
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:33:34 +10:00
Peter Hutterer
cef532e51e hidpp10: add 0x07 Battery Status parsing
Untested, my M570 just gives me 0, 0, 0 and all the other devices are wired.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:33:20 +10:00
Peter Hutterer
da1f11cc7b Drop the remainder of the uLogitech project
We've moved the bits we're interested in out already.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:30:51 +10:00
Peter Hutterer
9089478e29 semaphore: add the two lines we're now using as build script in semaphore
Rather than copy/pasting the script, let semaphore fetch it and execute it.
This way we only need to maintain it in one place.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:30:51 +10:00
Peter Hutterer
3b38e5a009 semaphore: fix wrong linebreak added by copy/paste
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 11:22:53 +10:00
Peter Hutterer
fcbc930ca3 Add the build script used by SemaphoreCI 2015-10-13 08:55:38 +10:00
Peter Hutterer
9d686d8dc3 Whitespace fix
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 08:35:55 +10:00
Peter Hutterer
31dc1f4772 Use _cleanup_ functions for udev/udev_device
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 08:33:55 +10:00
Peter Hutterer
2d7f874a57 Merge pull request #31 from whot/master
extra _safe() helper functions, start of the cleanup attribute
2015-10-13 08:22:48 +10:00
Peter Hutterer
a36f83606c Always return NULL from the _unref() calls
There's no good reason to return the object from the unref() call other than
for testing purposes, and we can work around this by using valgrind instead.
The API is a lot more consistent when we always return NULL.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 08:19:30 +10:00
Benjamin Tissoires
3d380af3a8 prevent error to be shouted when the .probe() returns -ENODEV
Seen on the second input node of the Roccat Kone XTD:
"ratbag error: ROCCAT Kone XTD: driver specified in hwdb not found: roccat

With the new hwdb matching, we should not try any other driver not having
the right id, so simplify the for loop to find the driver only.

Fixes #32

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-12 17:26:37 -04:00
Peter Hutterer
46b7a15663 Start using the __attribute__((cleanup))
Not a lot of use-cases in the main libratbag code yet, but the protocol
handling and hidraw bits may make more use of it.
2015-10-13 07:01:49 +10:00
Peter Hutterer
5b8f3c4744 Add snprintf_safe() and sprintf_safe helpers
Blows up when sprintf encounters an error, the result string is empty or the
result string is truncated.

Note: sprintf_safe only works on static buffers, it uses ARRAY_LENGTH.

Fixes #14

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 07:01:09 +10:00
Peter Hutterer
1abc7cdb69 Add strdup_safe() as a reliable strdup function
Handles NULL and guarantees a successful strdup

Fixes #14

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-13 07:00:16 +10:00
Benjamin Tissoires
c464c86fa4 fix ratbag_button_get_special
looks like a cpy-paste-o

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-12 16:08:06 -04:00
Peter Hutterer
357191b1e0 Improve the README a bit
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-10-12 10:55:26 +10:00
Benjamin Tissoires
d9645c0e4b hidpp20: document the names of the features in gaming mice
This patch adds nothing but some debug outputs and prepares the code
to support the recent gaming mice from Logitech.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-11 10:28:37 -04:00
Benjamin Tissoires
4abdb634cf hidpp20: add a define to document feature 0x0003
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-11 10:25:16 -04:00
Benjamin Tissoires
f4777e7b71 hidpp20: fix adjustable DPI for older mice
The G502 uses the version 0 of the adjustable DPI feature. This version
does not echo the given parameters which raised a -EIO in libratbag.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-11 10:24:45 -04:00
Benjamin Tissoires
439e287776 fix readme for the doc
github is happy with the current README but doxygen is not.
Use the same formatting than the architecture.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-09 17:23:42 -04:00
Benjamin Tissoires
e606473198 update README
update README to reflect the hwdb change.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-09 17:19:16 -04:00
Benjamin Tissoires
9b18b877a7 hwdb: fix MX master entry
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-09 17:03:44 -04:00
Benjamin Tissoires
f48ee7e25b hwdb: fix udev rule for uhid devices
The MX Master is using BLE to connect, and so the system sees it as a uhid
device. The current rule ignores it because uhid devices do not have the
ID_BUS set.

Fix that by detecting uhid devices and put the bus in the hwdb accordingly.

For completeness, also add usb through uhid so we can also replay devices
and test their drivers.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-09 17:03:25 -04:00
Benjamin Tissoires
ebad4ecd0a test: fix the loading of the test driver
This test driver is already twisting a little bit the API, so twist it
a little bit more.

An other solution would be to just add a (void* data) parameter to .probe()
but there is no point in it because only test_driver would be used.

Create a new probe callback only used when using the test driver, so make
check is happy.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-09 16:26:39 -04:00
Thomas Hindoe Paaboel Andersen
3605bede48 Use udev rules/hwdb to match mice to drivers and SVGs
This adds udev rules/hwdb that sets RATBAG_DRIVER and RATBAG_SVG
properties to the event devices. We then use this property to select
the correct driver instead of checking the hardcoded list in the
drivers. Having this in a hwdb makes it easier for users to test
if drivers match their mouse with a system installed libratbag.

Each driver now has an "id" which is used to match the driver set
in RATBAG_DRIVER. A SVG can optionally be set as well.

All entries in the hwdb are currently without a name as that
information was not available in the hardcoded lists.

Note that this patch breaks the test-driver.
2015-10-09 21:05:33 +02:00
Benjamin Tissoires
5278d43429 hidraw: add 2 hidraw functions to fetch the usage page and the usage of a report
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-08 11:43:07 -04:00
Benjamin Tissoires
44dc1f7462 Revert "hidraw: ratbag_hidraw_has_report() can also match the usage and usage page"
This reverts commit d5a20efd8b.

The API is horrible. Better having 2 additional functions to get
the usage and usage pageof the report.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-08 08:27:43 -04:00
Benjamin Tissoires
48ce20ae21 hidraw: allow uhid devices to detect siblings
When using uhid devices, we might want to check for siblings too. This is
a corner case so that's why it might not work in 100% of the cases.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 20:14:10 -04:00
Benjamin Tissoires
d5a20efd8b hidraw: ratbag_hidraw_has_report() can also match the usage and usage page
Add a match against the usage page and the usage.
If we are not interested in this new match, we can just use 0.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 20:14:10 -04:00
Benjamin Tissoires
d95885c52c hidraw: fix endianness when parsing the report descriptor
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 20:14:10 -04:00
Benjamin Tissoires
a207fa0989 hidraw: store the report usage page and usage
We might need to check against them too, so parse them and store them.

It is a little bit tricky when there is no report ID. In this case, assume
that the Collection(Application) is a match.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 20:14:10 -04:00
Benjamin Tissoires
aacdb9923e hidraw: the report ID can be of arbitrary size
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 20:14:10 -04:00
Benjamin Tissoires
1175d69741 hidraw: store a struct when parsing the report descriptor
We will be interested in the type of reports, so prepare the storage
by using an external struct to store the reports.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 20:14:10 -04:00
Benjamin Tissoires
63a1202890 hidraw: remove duplicated code
ratbag_open_hidraw is a special case of ratbag_find_hidraw() when
we do not check for the parent and we do not have a match.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 18:46:24 -04:00
Benjamin Tissoires
13c3d9a110 hidraw: do not open twice the same hidraw node
When using the same context, we do not want to open twice the same
hidraw node if two input node match it.
Store the sysname in the ratbag_device so we can check if it has been
opened previously.

Note that ratbag-command list still shows all input node as working
because we just close them as soon as we opened them.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 18:46:19 -04:00
Benjamin Tissoires
1cbb80b7b4 keep track of opened devices
If we want to remove the duplicate nodes opened when using
ratbag_find_hidraw(), we need to somehow keep track of all opened
ratbag_device.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 18:46:15 -04:00
Benjamin Tissoires
e71ac0a088 hidpp20drv: add support of Logitech G502
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 18:30:22 -04:00
Benjamin Tissoires
975c91ae54 hidraw: allow opening of sibling devices
Some mice have a separate hid interface for configuring the advanced
features. It occurs that this is a common enough use case to be handled
directly by libratbag-hidraw instead of having a per-device quirk.

The idea is to allow opening the sibling hidraw devices during .probe()
and to give a matching callback. If the callback succeeds, then the
hidraw node will be used.
With this, one device might be opened several times, this has to be fixed
in a separate commit.

Fixes issue #19

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 18:30:21 -04:00
Benjamin Tissoires
ce37417525 hidraw: break ratbag_open_hidraw in two
We want to be able to find sibling hidraw nodes. For that, we need to
open and test several different hidraw nodes. Makes the opening of a
specific hidraw node in its own function.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-10-07 18:30:21 -04:00