Commit Graph

92 Commits

Author SHA1 Message Date
Richard Hughes
d7aeac4663 logitech-hidpp: Use endian-safe version functions 2021-12-10 15:59:57 +00:00
Richard Hughes
e87fc05ab9 Speed up the daemon startup by ~2% by doing dlsym much less
We were calling g_module_symbol() 2703 times, which is actually more
expensive than you'd think.

It also means the plugins are actually what we tell people they are:
A set of vfuncs that get run. The reality before that they were dlsym'd
functions that get called at pretty random times.
2021-11-09 12:02:07 +00:00
Richard Hughes
37a5787229 logitech-hidpp: Set the vendor name in more places 2021-11-08 15:56:17 +00:00
Richard Hughes
8917a11208 logitech-hidpp: Fix a tiny memory leak for an error path 2021-11-02 13:47:56 +00:00
Richard Hughes
d0162352a6 logitech-hidpp: Fix a small memory leak at startup 2021-10-27 15:57:53 +01:00
Richard Hughes
3acbe9bed3 trivial: Fix a -Waddress-of-packed-member warning 2021-10-12 09:42:59 -05:00
Richard Hughes
543ae52e23 Document some of the environment variables used by fwupd
Fixes https://github.com/fwupd/fwupd/issues/3760
2021-09-21 10:25:12 +01:00
Ricardo Cañuelo
b050d9870f logitech-hidpp: fix quirk entry for future device 2021-09-20 10:21:44 +02:00
Ricardo Cañuelo
e47de909c0 logitech-hidpp: adhere more closely to the specs
The restart message is supposed to be HIDPP_REPORT_ID_LONG according to
the specs, but it works just as well if we use
HIDPP_REPORT_ID_SHORT. We better stick to the specs, though.
2021-09-20 10:21:44 +02:00
Ricardo Cañuelo
ab5c38b679 trivial: logitech-hidpp: fix request message setting 2021-09-20 10:21:44 +02:00
Ricardo Cañuelo
297653f728 logitech-hidpp: remove user action message from Bolt receiver update 2021-09-20 10:21:44 +02:00
Ricardo Cañuelo
c198055a54 logitech-hidpp: remove unnecessary 'bolt-peripheral' private flag 2021-09-20 10:21:44 +02:00
Richard Hughes
1ff96eb4b3 Restore the ABI for fu_device_detach() and provide new symbols
Quite a few plugins are using a FuDeviceLocker to detach then attach in
the error path, and finding them isn't easy as we explicitly cast to a
FuDeviceLockerFunc.

For sanity, just provide both symbols so we can do the right thing in
both cases. It seems like a sensible thing to allow.

Fixes https://github.com/fwupd/fwupd/issues/3771
2021-09-17 16:35:21 +01:00
Richard Hughes
e50d911a59 logitech-hidpp: Use accurate FuProgress steps 2021-09-17 14:45:39 +01:00
Ricardo Cañuelo
26a1ddf49d logitech-hidpp: fix logical id for radio devices 2021-09-15 10:19:37 +02:00
Ricardo Cañuelo
5675e16274 logitech-hidpp: fix logical ids for BLE and paired devices 2021-09-15 10:19:37 +02:00
Richard Hughes
40cd18fa97 Allow using a per-device global percentage completion
It's actually quite hard to build a front-end for fwupd at the moment
as you're never sure when the progress bar is going to zip back to 0%
and start all over again. Some plugins go 0..100% for write, others
go 0..100% for erase, then again for write, then *again* for verify.

By creating a helper object we can easily split up the progress of the
specific task, e.g. write_firmware().

