adding tuh_cdc_mount_cb/tuh_cdc_umount_cb

start adding cdc_app.c to example
This commit is contained in:
hathach 2022-12-14 16:52:28 +07:00
parent 159aa599be
commit 4f03695084
6 changed files with 81 additions and 16 deletions

View File

@ -14,8 +14,9 @@ add_executable(${PROJECT})
# Example source
target_sources(${PROJECT} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src/hid_app.c
${CMAKE_CURRENT_SOURCE_DIR}/src/cdc_app.c
${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
${CMAKE_CURRENT_SOURCE_DIR}/src/hid_app.c
${CMAKE_CURRENT_SOURCE_DIR}/src/msc_app.c
)

View File

@ -7,7 +7,8 @@ INC += \
# Example source
EXAMPLE_SOURCE = \
src/hid_app.c \
src/cdc_app.c \
src/hid_app.c \
src/main.c \
src/msc_app.c \

View File

@ -0,0 +1,51 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2022, Ha Thach (tinyusb.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* This file is part of the TinyUSB stack.
*/
#include "tusb.h"
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+
//------------- IMPLEMENTATION -------------//
void cdc_app_task(void)
{
}
void tuh_cdc_mount_cb(uint8_t dev_addr)
{
(void) dev_addr;
printf("A CDC device is mounted\r\n");
}
void tuh_cdc_umount_cb(uint8_t dev_addr)
{
(void) dev_addr;
printf("A CDC device is unmounted\r\n");
}

View File

@ -35,7 +35,7 @@
//--------------------------------------------------------------------+
void led_blinking_task(void);
extern void cdc_task(void);
extern void cdc_app_task(void);
extern void hid_app_task(void);
/*------------- MAIN -------------*/
@ -52,9 +52,9 @@ int main(void)
{
// tinyusb host task
tuh_task();
led_blinking_task();
cdc_task();
led_blinking_task();
cdc_app_task();
hid_app_task();
}
@ -79,11 +79,6 @@ void tuh_cdc_xfer_isr(uint8_t dev_addr, xfer_result_t event, cdc_pipeid_t pipe_i
tuh_cdc_receive(dev_addr, serial_in_buffer, sizeof(serial_in_buffer), true); // waiting for next data
}
void cdc_task(void)
{
}
//--------------------------------------------------------------------+
// TinyUSB Callbacks
//--------------------------------------------------------------------+

View File

@ -239,6 +239,8 @@ bool cdch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *it
bool cdch_set_config(uint8_t dev_addr, uint8_t itf_num)
{
(void) dev_addr; (void) itf_num;
if (tuh_cdc_mount_cb) tuh_cdc_mount_cb(dev_addr);
return true;
}
@ -254,6 +256,16 @@ void cdch_close(uint8_t dev_addr)
TU_VERIFY(dev_addr <= CFG_TUH_DEVICE_MAX, );
cdch_data_t * p_cdc = get_itf(dev_addr);
// Invoke application callback
if (tuh_cdc_umount_cb)
{
if (p_cdc->ep_out || p_cdc->ep_in || p_cdc->ep_notif)
{
tuh_cdc_umount_cb(dev_addr);
}
}
tu_memclr(p_cdc, sizeof(cdch_data_t));
}

View File

@ -34,13 +34,18 @@
#endif
//--------------------------------------------------------------------+
// CDC APPLICATION PUBLIC API
// Application API
//--------------------------------------------------------------------+
/** \ingroup ClassDriver_CDC Communication Device Class (CDC)
* \addtogroup CDC_Serial Serial
* @{
* \defgroup CDC_Serial_Host Host
* @{ */
//------------- Application Callback -------------//
// Invoked when a device with CDC interface is mounted
TU_ATTR_WEAK void tuh_cdc_mount_cb(uint8_t dev_addr);
// Invoked when a device with CDC interface is unmounted
TU_ATTR_WEAK void tuh_cdc_umount_cb(uint8_t dev_addr);
bool tuh_cdc_set_control_line_state(uint8_t dev_addr, bool dtr, bool rts, tuh_xfer_cb_t complete_cb);