mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
fix #211
This commit is contained in:
parent
4d329d46cc
commit
2727983a2d
@ -120,50 +120,20 @@ void dcd_edpt_stall (uint8_t rhport, uint8_t ep_addr);
|
|||||||
void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr);
|
void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr);
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Event API
|
// Event API (Implemented by device stack)
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
// Called by DCD to notify device stack
|
// Called by DCD to notify device stack
|
||||||
extern void dcd_event_handler(dcd_event_t const * event, bool in_isr);
|
extern void dcd_event_handler(dcd_event_t const * event, bool in_isr);
|
||||||
|
|
||||||
// helper to send bus signal event
|
// helper to send bus signal event
|
||||||
static inline void dcd_event_bus_signal (uint8_t rhport, dcd_eventid_t eid, bool in_isr);
|
extern void dcd_event_bus_signal (uint8_t rhport, dcd_eventid_t eid, bool in_isr);
|
||||||
|
|
||||||
// helper to send setup received
|
// helper to send setup received
|
||||||
static inline void dcd_event_setup_received(uint8_t rhport, uint8_t const * setup, bool in_isr);
|
extern void dcd_event_setup_received(uint8_t rhport, uint8_t const * setup, bool in_isr);
|
||||||
|
|
||||||
// helper to send transfer complete event
|
// helper to send transfer complete event
|
||||||
static inline void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, uint8_t result, bool in_isr);
|
extern void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, uint8_t result, bool in_isr);
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
|
||||||
// Inline helper
|
|
||||||
//--------------------------------------------------------------------+
|
|
||||||
|
|
||||||
static inline void dcd_event_bus_signal (uint8_t rhport, dcd_eventid_t eid, bool in_isr)
|
|
||||||
{
|
|
||||||
dcd_event_t event = { .rhport = rhport, .event_id = eid, };
|
|
||||||
dcd_event_handler(&event, in_isr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void dcd_event_setup_received(uint8_t rhport, uint8_t const * setup, bool in_isr)
|
|
||||||
{
|
|
||||||
dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_SETUP_RECEIVED };
|
|
||||||
memcpy(&event.setup_received, setup, 8);
|
|
||||||
|
|
||||||
dcd_event_handler(&event, in_isr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, uint8_t result, bool in_isr)
|
|
||||||
{
|
|
||||||
dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_XFER_COMPLETE };
|
|
||||||
|
|
||||||
event.xfer_complete.ep_addr = ep_addr;
|
|
||||||
event.xfer_complete.len = xferred_bytes;
|
|
||||||
event.xfer_complete.result = result;
|
|
||||||
|
|
||||||
dcd_event_handler(&event, in_isr);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -884,6 +884,31 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dcd_event_bus_signal (uint8_t rhport, dcd_eventid_t eid, bool in_isr)
|
||||||
|
{
|
||||||
|
dcd_event_t event = { .rhport = rhport, .event_id = eid, };
|
||||||
|
dcd_event_handler(&event, in_isr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dcd_event_setup_received(uint8_t rhport, uint8_t const * setup, bool in_isr)
|
||||||
|
{
|
||||||
|
dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_SETUP_RECEIVED };
|
||||||
|
memcpy(&event.setup_received, setup, 8);
|
||||||
|
|
||||||
|
dcd_event_handler(&event, in_isr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, uint8_t result, bool in_isr)
|
||||||
|
{
|
||||||
|
dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_XFER_COMPLETE };
|
||||||
|
|
||||||
|
event.xfer_complete.ep_addr = ep_addr;
|
||||||
|
event.xfer_complete.len = xferred_bytes;
|
||||||
|
event.xfer_complete.result = result;
|
||||||
|
|
||||||
|
dcd_event_handler(&event, in_isr);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Helper
|
// Helper
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
Loading…
x
Reference in New Issue
Block a user