We can encode at the plugin level "the erase takes 50% of the time, the
write takes 40% and the read takes 10%". This means we can have a
progressbar which goes up just once at a consistent speed.
2021-09-13 14:28:15 +01:00
Ricardo Cañuelo
15a39b94ee logitech-hidpp: Add support for updating Bolt peripheral firmware
Also simplify the Instance IDs added by the Bolt hardware.
2021-09-13 11:28:55 +01:00
Richard Hughes
91536c5638 logitech-hidpp: Add the Model ID instance ID before getting firmware versions
This will allow us to create a device-radio child in the future.
2021-09-01 15:42:24 +01:00
Richard Hughes
0792ac0477 logitech-hidpp: Don't assume all USB devices with VEN_046D are Unifying
Logitech only provided one peripheral update for unifying hardware as a
PoC and now we are supporting other receivers this does not make a lot
of sense. All the new Bolt peripherals will need quirks anyway.
2021-09-01 15:42:24 +01:00
Richard Hughes
12f01c8622 logitech-hidpp: Use UNREACHABLE rather than modifying UPDATABLE 2021-09-01 15:42:24 +01:00
Ricardo Cañuelo
512973fa50 logitech-hidpp: Add support for updating Bolt receiver radio firmware 2021-09-01 15:07:09 +01:00
Ricardo Cañuelo
35af30321a logitech-hidpp: Add support for updating Bolt receivers 2021-09-01 15:07:09 +01:00
Richard Hughes
9d2168e985 logitech-hidpp: Fix a regression in updating Unifying peripherals
This regressed in a3ecccc31c
2021-08-31 19:27:59 +01:00
Ricardo Cañuelo
7b31e92e85 logitech-hidpp: Retry 5 times to setup after the device restarted 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
482148a185 logitech-hidpp: Allow the HIDPP write to fail on attach
On some devices the device restarts before it can send the reply.
2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
a3ecccc31c logitech-hidpp: Allow children to attach using the parent device for future code 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
b4b7af6c9f logitech-hidpp: Fetch the device model ID to add a more precise InstanceID 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
8ac10329c9 logitech-hidpp: Store the HIDPP++ PID for future usage 2021-08-31 17:15:15 +01:00
Richard Hughes
2629944aa0 logitech-hidpp: Just use FuLogitechHidPpDevice rather than a stub 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
0974dc759b logitech-hidpp: Use an interactive request to restart some Logitech DFU devices 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
f63afade6f logitech-hidpp: Add some trivial defines for polling intervals 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
f4926e2d8e logitech-hidpp: Add support for devices supporting the Unified Battery feature 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
ef95d362dd logitech-hidpp: Fix reading HID++1.0 battery mileage 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
4534f2d7fc logitech-hidpp: Reduce some debug noise on update 2021-08-31 17:15:15 +01:00
Ricardo Cañuelo
74e126390a logitech-hidpp: Fix a critical error on flash failure 2021-08-31 17:15:15 +01:00
Mario Limonciello
55de39c077 trivial: reformat the whole tree to match new format 2021-08-24 11:18:40 -05:00
Richard Hughes
c1ff02f055 trivial: Make the quirk style more consistent 2021-08-23 18:10:12 +01:00
Ricardo Cañuelo
7b18e593ea trivial: Ignore NUL chars in the device version
Signed-off-by: Richard Hughes <richard@hughsie.com>
2021-08-05 14:22:15 +01:00
Mario Limonciello
798d1ed3ee trivial: update markdown for pre-commit style 2021-07-18 14:42:47 -05:00
Richard Hughes
d4bd5cca5a Standardize some of the device summary text
This is supposed to be 'Sentence case' with no trailing fullstop.
2021-07-09 07:07:07 +01:00
Richard Hughes
dfaae2e837 Move amdgpu safety check into the plugin
There are now multiple plugins using drm_dp_aux_dev interface which
may potentially be combined with an amdgpu. Prevent exercising this
interface with any plugin using DP aux unless a new enough kernel is
installed.
2021-07-04 17:49:36 +01:00
Richard Hughes
0076c3eaf9 logitech-hidpp: Remove the FuLogitechHidPpBootloaderClass->setup() action
It's not required as we can just call up to the parent instead.
2021-06-17 16:21:41 +01:00
Richard Hughes
bf72d393fd Split up FuUsbDevice into ->open() and ->setup()
Before this change calling FuUsbDevice->open() opened the device, and
also unconditionally added various GUIDs and InstanceIDs which we
normally do in setup.
Then fu_device_setup() would call the FuSubclass->setup() vfunc which
would have no way of either opting out of the FuUsbDevice->setup()-like
behaviour, or controlling if the parent class ->setup is run before or
after the subclass setup.

Split up FuUsbDevice->open() into clear ->open() and ->setup() phases
and add the parent class calls where appropriate.

This means that ->setup() now behaves the same as all the other vfuncs.
2021-06-17 16:21:41 +01:00
Mario Limonciello
7ad3541d56 trivial: logitech: fixup some includes 2021-06-16 08:36:18 +01:00
Ricardo Cañuelo
7a125913bb logitech-hidpp: make receiver runtime class derivable 2021-06-14 13:31:44 +01:00
Ricardo Cañuelo
be8634d2cb logitech-hidpp: fix bug in type casting 2021-06-14 12:35:34 +01:00
Mario Limonciello
73cdf067ed trivial: fixup includes for a variety of plugins 2021-06-14 10:12:45 +01:00
Ricardo Cañuelo
30c5e0e918 logitech-hidpp: make peripheral class derivable and subclass it 2021-06-11 13:53:02 +02:00
Richard Hughes
35d37f8d2c logitech-hidpp: Only shutdown the IO channel if it was created 2021-05-18 11:07:02 +01:00