stmhal: Fix REPL printing by cooking output sent to stdout_obj.
Recent changes to builtin print meant that print was printing to the
mp_sys_stdout_obj, which was sending data raw to the USB CDC device.
The data should be cooked so that \n turns into \r\n.
diff --git a/stmhal/printf.c b/stmhal/printf.c
index 53c47c6..db611f3 100644
--- a/stmhal/printf.c
+++ b/stmhal/printf.c
@@ -40,6 +40,7 @@
#endif
#include "uart.h"
#include "usb.h"
+#include "pybstdio.h"
#if MICROPY_PY_BUILTINS_FLOAT
#include "formatfloat.h"
@@ -47,22 +48,11 @@
int pfenv_vprintf(const pfenv_t *pfenv, const char *fmt, va_list args);
-void pfenv_prints(const pfenv_t *pfenv, const char *str) {
- pfenv->print_strn(pfenv->data, str, strlen(str));
+STATIC void stdout_print_strn(void *dummy_env, const char *str, unsigned int len) {
+ stdout_tx_strn_cooked(str, len);
}
-STATIC void stdout_print_strn(void *data, const char *str, unsigned int len) {
- // TODO this needs to be replaced with a proper stdio interface ala CPython
- // send stdout to UART and USB CDC VCP
- if (pyb_uart_global_debug != PYB_UART_NONE) {
- uart_tx_strn_cooked(pyb_uart_global_debug, str, len);
- }
- if (usb_vcp_is_enabled()) {
- usb_vcp_send_strn_cooked(str, len);
- }
-}
-
-static const pfenv_t pfenv_stdout = {0, stdout_print_strn};
+STATIC const pfenv_t pfenv_stdout = {0, stdout_print_strn};
int printf(const char *fmt, ...) {
va_list ap;