aboutsummaryrefslogtreecommitdiffstats
path: root/lib/pjrc_usb_serial/usb_serial.patch
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pjrc_usb_serial/usb_serial.patch')
-rw-r--r--lib/pjrc_usb_serial/usb_serial.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/pjrc_usb_serial/usb_serial.patch b/lib/pjrc_usb_serial/usb_serial.patch
new file mode 100644
index 00000000..5aaa08e8
--- /dev/null
+++ b/lib/pjrc_usb_serial/usb_serial.patch
@@ -0,0 +1,75 @@
+--- usb_serial.c 2011-04-19 05:54:12.000000000 -0400
++++ usb_serial.c 2016-06-04 23:48:52.590001697 -0400
+@@ -30,6 +30,7 @@
+ // Version 1.6: fix zero length packet bug
+ // Version 1.7: fix usb_serial_set_control
+
++#include <string.h>
+ #define USB_SERIAL_PRIVATE_INCLUDE
+ #include "usb_serial.h"
+
+@@ -146,7 +147,7 @@
+ // in here should only be done by those who've read chapter 9 of the USB
+ // spec and relevant portions of any USB class specifications!
+
+-static uint8_t PROGMEM device_descriptor[] = {
++static const uint8_t PROGMEM device_descriptor[] = {
+ 18, // bLength
+ 1, // bDescriptorType
+ 0x00, 0x02, // bcdUSB
+@@ -164,7 +165,7 @@
+ };
+
+ #define CONFIG1_DESC_SIZE (9+9+5+5+4+5+7+9+7+7)
+-static uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
++static const uint8_t PROGMEM config1_descriptor[CONFIG1_DESC_SIZE] = {
+ // configuration descriptor, USB spec 9.6.3, page 264-266, Table 9-10
+ 9, // bLength;
+ 2, // bDescriptorType;
+@@ -248,22 +249,22 @@
+ uint8_t bDescriptorType;
+ int16_t wString[];
+ };
+-static struct usb_string_descriptor_struct PROGMEM string0 = {
++static const struct usb_string_descriptor_struct PROGMEM string0 = {
+ 4,
+ 3,
+ {0x0409}
+ };
+-static struct usb_string_descriptor_struct PROGMEM string1 = {
++static const struct usb_string_descriptor_struct PROGMEM string1 = {
+ sizeof(STR_MANUFACTURER),
+ 3,
+ STR_MANUFACTURER
+ };
+-static struct usb_string_descriptor_struct PROGMEM string2 = {
++static const struct usb_string_descriptor_struct PROGMEM string2 = {
+ sizeof(STR_PRODUCT),
+ 3,
+ STR_PRODUCT
+ };
+-static struct usb_string_descriptor_struct PROGMEM string3 = {
++static const struct usb_string_descriptor_struct PROGMEM string3 = {
+ sizeof(STR_SERIAL_NUMBER),
+ 3,
+ STR_SERIAL_NUMBER
+@@ -271,7 +272,7 @@
+
+ // This table defines which descriptor data is sent for each specific
+ // request from the host (in wValue and wIndex).
+-static struct descriptor_list_struct {
++static const struct descriptor_list_struct {
+ uint16_t wValue;
+ uint16_t wIndex;
+ const uint8_t *addr;
+@@ -646,7 +647,9 @@
+ // communication
+ uint32_t usb_serial_get_baud(void)
+ {
+- return *(uint32_t *)cdc_line_coding;
++ uint32_t res;
++ memcpy(&res, cdc_line_coding, sizeof(res));
++ return res;
+ }
+ uint8_t usb_serial_get_stopbits(void)
+ {