fwupd/libfwupdplugin
Richard Hughes 41400a8cc6 Allow contructing a firmware with multiple images
At the moment there are commands to convert one file format to another, but not
to 'merge' or alter them. Some firmware files are containers which can store
multiple images, each with optional id, idx and addresses.

This would allow us to, for instance, create a DfuSe file with two different
raw files that are flashed to different addresses on the SPI flash. It would
also allow us to create very small complicated container formats for fuzzing.

This can be used by writing a `firmware.builder.xml` file like:

   <?xml version="1.0" encoding="UTF-8"?>
   <firmware gtype="FuBcm57xxFirmware">
     <version>1.2.3</version>
     <image>
       <version>4.5.6</version>
       <id>header</id>
       <idx>456</idx>
       <addr>0x456</addr>
       <filename>header.bin</filename>
     </image>
     <image>
       <version>7.8.9</version>
       <id>payload</id>
       <idx>789</idx>
       <addr>0x789</addr>
       <data>aGVsbG8=</data>
     </image>
   </firmware>

...and then using something like:

   # fwupdtool firmware-convert firmware.builder.xml firmware.dfu builder dfu
2020-09-21 18:11:13 +01:00
..
fu-archive.c Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-archive.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-cabinet.c Add XB_QUERY_FLAG_FORCE_NODE_CACHE 2020-06-23 16:30:38 +01:00
fu-cabinet.h Use Jcat files in firmware archives and for metadata 2020-03-23 19:55:12 +00:00
fu-chunk.c trivial: Do not include non-introspectable functions in the GIR 2019-11-27 12:45:35 +00:00
fu-chunk.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-common-cab.c Create FuCabinet and untangle a lot of legacy code 2020-02-27 18:06:26 +00:00
fu-common-cab.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-common-guid.c Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-common-guid.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-common-version.c trivial: improve error message on version format guessing 2020-03-06 13:00:59 -06:00
fu-common-version.h Always check for PLAIN when doing vercmp() operations 2020-02-20 15:49:27 +00:00
fu-common.c trivial: Fix several small memory leaks discovered with valgrind 2020-09-09 14:16:49 -05:00
fu-common.h pcb-bcr: Use the correct BCR register for Bay Trail CPUs 2020-08-20 22:07:05 +01:00
fu-deprecated.h Install development files for libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-device-locker.c Fix a critical warning if constructing a FuDeviceLocker using the GType 2020-08-12 14:23:01 +01:00
fu-device-locker.h Add fu_device_locker_close() 2020-03-26 15:23:10 -05:00
fu-device-metadata.h thunderbolt: drop support for force power 2020-04-29 13:15:45 -05:00
fu-device-private.h elantp: Only match the I2C adaptor on the correct laptop model 2020-09-14 16:19:45 +01:00
fu-device.c Correctly order devices when using logical parents 2020-09-14 10:13:33 -05:00
fu-device.h elantp: Only match the I2C adaptor on the correct laptop model 2020-09-14 16:19:45 +01:00
fu-dfu-firmware.c Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-dfu-firmware.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-efivar.c trivial: Use O_APPEND for FU_EFIVAR_ATTR_APPEND_WRITE 2020-08-13 13:42:12 +01:00
fu-efivar.h trivial: Fix the define of ATTR_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 2020-08-13 13:42:16 +01:00
fu-firmware-common.c Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-firmware-common.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-firmware-image-private.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-firmware-image.c Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
fu-firmware-image.h Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
fu-firmware.c Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
fu-firmware.h Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
fu-fmap-firmware.c fmap-firmware: Parse flashmap format into images 2020-06-20 07:24:32 +01:00
fu-fmap-firmware.h trivial: Fix GtkDoc issue with FuFmapFirmware 2020-06-29 15:49:14 +01:00
fu-hash.py Use black to format python source in a consistent manner 2020-04-13 23:06:30 +01:00
fu-hid-device.c wacom-usb: Add more sanity checks in case the daemon goes crazy 2020-04-08 16:30:15 +01:00
fu-hid-device.h Add FuHidDevice abstraction 2020-03-19 17:02:07 +00:00
fu-hwids.c trivial: Fix up a few introspection problems in FwupdPlugin 2019-11-27 12:45:35 +00:00
fu-hwids.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-ihex-firmware.c trivial: Fix up a private function name that was missed 2020-03-19 06:43:42 +00:00
fu-ihex-firmware.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-io-channel.c trivial: Fix up a few introspection problems in FwupdPlugin 2019-11-27 12:45:35 +00:00
fu-io-channel.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-mutex.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-plugin-private.h hsi: Abstract out the list of FwupdSecurityAttr objects for plugins 2020-05-12 16:47:24 +01:00
fu-plugin-vfuncs.h hsi: Abstract out the list of FwupdSecurityAttr objects for plugins 2020-05-12 16:47:24 +01:00
fu-plugin.c Revert "fu-plugin: add a new udev_device_changed function that calls rescan" 2020-09-11 13:15:51 -05:00
fu-plugin.h trivial: Allow plugins to signal that the security status has changed 2020-05-11 22:11:49 +01:00
fu-quirks.c Use xb_builder_source_add_simple_adapter 2020-02-27 19:01:28 +00:00
fu-quirks.h Support LVFS::UpdateImage in GUI clients 2020-06-26 12:29:54 +01:00
fu-security-attrs-private.h Add daemon version into the HSI string 2020-05-18 15:41:51 -05:00
fu-security-attrs.c trivial: Construct the HSI auto-URL correctly 2020-08-26 09:38:35 +01:00
fu-security-attrs.h Cache the FuSecurityAttrs in the daemon 2020-07-03 20:47:28 +01:00
fu-self-test.c Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
fu-smbios-private.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-smbios.c Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-smbios.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-srec-firmware.c trivial: Do not include non-introspectable functions in the GIR 2019-11-27 12:45:35 +00:00
fu-srec-firmware.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-udev-device-private.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-udev-device.c Remove unused udev rules 2020-09-20 19:11:44 +01:00
fu-udev-device.h Allow plugins to match using the SUBSYS IDs 2020-09-17 15:25:26 +01:00
fu-usb-device-private.h Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
fu-usb-device.c trivial: Add two unrecoverable error codes to all USB devices 2020-03-28 12:46:03 +00:00
fu-usb-device.h Add FuHidDevice abstraction 2020-03-19 17:02:07 +00:00
fu-volume-private.h libfwupdplugin: Add FuVolume to interact with the ESP 2020-08-12 18:35:15 +01:00
fu-volume.c trivial: Fix several small memory leaks discovered with valgrind 2020-09-09 14:16:49 -05:00
fu-volume.h libfwupdplugin: Add FuVolume to interact with the ESP 2020-08-12 18:35:15 +01:00
fwupdplugin.h libfwupdplugin: Add FuVolume to interact with the ESP 2020-08-12 18:35:15 +01:00
fwupdplugin.map Allow contructing a firmware with multiple images 2020-09-21 18:11:13 +01:00
meson.build Fix building GUsb as a subproject with introspection enabled 2020-08-27 18:18:33 +01:00