summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/esp32/mphalport.c3
-rw-r--r--ports/esp8266/esp_mphal.c3
-rw-r--r--ports/mimxrt/mphalport.c3
-rw-r--r--ports/nrf/drivers/bluetooth/ble_uart.c3
-rw-r--r--ports/nrf/drivers/usb/usb_cdc.c3
-rw-r--r--ports/nrf/mphalport.c3
-rw-r--r--ports/pic16bit/pic16bit_mphal.c3
-rw-r--r--ports/rp2/mphalport.c9
-rw-r--r--ports/samd/mphalport.c4
-rw-r--r--ports/teensy/teensy_hal.c5
10 files changed, 39 insertions, 0 deletions
diff --git a/ports/esp32/mphalport.c b/ports/esp32/mphalport.c
index 2aaeb9755..b187b422d 100644
--- a/ports/esp32/mphalport.c
+++ b/ports/esp32/mphalport.c
@@ -88,6 +88,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
if ((poll_flags & MP_STREAM_POLL_RD) && stdin_ringbuf.iget != stdin_ringbuf.iput) {
ret |= MP_STREAM_POLL_RD;
}
+ if (poll_flags & MP_STREAM_POLL_WR) {
+ ret |= MP_STREAM_POLL_WR;
+ }
return ret;
}
diff --git a/ports/esp8266/esp_mphal.c b/ports/esp8266/esp_mphal.c
index 3cb480733..219e61484 100644
--- a/ports/esp8266/esp_mphal.c
+++ b/ports/esp8266/esp_mphal.c
@@ -62,6 +62,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
if ((poll_flags & MP_STREAM_POLL_RD) && stdin_ringbuf.iget != stdin_ringbuf.iput) {
ret |= MP_STREAM_POLL_RD;
}
+ if (poll_flags & MP_STREAM_POLL_WR) {
+ ret |= mp_uos_dupterm_poll(poll_flags);
+ }
return ret;
}
diff --git a/ports/mimxrt/mphalport.c b/ports/mimxrt/mphalport.c
index 2730b9a85..beb471ab8 100644
--- a/ports/mimxrt/mphalport.c
+++ b/ports/mimxrt/mphalport.c
@@ -86,6 +86,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
if ((poll_flags & MP_STREAM_POLL_RD) && ringbuf_peek(&stdin_ringbuf) != -1) {
ret |= MP_STREAM_POLL_RD;
}
+ if ((poll_flags & MP_STREAM_POLL_WR) && tud_cdc_connected() && tud_cdc_write_available() > 0) {
+ ret |= MP_STREAM_POLL_WR;
+ }
#if MICROPY_PY_OS_DUPTERM
ret |= mp_uos_dupterm_poll(poll_flags);
#endif
diff --git a/ports/nrf/drivers/bluetooth/ble_uart.c b/ports/nrf/drivers/bluetooth/ble_uart.c
index 3020f1af6..320657370 100644
--- a/ports/nrf/drivers/bluetooth/ble_uart.c
+++ b/ports/nrf/drivers/bluetooth/ble_uart.c
@@ -164,6 +164,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
&& !isBufferEmpty(mp_rx_ring_buffer)) {
ret |= MP_STREAM_POLL_RD;
}
+ if ((poll_flags & MP_STREAM_POLL_WR) && ble_uart_enabled()) {
+ ret |= MP_STREAM_POLL_WR;
+ }
return ret;
}
#endif
diff --git a/ports/nrf/drivers/usb/usb_cdc.c b/ports/nrf/drivers/usb/usb_cdc.c
index 16d69fff6..e33a42548 100644
--- a/ports/nrf/drivers/usb/usb_cdc.c
+++ b/ports/nrf/drivers/usb/usb_cdc.c
@@ -213,6 +213,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
ret |= MP_STREAM_POLL_RD;
}
}
+ if (poll_flags & MP_STREAM_POLL_WR) {
+ ret |= MP_STREAM_POLL_WR;
+ }
return ret;
}
diff --git a/ports/nrf/mphalport.c b/ports/nrf/mphalport.c
index 9405cb2e3..a2eec7fce 100644
--- a/ports/nrf/mphalport.c
+++ b/ports/nrf/mphalport.c
@@ -179,6 +179,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
&& uart_rx_any(MP_STATE_PORT(board_stdio_uart))) {
ret |= MP_STREAM_POLL_RD;
}
+ if ((poll_flags & MP_STREAM_POLL_WR) && MP_STATE_PORT(board_stdio_uart) != NULL) {
+ ret |= MP_STREAM_POLL_WR;
+ }
return ret;
}
diff --git a/ports/pic16bit/pic16bit_mphal.c b/ports/pic16bit/pic16bit_mphal.c
index 48e8af87d..b2c80ba1b 100644
--- a/ports/pic16bit/pic16bit_mphal.c
+++ b/ports/pic16bit/pic16bit_mphal.c
@@ -57,6 +57,9 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
if ((poll_flags & MP_STREAM_POLL_RD) && uart_rx_any()) {
ret |= MP_STREAM_POLL_RD;
}
+ if (poll_flags & MP_STREAM_POLL_WR) {
+ ret |= MP_STREAM_POLL_WR;
+ }
return ret;
}
diff --git a/ports/rp2/mphalport.c b/ports/rp2/mphalport.c
index 510d486d9..f56c2bda1 100644
--- a/ports/rp2/mphalport.c
+++ b/ports/rp2/mphalport.c
@@ -98,6 +98,15 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
if ((poll_flags & MP_STREAM_POLL_RD) && ringbuf_peek(&stdin_ringbuf) != -1) {
ret |= MP_STREAM_POLL_RD;
}
+ if (poll_flags & MP_STREAM_POLL_WR) {
+ #if MICROPY_HW_ENABLE_UART_REPL
+ ret |= MP_STREAM_POLL_WR;
+ #else
+ if (tud_cdc_connected() && tud_cdc_write_available() > 0) {
+ ret |= MP_STREAM_POLL_WR;
+ }
+ #endif
+ }
#endif
#if MICROPY_PY_OS_DUPTERM
ret |= mp_uos_dupterm_poll(poll_flags);
diff --git a/ports/samd/mphalport.c b/ports/samd/mphalport.c
index d7511e61f..3dc6b70a8 100644
--- a/ports/samd/mphalport.c
+++ b/ports/samd/mphalport.c
@@ -162,6 +162,10 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
ret |= MP_STREAM_POLL_RD;
}
+ if ((poll_flags & MP_STREAM_POLL_WR) && tud_cdc_connected() && tud_cdc_write_available() > 0) {
+ ret |= MP_STREAM_POLL_WR;
+ }
+
#if MICROPY_PY_OS_DUPTERM
ret |= mp_uos_dupterm_poll(poll_flags);
#endif
diff --git a/ports/teensy/teensy_hal.c b/ports/teensy/teensy_hal.c
index 93103319b..62a826517 100644
--- a/ports/teensy/teensy_hal.c
+++ b/ports/teensy/teensy_hal.c
@@ -32,6 +32,11 @@ uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags) {
ret |= MP_STREAM_POLL_RD;
}
}
+ if (poll_flags & MP_STREAM_POLL_WR) {
+ if (MP_STATE_PORT(pyb_stdio_uart) != NULL || usb_vcp_is_enabled()) {
+ ret |= MP_STREAM_POLL_WR;
+ }
+ }
return ret;
}