Skip to content

Commit

Permalink
delay first serial write by 50ms
Browse files Browse the repository at this point in the history
  • Loading branch information
dhalbert committed Oct 12, 2022
1 parent fed8847 commit 844cd17
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion supervisor/shared/serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <string.h>

#include "py/mpconfig.h"
#include "py/mphal.h"

#include "supervisor/shared/cpu.h"
#include "supervisor/shared/display.h"
Expand Down Expand Up @@ -62,6 +63,13 @@ byte console_uart_rx_buf[64];
#endif
#endif

#if CIRCUITPY_USB || CIRCUITPY_CONSOLE_UART
// Flag to note whether this is the first write after connection.
// Delay slightly on the first write to allow time for the host to set up things,
// including turning off echo mode.
static bool _first_write_done = false;
#endif

#if CIRCUITPY_USB_VENDOR
bool tud_vendor_connected(void);
#endif
Expand Down Expand Up @@ -144,6 +152,10 @@ void serial_early_init(void) {
}

void serial_init(void) {
#if CIRCUITPY_USB || CIRCUITPY_CONSOLE_UART
_first_write_done = false;
#endif

port_serial_init();
}

Expand Down Expand Up @@ -301,8 +313,11 @@ void serial_write_substring(const char *text, uint32_t length) {
#endif

#if CIRCUITPY_CONSOLE_UART
if (!_first_write_done) {
mp_hal_delay_ms(50);
_first_write_done = true;
}
int uart_errcode;

common_hal_busio_uart_write(&console_uart, (const uint8_t *)text, length, &uart_errcode);
#endif

Expand All @@ -321,6 +336,11 @@ void serial_write_substring(const char *text, uint32_t length) {
#endif

#if CIRCUITPY_USB
// Delay the very first write
if (tud_cdc_connected() && !_first_write_done) {
mp_hal_delay_ms(50);
_first_write_done = true;
}
uint32_t count = 0;
if (tud_cdc_connected()) {
while (count < length) {
Expand Down

0 comments on commit 844cd17

Please sign in to comment.