Browse Source

clean up and comment out tud_sof_isr_set

hathach 3 years ago
parent
commit
65b6b79e99
4 changed files with 30 additions and 37 deletions
  1. 27 34
      src/device/usbd.c
  2. 1 1
      src/device/usbd.h
  3. 1 1
      src/device/usbd_pvt.h
  4. 1 1
      src/tusb_option.h

+ 27 - 34
src/device/usbd.c

@@ -98,7 +98,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = cdcd_open,
     .control_xfer_cb  = cdcd_control_xfer_cb,
     .xfer_cb          = cdcd_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -110,7 +110,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = mscd_open,
     .control_xfer_cb  = mscd_control_xfer_cb,
     .xfer_cb          = mscd_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -122,7 +122,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = hidd_open,
     .control_xfer_cb  = hidd_control_xfer_cb,
     .xfer_cb          = hidd_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -134,7 +134,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = audiod_open,
     .control_xfer_cb  = audiod_control_xfer_cb,
     .xfer_cb          = audiod_xfer_cb,
-    .sof              = audiod_sof
+    .sof_isr          = audiod_sof
   },
   #endif
 
@@ -146,7 +146,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = videod_open,
     .control_xfer_cb  = videod_control_xfer_cb,
     .xfer_cb          = videod_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -158,7 +158,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .reset            = midid_reset,
     .control_xfer_cb  = midid_control_xfer_cb,
     .xfer_cb          = midid_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -170,7 +170,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = vendord_open,
     .control_xfer_cb  = tud_vendor_control_xfer_cb,
     .xfer_cb          = vendord_xfer_cb,
-    .sof              = NULL
+    .sof_isr              = NULL
   },
   #endif
 
@@ -182,7 +182,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = usbtmcd_open_cb,
     .control_xfer_cb  = usbtmcd_control_xfer_cb,
     .xfer_cb          = usbtmcd_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -194,7 +194,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = dfu_rtd_open,
     .control_xfer_cb  = dfu_rtd_control_xfer_cb,
     .xfer_cb          = NULL,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -206,7 +206,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = dfu_moded_open,
     .control_xfer_cb  = dfu_moded_control_xfer_cb,
     .xfer_cb          = NULL,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 
@@ -218,7 +218,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = netd_open,
     .control_xfer_cb  = netd_control_xfer_cb,
     .xfer_cb          = netd_xfer_cb,
-    .sof              = NULL,
+    .sof_isr              = NULL,
   },
   #endif
 
@@ -230,7 +230,7 @@ static usbd_class_driver_t const _usbd_driver[] =
     .open             = btd_open,
     .control_xfer_cb  = btd_control_xfer_cb,
     .xfer_cb          = btd_xfer_cb,
-    .sof              = NULL
+    .sof_isr          = NULL
   },
   #endif
 };
@@ -264,7 +264,7 @@ static inline usbd_class_driver_t const * get_driver(uint8_t drvid)
 // DCD Event
 //--------------------------------------------------------------------+
 
-static tud_sof_isr_t _sof_isr = NULL;
+//static tud_sof_isr_t _sof_isr = NULL;
 
 enum { RHPORT_INVALID = 0xFFu };
 static uint8_t _usbd_rhport = RHPORT_INVALID;
@@ -373,11 +373,11 @@ bool tud_connect(void)
   return true;
 }
 
-void tud_sof_isr_set(tud_sof_isr_t sof_isr)
-{
-  _sof_isr = sof_isr;
-  dcd_sof_enable(_usbd_rhport, _sof_isr != NULL);
-}
+//void tud_sof_isr_set(tud_sof_isr_t sof_isr)
+//{
+//  _sof_isr = sof_isr;
+//  dcd_sof_enable(_usbd_rhport, _sof_isr != NULL);
+//}
 
 //--------------------------------------------------------------------+
 // USBD Task
@@ -422,7 +422,7 @@ bool tud_init (uint8_t rhport)
   }
 
   _usbd_rhport = rhport;
-  _sof_isr = NULL;
+  //_sof_isr = NULL;
 
   // Init device controller driver
   dcd_init(rhport);
