diff options
Diffstat (limited to 'firmware/usbstack/drivers/device/usb_serial.c')
-rw-r--r-- | firmware/usbstack/drivers/device/usb_serial.c | 21 |
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 | } |