usb: Define CdcAcmDevice methods as virtual

Virtual methods can be overridden by derived class.
This commit is contained in:
Tomas Rezucha 2022-09-13 14:40:57 +02:00
parent fd9ecc13c1
commit 76a75a9d47
3 changed files with 13 additions and 16 deletions

View File

@ -357,7 +357,7 @@ static esp_err_t cdc_acm_find_and_open_usb_device(uint16_t vid, uint16_t pid, in
TimeOut_t connection_timeout;
vTaskSetTimeOutState(&connection_timeout);
while (true) {
do {
ESP_LOGD(TAG, "Checking list of connected USB devices");
uint8_t dev_addr_list[10];
int num_of_devices;
@ -380,12 +380,8 @@ static esp_err_t cdc_acm_find_and_open_usb_device(uint16_t vid, uint16_t pid, in
}
usb_host_device_close(p_cdc_acm_obj->cdc_acm_client_hdl, current_device);
}
if (xTaskCheckForTimeOut(&connection_timeout, &timeout_ticks) != pdFALSE) {
break; // Timeout elapsed and the device is not connected
}
vTaskDelay(pdMS_TO_TICKS(50));
}
} while (xTaskCheckForTimeOut(&connection_timeout, &timeout_ticks) == pdFALSE);
// Timeout was reached, clean-up
free(*dev);
@ -769,9 +765,10 @@ esp_err_t cdc_acm_host_open_vendor_specific(uint16_t vid, uint16_t pid, uint8_t
// Find underlying USB device
cdc_dev_t *cdc_dev;
ESP_GOTO_ON_ERROR(
cdc_acm_find_and_open_usb_device(vid, pid, dev_config->connection_timeout_ms, &cdc_dev),
exit, TAG, "USB device with VID: 0x%04X, PID: 0x%04X not found", vid, pid);
ret = cdc_acm_find_and_open_usb_device(vid, pid, dev_config->connection_timeout_ms, &cdc_dev);
if (ESP_OK != ret) {
goto exit;
}
// Open procedure for CDC-ACM non-compliant devices:
const usb_config_desc_t *config_desc;

View File

@ -1,4 +1,4 @@
version: "1.0.2"
version: "1.0.3"
description: USB Host CDC-ACM driver
url: https://github.com/espressif/idf-extra-components/tree/master/usb/usb_host_cdc_acm
dependencies:

View File

@ -275,7 +275,7 @@ class CdcAcmDevice {
public:
// Operators
CdcAcmDevice() : cdc_hdl(NULL) {};
~CdcAcmDevice()
virtual ~CdcAcmDevice()
{
// Close CDC-ACM device, if it wasn't explicitly closed
if (this->cdc_hdl != NULL) {
@ -300,29 +300,29 @@ public:
inline esp_err_t close()
{
esp_err_t err = cdc_acm_host_close(this->cdc_hdl);
const esp_err_t err = cdc_acm_host_close(this->cdc_hdl);
if (err == ESP_OK) {
this->cdc_hdl = NULL;
}
return err;
}
inline esp_err_t line_coding_get(cdc_acm_line_coding_t *line_coding)
virtual inline esp_err_t line_coding_get(cdc_acm_line_coding_t *line_coding) const
{
return cdc_acm_host_line_coding_get(this->cdc_hdl, line_coding);
}
inline esp_err_t line_coding_set(cdc_acm_line_coding_t *line_coding)
virtual inline esp_err_t line_coding_set(cdc_acm_line_coding_t *line_coding)
{
return cdc_acm_host_line_coding_set(this->cdc_hdl, line_coding);
}
inline esp_err_t set_control_line_state(bool dtr, bool rts)
virtual inline esp_err_t set_control_line_state(bool dtr, bool rts)
{
return cdc_acm_host_set_control_line_state(this->cdc_hdl, dtr, rts);
}
inline esp_err_t send_break(uint16_t duration_ms)
virtual inline esp_err_t send_break(uint16_t duration_ms)
{
return cdc_acm_host_send_break(this->cdc_hdl, duration_ms);
}