usb: Define CdcAcmDevice methods as virtual
Virtual methods can be overridden by derived class.
This commit is contained in:
parent
fd9ecc13c1
commit
76a75a9d47
|
@ -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;
|
TimeOut_t connection_timeout;
|
||||||
vTaskSetTimeOutState(&connection_timeout);
|
vTaskSetTimeOutState(&connection_timeout);
|
||||||
|
|
||||||
while (true) {
|
do {
|
||||||
ESP_LOGD(TAG, "Checking list of connected USB devices");
|
ESP_LOGD(TAG, "Checking list of connected USB devices");
|
||||||
uint8_t dev_addr_list[10];
|
uint8_t dev_addr_list[10];
|
||||||
int num_of_devices;
|
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);
|
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));
|
vTaskDelay(pdMS_TO_TICKS(50));
|
||||||
}
|
} while (xTaskCheckForTimeOut(&connection_timeout, &timeout_ticks) == pdFALSE);
|
||||||
|
|
||||||
// Timeout was reached, clean-up
|
// Timeout was reached, clean-up
|
||||||
free(*dev);
|
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
|
// Find underlying USB device
|
||||||
cdc_dev_t *cdc_dev;
|
cdc_dev_t *cdc_dev;
|
||||||
ESP_GOTO_ON_ERROR(
|
ret = cdc_acm_find_and_open_usb_device(vid, pid, dev_config->connection_timeout_ms, &cdc_dev);
|
||||||
cdc_acm_find_and_open_usb_device(vid, pid, dev_config->connection_timeout_ms, &cdc_dev),
|
if (ESP_OK != ret) {
|
||||||
exit, TAG, "USB device with VID: 0x%04X, PID: 0x%04X not found", vid, pid);
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
// Open procedure for CDC-ACM non-compliant devices:
|
// Open procedure for CDC-ACM non-compliant devices:
|
||||||
const usb_config_desc_t *config_desc;
|
const usb_config_desc_t *config_desc;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
version: "1.0.2"
|
version: "1.0.3"
|
||||||
description: USB Host CDC-ACM driver
|
description: USB Host CDC-ACM driver
|
||||||
url: https://github.com/espressif/idf-extra-components/tree/master/usb/usb_host_cdc_acm
|
url: https://github.com/espressif/idf-extra-components/tree/master/usb/usb_host_cdc_acm
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
@ -275,7 +275,7 @@ class CdcAcmDevice {
|
||||||
public:
|
public:
|
||||||
// Operators
|
// Operators
|
||||||
CdcAcmDevice() : cdc_hdl(NULL) {};
|
CdcAcmDevice() : cdc_hdl(NULL) {};
|
||||||
~CdcAcmDevice()
|
virtual ~CdcAcmDevice()
|
||||||
{
|
{
|
||||||
// Close CDC-ACM device, if it wasn't explicitly closed
|
// Close CDC-ACM device, if it wasn't explicitly closed
|
||||||
if (this->cdc_hdl != NULL) {
|
if (this->cdc_hdl != NULL) {
|
||||||
|
@ -300,29 +300,29 @@ public:
|
||||||
|
|
||||||
inline esp_err_t close()
|
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) {
|
if (err == ESP_OK) {
|
||||||
this->cdc_hdl = NULL;
|
this->cdc_hdl = NULL;
|
||||||
}
|
}
|
||||||
return err;
|
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);
|
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);
|
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);
|
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);
|
return cdc_acm_host_send_break(this->cdc_hdl, duration_ms);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue