klipper/lib/pjrc_usb_serial/usb_serial.patch

76 lines
2.2 KiB
Diff

--- 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)
{