diff --git a/examples/serial_echo/Makefile b/examples/serial_echo/Makefile new file mode 100644 index 0000000..717b163 --- /dev/null +++ b/examples/serial_echo/Makefile @@ -0,0 +1,3 @@ +# Simple makefile for simple example +PROGRAM=simple +include ../../common.mk diff --git a/examples/serial_echo/serial_echo.c b/examples/serial_echo/serial_echo.c new file mode 100644 index 0000000..cea3f33 --- /dev/null +++ b/examples/serial_echo/serial_echo.c @@ -0,0 +1,41 @@ +/* Extremely simple example that just reads from stdin and echoes back on stdout + * + * Has an easter egg, which is if you type "QUACK" it'll quack 3 times back at you. + * + * This example code is in the public domain + */ +#include "espressif/esp_common.h" +#include +#include + +void user_init(void) +{ + printf("SDK version:%s\n", sdk_system_get_sdk_version()); + printf("Going into echo mode...\n"); + + /* By default stdout is line-buffered, so you only see output + after a newline is sent. This is helpful in a multithreaded + environment so output doesn't get chopped up within a line. + + Here we want to see the echo immediately, so disable buffering. + */ + setbuf(stdout, NULL); + + while(1) { + int c = getchar(); + if(c != EOF) + putchar(c); + + /* Easter egg: check for a quack! */ + static int quack; + if(c == "QUACK"[quack]) { + quack++; + if(quack == strlen("QUACK")) { + printf("\nQUACK\nQUACK\n"); + quack = 0; + } + } else { + quack = 0; + } + } +}