X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=ao-tools%2Flib%2Fao-selfload.c;h=754cd78413037eb445b08395fc6fd819c4686eb0;hb=3fd320ea38f2945f5611a09a0e48d16db467d105;hp=41e45adc4f8f21009a5f1bed4264993955776fd5;hpb=e6c9ca218d944443c86555e513534d82713af936;p=fw%2Faltos diff --git a/ao-tools/lib/ao-selfload.c b/ao-tools/lib/ao-selfload.c index 41e45adc..754cd784 100644 --- a/ao-tools/lib/ao-selfload.c +++ b/ao-tools/lib/ao-selfload.c @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -109,6 +110,7 @@ ao_self_write(struct cc_usb *cc, struct ao_hex_image *image) start = image->address; if (stop > image->address + image->length) stop = image->address + image->length; + memset(block, 0xff, 0x100); memcpy(block + start - address, image->data + start - image->address, stop - start); ao_self_block_write(cc, address, block); ao_self_block_read(cc, address, check); @@ -156,3 +158,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; +} +