Commit Graph

88 Commits

Author SHA1 Message Date
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
Richard Hughes
faa35e430b Show a warning if the device has no GType and the plugin has no default
This also renames a symbol to make it clear that you can call it more than once.

Fixes https://github.com/fwupd/fwupd/issues/3148
2021-04-15 16:52:56 +01:00
Richard Hughes
b333e0045c Split out a shared system context
There is a lot of code in fwupd that just assigns a shared object type to
a FuPlugin, and then for each device on that plugin assigns that same shared
object to each FuDevice.

Rather than proxy several kinds of information stores over two different levels
of abstraction create a 'context' which contains the shared *system* state
between the daemon, the plugins and the daemon.

This will allow us to hold other per-machine state in the future, for instance
the system battery level or AC state.
2021-04-01 21:11:29 +01:00
Richard Hughes
a5966f7085 trivial: Codespell fixes 2021-03-19 16:42:33 +00:00
Richard Hughes
1981c63d58 Remove FuFirmwareImage and just use FuFirmware instead
This allows us to 'nest' firmware formats, and removes a ton of duplication.

The aim here is to deprecate FuFirmwareImage -- it's almost always acting
as a 'child' FuFirmware instance, and even copies most of the vfuncs to allow
custom types. If I'm struggling to work out what should be a FuFirmware and
what should be a FuFirmwareImage then a plugin author has no hope.

For simple payloads we were adding bytes into an image and then the image into
a firmware. This gets really messy when most plugins are treating the FuFirmware
*as* the binary firmware file.

The GBytes saved in the FuFirmware would be considered the payload with the
aim of not using FuFirmwareImage in the single-image case.
2021-03-09 21:14:12 +00:00