ao-usbload: Check target device name to avoid mis-flashing
[fw/altos] / ao-tools / lib / ao-editaltos.h
index a480954bd54d372d431213704797320106a91033..6f2829b093ed7c4ae5bd84a29ab0b780736a43e3 100644 (file)
 extern struct ao_sym ao_symbols[];
 extern int ao_num_symbols;
 
+#define AO_USB_DESC_DEVICE             1
 #define AO_USB_DESC_STRING             3
 
-#define AO_ROMCONFIG_VERSION   (ao_symbols[0].addr)
-#define AO_ROMCONFIG_CHECK     (ao_symbols[1].addr)
-#define AO_SERIAL_NUMBER       (ao_symbols[2].addr)
-#define AO_RADIO_CAL           (ao_symbols[3].addr)
-#define AO_USB_DESCRIPTORS     (ao_symbols[4].addr)
+#define AO_ROMCONFIG_VERSION_INDEX     0
+#define AO_ROMCONFIG_CHECK_INDEX       1
+#define AO_SERIAL_NUMBER_INDEX         2
+#define AO_RADIO_CAL_INDEX             3
+#define AO_USB_DESCRIPTORS_INDEX       4
+
+#define AO_ROMCONFIG_VERSION   (ao_symbols[AO_ROMCONFIG_VERSION_INDEX].addr)
+#define AO_ROMCONFIG_CHECK     (ao_symbols[AO_ROMCONFIG_CHECK_INDEX].addr)
+#define AO_SERIAL_NUMBER       (ao_symbols[AO_SERIAL_NUMBER_INDEX].addr)
+#define AO_RADIO_CAL           (ao_symbols[AO_RADIO_CAL_INDEX].addr)
+#define AO_USB_DESCRIPTORS     (ao_symbols[AO_USB_DESCRIPTORS_INDEX].addr)
 
 struct ao_editaltos_funcs {
        uint16_t        (*get_uint16)(void *closure, uint32_t addr);
        uint32_t        (*get_uint32)(void *closure, uint32_t addr);
 };
 
+struct ao_usb_id {
+       uint16_t        vid;
+       uint16_t        pid;
+};
+
 bool
 ao_editaltos_find_symbols(struct ao_sym *file_symbols, int num_file_symbols,
                          struct ao_sym *symbols, int num_symbols);
@@ -48,4 +60,10 @@ ao_editaltos(struct ao_hex_image *image,
             uint16_t serial,
             uint32_t radio_cal);
 
+bool
+ao_heximage_usb_id(struct ao_hex_image *image, struct ao_usb_id *id);
+
+uint16_t *
+ao_heximage_usb_product(struct ao_hex_image *image);
+
 #endif /* _AO_EDITALTOS_H_ */