فهرست منبع

add dcd_get_microframe()

hathach 7 سال پیش
والد
کامیت
902697ca07

+ 2 - 0
src/class/hid/hid_device.c

@@ -207,6 +207,7 @@ bool tud_hid_keyboard_key_press(char ch)
   return tud_hid_keyboard_keycode(modifier, keycode);
   return tud_hid_keyboard_keycode(modifier, keycode);
 }
 }
 
 
+#if 0 // should be at application
 bool tud_hid_keyboard_key_sequence(const char* str, uint32_t interval_ms)
 bool tud_hid_keyboard_key_sequence(const char* str, uint32_t interval_ms)
 {
 {
   // Send each key in string
   // Send each key in string
@@ -231,6 +232,7 @@ bool tud_hid_keyboard_key_sequence(const char* str, uint32_t interval_ms)
 
 
   return true;
   return true;
 }
 }
+#endif
 
 
 #endif // CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP
 #endif // CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP
 
 

+ 0 - 1
src/class/hid/hid_device.h

@@ -95,7 +95,6 @@ static inline bool tud_hid_keyboard_key_release(void) { return tud_hid_keyboard_
 
 
 #if CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP
 #if CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP
 bool tud_hid_keyboard_key_press(char ch);
 bool tud_hid_keyboard_key_press(char ch);
-bool tud_hid_keyboard_key_sequence(const char* str, uint32_t interval_ms);
 
 
 typedef struct{
 typedef struct{
   uint8_t shift;
   uint8_t shift;

+ 0 - 10
src/common/tusb_timeout.h

@@ -79,16 +79,6 @@ static inline void tu_timeout_restart(tu_timeout_t* tt)
   tt->start = tusb_hal_millis();
   tt->start = tusb_hal_millis();
 }
 }
 
 
-
-static inline void tu_timeout_wait(uint32_t msec)
-{
-  tu_timeout_t tt;
-  tu_timeout_set(&tt, msec);
-
-  // blocking delay
-  while ( !tu_timeout_expired(&tt) ) { }
-}
-
 #ifdef __cplusplus
 #ifdef __cplusplus
  }
  }
 #endif
 #endif

+ 4 - 0
src/device/dcd.h

@@ -93,12 +93,16 @@ TU_VERIFY_STATIC(sizeof(dcd_event_t) <= 12, "size is not correct");
 /* Device API
 /* Device API
  *------------------------------------------------------------------*/
  *------------------------------------------------------------------*/
 bool dcd_init       (uint8_t rhport);
 bool dcd_init       (uint8_t rhport);
+
 void dcd_int_enable (uint8_t rhport);
 void dcd_int_enable (uint8_t rhport);
 void dcd_int_disable(uint8_t rhport);
 void dcd_int_disable(uint8_t rhport);
 
 
 void dcd_set_address(uint8_t rhport, uint8_t dev_addr);
 void dcd_set_address(uint8_t rhport, uint8_t dev_addr);
 void dcd_set_config (uint8_t rhport, uint8_t config_num);
 void dcd_set_config (uint8_t rhport, uint8_t config_num);
 
 
+// Get current micro-frame number
+uint32_t dcd_get_microframe(uint8_t rhport);
+
 /*------------------------------------------------------------------*/
 /*------------------------------------------------------------------*/
 /* Event Function
 /* Event Function
  * Called by DCD to notify USBD
  * Called by DCD to notify USBD

+ 6 - 0
src/portable/microchip/samd21/dcd_samd21.c

@@ -124,6 +124,12 @@ void dcd_set_config (uint8_t rhport, uint8_t config_num)
   // Nothing to do
   // Nothing to do
 }
 }
 
 
+uint32_t dcd_get_microframe(uint8_t rhport)
+{
+  (void) rhport;
+  return USB->DEVICE.FNUM & (TU_BIT(14) - 1);
+}
+
 /*------------------------------------------------------------------*/
 /*------------------------------------------------------------------*/
 /* DCD Endpoint port
 /* DCD Endpoint port
  *------------------------------------------------------------------*/
  *------------------------------------------------------------------*/

+ 6 - 0
src/portable/microchip/samd51/dcd_samd51.c

@@ -129,6 +129,12 @@ void dcd_set_config (uint8_t rhport, uint8_t config_num)
   // Nothing to do
   // Nothing to do
 }
 }
 
 
