diff options
Diffstat (limited to 'tinyusb')
| -rw-r--r-- | tinyusb/class/cdc/cdc_device.c | 22 | ||||
| -rw-r--r-- | tinyusb/common/tusb_types.h | 16 | ||||
| -rw-r--r-- | tinyusb/device/usbd.c | 10 | ||||
| -rw-r--r-- | tinyusb/device/usbd.h | 2 |
4 files changed, 33 insertions, 17 deletions
diff --git a/tinyusb/class/cdc/cdc_device.c b/tinyusb/class/cdc/cdc_device.c index 837f4e8eb..d798560be 100644 --- a/tinyusb/class/cdc/cdc_device.c +++ b/tinyusb/class/cdc/cdc_device.c @@ -56,12 +56,12 @@ typedef struct { uint8_t interface_number;
cdc_acm_capability_t acm_capability;
bool connected;
- uint8_t edpt_addr[3]; // notification, data in, data out
+ uint8_t ep_addr[3]; // notification, data in, data out
}cdcd_data_t;
// TODO multiple port
-TUSB_CFG_ATTR_USBRAM uint8_t _tmp_rx_buf[64];
-TUSB_CFG_ATTR_USBRAM uint8_t _tmp_tx_buf[64];
+TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) uint8_t _tmp_rx_buf[64];
+TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) uint8_t _tmp_tx_buf[64];
#define CFG_TUD_CDC_BUFSIZE 128
@@ -157,7 +157,7 @@ tusb_error_t cdcd_open(uint8_t port, tusb_descriptor_interface_t const * p_inter { // notification endpoint if any
TU_ASSERT( tusb_dcd_edpt_open(port, (tusb_descriptor_endpoint_t const *) p_desc), TUSB_ERROR_DCD_OPEN_PIPE_FAILED);
- p_cdc->edpt_addr[CDC_PIPE_NOTIFICATION] = ((tusb_descriptor_endpoint_t const *) p_desc)->bEndpointAddress;
+ p_cdc->ep_addr[CDC_PIPE_NOTIFICATION] = ((tusb_descriptor_endpoint_t const *) p_desc)->bEndpointAddress;
(*p_length) += p_desc[DESCRIPTOR_OFFSET_LENGTH];
p_desc = descriptor_next(p_desc);
@@ -181,10 +181,10 @@ tusb_error_t cdcd_open(uint8_t port, tusb_descriptor_interface_t const * p_inter if ( p_endpoint->bEndpointAddress & TUSB_DIR_IN_MASK )
{
- p_cdc->edpt_addr[CDC_PIPE_DATA_IN] = p_endpoint->bEndpointAddress;
+ p_cdc->ep_addr[CDC_PIPE_DATA_IN] = p_endpoint->bEndpointAddress;
}else
{
- p_cdc->edpt_addr[CDC_PIPE_DATA_OUT] = p_endpoint->bEndpointAddress;
+ p_cdc->ep_addr[CDC_PIPE_DATA_OUT] = p_endpoint->bEndpointAddress;
}
(*p_length) += p_desc[DESCRIPTOR_OFFSET_LENGTH];
@@ -195,7 +195,7 @@ tusb_error_t cdcd_open(uint8_t port, tusb_descriptor_interface_t const * p_inter p_cdc->interface_number = p_interface_desc->bInterfaceNumber;
// Prepare for incoming data
- TU_ASSERT( tusb_dcd_edpt_xfer(port, p_cdc->edpt_addr[CDC_PIPE_DATA_OUT], _tmp_rx_buf, sizeof(_tmp_rx_buf), true), TUSB_ERROR_DCD_EDPT_XFER);
+ TU_ASSERT( tusb_dcd_edpt_xfer(port, p_cdc->ep_addr[CDC_PIPE_DATA_OUT], _tmp_rx_buf, sizeof(_tmp_rx_buf), true), TUSB_ERROR_DCD_EDPT_XFER);
return TUSB_ERROR_NONE;
@@ -262,16 +262,16 @@ tusb_error_t cdcd_control_request_subtask(uint8_t port, tusb_control_request_t c OSAL_SUBTASK_END
}
-tusb_error_t cdcd_xfer_cb(uint8_t port, uint8_t edpt_addr, tusb_event_t event, uint32_t xferred_bytes)
+tusb_error_t cdcd_xfer_cb(uint8_t port, uint8_t ep_addr, tusb_event_t event, uint32_t xferred_bytes)
{
cdcd_data_t const * p_cdc = &cdcd_data[port];
- if ( edpt_addr == p_cdc->edpt_addr[CDC_PIPE_DATA_OUT] )
+ if ( ep_addr == p_cdc->ep_addr[CDC_PIPE_DATA_OUT] )
{
fifo_write_n(&_rx_ff, _tmp_rx_buf, xferred_bytes);
// preparing for next
- TU_ASSERT(tusb_dcd_edpt_xfer(port, p_cdc->edpt_addr[CDC_PIPE_DATA_OUT], _tmp_rx_buf, sizeof(_tmp_rx_buf), true), TUSB_ERROR_DCD_EDPT_XFER);
+ TU_ASSERT(tusb_dcd_edpt_xfer(port, p_cdc->ep_addr[CDC_PIPE_DATA_OUT], _tmp_rx_buf, sizeof(_tmp_rx_buf), true), TUSB_ERROR_DCD_EDPT_XFER);
// fire callback
tud_cdc_rx_cb(port);
@@ -284,7 +284,7 @@ void cdcd_sof(uint8_t port) {
if ( !tud_n_cdc_connected(port) ) return;
- uint8_t edpt = cdcd_data[port].edpt_addr[CDC_PIPE_DATA_IN];
+ uint8_t edpt = cdcd_data[port].ep_addr[CDC_PIPE_DATA_IN];
if ( !tusb_dcd_edpt_busy(port, edpt) )
{
diff --git a/tinyusb/common/tusb_types.h b/tinyusb/common/tusb_types.h index c8dd849e0..2e3cf513d 100644 --- a/tinyusb/common/tusb_types.h +++ b/tinyusb/common/tusb_types.h @@ -213,6 +213,22 @@ static inline uint8_t std_class_code_to_index(uint8_t std_class_code) (std_class_code == TUSB_CLASS_VENDOR_SPECIFIC ) ? TUSB_CLASS_MAPPED_INDEX_START + 4 : 0;
}
+// Get direction from Endpoint address
+static inline tusb_dir_t edpt_dir(uint8_t addr)
+{
+ return (addr & TUSB_DIR_IN_MASK) ? TUSB_DIR_IN : TUSB_DIR_OUT;
+}
+
+// Get Endpoint number from address
+static inline uint8_t edpt_number(uint8_t addr)
+{
+ return addr & (~TUSB_DIR_IN_MASK);
+}
+
+static inline uint8_t edpt_addr(uint8_t num, tusb_dir_t dir)
+{
+ return num | (dir == TUSB_DIR_IN ? TUSB_DIR_IN_MASK : 0);
+}
#ifdef __cplusplus
}
diff --git a/tinyusb/device/usbd.c b/tinyusb/device/usbd.c index f7500b6ed..c5cf9a76f 100644 --- a/tinyusb/device/usbd.c +++ b/tinyusb/device/usbd.c @@ -148,7 +148,7 @@ typedef struct ATTR_ALIGNED(4) tusb_control_request_t setup_received;
struct { // USBD_EVENTID_XFER_DONE
- uint8_t edpt_addr;
+ uint8_t ep_addr;
uint32_t xferred_byte;
}xfer_done;
};
@@ -262,7 +262,7 @@ static tusb_error_t usbd_body_subtask(void) {
if ( usbd_class_drivers[class_code].xfer_cb )
{
- usbd_class_drivers[class_code].xfer_cb( event.port, event.xfer_done.edpt_addr, (tusb_event_t) event.sub_event_id, event.xfer_done.xferred_byte);
+ usbd_class_drivers[class_code].xfer_cb( event.port, event.xfer_done.ep_addr, (tusb_event_t) event.sub_event_id, event.xfer_done.xferred_byte);
}
}
}else if (USBD_EVENTID_SOF == event.event_id)
@@ -540,9 +540,9 @@ void tusb_dcd_setup_received(uint8_t port, uint8_t const* p_request) osal_queue_send(usbd_queue_hdl, &task_event);
}
-void tusb_dcd_xfer_complete(uint8_t port, uint8_t edpt_addr, uint32_t xferred_bytes, bool succeeded)
+void tusb_dcd_xfer_complete(uint8_t port, uint8_t ep_addr, uint32_t xferred_bytes, bool succeeded)
{
- if (edpt_addr == 0 )
+ if (ep_addr == 0 )
{
// Control Transfer
osal_semaphore_post( usbd_control_xfer_sem_hdl );
@@ -555,7 +555,7 @@ void tusb_dcd_xfer_complete(uint8_t port, uint8_t edpt_addr, uint32_t xferred_by .sub_event_id = succeeded ? TUSB_EVENT_XFER_COMPLETE : TUSB_EVENT_XFER_ERROR
};
- task_event.xfer_done.edpt_addr = edpt_addr;
+ task_event.xfer_done.ep_addr = ep_addr;
task_event.xfer_done.xferred_byte = xferred_bytes;
osal_queue_send(usbd_queue_hdl, &task_event);
diff --git a/tinyusb/device/usbd.h b/tinyusb/device/usbd.h index cf607f645..6a9c6cffa 100644 --- a/tinyusb/device/usbd.h +++ b/tinyusb/device/usbd.h @@ -80,7 +80,7 @@ typedef struct { void (* init) (void);
tusb_error_t (* open)(uint8_t port, tusb_descriptor_interface_t const * desc_intf, uint16_t* p_length);
tusb_error_t (* control_request_subtask) (uint8_t port, tusb_control_request_t const *);
- tusb_error_t (* xfer_cb) (uint8_t port, uint8_t edpt_addr, tusb_event_t, uint32_t);
+ tusb_error_t (* xfer_cb) (uint8_t port, uint8_t ep_addr, tusb_event_t, uint32_t);
// void (* routine)(void);
void (* sof)(uint8_t port);
void (* close) (uint8_t);
|
