diff options
| author | Keith Packard <keithp@keithp.com> | 2016-08-14 15:57:39 -0700 |
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2016-08-14 15:57:39 -0700 |
| commit | 462039c769f2db9328b04759807c30691f2b96c2 (patch) | |
| tree | 95abe520de391e20143baf8e31283de5c6e13fe5 /ao-tools/lib/ao-selfload.c | |
| parent | c62816a00b9aa40879a2ea98da2d10667e09b704 (diff) | |
ao-usbload: Check target device name to avoid mis-flashing
Instead of blindly loading firmware, go get the old device's name and
make sure it matches the new firmware.
Add --force option to allow this to be overridden.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'ao-tools/lib/ao-selfload.c')
| -rw-r--r-- | ao-tools/lib/ao-selfload.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/ao-tools/lib/ao-selfload.c b/ao-tools/lib/ao-selfload.c index b4b878d1..0a23dfda 100644 --- a/ao-tools/lib/ao-selfload.c +++ b/ao-tools/lib/ao-selfload.c @@ -157,3 +157,40 @@ ao_self_get_uint32(struct cc_usb *cc, uint32_t addr) free(hex); return v; } + +bool +ao_self_get_usb_id(struct cc_usb *cc, struct ao_usb_id *id) +{ + struct ao_hex_image *hex; + bool ret; + + if (!AO_USB_DESCRIPTORS) + return false; + + hex = ao_self_read(cc, AO_USB_DESCRIPTORS, 512); + if (!hex) + return false; + + ret = ao_heximage_usb_id(hex, id); + free(hex); + return ret; +} + +uint16_t * +ao_self_get_usb_product(struct cc_usb *cc) +{ + struct ao_hex_image *hex; + uint16_t *ret; + + if (!AO_USB_DESCRIPTORS) + return NULL; + + hex = ao_self_read(cc, AO_USB_DESCRIPTORS, 512); + if (!hex) + return NULL; + + ret = ao_heximage_usb_product(hex); + free(hex); + return ret; +} + |