+uint32_t dcd_get_microframe(uint8_t rhport)
+{
+  (void) rhport;
+  return USB->DEVICE.FNUM & (TU_BIT(14) - 1);
+}
+
 /*------------------------------------------------------------------*/
 /*------------------------------------------------------------------*/
 /* DCD Endpoint port
 /* DCD Endpoint port
  *------------------------------------------------------------------*/
  *------------------------------------------------------------------*/

+ 10 - 1
src/portable/nordic/nrf5x/dcd_nrf5x.c

@@ -187,7 +187,7 @@ static void xact_in_prepare(uint8_t epnum)
 }
 }
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
-// Tinyusb DCD API
+// Controller API
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 bool dcd_init (uint8_t rhport)
 bool dcd_init (uint8_t rhport)
 {
 {
@@ -221,6 +221,15 @@ void dcd_set_config (uint8_t rhport, uint8_t config_num)
   // Nothing to do
   // Nothing to do
 }
 }
 
 
+uint32_t dcd_get_microframe(uint8_t rhport)
+{
+  (void) rhport;
+  return NRF_USBD->FRAMECNTR << 3;
+}
+
+//--------------------------------------------------------------------+
+// Endpoint API
+//--------------------------------------------------------------------+
 bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
 bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
 {
 {
   (void) rhport;
   (void) rhport;

+ 7 - 0
src/portable/nxp/lpc11_13_15/dcd_lpc11_13_15.c

@@ -165,6 +165,13 @@ void dcd_set_address(uint8_t rhport, uint8_t dev_addr)
   LPC_USB->DEVCMDSTAT |= dev_addr;
   LPC_USB->DEVCMDSTAT |= dev_addr;
 }
 }
 
 
+uint32_t dcd_get_microframe(uint8_t rhport)
+{
+  (void) rhport;
+
+  return (LPC_USB->INFO & (TU_BIT(11) - 1)) << 3;
+}
+
 bool dcd_init(uint8_t rhport)
 bool dcd_init(uint8_t rhport)
 {
 {
   (void) rhport;
   (void) rhport;

+ 6 - 0
src/portable/nxp/lpc17_40/dcd_lpc17_40.c

@@ -227,6 +227,12 @@ void dcd_set_config(uint8_t rhport, uint8_t config_num)
   sie_write(SIE_CMDCODE_CONFIGURE_DEVICE, 1, 1);
   sie_write(SIE_CMDCODE_CONFIGURE_DEVICE, 1, 1);
 }
 }
 
 
+uint32_t dcd_get_microframe(uint8_t rhport)
+{
+  (void) rhport;
+  return ((uint32_t) sie_read(SIE_CMDCODE_READ_FRAME_NUMBER)) << 3;
+}
+
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // CONTROL HELPER
 // CONTROL HELPER
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+

+ 17 - 11
src/portable/nxp/lpc18_43/dcd_lpc18_43.c

@@ -92,17 +92,6 @@ static dcd_data_t* const dcd_data_ptr[2] =
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // CONTROLLER API
 // CONTROLLER API
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
-void dcd_set_address(uint8_t rhport, uint8_t dev_addr)
-{
-  LPC_USB[rhport]->DEVICEADDR = (dev_addr << 25) | TU_BIT(24);
-}
-
-void dcd_set_config(uint8_t rhport, uint8_t config_num)
-{
-  (void) rhport;
-  (void) config_num;
-  // nothing to do
-}
 
 
 /// follows LPC43xx User Manual 23.10.3
 /// follows LPC43xx User Manual 23.10.3
 static void bus_reset(uint8_t rhport)
 static void bus_reset(uint8_t rhport)
@@ -173,6 +162,23 @@ void dcd_int_disable(uint8_t rhport)
   NVIC_DisableIRQ(rhport ? USB1_IRQn : USB0_IRQn);
   NVIC_DisableIRQ(rhport ? USB1_IRQn : USB0_IRQn);
 }
 }
 
 
+void dcd_set_address(uint8_t rhport, uint8_t dev_addr)
+{
+  LPC_USB[rhport]->DEVICEADDR = (dev_addr << 25) | TU_BIT(24);
+}
+
+void dcd_set_config(uint8_t rhport, uint8_t config_num)
+{
+  (void) rhport;
+  (void) config_num;
+  // nothing to do
+}
+
+uint32_t dcd_get_microframe(uint8_t rhport)
+{
+  return LPC_USB[rhport]->FRINDEX_D;
+}
+
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // HELPER
 // HELPER
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+