Richard Hughes
f4e8fe0763
trivial: Fix several trivial warnings on ARM
2015-12-06 17:51:10 +00:00
Richard Hughes
7774f815a7
trivial: Fix clang-spotted hard-to-hit crash in dfu-tool
2015-12-06 16:36:58 +00:00
Richard Hughes
032596e800
libdfu: Fix several reported crashes in the inhex32 import code
...
This also adds the ability to write simple Intel HEX files too.
2015-12-06 16:27:16 +00:00
Richard Hughes
ccc54ae972
trivial: Add some fuzzing examples for libdfu
2015-12-06 16:27:16 +00:00
Richard Hughes
564303d877
libdfu: Only enumerate the DfuContext when required
...
This speeds up afl fuzzing significantly.
2015-12-06 16:27:03 +00:00
Richard Hughes
7c37e55459
libdfu: Add support for the draft 'DFU Metadata Table Specification'
2015-12-04 16:01:40 +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
045198d643
libdfu: Add commands to encrypt and decrypt firmware images
...
This uses XTEA to encrypt and decrypt images in the firmware file, although
I'm open for adding other methods as required.
2015-12-02 15:48:03 +00:00
Richard Hughes
71e55aafeb
libdfu: Fix another bug discovered by the fuzzer
2015-12-02 08:29:59 +00:00
Richard Hughes
f7c61fcb18
libdfu: Fix a few crashers found using afl
2015-12-01 15:56:59 +00:00
Richard Hughes
1936e4afb5
libdfu: Display all the files shown with 'dfu-tool dump'
...
Also, show the file CRC in the debug output.
2015-12-01 14:53:04 +00:00
Richard Hughes
832c334548
Fix compile with --disable-shared
2015-12-01 11:41:16 +00:00
Richard Hughes
14d2b80503
libdfu: Make reading and writing to targets easier to understand
...
Rename the 'upload' command to read, and 'download' to write to make things
easier for end users. Also, break the last bits of compatibility with dfu-util.
2015-11-30 09:49:25 +00:00
Richard Hughes
84b8d1f2f1
libdfu: Add dfu_firmware_get_image_by_name()
2015-11-30 09:16:58 +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
385bba0ada
libdfu: Add a quirk to support DFU runtime-less devices
2015-11-26 18:59:59 +00:00
Richard Hughes
60b7eeeca9
libdfu: Handle cancellation with ctrl+c in dfu-tool
2015-11-26 12:36:53 +00:00
Richard Hughes
ef617dbbc8
trivial: Add DfuContext to the gtk-doc documentation
2015-11-26 12:24:43 +00:00
Richard Hughes
922dbc721a
Rescan the DFU device after firmware has been updated
2015-11-25 15:01:18 +00:00
Richard Hughes
a2b2b1cc68
Export the AppStream ID when returning device results
...
This allows us to match up the AppStream data we've parsed in gnome-software and the firmware update we've got from fwupd. This means we can get access to some of the data that fwupd doesn't care about, for instance the how-to-upgrade screenshots.
2015-11-25 15:00:51 +00:00
Richard Hughes
4bb94e4bcd
libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext
...
Using g_usleep() works for the command line tool, but this starves the event
loop which means we get a flurry of removed:added:removed:added signals once
complete.
The context 'helpfully' sets up the new GUsbDevice which means we're doing
things with DfuTargets without DfuDevices and DfuTargets without GUsbDevices.
Basically, madness ensues.
2015-11-25 13:57:04 +00:00
Richard Hughes
6511f5011f
f 5d057a8fce
2015-11-25 13:53:10 +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
a6778df664
f 5d057a8fce
2015-11-25 13:39:54 +00:00
Richard Hughes
0116028755
libdfu: Verify the GUsbDevice is set before using it
...
Handling this is important in a library that's going to be (ab)used by people.
2015-11-25 13:39:18 +00:00
Richard Hughes
291e9a6b19
trivial: Remove some dead code
2015-11-25 10:34:34 +00:00
Richard Hughes
fd50193cd8
trivial: Bump the dep on libcolorhug
2015-11-25 10:33:28 +00:00
Richard Hughes
b4c888e309
libdfu: Accept multiple spaces after the DfuSe sector name
2015-11-25 10:27:36 +00:00
Richard Hughes
0bb530be97
libdfu: Copy the platform ID and invalidate the GUsbDevice when removed
2015-11-25 10:27:36 +00:00
Richard Hughes
5d057a8fce
Split out the DFU provider as a new file
2015-11-25 10:27:36 +00:00
Richard Hughes
012bcc0239
libdfu: Fix self tests after recent API change
2015-11-24 18:33:40 +00:00
Richard Hughes
71581832da
libdfu: Add dfu_device_get_display_name()
...
This allows us to get the product name for the device.
2015-11-24 18:33:40 +00:00
Richard Hughes
aa90e5c88d
libdfu: Add dfu_device_get_runtime_release()
...
This allows us to get the device release when in runtime mode.
2015-11-24 18:33:40 +00:00
Richard Hughes
42ffdf7645
libdfu: Add dfu_context_get_device_by_platform_id()
...
This lets us get the connection platform ID without exposing the GUsbDevice.
2015-11-24 18:33:40 +00:00
Richard Hughes
a45d00eb2c
Rescan the DFU device after replug to get the new version
2015-11-24 12:35:22 +00:00
Richard Hughes
a3a8f5039c
Emit the changed signal after doing an update
...
This allows the UI to re-request the update list.
2015-11-24 12:35:22 +00:00
Richard Hughes
999e96bbd4
Close DFU devices as soon as possible after the transfer has completed
...
This allows clients like 'dfu-tool watch' to report the status values correctly.
2015-11-24 12:35:22 +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
8d21237c33
libdfu: Add an example showing GObject Introspection
2015-11-23 14:16:03 +00:00
Richard Hughes
1b0b51e2a6
trivial: Install libdfu properly as a shared library
2015-11-23 14:02:56 +00:00
Richard Hughes
d3afaaab9f
libdfu: Add a context object to handle device hotplug
...
Also, add a 'watch' command to dfu-tool to test this.
2015-11-23 13:53:06 +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
8e02ee2a60
libdfu: Add a pkgconfig file
2015-11-23 09:17:43 +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
0256f04338
libdfu: Improve the output of 'dfu-util list'
...
Being semi-compatible with dfu-util isn't important anymore.
2015-11-20 12:30:53 +00:00
Richard Hughes
3391e6b154
libdfu: Use the progress bar for all uploads and downloads
2015-11-19 17:44:29 +00:00
Richard Hughes
2d64b19c81
libdfu: Only do a Detach notification if we're actually doing to do it
2015-11-19 17:42:21 +00:00