summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/usbstack/usb_charging_only.c2
-rw-r--r--firmware/usbstack/usb_class_driver.h12
-rw-r--r--firmware/usbstack/usb_hid.c6
-rw-r--r--firmware/usbstack/usb_serial.c6
-rw-r--r--firmware/usbstack/usb_storage.c6
5 files changed, 16 insertions, 16 deletions
diff --git a/firmware/usbstack/usb_charging_only.c b/firmware/usbstack/usb_charging_only.c
index 7a8389e620..6bd17a92de 100644
--- a/firmware/usbstack/usb_charging_only.c
+++ b/firmware/usbstack/usb_charging_only.c
@@ -64,7 +64,7 @@ int usb_charging_only_get_config_descriptor(unsigned char *dest,int max_packet_s
64 unsigned char *orig_dest = dest; 64 unsigned char *orig_dest = dest;
65 65
66 interface_descriptor.bInterfaceNumber=usb_interface; 66 interface_descriptor.bInterfaceNumber=usb_interface;
67 PACK_DATA(dest, interface_descriptor); 67 PACK_DATA(&dest, interface_descriptor);
68 68
69 return (dest-orig_dest); 69 return (dest-orig_dest);
70} 70}
diff --git a/firmware/usbstack/usb_class_driver.h b/firmware/usbstack/usb_class_driver.h
index c8d1e7047d..20ee26a3d0 100644
--- a/firmware/usbstack/usb_class_driver.h
+++ b/firmware/usbstack/usb_class_driver.h
@@ -85,10 +85,10 @@ struct usb_class_driver {
85#endif 85#endif
86}; 86};
87 87
88#define PACK_DATA(dest, data) \ 88#define PACK_DATA(dest, data) pack_data(dest, &(data), sizeof(data))
89 do { \ 89static inline void pack_data(uint8_t **dest, const void *data, size_t size)
90 memcpy(dest, &(data), sizeof(data)); \ 90{
91 dest += sizeof(data); \ 91 memcpy(*dest, data, size);
92 } while (0) 92 *dest += size;
93 93}
94#endif 94#endif
diff --git a/firmware/usbstack/usb_hid.c b/firmware/usbstack/usb_hid.c
index b89e46f291..ed0816395a 100644
--- a/firmware/usbstack/usb_hid.c
+++ b/firmware/usbstack/usb_hid.c
@@ -561,7 +561,7 @@ static void descriptor_hid_get(unsigned char **dest)
561 logf("hid: desc len %u", hid_descriptor.wDescriptorLength0); 561 logf("hid: desc len %u", hid_descriptor.wDescriptorLength0);
562 buf_dump(report_descriptor, hid_descriptor.wDescriptorLength0, "desc"); 562 buf_dump(report_descriptor, hid_descriptor.wDescriptorLength0, "desc");
563 563
564 PACK_DATA(*dest, hid_descriptor); 564 PACK_DATA(dest, hid_descriptor);
565} 565}
566 566
567int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size) 567int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size)
@@ -574,7 +574,7 @@ int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size)
574 574
575 /* Interface descriptor */ 575 /* Interface descriptor */
576 interface_descriptor.bInterfaceNumber = usb_interface; 576 interface_descriptor.bInterfaceNumber = usb_interface;
577 PACK_DATA(dest, interface_descriptor); 577 PACK_DATA(&dest, interface_descriptor);
578 578
579 /* HID descriptor */ 579 /* HID descriptor */
580 descriptor_hid_get(&dest); 580 descriptor_hid_get(&dest);
@@ -583,7 +583,7 @@ int usb_hid_get_config_descriptor(unsigned char *dest, int max_packet_size)
583 endpoint_descriptor.wMaxPacketSize = 8; 583 endpoint_descriptor.wMaxPacketSize = 8;
584 endpoint_descriptor.bInterval = 8; 584 endpoint_descriptor.bInterval = 8;
585 endpoint_descriptor.bEndpointAddress = ep_in; 585 endpoint_descriptor.bEndpointAddress = ep_in;
586 PACK_DATA(dest, endpoint_descriptor); 586 PACK_DATA(&dest, endpoint_descriptor);
587 587
588 return (int)(dest - orig_dest); 588 return (int)(dest - orig_dest);
589} 589}
diff --git a/firmware/usbstack/usb_serial.c b/firmware/usbstack/usb_serial.c
index e7159099fe..4a80433435 100644
--- a/firmware/usbstack/usb_serial.c
+++ b/firmware/usbstack/usb_serial.c
@@ -100,15 +100,15 @@ int usb_serial_get_config_descriptor(unsigned char *dest, int max_packet_size)
100 unsigned char *orig_dest = dest; 100 unsigned char *orig_dest = dest;
101 101
102 interface_descriptor.bInterfaceNumber = usb_interface; 102 interface_descriptor.bInterfaceNumber = usb_interface;
103 PACK_DATA(dest, interface_descriptor); 103 PACK_DATA(&dest, interface_descriptor);
104 104
105 endpoint_descriptor.wMaxPacketSize = max_packet_size; 105 endpoint_descriptor.wMaxPacketSize = max_packet_size;
106 106
107 endpoint_descriptor.bEndpointAddress = ep_in; 107 endpoint_descriptor.bEndpointAddress = ep_in;
108 PACK_DATA(dest, endpoint_descriptor); 108 PACK_DATA(&dest, endpoint_descriptor);
109 109
110 endpoint_descriptor.bEndpointAddress = ep_out; 110 endpoint_descriptor.bEndpointAddress = ep_out;
111 PACK_DATA(dest, endpoint_descriptor); 111 PACK_DATA(&dest, endpoint_descriptor);
112 112
113 return (dest - orig_dest); 113 return (dest - orig_dest);
114} 114}
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index c156d80396..8d1b94bf7a 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -430,15 +430,15 @@ int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size)
430 unsigned char *orig_dest = dest; 430 unsigned char *orig_dest = dest;
431 431
432 interface_descriptor.bInterfaceNumber = usb_interface; 432 interface_descriptor.bInterfaceNumber = usb_interface;
433 PACK_DATA(dest, interface_descriptor); 433 PACK_DATA(&dest, interface_descriptor);
434 434
435 endpoint_descriptor.wMaxPacketSize = max_packet_size; 435 endpoint_descriptor.wMaxPacketSize = max_packet_size;
436 436
437 endpoint_descriptor.bEndpointAddress = ep_in; 437 endpoint_descriptor.bEndpointAddress = ep_in;
438 PACK_DATA(dest, endpoint_descriptor); 438 PACK_DATA(&dest, endpoint_descriptor);
439 439
440 endpoint_descriptor.bEndpointAddress = ep_out; 440 endpoint_descriptor.bEndpointAddress = ep_out;
441 PACK_DATA(dest, endpoint_descriptor); 441 PACK_DATA(&dest, endpoint_descriptor);
442 442
443 return (dest - orig_dest); 443 return (dest - orig_dest);
444} 444}