add dcd_get_microframe()

This commit is contained in:
hathach
2018-12-17 12:14:11 +07:00
parent 455da57f9d
commit 902697ca07
10 changed files with 58 additions and 23 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@@ -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
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@@ -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
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+