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.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index 693d50c009..c7bced9ecc 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -326,23 +326,32 @@ void usb_storage_init(void)
326} 326}
327 327
328 328
329int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size, 329int usb_storage_set_first_endpoint(int endpoint)
330 int interface_number,int endpoint)
331{ 330{
332 endpoint_descriptor.wMaxPacketSize=max_packet_size; 331 usb_endpoint = endpoint;
333 interface_descriptor.bInterfaceNumber=interface_number; 332 return endpoint + 1;
333}
334int usb_storage_set_first_interface(int interface)
335{
336 usb_interface = interface;
337 return interface + 1;
338}
334 339
340int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size)
341{
342 endpoint_descriptor.wMaxPacketSize=max_packet_size;
343 interface_descriptor.bInterfaceNumber=usb_interface;
335 344
336 memcpy(dest,&interface_descriptor, 345 memcpy(dest,&interface_descriptor,
337 sizeof(struct usb_interface_descriptor)); 346 sizeof(struct usb_interface_descriptor));
338 dest+=sizeof(struct usb_interface_descriptor); 347 dest+=sizeof(struct usb_interface_descriptor);
339 348
340 endpoint_descriptor.bEndpointAddress = endpoint | USB_DIR_IN, 349 endpoint_descriptor.bEndpointAddress = usb_endpoint | USB_DIR_IN,
341 memcpy(dest,&endpoint_descriptor, 350 memcpy(dest,&endpoint_descriptor,
342 sizeof(struct usb_endpoint_descriptor)); 351 sizeof(struct usb_endpoint_descriptor));
343 dest+=sizeof(struct usb_endpoint_descriptor); 352 dest+=sizeof(struct usb_endpoint_descriptor);
344 353
345 endpoint_descriptor.bEndpointAddress = endpoint | USB_DIR_OUT, 354 endpoint_descriptor.bEndpointAddress = usb_endpoint | USB_DIR_OUT,
346 memcpy(dest,&endpoint_descriptor, 355 memcpy(dest,&endpoint_descriptor,
347 sizeof(struct usb_endpoint_descriptor)); 356 sizeof(struct usb_endpoint_descriptor));
348 357
@@ -350,11 +359,8 @@ int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size,
350 2*sizeof(struct usb_endpoint_descriptor); 359 2*sizeof(struct usb_endpoint_descriptor);
351} 360}
352 361
353void usb_storage_init_connection(int interface,int endpoint) 362void usb_storage_init_connection(void)
354{ 363{
355 usb_interface = interface;
356 usb_endpoint = endpoint;
357
358 logf("ums: set config"); 364 logf("ums: set config");
359 /* prime rx endpoint. We only need room for commands */ 365 /* prime rx endpoint. We only need room for commands */
360 state = WAITING_FOR_COMMAND; 366 state = WAITING_FOR_COMMAND;
@@ -377,8 +383,9 @@ void usb_storage_init_connection(int interface,int endpoint)
377} 383}
378 384
379/* called by usb_core_transfer_complete() */ 385/* called by usb_core_transfer_complete() */
380void usb_storage_transfer_complete(bool in,int status,int length) 386void usb_storage_transfer_complete(int ep,bool in,int status,int length)
381{ 387{
388 (void)ep;
382 struct command_block_wrapper* cbw = (void*)tb.transfer_buffer; 389 struct command_block_wrapper* cbw = (void*)tb.transfer_buffer;
383 390
384 //logf("transfer result %X %d", status, length); 391 //logf("transfer result %X %d", status, length);