Commit Graph

45 Commits

Author SHA1 Message Date
Richard Hughes
c8c2d60d65 trivial: Fix error check when parsing Neo Freerunner descriptor
Found using Coverity.
2016-11-09 20:14:15 +00:00
Richard Hughes
b28daac301 libdfu: Use a heuristic for the start address if the firmware has no DfuSe footer
This fixes flashing into the 96Boards BLE Carbon.
2016-11-03 15:11:25 +00:00
Richard Hughes
ae7935448b libdfu: Correctly set the element address when uploading from DfuSe devices 2016-10-16 08:26:01 +01:00
Richard Hughes
bd81a89044 libdfu: Correctly erase DfuSe devices 2016-10-14 18:07:34 +01:00
Richard Hughes
21806b4696 libdfu: Wait for DNBUSY to be cleared when checking the DfuSe status 2016-10-14 18:07:34 +01:00
Richard Hughes
bacf255428 libdfu: Ensure the device is open before claiming the interface 2016-10-14 18:07:34 +01:00
Richard Hughes
a5c48ce07f libdfu: Fix verification of written DfuSe firmware
DfuSe doesn't stop returning data when the image is empty. Take as least as
much data as we require and then truncate the result to what we want.
2016-10-14 18:07:34 +01:00
Richard Hughes
73b63c87e8 libdfu: Do not do a zero-byte download when in DfuSe mode
For ST devices this means 'boot into APP mode' which we can also now populate.
2016-10-14 18:07:34 +01:00
Richard Hughes
99f61c827a libdfu: Add DfuAction enumerated value to represent a device action
This is a high level operation which is supposed to correlate with the
percentage change notification. Using the device DfuState or DfuStatus doesn't
work when doing dfuse operations.
2016-10-13 19:43:20 +01:00
Richard Hughes
9117686b4c libdfu: Use the device offset when writing DfuSe firmware 2016-10-12 21:33:30 +01:00
Richard Hughes
cbdeca25e2 libdfu: Fix uploading from DfuSe devices 2016-10-12 20:36:27 +01:00
Richard Hughes
fa522907e9 libdfu: Do not do GetStatus on dfuse upload 2016-10-12 20:30:36 +01:00
Richard Hughes
5e40ae8778 libdfu: Correctly offset addresses when one zone has multiple sectors 2016-10-12 20:29:08 +01:00
Richard Hughes
41541213b1 trivial: Prefix some DfuSe errors with useful data 2016-10-12 16:39:23 +01:00
Richard Hughes
e9dbf70cd3 libdfu: Fix two possible critical warnings for corrupt USB descriptors 2016-10-12 16:15:58 +01:00
Richard Hughes
ac614987e6 Show the nicely formatted target name for DfuSe devices 2016-10-12 15:05:41 +01:00
Richard Hughes
c6a8deeb4c dfu: Fix listing devices using the ST reference bootloader 2016-10-12 15:04:31 +01:00
Richard Hughes
877df1dda3 libfdfu: Show a warning when getting the alt-name failed 2016-10-12 13:15:03 +01:00
Richard Hughes
208c8a819e Fix a -fstack-protector-strong crash when uploading firmware
Casting the pointer type causes the stack protector to get upset.
2016-09-29 19:41:02 +01:00
Richard Hughes
2cf8c4e43f Fix a possible crash when uploading firmware files using libdfu 2016-09-19 09:05:39 +01:00
Richard Hughes
df12152231 trivial: Allow uploading firmware with smaller chunk sizes 2016-09-19 09:05:18 +01:00
Richard Hughes
33a518a615 Add another compile warning and fix up any build failures 2016-07-27 16:57:36 +01:00
Mario Limonciello
033c4511f7 trivial: correct typographical error in dfu-target debug statements 2016-07-01 15:40:31 -05:00
Richard Hughes
ce38d94d5e trivial: Get rid of useless internal-only gtk-doc markup 2016-06-29 11:25:25 +01:00
Richard Hughes
d0583ae340 Only claim the DFU interface when required
It appears that some expensive USB sound cards do not like the DFU interface
being claimed at the same time the kernel starts using a different endpoint.

