diff options
| author | hathach <[email protected]> | 2013-10-29 11:27:25 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-10-29 11:27:25 +0700 |
| commit | 357813f1714168746cf20b91ea6e11502003e5c5 (patch) | |
| tree | f75a09417f24535efe727765e59e40153b7e37bc /tinyusb/device/dcd.h | |
| parent | d9250260896e556c4707df5e9afccbd9dcc16d08 (diff) | |
implementing sw device stack
Diffstat (limited to 'tinyusb/device/dcd.h')
| -rw-r--r-- | tinyusb/device/dcd.h | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h index 4d6c7c08a..0c648347e 100644 --- a/tinyusb/device/dcd.h +++ b/tinyusb/device/dcd.h @@ -51,18 +51,44 @@ extern "C" { #endif +typedef struct { + uint8_t coreid; + uint8_t xfer_type; // cannot be control as control uses separated API + uint8_t index; + uint8_t reserved; +} endpoint_handle_t; + +static inline bool endpointhandle_is_valid(endpoint_handle_t endpoint_handle) ATTR_CONST ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; +static inline bool endpointhandle_is_valid(endpoint_handle_t endpoint_handle) +{ + return endpoint_handle.xfer_type != TUSB_XFER_CONTROL; +} + +static inline bool endpointhandle_is_equal(endpoint_handle_t x, endpoint_handle_t y) ATTR_CONST ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; +static inline bool endpointhandle_is_equal(endpoint_handle_t x, endpoint_handle_t y) +{ + return (x.coreid == y.coreid) && (x.xfer_type == y.xfer_type) && (x.index == y.index); +} + tusb_error_t dcd_init(void) ATTR_WARN_UNUSED_RESULT; + +void dcd_isr(uint8_t coreid); + +//------------- Controller API -------------// tusb_error_t dcd_controller_reset(uint8_t coreid) ATTR_WARN_UNUSED_RESULT; void dcd_controller_connect(uint8_t coreid); -void dcd_isr(uint8_t coreid); +void dcd_controller_disconnect(uint8_t coreid); +void dcd_controller_set_address(uint8_t coreid, uint8_t dev_addr); +void dcd_controller_set_configuration(uint8_t coreid, uint8_t config_num); + +//------------- PIPE API -------------// +tusb_error_t dcd_pipe_control_xfer(uint8_t coreid, tusb_direction_t dir, void * buffer, uint16_t length); -tusb_error_t dcd_pipe_control_write(uint8_t coreid, void const * buffer, uint16_t length); -tusb_error_t dcd_pipe_control_read(uint8_t coreid, void * buffer, uint16_t length); +//tusb_error_t dcd_pipe_control_write(uint8_t coreid, void const * buffer, uint16_t length); +//tusb_error_t dcd_pipe_control_read(uint8_t coreid, void * buffer, uint16_t length); +//void dcd_pipe_control_write_zero_length(uint8_t coreid); -void dcd_pipe_control_write_zero_length(uint8_t coreid); -tusb_error_t dcd_pipe_open(uint8_t coreid, tusb_descriptor_endpoint_t const * p_endpoint_desc) ATTR_WARN_UNUSED_RESULT; -void dcd_device_set_address(uint8_t coreid, uint8_t dev_addr); -void dcd_device_set_configuration(uint8_t coreid, uint8_t config_num); +endpoint_handle_t dcd_pipe_open(uint8_t coreid, tusb_descriptor_endpoint_t const * p_endpoint_desc) ATTR_WARN_UNUSED_RESULT; #ifdef __cplusplus } |
