Skip to content

Commit fca4916

Browse files
committed
extmod/os_dupterm: Add builtin_stream handling for TinyUSB USBD_CDC.
Signed-off-by: Andrew Leech <[email protected]>
1 parent e8e7ed9 commit fca4916

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

extmod/os_dupterm.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#if MICROPY_PY_OS_DUPTERM
3838

3939
#include "shared/runtime/interrupt_char.h"
40+
#include "shared/tinyusb/mp_usbd_cdc.h"
4041

4142
void mp_os_deactivate(size_t dupterm_idx, const char *msg, mp_obj_t exc) {
4243
mp_obj_t term = MP_STATE_VM(dupterm_objs[dupterm_idx]);
@@ -61,6 +62,16 @@ void mp_os_deactivate(size_t dupterm_idx, const char *msg, mp_obj_t exc) {
6162
}
6263
}
6364

65+
#if MICROPY_PY_OS_DUPTERM_BUILTIN_STREAM
66+
static bool is_builtin_stream(mp_const_obj_t stream) {
67+
if (mp_obj_get_type(stream) == &machine_usbd_cdc_type || mp_os_dupterm_is_builtin_stream(stream)) {
68+
// return false;
69+
return true;
70+
}
71+
return false;
72+
}
73+
#endif
74+
6475
uintptr_t mp_os_dupterm_poll(uintptr_t poll_flags) {
6576
uintptr_t poll_flags_out = 0;
6677

@@ -74,7 +85,7 @@ uintptr_t mp_os_dupterm_poll(uintptr_t poll_flags) {
7485
mp_uint_t ret = 0;
7586
const mp_stream_p_t *stream_p = mp_get_stream(s);
7687
#if MICROPY_PY_OS_DUPTERM_BUILTIN_STREAM
77-
if (mp_os_dupterm_is_builtin_stream(s)) {
88+
if (is_builtin_stream(s)) {
7889
ret = stream_p->ioctl(s, MP_STREAM_POLL, poll_flags, &errcode);
7990
} else
8091
#endif
@@ -123,7 +134,7 @@ int mp_os_dupterm_rx_chr(void) {
123134
}
124135

125136
#if MICROPY_PY_OS_DUPTERM_BUILTIN_STREAM
126-
if (mp_os_dupterm_is_builtin_stream(MP_STATE_VM(dupterm_objs[idx]))) {
137+
if (is_builtin_stream(MP_STATE_VM(dupterm_objs[idx]))) {
127138
byte buf[1];
128139
int errcode = 0;
129140
const mp_stream_p_t *stream_p = mp_get_stream(MP_STATE_VM(dupterm_objs[idx]));
@@ -187,7 +198,7 @@ int mp_os_dupterm_tx_strn(const char *str, size_t len) {
187198
did_write = true;
188199

189200
#if MICROPY_PY_OS_DUPTERM_BUILTIN_STREAM
190-
if (mp_os_dupterm_is_builtin_stream(MP_STATE_VM(dupterm_objs[idx]))) {
201+
if (is_builtin_stream(MP_STATE_VM(dupterm_objs[idx]))) {
191202
int errcode = 0;
192203
const mp_stream_p_t *stream_p = mp_get_stream(MP_STATE_VM(dupterm_objs[idx]));
193204
mp_uint_t written = stream_p->write(MP_STATE_VM(dupterm_objs[idx]), str, len, &errcode);

0 commit comments

Comments
 (0)