@@ -585,21 +585,12 @@ void tud_task (void)
         }
       break;
 
-      case DCD_EVENT_SOF:
-        TU_LOG2("\r\n");
-        // TODO: Should this really be done here in the queue? How to distinguish the calls here from those SOF events which should be handled directly in the ISR routine? If we do it like this, the SOF routines get called two time right now, once in the ISR context and once again here
-//        for ( uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++ )
-//        {
-//          usbd_class_driver_t const * driver = get_driver(i);
-//          if ( driver->sof ) driver->sof(event.rhport, event.sof.frame_count);
-//        }
-      break;
-
       case USBD_EVENT_FUNC_CALL:
         TU_LOG2("\r\n");
         if ( event.func_call.func ) event.func_call.func(event.func_call.param);
       break;
 
+      case DCD_EVENT_SOF:
       default:
         TU_BREAKPOINT();
       break;
@@ -1114,15 +1105,14 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
       for (uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++)
       {
         usbd_class_driver_t const * driver = get_driver(i);
-        if (driver->sof)
+        if (driver->sof_isr)
         {
-          driver->sof(event->rhport, event->sof.frame_count);
-          // TU_LOG2("%s sof\r\n", driver->name); // too demanding
+          driver->sof_isr(event->rhport, event->sof.frame_count);
         }
       }
 
       // SOF user handler in ISR context
-      if (_sof_isr) _sof_isr(event->sof.frame_count);
+      // if (_sof_isr) _sof_isr(event->sof.frame_count);
 
       // Some MCUs after running dcd_remote_wakeup() does not have way to detect the end of remote wakeup
       // which last 1-15 ms. DCD can use SOF as a clear indicator that bus is back to operational
@@ -1133,6 +1123,8 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
         dcd_event_t const event_resume = { .rhport = event->rhport, .event_id = DCD_EVENT_RESUME };
         osal_queue_send(_usbd_q, &event_resume, in_isr);
       }
+
+      // skip osal queue for SOF in usbd task
     break;
 
     default:
@@ -1411,7 +1403,8 @@ void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr)
 
 void usbd_sof_enable(uint8_t rhport, bool en)
 {
-  // TODO: Check needed if all drivers including the user sof_cb does not need an active SOF ISR any more. Only if all drivers switched off SOF calls the SOF interrupt may be disabled
+  // TODO: Check needed if all drivers including the user sof_cb does not need an active SOF ISR any more.
+  // Only if all drivers switched off SOF calls the SOF interrupt may be disabled
   dcd_sof_enable(rhport, en);
 }
 

+ 1 - 1
src/device/usbd.h

@@ -88,7 +88,7 @@ bool tud_connect(void);
 
 // Set Start-of-frame (1ms interval) IRQ handler
 // NULL means disabled, frame_count may not be supported on mcus
-void tud_sof_isr_set(tud_sof_isr_t sof_isr);
+// void tud_sof_isr_set(tud_sof_isr_t sof_isr);
 
 // Carry out Data and Status stage of control transfer
 // - If len = 0, it is equivalent to sending status only

+ 1 - 1
src/device/usbd_pvt.h

@@ -48,7 +48,7 @@ typedef struct
   uint16_t (* open             ) (uint8_t rhport, tusb_desc_interface_t const * desc_intf, uint16_t max_len);
   bool     (* control_xfer_cb  ) (uint8_t rhport, uint8_t stage, tusb_control_request_t const * request);
   bool     (* xfer_cb          ) (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
-  void     (* sof              ) (uint8_t rhport, uint32_t frame_count); /* optional */
+  void     (* sof_isr          ) (uint8_t rhport, uint32_t frame_count); // optional
 } usbd_class_driver_t;
 
 // Invoked when initializing device stack to get additional class drivers.

+ 1 - 1
src/tusb_option.h

@@ -297,7 +297,7 @@
 #endif
 
 #ifndef CFG_TUD_INTERFACE_MAX
-  #define CFG_TUD_INTERFACE_MAX   8
+  #define CFG_TUD_INTERFACE_MAX   16
 #endif
 
 #ifndef CFG_TUD_CDC