Commit Graph

1405 Commits

Author SHA1 Message Date
Benjamin Tissoires
a930cdad87 ratbagctl: update man
Should be closer to the truth now.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-16 12:02:56 +02:00
Peter Hutterer
b951d83a64 Add ratbagd_led_has_mode() and the required dbus additions
To be able to query which modes are available.

Exposed via ratbagctl as
./build/ratbagctl.devel led 0 capabilities event4

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-16 08:47:32 +10:00
Benjamin Tissoires
f56df6b1d0 enums.h: few doc fixups
Replacing the doctext where they should be in enum ratbag_led_mode.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-16 07:09:26 +10:00
Benjamin Tissoires
1e35b2ace6 circle.yml: cache dnf packages
We are reusing a lot the fedora container, but we need to always download
and install the same set of packages. Store them in the workspace to
speed up the tests.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-13 18:29:35 +02:00
Benjamin Tissoires
e75c20a249 circle.yml: fix doc deploy key
Of course, it was working on the local tests, but broke on upstream.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-13 18:24:54 +02:00
Benjamin Tissoires
c63ffdd3ef circle.yml: deploy docs when the master branch is updated
Note that the push requires a specific private key in the libratbag
circle CI organization, meaning that only the master branch of libratbag
will be allowed to push to the doc repo.

Note also that only the master branch will trigger the request:
- any PR will not trigger the request
- any push on the master branch of a personal repo will fail while
  attempting to write the docs, if the repo is setup to use circleCI too.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-13 17:47:26 +02:00
Peter Hutterer
40658c6d0e hidpp10: pass the dpi list to libratbag as-is
If our device only has a discrete number of DPIs, pass it on as-is to
libratbag rather than pretending it's a range and then failing to set the
DPIs.