I suspect this is a device bug or limitation in some reference implementation
somewhere, but seeing as we only need the interface when verifying or writing
new firmware the sensible thing to do is not claim it until required.

Fixes: https://github.com/hughsie/fwupd/issues/50
2016-06-08 16:42:49 +01:00
Richard Hughes
bd046c8a19 libdfu: Fix up some NULL/FALSE confusion 2016-03-18 12:33:47 +00:00
Richard Hughes
b3849683b6 trivial: Remove all 'suspicious commas' 2016-03-18 12:33:47 +00:00
Richard Hughes
41b1f6c7c4 trivial: Fix tiny build warning with GCC6 2016-03-03 08:13:03 +00:00
Richard Hughes
280745f5f0 Release fwupd 0.6.0 2015-12-07 16:20:59 +00:00
Richard Hughes
f4e8fe0763 trivial: Fix several trivial warnings on ARM 2015-12-06 17:51:10 +00:00
Richard Hughes
4545dd70af libdfu: Add DfuCipher which is a property on a target and a firmware file
At the moment we're not doing anything smart other than looking at the
firmware filename, but in the future we might do something better.
2015-12-04 12:58:05 +00:00
Richard Hughes
021f65e370 libdfu: Show better device errors 2015-12-04 12:26:45 +00:00
Richard Hughes
9b1349b885 libdfu: Add an explicit 'attach' method
This can also deal with the m-stack quirk in a central place.
2015-11-27 10:54:26 +00:00
Richard Hughes
45f7956b97 libdfu: Remove the weak pointer when destroying the DfuTarget
This fixes commit 4d4e91da.
2015-11-25 13:45:06 +00:00
Richard Hughes
93a6edf2c6 trivial: Define the default replug timeout in a central place
Some users were using 2000ms and some the more sane 5000ms.
2015-11-25 13:41:55 +00:00
Richard Hughes
b4c888e309 libdfu: Accept multiple spaces after the DfuSe sector name 2015-11-25 10:27:36 +00:00
Richard Hughes
4d4e91da23 libdfu: Do not ref DfuDevice in DfuTarget so the auto-close logic works
We want to auto-close the device when the recount of DfuDevice drops to zero,
but when a composite device has more than one ref this is not going to happen.
2015-11-24 12:35:22 +00:00
Richard Hughes
5d6066c002 libdfu: Use signals to propagate device state
Also, add padding to the various class structs so we can add more signals in
the future without breaking ABI.
2015-11-23 10:19:24 +00:00
Richard Hughes
e7aaf39de2 libdfu: Fix multi-interface devices like the Neo Freerunner
The DFU specification specifies that only one of the DFU interfaces has to
export a functional descriptor; I assumed they all had to. Adding support
for this kind of device rapidly turned into a massive restructure and it was
all too complicated anyway.

Reorganise the code so that we can support these kinds of devices and clean up
the API so it's sane and easy to use. This also allows us to generate the
GObject introspection GIR and to also install libdfu as a shared library.

If you've got any comments about the API, please shout now as when 6.0 is
released it will become API and ABI stable.
2015-11-22 21:17:48 +00:00
Richard Hughes
e7ba943cf5 libdfu: Support download and upload to ST DfuSe devices
Also, simplify the general download and upload API now we can deal with
element data in chunks.
2015-11-20 14:14:05 +00:00
Richard Hughes
38e7e31e2c libdfu: Support the ST-specific bitCanAccelerate 2015-11-19 12:33:11 +00:00
Richard Hughes
cfd399498d libdfu: Use a custom error domain 2015-11-14 17:34:08 +00:00
Richard Hughes
6d79834c55 libdfu: Generate gtk-doc documentation 2015-11-14 16:51:53 +00:00
Richard Hughes
62633af0db libdfu: Add support for DfuSe firmware
Also, move some shared stuff down from DfuTarget to DfuDevice.
2015-11-14 16:34:09 +00:00
Richard Hughes
a3acd7f711 Add support for updating USB devices with DFU
This adds a private libdfu library and also a small utility program called
dfu-tool.
2015-11-12 17:32:48 +00:00