USB device stack (USBDevice::connect non-blocking)

Fork of USBDevice by mbed official

Revision:
9:354942d2fa38
Parent:
8:335f2506f422
Child:
13:16731886c049
--- a/USBDevice/USBHAL_KL25Z.cpp	Fri Mar 01 13:10:29 2013 +0000
+++ b/USBDevice/USBHAL_KL25Z.cpp	Mon Mar 04 13:37:51 2013 +0000
@@ -66,8 +66,8 @@
 //    * 16 bidirectionnal endpt -> 32 physical endpt
 //    * as there are ODD and EVEN buffer -> 32*2 bdt
 __attribute__((__aligned__(512))) BDT bdt[NUMBER_OF_PHYSICAL_ENDPOINTS * 2];
-uint8_t endpoint_buffer[(NUMBER_OF_PHYSICAL_ENDPOINTS - 2) * 2][64];
-uint8_t endpoint_buffer_iso[2*2][1023];
+uint8_t * endpoint_buffer[(NUMBER_OF_PHYSICAL_ENDPOINTS - 2) * 2];
+uint8_t * endpoint_buffer_iso[2*2];
 
 static uint8_t set_addr = 0;
 static uint8_t addr = 0;
@@ -199,15 +199,21 @@
 
     if ((flags & ISOCHRONOUS) == 0) {
         handshake_flag = USB_ENDPT_EPHSHK_MASK;
-        if (IN_EP(endpoint))
+        if (IN_EP(endpoint)) {
+            endpoint_buffer[EP_BDT_IDX(log_endpoint, TX, ODD )] = (uint8_t *) malloc (64*2);
             buf = &endpoint_buffer[EP_BDT_IDX(log_endpoint, TX, ODD )][0];
-        else
+        } else {
+            endpoint_buffer[EP_BDT_IDX(log_endpoint, RX, ODD )] = (uint8_t *) malloc (64*2);
             buf = &endpoint_buffer[EP_BDT_IDX(log_endpoint, RX, ODD )][0];
+        }
     } else {
-        if (IN_EP(endpoint))
+        if (IN_EP(endpoint)) {
+            endpoint_buffer_iso[2] = (uint8_t *) malloc (1023*2);
             buf = &endpoint_buffer_iso[2][0];
-        else
+        } else {
+            endpoint_buffer_iso[0] = (uint8_t *) malloc (1023*2);
             buf = &endpoint_buffer_iso[0][0];
+        }
     }
 
     // IN endpt -> device to host (TX)