diff --git a/demos/device/src/cdc_device_app.c b/demos/device/src/cdc_device_app.c index 543f30b1c..572db4b0c 100644 --- a/demos/device/src/cdc_device_app.c +++ b/demos/device/src/cdc_device_app.c @@ -58,25 +58,17 @@ OSAL_SEM_DEF(cdcd_semaphore); static osal_semaphore_handle_t sem_hdl; -TUSB_CFG_ATTR_USBRAM static uint8_t serial_rx_buffer[CDCD_APP_BUFFER_SIZE]; -TUSB_CFG_ATTR_USBRAM static uint8_t serial_tx_buffer[CDCD_APP_BUFFER_SIZE]; - //--------------------------------------------------------------------+ // INTERNAL OBJECT & FUNCTION DECLARATION //--------------------------------------------------------------------+ +TUSB_CFG_ATTR_USBRAM static uint8_t serial_rx_buffer[CDCD_APP_BUFFER_SIZE]; +TUSB_CFG_ATTR_USBRAM static uint8_t serial_tx_buffer[CDCD_APP_BUFFER_SIZE]; + FIFO_DEF(fifo_serial, CDCD_APP_BUFFER_SIZE, uint8_t, true); //--------------------------------------------------------------------+ -// IMPLEMENTATION +// tinyusb Callbacks //--------------------------------------------------------------------+ -void cdcd_serial_app_init(void) -{ - sem_hdl = osal_semaphore_create( OSAL_SEM_REF(cdcd_semaphore) ); - ASSERT_PTR( sem_hdl, VOID_RETURN); - - ASSERT( TUSB_ERROR_NONE == osal_task_create( OSAL_TASK_REF(cdcd_serial_app_task) ), VOID_RETURN); -} - void tusbd_cdc_mounted_cb(uint8_t coreid) { osal_semaphore_reset(sem_hdl); @@ -84,6 +76,11 @@ void tusbd_cdc_mounted_cb(uint8_t coreid) tusbd_cdc_receive(coreid, serial_rx_buffer, CDCD_APP_BUFFER_SIZE, true); } +void tusbd_cdc_unmounted_cb(uint8_t coreid) +{ + +} + void tusbd_cdc_xfer_cb(uint8_t coreid, tusb_event_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes) { switch ( pipe_id ) @@ -116,6 +113,17 @@ void tusbd_cdc_xfer_cb(uint8_t coreid, tusb_event_t event, cdc_pipeid_t pipe_id, } } +//--------------------------------------------------------------------+ +// APPLICATION CODE +//--------------------------------------------------------------------+ +void cdcd_serial_app_init(void) +{ + sem_hdl = osal_semaphore_create( OSAL_SEM_REF(cdcd_semaphore) ); + ASSERT_PTR( sem_hdl, VOID_RETURN); + + ASSERT( TUSB_ERROR_NONE == osal_task_create( OSAL_TASK_REF(cdcd_serial_app_task) ), VOID_RETURN); +} + OSAL_TASK_FUNCTION( cdcd_serial_app_task , p_task_para) { OSAL_TASK_LOOP_BEGIN diff --git a/demos/device/src/mouse_device_app.c b/demos/device/src/mouse_device_app.c index 982a4829c..f38e4f062 100644 --- a/demos/device/src/mouse_device_app.c +++ b/demos/device/src/mouse_device_app.c @@ -1,4 +1,4 @@ -/**************************************************************************/ + /**************************************************************************/ /*! @file mouse_device_app.c @author hathach (tinyusb.org) @@ -42,6 +42,7 @@ //--------------------------------------------------------------------+ // INCLUDE //--------------------------------------------------------------------+ +#include "app_os_prio.h" //--------------------------------------------------------------------+ // MACRO CONSTANT TYPEDEF @@ -50,7 +51,7 @@ //--------------------------------------------------------------------+ // INTERNAL OBJECT & FUNCTION DECLARATION //--------------------------------------------------------------------+ -OSAL_TASK_DEF(mouse_device_app_task, 128, MOUSED_APP_TASK_PRIO); +OSAL_TASK_DEF(mouse_device_app_task, 128, MOUSE_APP_TASK_PRIO); TUSB_CFG_ATTR_USBRAM hid_mouse_report_t mouse_report; @@ -90,6 +91,7 @@ void tusbd_hid_mouse_set_report_cb(uint8_t coreid, hid_request_report_type_t rep { // mouse demo does not support set report --> do nothing } + //--------------------------------------------------------------------+ // APPLICATION CODE //--------------------------------------------------------------------+ diff --git a/demos/device/src/msc_device_app.c b/demos/device/src/msc_device_app.c index c6c12eab6..cc4063c80 100644 --- a/demos/device/src/msc_device_app.c +++ b/demos/device/src/msc_device_app.c @@ -93,6 +93,16 @@ static scsi_mode_parameters_t const msc_dev_mode_para = //--------------------------------------------------------------------+ // tinyusb callback (ISR context) //--------------------------------------------------------------------+ +void tusbd_msc_mounted_cb(uint8_t coreid) +{ + +} + +void tusbd_msc_unmounted_cb(uint8_t coreid) +{ + +} + msc_csw_status_t tusbd_msc_scsi_cb (uint8_t coreid, uint8_t lun, uint8_t scsi_cmd[16], void const ** pp_buffer, uint16_t* p_length) { // read10 & write10 has their own callback and MUST not be handled here diff --git a/demos/device/src/tusb_config.h b/demos/device/src/tusb_config.h index 23c2dfd23..c21caaade 100644 --- a/demos/device/src/tusb_config.h +++ b/demos/device/src/tusb_config.h @@ -59,10 +59,10 @@ //------------- CLASS -------------// #define TUSB_CFG_DEVICE_HID_KEYBOARD 1 -#define TUSB_CFG_DEVICE_HID_MOUSE 0 +#define TUSB_CFG_DEVICE_HID_MOUSE 1 #define TUSB_CFG_DEVICE_HID_GENERIC 0 // not supported yet #define TUSB_CFG_DEVICE_MSC 1 -#define TUSB_CFG_DEVICE_CDC 0 +#define TUSB_CFG_DEVICE_CDC 1 //--------------------------------------------------------------------+ // COMMON CONFIGURATION diff --git a/tinyusb/class/cdc_device.c b/tinyusb/class/cdc_device.c index 405095402..0d3120061 100644 --- a/tinyusb/class/cdc_device.c +++ b/tinyusb/class/cdc_device.c @@ -180,6 +180,8 @@ void cdcd_close(uint8_t coreid) { // no need to close opened pipe, dcd bus reset will put controller's endpoints to default state memclr_(&cdcd_data[coreid], sizeof(cdcd_data_t)); + + tusbd_cdc_unmounted_cb(coreid); } tusb_error_t cdcd_control_request_subtask(uint8_t coreid, tusb_control_request_t const * p_request) diff --git a/tinyusb/class/cdc_device.h b/tinyusb/class/cdc_device.h index dd4fd5e6d..c88b578c9 100644 --- a/tinyusb/class/cdc_device.h +++ b/tinyusb/class/cdc_device.h @@ -98,7 +98,16 @@ tusb_error_t tusbd_cdc_receive(uint8_t coreid, void * p_buffer, uint32_t length, //--------------------------------------------------------------------+ // APPLICATION CALLBACK API //--------------------------------------------------------------------+ +/** \brief Callback function that will be invoked when this interface is mounted (configured) by USB host + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b set-up interface-related data + */ void tusbd_cdc_mounted_cb(uint8_t coreid); + +/** \brief Callback function that will be invoked when this interface is unmounted (bus reset/unplugged) + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b tear-down interface-related data + */ void tusbd_cdc_unmounted_cb(uint8_t coreid); /** \brief Callback function that is invoked when an completion (error or success) of an USB transfer previously submitted diff --git a/tinyusb/class/hid_device.h b/tinyusb/class/hid_device.h index c04d4ceac..e3a4b309d 100644 --- a/tinyusb/class/hid_device.h +++ b/tinyusb/class/hid_device.h @@ -80,7 +80,17 @@ tusb_error_t tusbd_hid_keyboard_send(uint8_t coreid, hid_keyboard_report_t const //--------------------------------------------------------------------+ // APPLICATION CALLBACK API //--------------------------------------------------------------------+ + +/** \brief Callback function that will be invoked when this interface is mounted (configured) by USB host + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b set-up interface-related data + */ void tusbd_hid_keyboard_mounted_cb(uint8_t coreid); + +/** \brief Callback function that will be invoked when this interface is unmounted (bus reset/unplugged) + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b tear-down interface-related data + */ void tusbd_hid_keyboard_unmounted_cb(uint8_t coreid); /** \brief Callback function that is invoked when an transferring event occurred @@ -155,8 +165,16 @@ tusb_error_t tusbd_hid_mouse_send(uint8_t coreid, hid_mouse_report_t const *p_re //--------------------------------------------------------------------+ // APPLICATION CALLBACK API //--------------------------------------------------------------------+ - +/** \brief Callback function that will be invoked when this interface is mounted (configured) by USB host + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b set-up interface-related data + */ void tusbd_hid_mouse_mounted_cb(uint8_t coreid); + +/** \brief Callback function that will be invoked when this interface is unmounted (bus reset/unplugged) + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b tear-down interface-related data + */ void tusbd_hid_mouse_unmounted_cb(uint8_t coreid); /** \brief Callback function that is invoked when an transferring event occurred diff --git a/tinyusb/class/msc_device.c b/tinyusb/class/msc_device.c index 99c082cf5..091faabb6 100644 --- a/tinyusb/class/msc_device.c +++ b/tinyusb/class/msc_device.c @@ -82,6 +82,7 @@ void mscd_init(void) void mscd_close(uint8_t coreid) { memclr_(&mscd_data, sizeof(mscd_interface_t)); + tusbd_msc_unmounted_cb(coreid); } tusb_error_t mscd_open(uint8_t coreid, tusb_descriptor_interface_t const * p_interface_desc, uint16_t *p_length) @@ -111,6 +112,8 @@ tusb_error_t mscd_open(uint8_t coreid, tusb_descriptor_interface_t const * p_int (*p_length) += sizeof(tusb_descriptor_interface_t) + 2*sizeof(tusb_descriptor_endpoint_t); + tusbd_msc_mounted_cb(coreid); + //------------- Queue Endpoint OUT for Command Block Wrapper -------------// ASSERT_STATUS( dcd_pipe_xfer(p_msc->edpt_out, (uint8_t*) &p_msc->cbw, sizeof(msc_cmd_block_wrapper_t), true) ); diff --git a/tinyusb/class/msc_device.h b/tinyusb/class/msc_device.h index a50e507f5..41ba6a67f 100644 --- a/tinyusb/class/msc_device.h +++ b/tinyusb/class/msc_device.h @@ -50,7 +50,7 @@ /** \addtogroup ClassDriver_MSC * @{ * \defgroup MSC_Device Device - * @{ */ + * @{ */ //--------------------------------------------------------------------+ // APPLICATION API @@ -59,9 +59,17 @@ //--------------------------------------------------------------------+ // APPLICATION CALLBACK API //--------------------------------------------------------------------+ +/** \brief Callback function that will be invoked when this interface is mounted (configured) by USB host + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b set-up interface-related data + */ void tusbd_msc_mounted_cb(uint8_t coreid); -void tusbd_msc_unmounted_cb(uint8_t coreid); +/** \brief Callback function that will be invoked when this interface is unmounted (bus reset/unplugged) + * \param[in] coreid USB Controller ID of the interface + * \note This callback should be used by Application to \b tear-down interface-related data + */ +void tusbd_msc_unmounted_cb(uint8_t coreid); /** \brief Callback that is invoked when tinyusb stack received \ref SCSI_CMD_READ_10 command from host * \param[in] coreid USB Controller ID