Support library for the ESP8266 Wireless Terminal. Can also be used for communicating with any VT100-compatible terminal.
Diff: espterm.hpp
- Revision:
- 1:09dfc9fd55f4
- Parent:
- 0:20fb68233f89
- Child:
- 2:f9f27e2b64a7
diff -r 20fb68233f89 -r 09dfc9fd55f4 espterm.hpp --- a/espterm.hpp Mon Mar 06 20:45:05 2017 +0000 +++ b/espterm.hpp Mon Mar 06 22:01:29 2017 +0000 @@ -2,24 +2,185 @@ #define ESPTERM_H #include "mbed.h" + +/** + * ANSI colors supported by the ESP Terminal + */ +typedef enum { + BLACK = 0, RED, GREEN, YELLOW, BLUE, PURPLE, CYAN, GRAY_LT, + GRAY, RED_LT, GREEN_LT, YELLOW_LT, BLUE_LT, PURPLE_LT, CYAN_LT, WHITE, + + // aliases + RED_DK=1, GREEN_DK=2, YELLOW_DK=3, BLUE_DK=4, PURPLE_DK=5, CYAN_DK=6, SILVER=7, +} ANSI_Color; + + /** - * @brief ESP8266 Wireless Terminal interface + * Argument for screen or line clear commands + */ +typedef enum { + CLEAR_TO_CURSOR = 0, + CLEAR_FROM_CURSOR = 1, + CLEAR_ALL = 2, +} ClearMode; + + +/** + * ESP8266 Wireless Terminal interface * - * Can be also used for sending ANSI sequences to a regular serial terminal + * Can also be used for sending ANSI sequences to a regular serial terminal */ -class ESPTerm { -private: +class ESPTerm +{ Serial* ser; public: /** - * @brief Create a terminal instance from an already initialized serial port + * @brief Create a terminal instance from already initialized serial port * * Example: * Serial ser(PA_2, PA_3, 115200); // for STM32F042 * ESPTerm term(&ser); */ ESPTerm(Serial *s); + + + /** + * @brief Create with Serial at (PA_2, PA_3, 115200) + */ + ESPTerm(void); + + + /** + * @brief printf() over the Serial + * + * Use for raw strings without formatting, or with custom escape sequences. + */ + int printf(const char *fmt, ...); + + + /** + * @brief Alias for printf() + */ + int print(const char *fmt, ...); + + + /** + * printf() over the Serial, followed by a newline (\r\n) + * + * Use for raw strings without formatting, or with custom escape sequences. + * Especially useful for log messages, automatically terminating the line. + */ + int println(const char *fmt, ...); + + + /** + * @brief Set foreground text color + * @param c - color + */ + void fg(ANSI_Color c); + + + /** + * @brief Set background text color + * @param c - color + */ + void bg(ANSI_Color c); + + + /** + * @brief Set both text colors + * @param fg - foregorund color + * @param bg - background color + */ + void colors(ANSI_Color fg, ANSI_Color bg); + + + /** + * @brief Send \e[0m - reset all attributes + */ + void reset_attribs(void); + + + /** + * @brief Reset all attributes (alias) + */ + void rst(void); + + + /** + * @brief Move cursor to a given position + * + * Screen coordinates are 1-based, starting left-top, + * growing down and right. + * + * @param y - row + * @param x - column + */ + void go_to(int y, int x); + + + /** + * @brief Clear screen + * + * Replace part of the screen with spaces (ASCII 32) of the currently + * selected foregorund and background colors. + * + * @param mode - what to clear: part or all + */ + void clear_screen(ClearMode mode); + + + /** + * @brief Clear in line + * + * Replace part of the current line with spaces (ASCII 32) of the + * currently selected foregorund and background colors. + * + * @param mode - what to clear: part or all + */ + void clear_line(ClearMode mode); + + + /** + * @brief Clear the whole screen and move cursor to 1,1 + */ + void screen_reset(void); + + + /** + * @brief Set cursor visibility + * + * If hidden, there will be no blinking square on the screen, + * but the cursor still works (ie. go_to works). + * + * Hiding the cursor is useful for ASCII-art GUIs (dialog boxes etc) + */ + void show_cursor(bool yes); + + + /** + * @brief Perform a factory reset of the ESP Terminal + * + * This clears any saved WiFi config, restores the default AP name + * and switches to AP mode. The module will reset itself. + * + * Expect some ASCII output from the module (and a burst of garbage + * during the reset). + */ + void factory_reset(void); + + + /** + * @brief Set screen size + * + * The total number of characters (rows*cols) is limited by the Terminal + * firmware, at v0.5.2 that is 2000 characters (25x80) + * + * @param rows - number of rows (screen height) + * @param cols - number of columns (screen width) + */ + void set_screen_size(int rows, int cols); }; #endif /* ESPTERM_H */