Refactor obtaining LPC serial number and chip ID into separate API and header/source files. Remove from main().

Create a usb_set_descriptor_by_serial_number(), called before USB stack is started.
This commit is contained in:
Heikki Hannikainen
2015-02-23 20:14:20 +02:00
committed by Heikki Hannikainen
parent 9dbe967bf2
commit 9e92adda79

View File

@ -186,24 +186,18 @@ void usb_configuration_changed(
}
}
int main(void) {
pin_setup();
enable_1v8_power();
#ifdef HACKRF_ONE
enable_rf_power();
#endif
cpu_clock_init();
/* HACK!
*/
void usb_set_descriptor_by_serial_number(void)
{
iap_cmd_res_t iap_cmd_res;
/* Read IAP Serial Number Identification */
iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO;
iap_cmd_call(&iap_cmd_res);
if (iap_cmd_res.status_res.status_ret == CMD_SUCCESS) {
usb_descriptor_string_serial_number[0] = 66;
usb_descriptor_string_serial_number[1] = USB_DESCRIPTOR_TYPE_STRING;
for (size_t i=0; i<32; i++) {
const uint_fast8_t nibble = (iap_cmd_res.status_res.iap_result[i >> 3] >> (28 - (i & 7) * 4)) & 0xf;
const char c = (nibble > 9) ? ('a' + nibble - 10) : ('0' + nibble);
@ -214,6 +208,17 @@ int main(void) {
usb_descriptor_string_serial_number[0] = 2;
usb_descriptor_string_serial_number[1] = USB_DESCRIPTOR_TYPE_STRING;
}
}
int main(void) {
pin_setup();
enable_1v8_power();
#ifdef HACKRF_ONE
enable_rf_power();
#endif
cpu_clock_init();
usb_set_descriptor_by_serial_number();
usb_set_configuration_changed_cb(usb_configuration_changed);
usb_peripheral_reset();