For the actual ranged devices we use libratbag's now-exponential range
mapping rather than passing all possible ones on. This relies on us having the
same steps that libratbag uses, should be safe enough.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
251efd3b40 tools: add dpi get-all to ratbagctl
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
94320099b0 Convert the resolution range into something resembling an exponential one
Because 8000 vs 8050 dpi shouldn't matter...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
f592cabcd7 Replace the resolutions min/max with an explicit list of dpi values
Previously, we could get a min/max value but there was no guarantee that it
any value in between would actually work on the device. Some devices have a
discrete number of resolutions (e.g. 500, 1000, 2000, 2500), most others have
at least a minimum step size (so 1234 isn't a valid dpi value).

Change the min/max to a discrete list of which resolutions are supported. This
allows a UI to adjust its interface dynamically - e.g. a combobox if there are
only 3 resolutions or a slider if there are a million of them.

This is a DBus API break

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
a58096fade tools: always print 'dpi' after resolutions
We printed '500' but '500x500dpi', let's make this consistent.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
b140bc2827 test: add dpi min/max tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
aeaa69b9e1 Move the log defines higher so we can use them anywhere
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 17:46:05 +02:00
Peter Hutterer
a535897ae7 Use Sphinx for the DBus interface documentation
Better than the markdown we were using before, even though we're currently
(ab)using the js/c++ domains for the structure. There is no DBus domain in
sphinx yet.

The main motivation was to get the enums into the documentation since they are
exported ABI.

Generating the documentation is quirky - we use doxygen to extract the
comments from the C header file and then use XSLT to convert to .rst which
sphinx can use. Still better than having to maintain even more copies of the
enums.

Since this is only of interest for maintainers that need to upload the
documentation, it is turned off by default.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 08:59:33 +02:00
Peter Hutterer
1074a2b2e6 circle.yml: drop doxygen and graphviz - obsolete now
We're not building docs anymore

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 08:59:33 +02:00
Peter Hutterer
51c1be3806 Move the enums into their separate header file
libratbag is not a library anymore. Move all the stuff that we need for the
DBus interface (i.e. the enum values) into its own header file so they're
all in one place and we don't have to worry about it anymore.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 08:59:33 +02:00
Peter Hutterer
b9e647ccb8 Remove c++ guard
libratbag is not a public header, so we don't have to worry about C++ anymore.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-13 08:59:33 +02:00
Thomas Hindoe Paaboel Andersen
e063aa3d2a hidpp10: Fix LED read/write
With this the LEDs can be read and written on the G9.

The G9 is as far as I know the only hid++1.0 mouse with RGB LED. The
other mice are monochrome.
2017-10-12 08:07:59 +10:00
Peter Hutterer
9a74e30c64 Use foreach loops to iterate though the profiles
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:14:56 +02:00
Peter Hutterer
f26de4bb29 Change driver probe() as a flat function
Previously, probe() would call ratbag_init_profiles() which in turn would call
the various function pointers in the driver to fill in profiles, buttons and
leds (the latter while filling in profiles). This made the probe() function
harder to understand than necessary and unreliable because it wasn't always
clear which bits were already set up while some driver function was called and
which ones weren't yet.

This patch switches to a flat probe(). The driver still needs to call
ratbag_init_profiles(), libratbag sets up everything (to default values). Then
the driver can fill in the rest as it wants.

This patch still makes use of the current infrastructure, the drivers
just call the read_profile and read_button functions manually now.

Fixes #370

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:14:56 +02:00
Peter Hutterer
e9008eeaba Align resolution creation with the button/profile/led creation bits
Resolutions were still stored in an array over a linked list like the
buttons/leds/profiles and initializing them from a driver was different than
buttons or leds. This brings the resolutions in line with the buttons and
leds.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:14:56 +02:00
Peter Hutterer
d5dc8eccd6 DBus: some more documentation
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:13:44 +02:00
Peter Hutterer
13736d0ced DBus: thighten the definition of the 'Id' for a device
We can't guarantee it's a sysname even though that is what we use for evdev
devices. Future devices may just be some custom-assigned name for a remote
dbus API

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:13:44 +02:00
Peter Hutterer
a926afe8de ratbagd: standardise the log messages a bit better
Prefix with the sysname of the device, then have a 'failed to ...'

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:13:44 +02:00
Peter Hutterer
af78dc4ec2 ratbagd: rename device->name to device->sysname
Because that's what it is and it makes it less confusing in the code

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-11 09:13:44 +02:00
Peter Hutterer
1c85d77d56 data: add LedTypes keyword argument to the device files
At least on HID++ 2.0, the LED types appear to be random and don't match the
protocol specs. Other protocols don't even have those bits, so let's make this
a generic entry.

This is pre-filled for all LEDs but drivers can override it where required.

Fixes #377

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-10 09:30:50 +10:00
Peter Hutterer
c8929b50fa meson: fix default value in meson_options.txt
Keyword is named 'value', not 'default'

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-10 08:41:55 +10:00
Peter Hutterer
e58e79cb8d Fix a comment
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-10 08:41:55 +10:00
Joshua Strobl
049e12b2eb Correct G403 ID. Added Wireless-specific G403 device file. 2017-10-09 21:37:22 +02:00
Benjamin Tissoires
5c71f9552d tools: ratbagctl: make flake8 happy
tools/ratbagctl.in:146:92: E128 continuation line under-indented for visual indent
tools/ratbagctl.in:147:92: E126 continuation line over-indented for hanging indent
tools/ratbagctl.in:154:91: E128 continuation line under-indented for visual indent
tools/ratbagctl.in:155:91: E126 continuation line over-indented for hanging indent
tools/ratbagctl.in:161:118: E128 continuation line under-indented for visual indent
tools/ratbagctl.in:162:118: E126 continuation line over-indented for hanging indent

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-09 19:17:32 +02:00
Benjamin Tissoires
c3be9e1af1 tools: ratbagctl: add missing led types
Or the G502 fails while reading the LEDs

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-09 19:14:04 +02:00
Peter Hutterer
186d626c40 Remove RATBAG_LED_TYPE_UNKNOWN from the enum list
A driver is supposed to know what type an LED is, unknown doesn't help anyone
here. So replace this with a private #define and abort when a driver doesn't
set the type. This also adds a requirement that any driver initializing a LED
must have the read_led() function, otherwise we can't fill it in correctly.

And bump the enum up by one, the first valid value should start at 1 (or some
other non-boolean value).

Related #365
Fixes #364

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 19:12:17 +02:00
Peter Hutterer
dfc433cb74 test: fix LED indexing
Leftover from when we used the LED type as indices, that hasn't been true for
a while.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 19:12:17 +02:00
Peter Hutterer
ab2dae47af hidpp20: require HIDPP_PAGE_COLOR_LED_EFFECTS for LEDs to work
If HIDPP_PAGE_COLOR_LED_EFFECTS fails but the profile returns a nonzero LED
count we crash later in hidpp20drv_read_led() because all the led info is
null.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 19:12:17 +02:00
Peter Hutterer
ec442b960d hidpp20: don't set the device's num_leds, it's overwritten later
This should all be handled by libratbag, not the driver.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 19:12:17 +02:00
Benjamin Tissoires
670720b40f hidpp20: fix .type parsing for sw_leds
struct hidpp20_led_sw_ctrl_led_info holds a u8 for the .type field.
Attempting to convert a value which is already a u8 ends up setting
0 and thus discarding the type information.

Fix by removing the extra step.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2017-10-09 19:12:00 +02:00
Ogier Bouvier
0787e35964 data: add device file and svg for Logitech G703 wired
Signed-off-by: Ogier Bouvier <obouvier@logitech.com>
2017-10-09 12:12:26 +10:00
Peter Hutterer
9f4df9582c test: move an not-null assert to above where we deference it
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 12:01:56 +10:00
Peter Hutterer
d282590746 test: set all leds to logo
Because that's exactly what we rely on right now - zalloc sets it to 0 which
is type logo.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 12:01:56 +10:00
Peter Hutterer
9e5047976b hidpp10: rename a variable from 'profile' to 'typestr'
To avoid confusion

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 12:01:56 +10:00
Peter Hutterer
d69a2ec5ba hidpp10: use _cleanup_ for a profile
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 12:01:56 +10:00
Peter Hutterer
4bfd5d9a13 Add helper functions to loop through profiles, buttons and leds
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 12:01:56 +10:00
Peter Hutterer
091e651831 Fix a comment, the deprecated functions *should* be removed
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-09 12:01:56 +10:00
Thomas Hindoe Paaboel Andersen
d52c2c0320 hidpp10: remove empty callback
write_profile is deprecated and none of the other drivers have an empty
implementation like this.
2017-10-07 09:39:22 +10:00
Thomas Hindoe Paaboel Andersen
cd71ce67b1 hidpp10: only update current resolution once per commit
With the swtich to the commit style the function
hidpp10drv_write_resolution_dpi is doing too much work.

Before commit style the function would:
* get the profile
* get the current resolution
* write the profile (resets it to default dpi)
* set the current (updated) resolution

With the commit style we call the function for every resolution
in every dirty profile we now:
* get the current resolution
* set the current (updated) resolution
Then later:
* write the profile (resets to default dpi)

This patch changes this to only doing one set of the current resolution
when the active profile has been written. This reduces the traffic to the
device and sets the current resolution after the profile write.
2017-10-05 17:20:49 +02:00
Thomas Hindoe Paaboel Andersen
43f501907e hidpp10: fix setting resolution on G9
The G9 sends a short report and does not
have separate DPIs for x and y.
2017-10-05 17:20:49 +02:00
Peter Hutterer
d26d5b83f1 test: set RATBAG_TEST in code, not in meson
It's a fixed value so it's much easier to set this in the test binaries rather
than requiring the user to set this in the env before running a test manually.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-04 18:53:25 +10:00
Peter Hutterer
c401414310 tools: update ratbagd.py for the new logo types
Added in 835a694c4b

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2017-10-04 10:13:53 +10:00
Thomas Hindoe Paaboel Andersen
c34fe85780 G9: add entry for LEDs count 2017-10-03 23:06:01 +02:00
Thomas Hindoe Paaboel Andersen
a19a79d33a hidpp10: add Leds entry to .device file
For the device I have I do not see a way to get
this information by querying the device.

If the value is set in the .device file it will
override anything that the hidpp10 driver itself
would have found.
2017-10-03 23:06:01 +02:00