summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/usb_storage.c')
-rw-r--r--firmware/usbstack/usb_storage.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index eb1db5d884..2a3808dd92 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -22,6 +22,7 @@
22#include "system.h" 22#include "system.h"
23#include "usb_core.h" 23#include "usb_core.h"
24#include "usb_drv.h" 24#include "usb_drv.h"
25#include "usb_class_driver.h"
25//#define LOGF_ENABLE 26//#define LOGF_ENABLE
26#include "logf.h" 27#include "logf.h"
27#include "storage.h" 28#include "storage.h"
@@ -371,24 +372,20 @@ int usb_storage_set_first_interface(int interface)
371 372
372int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size) 373int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size)
373{ 374{
374 endpoint_descriptor.wMaxPacketSize=max_packet_size; 375 unsigned char *orig_dest = dest;
375 interface_descriptor.bInterfaceNumber=usb_interface;
376 376
377 memcpy(dest,&interface_descriptor, 377 interface_descriptor.bInterfaceNumber = usb_interface;
378 sizeof(struct usb_interface_descriptor)); 378 PACK_DESCRIPTOR(dest, interface_descriptor);
379 dest+=sizeof(struct usb_interface_descriptor); 379
380 endpoint_descriptor.wMaxPacketSize = max_packet_size;
380 381
381 endpoint_descriptor.bEndpointAddress = ep_in; 382 endpoint_descriptor.bEndpointAddress = ep_in;
382 memcpy(dest,&endpoint_descriptor, 383 PACK_DESCRIPTOR(dest, endpoint_descriptor);
383 sizeof(struct usb_endpoint_descriptor));
384 dest+=sizeof(struct usb_endpoint_descriptor);
385 384
386 endpoint_descriptor.bEndpointAddress = ep_out; 385 endpoint_descriptor.bEndpointAddress = ep_out;
387 memcpy(dest,&endpoint_descriptor, 386 PACK_DESCRIPTOR(dest, endpoint_descriptor);
388 sizeof(struct usb_endpoint_descriptor));
389 387
390 return sizeof(struct usb_interface_descriptor) + 388 return (dest - orig_dest);
391 2*sizeof(struct usb_endpoint_descriptor);
392} 389}
393 390
394void usb_storage_init_connection(void) 391void usb_storage_init_connection(void)