summaryrefslogtreecommitdiff
path: root/ports/stm32/usbd_cdc_interface.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2019-05-18 23:01:36 +1000
committerDamien George <damien.p.george@gmail.com>2019-05-30 21:11:04 +1000
commit0c29502ad995cfacc3b11f26a135707a06b8c27d (patch)
tree02f59087040aa360865af801ade5232340714abe /ports/stm32/usbd_cdc_interface.c
parenta4f1d82757b8e95c21a095c99b7c3f04ded88104 (diff)
stm32/usb: Refactor CDC VCP code to enable N CDC interfaces.
The board config option MICROPY_HW_USB_ENABLE_CDC2 is now changed to MICROPY_HW_USB_CDC_NUM, and the latter should be defined to the maximum number of CDC interfaces to support (defaults to 1).
Diffstat (limited to 'ports/stm32/usbd_cdc_interface.c')
-rw-r--r--ports/stm32/usbd_cdc_interface.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/ports/stm32/usbd_cdc_interface.c b/ports/stm32/usbd_cdc_interface.c
index 4a4a8beb8..49f0deec7 100644
--- a/ports/stm32/usbd_cdc_interface.c
+++ b/ports/stm32/usbd_cdc_interface.c
@@ -217,18 +217,13 @@ void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) {
} else {
usbd_cdc_msc_hid_state_t *usbd = ((USBD_HandleTypeDef*)hpcd->pData)->pClassData;
hpcd->Instance->GINTMSK &= ~USB_OTG_GINTMSK_SOFM;
- usbd_cdc_itf_t *cdc = (usbd_cdc_itf_t*)usbd->cdc;
- if (cdc->connect_state == USBD_CDC_CONNECT_STATE_CONNECTING) {
- cdc->connect_state = USBD_CDC_CONNECT_STATE_CONNECTED;
- usbd_cdc_try_tx(cdc);
- }
- #if MICROPY_HW_USB_ENABLE_CDC2
- cdc = (usbd_cdc_itf_t*)usbd->cdc2;
- if (cdc->connect_state == USBD_CDC_CONNECT_STATE_CONNECTING) {
- cdc->connect_state = USBD_CDC_CONNECT_STATE_CONNECTED;
- usbd_cdc_try_tx(cdc);
+ for (int i = 0; i < MICROPY_HW_USB_CDC_NUM; ++i) {
+ usbd_cdc_itf_t *cdc = (usbd_cdc_itf_t*)usbd->cdc[i];
+ if (cdc->connect_state == USBD_CDC_CONNECT_STATE_CONNECTING) {
+ cdc->connect_state = USBD_CDC_CONNECT_STATE_CONNECTED;
+ usbd_cdc_try_tx(cdc);
+ }
}
- #endif
}
}