Commit Graph

1394 Commits

Author SHA1 Message Date
David Herrmann
1a8037cd6c ratbagd: expose profiles on the bus
Profiles are static children of devices. Expose them as 2nd-level objects
underneath their parent devices on the bus.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-26 18:53:55 +02:00
David Herrmann
dbc8a37b56 ratbagd: move dbus device management
Make sure the device management (lookup and enumeration and registration)
is done from the parent, not the child. Hence, move it into ratbagd.c over
ratbagd-device.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-26 18:07:18 +02:00
David Herrmann
b1851ada93 ratbagd: split dbus handling from object handling
Make sure our dbus callbacks to not contain any logic themselves. They
should be simple wrappers around our internal object handling.

This also makes use of the new sd-bus pat helpers, to-be-released with
systemd-v227 next week.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-26 18:02:00 +02:00
David Herrmann
c0799b0c1d ratbagd: drop UNPRIVILEGED from properties
This does not work, we cannot flag properties as UNPRIVILEGED. Drop it.
Lets figure out later what exactly we want as privilege level to
enumerate and query device properties.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-26 17:59:58 +02:00
David Herrmann
e461710811 ratbagd: add basic device properties
Add two device properties:
  - Id: Returns the string ID to identify the device
  - Description: Returns the ratbag-device name

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-25 16:27:45 +02:00
David Herrmann
bea8e89cc7 ratbagd: create libratbag_device contexts
Make sure to create libratbag_device contexts for each device we add. If
libratbag returns NULL, we just ignore the devices. Otherwise, we keep
the context around and manage the device.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-25 16:05:26 +02:00
David Herrmann
17d66153b0 ratbagd: ignore anything but event devices
We are only interested in evdev, so ignore anything but input-event
devices.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-25 15:57:14 +02:00
David Herrmann
8ca0c11154 ratbagd: keep libratbag context around
Make sure the ratbagd context has a reference to a valid libratbag
context at all times. We need this to access libratbag devices, so lets
reference on in our own context.

This also adds a dependency for libratbag via autotools.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-25 12:51:11 +02:00
David Herrmann
c4afc3d5c0 shared: add safe_close()
Add safe_close() helper that makes close(2) a bit nicer to use. This also
introduces PROTECT_ERRNO, which makes sure a function does not clutter
errno if called.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-25 12:49:44 +02:00
David Herrmann
c22d51e439 build: be more consistent in variable names
Rename UDEV_* to LIBUDEV_* to be more consistent regarding other
pkg-build dependencies.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-25 12:35:43 +02:00
Benjamin Tissoires
0ece3c1a9e hidpp10: fix comment
Looks like the page 1 is not a RAM page but a directory, and is in the
flash too.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-24 14:13:39 -04:00
David Herrmann
aa052ae005 Import initial components
This adds two new components:

1) ratbagd
   The ratbagd daemon is a very basic dbus daemon that provides an
   org.freedesktop.DBus.ObjectManager based enumeration and modification
   API for libratbag devices. So far, all it does is enumerate input
   devices on the bus. However, this will be extended to advertise full
   libratbag hierarchies on the bus and allow clients to modify
   properties via DBus.

   So far, it is root-only, but the DBus policy can be losened and PolKit
   support can be added.

2) ratbagctl
   A very basic command-line tool to manage ratbagd. It's basically a
   command-line interface for the DBus API of ratbagd.

   So far, it has no hookup for anything. This will be added once ratbagd
   gains further DBus APIs.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-24 20:05:27 +02:00
Benjamin Tissoires
c26ce20c5c hidpp10: fix reading memory
Command 0xA2 (Read Sector) takes only a one byte argument for the offset
(entry in the documentation).

Clean up the code and return an error if the page (sector in the doc)
is invalid (to avoid querying the device which would output an
ERR_INVALID_VALUE).

Fixes #15

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-24 13:35:04 -04:00
David Herrmann
3f0b41ec3c Initialize ratbagd repository
Initial commit for the ratbagd project, a dbus daemon to manage libratbag
devices and proxy user accesses.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
2015-09-24 16:45:22 +02:00
Peter Hutterer
ba2bf42ff5 Update TODO
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-19 06:47:02 +10:00
Peter Hutterer
a5b166c525 README: add basic instructions for adding new devices
This is for the best case where it's just about adding a new device ID. In the
case where reverse engineering is required, some more detailed instructions
are necessary but they take more effort to write...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-19 06:43:54 +10:00
Peter Hutterer
f71f10277a README: add the missing extra space for monospace formatting
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-19 06:23:07 +10:00
Peter Hutterer
44d0fd6d93 README.md: add semaphore build status badge
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-19 06:14:53 +10:00
Benjamin Tissoires
bb4b8d729b roccat-drv: fix macro parsing
If the time is not given in the macro, the device still accepts it and
works properly by setting 10 ms of delay after a key press and 50 ms
between the keys.

