summaryrefslogtreecommitdiff
path: root/firmware/usbstack/drivers/device/usb_serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/drivers/device/usb_serial.c')
-rw-r--r--firmware/usbstack/drivers/device/usb_serial.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/firmware/usbstack/drivers/device/usb_serial.c b/firmware/usbstack/drivers/device/usb_serial.c
index 0c66cf68fe..c8850042cd 100644
--- a/firmware/usbstack/drivers/device/usb_serial.c
+++ b/firmware/usbstack/drivers/device/usb_serial.c
@@ -209,7 +209,8 @@ int usb_serial_driver_bind(void* controler_ops)
209 serial_debug_desc.bDebugInEndpoint = dev.in->ep_num; 209 serial_debug_desc.bDebugInEndpoint = dev.in->ep_num;
210 serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num; 210 serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num;
211 211
212 /* update hs descriptors as we asume that endpoints are the same for fs and hs */ 212 /* update hs descriptors as we asume that endpoints
213 are the same for fs and hs */
213 serial_hs_in_desc.bEndpointAddress = serial_fs_in_desc.bEndpointAddress; 214 serial_hs_in_desc.bEndpointAddress = serial_fs_in_desc.bEndpointAddress;
214 serial_hs_out_desc.bEndpointAddress = serial_fs_out_desc.bEndpointAddress; 215 serial_hs_out_desc.bEndpointAddress = serial_fs_out_desc.bEndpointAddress;
215 216
@@ -242,13 +243,15 @@ int usb_serial_driver_request(struct usb_ctrlrequest* request)
242 switch (request->wValue >> 8) { 243 switch (request->wValue >> 8) {
243 case USB_DT_DEVICE: 244 case USB_DT_DEVICE:
244 logf("usb serial: sending device desc"); 245 logf("usb serial: sending device desc");
245 ret = MIN(sizeof(struct usb_device_descriptor), request->wLength); 246 ret = MIN(sizeof(struct usb_device_descriptor),
247 request->wLength);
246 res.buf = &serial_device_desc; 248 res.buf = &serial_device_desc;
247 break; 249 break;
248 250
249 case USB_DT_DEVICE_QUALIFIER: 251 case USB_DT_DEVICE_QUALIFIER:
250 logf("usb serial: sending qualifier dec"); 252 logf("usb serial: sending qualifier dec");
251 ret = MIN(sizeof(struct usb_qualifier_descriptor), request->wLength); 253 ret = MIN(sizeof(struct usb_qualifier_descriptor),
254 request->wLength);
252 res.buf = &serial_qualifier_desc; 255 res.buf = &serial_qualifier_desc;
253 break; 256 break;
254 257
@@ -256,7 +259,8 @@ int usb_serial_driver_request(struct usb_ctrlrequest* request)
256 case USB_DT_CONFIG: 259 case USB_DT_CONFIG:
257 logf("usb serial: sending config desc"); 260 logf("usb serial: sending config desc");
258 261
259 ret = config_buf(buf, request->wValue >> 8, request->wValue & 0xff); 262 ret = config_buf(buf, request->wValue >> 8,
263 request->wValue & 0xff);
260 if (ret >= 0) { 264 if (ret >= 0) {
261 logf("%d, vs %d", request->wLength, ret); 265 logf("%d, vs %d", request->wLength, ret);
262 ret = MIN(request->wLength, (uint16_t)ret); 266 ret = MIN(request->wLength, (uint16_t)ret);
@@ -266,13 +270,15 @@ int usb_serial_driver_request(struct usb_ctrlrequest* request)
266 270
267 case USB_DT_DEBUG: 271 case USB_DT_DEBUG:
268 logf("usb serial: sending debug desc"); 272 logf("usb serial: sending debug desc");
269 ret = MIN(sizeof(struct usb_debug_descriptor), request->wLength); 273 ret = MIN(sizeof(struct usb_debug_descriptor),
274 request->wLength);
270 res.buf = &serial_debug_desc; 275 res.buf = &serial_debug_desc;
271 break; 276 break;
272 277
273 case USB_DT_STRING: 278 case USB_DT_STRING:
274 logf("usb serial: sending string desc"); 279 logf("usb serial: sending string desc");
275 ret = usb_stack_get_string(strings, request->wValue & 0xff, buf); 280 ret = usb_stack_get_string(strings, request->wValue & 0xff,
281 buf);
276 ret = MIN(ret, request->wLength); 282 ret = MIN(ret, request->wLength);
277 res.buf = buf; 283 res.buf = buf;
278 break; 284 break;
@@ -324,7 +330,8 @@ static int config_buf(uint8_t *buf, uint8_t type, unsigned index)
324 /* TODO check index*/ 330 /* TODO check index*/
325 (void)index; 331 (void)index;
326 332
327 len = usb_stack_configdesc(&serial_bulk_config_desc, buf, BUFFER_SIZE, dev.descriptors); 333 len = usb_stack_configdesc(&serial_bulk_config_desc, buf, BUFFER_SIZE,
334 dev.descriptors);
328 if (len < 0) { 335 if (len < 0) {
329 return len; 336 return len;
330 } 337 }