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:

committed by
Heikki Hannikainen

parent
9dbe967bf2
commit
9e92adda79
@ -186,25 +186,19 @@ void usb_configuration_changed(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void) {
|
void usb_set_descriptor_by_serial_number(void)
|
||||||
pin_setup();
|
{
|
||||||
enable_1v8_power();
|
|
||||||
#ifdef HACKRF_ONE
|
|
||||||
enable_rf_power();
|
|
||||||
#endif
|
|
||||||
cpu_clock_init();
|
|
||||||
|
|
||||||
|
|
||||||
/* HACK!
|
|
||||||
*/
|
|
||||||
iap_cmd_res_t iap_cmd_res;
|
iap_cmd_res_t iap_cmd_res;
|
||||||
|
|
||||||
/* Read IAP Serial Number Identification */
|
/* Read IAP Serial Number Identification */
|
||||||
iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO;
|
iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO;
|
||||||
iap_cmd_call(&iap_cmd_res);
|
iap_cmd_call(&iap_cmd_res);
|
||||||
if(iap_cmd_res.status_res.status_ret == CMD_SUCCESS) {
|
|
||||||
|
if (iap_cmd_res.status_res.status_ret == CMD_SUCCESS) {
|
||||||
usb_descriptor_string_serial_number[0] = 66;
|
usb_descriptor_string_serial_number[0] = 66;
|
||||||
usb_descriptor_string_serial_number[1] = USB_DESCRIPTOR_TYPE_STRING;
|
usb_descriptor_string_serial_number[1] = USB_DESCRIPTOR_TYPE_STRING;
|
||||||
for(size_t i=0; i<32; i++) {
|
|
||||||
|
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 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);
|
const char c = (nibble > 9) ? ('a' + nibble - 10) : ('0' + nibble);
|
||||||
usb_descriptor_string_serial_number[2 + i * 2] = c;
|
usb_descriptor_string_serial_number[2 + i * 2] = c;
|
||||||
@ -214,6 +208,17 @@ int main(void) {
|
|||||||
usb_descriptor_string_serial_number[0] = 2;
|
usb_descriptor_string_serial_number[0] = 2;
|
||||||
usb_descriptor_string_serial_number[1] = USB_DESCRIPTOR_TYPE_STRING;
|
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_set_configuration_changed_cb(usb_configuration_changed);
|
||||||
usb_peripheral_reset();
|
usb_peripheral_reset();
|
||||||
|
Reference in New Issue
Block a user