aboutsummaryrefslogtreecommitdiff
path: root/ports/esp8266/esp_mphal.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/esp8266/esp_mphal.c')
-rw-r--r--ports/esp8266/esp_mphal.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/ports/esp8266/esp_mphal.c b/ports/esp8266/esp_mphal.c
index 9f4f051fd..df97a7343 100644
--- a/ports/esp8266/esp_mphal.c
+++ b/ports/esp8266/esp_mphal.c
@@ -35,15 +35,18 @@
#include "extmod/misc.h"
#include "lib/utils/pyexec.h"
-STATIC byte input_buf_array[256];
-ringbuf_t input_buf = {input_buf_array, sizeof(input_buf_array)};
+STATIC byte stdin_ringbuf_array[256];
+ringbuf_t stdin_ringbuf = {stdin_ringbuf_array, sizeof(stdin_ringbuf_array), 0, 0};
void mp_hal_debug_tx_strn_cooked(void *env, const char *str, uint32_t len);
const mp_print_t mp_debug_print = {NULL, mp_hal_debug_tx_strn_cooked};
+int uart_attached_to_dupterm;
+
void mp_hal_init(void) {
//ets_wdt_disable(); // it's a pain while developing
mp_hal_rtc_init();
uart_init(UART_BIT_RATE_115200, UART_BIT_RATE_115200);
+ uart_attached_to_dupterm = 0;
}
void mp_hal_delay_us(uint32_t us) {
@@ -55,7 +58,7 @@ void mp_hal_delay_us(uint32_t us) {
int mp_hal_stdin_rx_chr(void) {
for (;;) {
- int c = ringbuf_get(&input_buf);
+ int c = ringbuf_get(&stdin_ringbuf);
if (c != -1) {
return c;
}
@@ -80,19 +83,11 @@ void mp_hal_debug_str(const char *str) {
#endif
void mp_hal_stdout_tx_str(const char *str) {
- const char *last = str;
- while (*str) {
- uart_tx_one_char(UART0, *str++);
- }
- mp_uos_dupterm_tx_strn(last, str - last);
+ mp_uos_dupterm_tx_strn(str, strlen(str));
}
void mp_hal_stdout_tx_strn(const char *str, uint32_t len) {
- const char *last = str;
- while (len--) {
- uart_tx_one_char(UART0, *str++);
- }
- mp_uos_dupterm_tx_strn(last, str - last);
+ mp_uos_dupterm_tx_strn(str, len);
}
void mp_hal_stdout_tx_strn_cooked(const char *str, uint32_t len) {
@@ -102,13 +97,11 @@ void mp_hal_stdout_tx_strn_cooked(const char *str, uint32_t len) {
if (str > last) {
mp_uos_dupterm_tx_strn(last, str - last);
}
- uart_tx_one_char(UART0, '\r');
- uart_tx_one_char(UART0, '\n');
mp_uos_dupterm_tx_strn("\r\n", 2);
++str;
last = str;
} else {
- uart_tx_one_char(UART0, *str++);
+ ++str;
}
}
if (str > last) {
@@ -166,7 +159,7 @@ STATIC void dupterm_task_handler(os_event_t *evt) {
if (c < 0) {
break;
}
- ringbuf_put(&input_buf, c);
+ ringbuf_put(&stdin_ringbuf, c);
}
mp_hal_signal_input();
lock = 0;