Problem is: without this, the RATBAG_MACRO_EVENT_WAIT is not set during
parsing, so we end up having a RATBAG_MACRO_EVENT_NONE between 2 key
events, and the library ends up truncating the macro after the first
RATBAG_MACRO_EVENT_NONE.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-18 11:08:37 -04:00
Benjamin Tissoires
0f1b11a874 debug: put the raw debug logs in hidraw, not in per-driver handlers
Might not be the best solution for hidpp10, because it just removes the
duplicates, but this way all of the other drivers can benefit from the
raw debug parameter.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-18 10:56:58 -04:00
Peter Hutterer
98c38ba77c Merge pull request #21 from phomes/master
Read colors from profiles in hidpp10
2015-09-18 01:16:40 +10:00
Thomas Hindoe Paaboel Andersen
5ee30e5a65 hidpp10: don't skip the first profile
Only skip the first two profiles that seem like garbage.
2015-09-17 17:07:47 +02:00
Thomas Hindoe Paaboel Andersen
cbc0f0c4c7 hidpp10: Read colors in profiles 2015-09-17 17:07:47 +02:00
Peter Hutterer
5d992faf1f Merge pull request #20 from cvuchener/small_fixes
hidpp10: add G5 2007
2015-09-18 00:19:13 +10:00
Clément Vuchener
249ad1e639 hidpp10: add G5 2007 2015-09-17 16:11:07 +02:00
Peter Hutterer
71e8528511 Merge pull request #18 from NoXPhasma/g9x
hidpp10: add G9x
2015-09-17 14:22:16 +10:00
NoXPhasma
c5ad1a0e42 hidpp10: add G9x 2015-09-17 03:48:18 +02:00
Peter Hutterer
218f9abce6 tools: include config.h instead of defining _GNU_SOURCE
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-17 07:31:48 +10:00
Peter Hutterer
dc994bbd8a Merge pull request #16 from cvuchener/small_fixes
Abort when the report id is invalid
2015-09-17 07:30:36 +10:00
Clément Vuchener
bfd9c62963 Abort when the report id is invalid 2015-09-16 21:14:04 +02:00
Peter Hutterer
b6bc3fbf86 Merge pull request #13 from cvuchener/small_fixes
Small fixes
2015-09-17 04:44:49 +10:00
Clément Vuchener
863b26eee2 Use defines instead of values for button types 2015-09-16 19:13:15 +02:00
Clément Vuchener
16c83975af Added set current resolution function for G500s 2015-09-16 19:10:34 +02:00
Clément Vuchener
91dd957618 Added long command in hidpp_request_command 2015-09-16 19:08:56 +02:00
Clément Vuchener
cedab5cacc Added G500 id 2015-09-16 18:42:59 +02:00
Peter Hutterer
298205f02e Merge pull request #11 from phomes/led-colors
hidpp10: Add support for get/set of led color
2015-09-17 00:03:04 +10:00
Peter Hutterer
f846dd72d0 Merge pull request #10 from phomes/master
Fixes timeout problems with M705 and adds G9
2015-09-16 23:52:46 +10:00
Thomas Hindoe Paaboel Andersen
81dfec8f79 hidpp10: Add support for get/set of led color
For supported devices this can get and set the led colors in RGB.

This patch just adds the support in the lib. Later patches will
add it to the driver and expose it in libratbag.
2015-09-15 23:46:11 +02:00
Thomas Hindoe Paaboel Andersen
ab7b620dd4 hidpp10/20: fix a buffer overflow
We pass a negative length into log_buffer which expects a size_t.
This causes it to write past the allocated output_buf.
2015-09-15 20:24:56 +02:00
Thomas Hindoe Paaboel Andersen
a85a40b713 hidpp10: add G9 2015-09-15 20:24:56 +02:00
Thomas Hindoe Paaboel Andersen
6155d86923 hidpp10/20: retry on usb timeout
On the M705 I frequently get usb timeouts here if the device has
not been active for a while. Retrying after 10 ms seems to reliably
fix the timeout problem.

We could have just added the 10 ms sleep directly but it does not
seem to be neccesary on wired devices so I chose not to. Setting the
ret value to a face positive number and looping would also work but
we risk an endless loop. In the end I just went for a single retry
as that fixed the problem for me.
2015-09-15 20:24:56 +02:00
Benjamin Tissoires
e514da8218 drv interface: make the commit to the device mandatory
When writing a button, the given button should also be stored in the
memory of the device.
Amend the documentation

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 11:06:30 -04:00
Benjamin Tissoires
c7f8e851c1 etekcity: write the profile to commit the button asap
we should not require to actually write the profile to actually write the
button in the memory of the device.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 11:06:30 -04:00
Peter Hutterer
a3aacd3a99 Drop the _by_index suffix
This is the default, if we need a _by_name or so later we can add it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-16 00:55:12 +10:00
Benjamin Tissoires
41cf0176f0 roccat: remove spurious errors when waiting for the device to be ready
Not perfect but we need to figure out what 0x02 means eventually.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 10:46:26 -04:00
Benjamin Tissoires
3dc8f466ec roccat: abort if the macro does not match
If there is any problem while retrieving a macro, the first element in
the report might not match. In such cases, abort.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 10:38:12 -04:00
Benjamin Tissoires
892497ca60 roccat: retrieve the macro if we are not in the default profile
When the macro is not on profile 0, we need to set the mouse in the
correct mode first.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 10:37:17 -04:00
Benjamin Tissoires
ee0c58ca35 roccat: break infinite loops
When waiting for a status, the mouse sometimes answers 0x02, which seems
to be EINVAL (though it can be an ACK too). Treat this answer so we do
not end up in some infinite loops.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 10:36:10 -04:00
Benjamin Tissoires
8a99ed6436 roccat: write the profile to commit the button asap
we should not require to actually write the profile to actually write the
button in the memory of the device.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-09-15 10:34:42 -04:00
Peter Hutterer
5e4ac9f908 Merge branch 'ratbag-cmd-revamp'
This pull refactors ratbag-cmd to expose almost all functionality from
libratbag and introduces a structured set of arguments.
The history is a bit messy, for review it's recommended to look at the
resulting source file for errors more so than the actual patch set.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-15 23:41:00 +10:00