add dcd_get_microframe()
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
*------------------------------------------------------------------*/
|
*------------------------------------------------------------------*/
|
||||||
|
@@ -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
|
||||||
*------------------------------------------------------------------*/
|
*------------------------------------------------------------------*/
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
@@ -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
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
Reference in New Issue
Block a user