Skip to content

Commit 1671200

Browse files
committed
pbio/drv/usb/usb_nxt.c: Minor cleanups
This changes pbdrv_usb_nxt_write_data to accept a void *, which removes a lot of ugly casting. It also adds a note that a serial number should be implemented in the future
1 parent 276b8de commit 1671200

1 file changed

Lines changed: 15 additions & 13 deletions

File tree

lib/pbio/drv/usb/usb_nxt.c

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static const pbdrv_usb_dev_desc_t pbdrv_usb_nxt_device_descriptor = {
112112
.bcdDevice = 0x0200, /* Product revision: 2.0.0. */
113113
.iManufacturer = 1,
114114
.iProduct = 2,
115-
.iSerialNumber = 0,
115+
.iSerialNumber = 0, // TODO: implement a serial number
116116
.bNumConfigurations = 1,
117117
};
118118

@@ -303,7 +303,8 @@ static void pbdrv_usb_nxt_csr_set_flag(uint8_t endpoint, uint32_t flags) {
303303
* single USB packet, the data is split and scheduled to be sent in
304304
* several packets.
305305
*/
306-
static void pbdrv_usb_nxt_write_data(int endpoint, const uint8_t *ptr, uint32_t length) {
306+
static void pbdrv_usb_nxt_write_data(int endpoint, const void *ptr_, uint32_t length) {
307+
const uint8_t *ptr = ptr_;
307308
uint32_t packet_size;
308309
int tx;
309310

@@ -438,7 +439,7 @@ static void pbdrv_usb_handle_std_request(pbdrv_usb_nxt_setup_packet_t *packet) {
438439
response = 0;
439440
}
440441

441-
pbdrv_usb_nxt_write_data(0, (uint8_t *)&response, 2);
442+
pbdrv_usb_nxt_write_data(0, &response, 2);
442443
}
443444
break;
444445

@@ -478,13 +479,14 @@ static void pbdrv_usb_handle_std_request(pbdrv_usb_nxt_setup_packet_t *packet) {
478479
switch ((packet->value & USB_WVALUE_TYPE) >> 8) {
479480
case USB_DESC_TYPE_DEVICE: /* Device descriptor */
480481
size = sizeof(pbdrv_usb_nxt_device_descriptor);
481-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)&pbdrv_usb_nxt_device_descriptor,
482+
pbdrv_usb_nxt_write_data(0, &pbdrv_usb_nxt_device_descriptor,
482483
MIN(size, packet->length));
483484
break;
484485

485486
case USB_DESC_TYPE_CONFIG: /* Configuration descriptor */
486-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)&pbdrv_usb_nxt_full_config,
487-
MIN(sizeof(pbdrv_usb_nxt_full_config), packet->length));
487+
size = sizeof(pbdrv_usb_nxt_full_config);
488+
pbdrv_usb_nxt_write_data(0, &pbdrv_usb_nxt_full_config,
489+
MIN(size, packet->length));
488490

489491
/* TODO: Why? This is not specified in the USB specs. */
490492
if (pbdrv_usb_nxt_full_config.conf_desc.wTotalLength < packet->length) {
@@ -507,13 +509,13 @@ static void pbdrv_usb_handle_std_request(pbdrv_usb_nxt_setup_packet_t *packet) {
507509

508510
case USB_DESC_TYPE_DEVICE_QUALIFIER: /* Device qualifier descriptor. */
509511
size = pbdrv_usb_nxt_dev_qualifier_desc.bLength;
510-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)&pbdrv_usb_nxt_dev_qualifier_desc,
512+
pbdrv_usb_nxt_write_data(0, &pbdrv_usb_nxt_dev_qualifier_desc,
511513
MIN(size, packet->length));
512514
break;
513515

514516
case USB_DESC_TYPE_BOS: /* BOS descriptor */
515517
size = sizeof(pbdrv_usb_bos_desc_set.s);
516-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)&pbdrv_usb_bos_desc_set, MIN(size, packet->length));
518+
pbdrv_usb_nxt_write_data(0, &pbdrv_usb_bos_desc_set, MIN(size, packet->length));
517519
break;
518520

519521
default: /* Unknown descriptor, tell the host by stalling. */
@@ -582,19 +584,19 @@ static void pbdrv_usb_nxt_handle_class_request(pbdrv_usb_nxt_setup_packet_t *pac
582584
switch (packet->value) {
583585
case 0x2A00: { // device name
584586
const char *name = pbdrv_bluetooth_get_hub_name();
585-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)name,
587+
pbdrv_usb_nxt_write_data(0, name,
586588
MIN(strlen(name), packet->length));
587589
break;
588590
}
589591
case 0x2A26: { // firmware revision
590592
const char *fw = PBIO_VERSION_STR;
591-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)fw,
593+
pbdrv_usb_nxt_write_data(0, fw,
592594
MIN(strlen(fw), packet->length));
593595
break;
594596
}
595597
case 0x2A28: { // software revision
596598
const char *sw = PBIO_PROTOCOL_VERSION_STR;
597-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)sw,
599+
pbdrv_usb_nxt_write_data(0, sw,
598600
MIN(strlen(sw), packet->length));
599601
break;
600602
}
@@ -660,12 +662,12 @@ static uint32_t pbdrv_usb_nxt_manage_setup_packet(void) {
660662
switch (packet.request) {
661663
case PBDRV_USB_VENDOR_REQ_WEBUSB:
662664
// Since there is only one WebUSB descriptor, we ignore the index.
663-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)&pbdrv_usb_webusb_landing_page,
665+
pbdrv_usb_nxt_write_data(0, &pbdrv_usb_webusb_landing_page,
664666
MIN(pbdrv_usb_webusb_landing_page.s.bLength, packet.length));
665667
break;
666668
case PBDRV_USB_VENDOR_REQ_MS_20:
667669
// Since there is only one MS descriptor, we ignore the index.
668-
pbdrv_usb_nxt_write_data(0, (const uint8_t *)&pbdrv_usb_ms_20_desc_set,
670+
pbdrv_usb_nxt_write_data(0, &pbdrv_usb_ms_20_desc_set,
669671
MIN(sizeof(pbdrv_usb_ms_20_desc_set.s), packet.length));
670672
break;
671673
default:

0 commit comments

Comments
 (0)