Support library for the ESP8266 Wireless Terminal. Can also be used for communicating with any VT100-compatible terminal.
Diff: espterm.cpp
- Revision:
- 6:7e7550084e5f
- Parent:
- 5:7379bd37f3e2
diff -r 7379bd37f3e2 -r 7e7550084e5f espterm.cpp --- a/espterm.cpp Sun Mar 19 18:16:17 2017 +0000 +++ b/espterm.cpp Sun Mar 19 19:51:21 2017 +0000 @@ -119,6 +119,32 @@ } +void ESPTerm::move(int dy, int dx) +{ + if (dy != 0) { + if (dy > 0) { + // Down + ser->printf("\033[%dB", dy); + } + else { + // Up + ser->printf("\033[%dA", -dy); + } + } + + if (dx != 0) { + if (dx > 0) { + // Forward + ser->printf("\033[%dC", dx); + } + else { + // Backward + ser->printf("\033[%dD", -dx); + } + } +} + + void ESPTerm::clear_screen(ClearMode mode) { ser->printf("\033[%dJ", mode); @@ -139,10 +165,56 @@ void ESPTerm::show_cursor(bool yes) { - if (yes) + if (yes) { ser->puts("\033[?25h"); - else + } + else { ser->puts("\033[?25l"); + } +} + + +void ESPTerm::scroll(int lines) +{ + if (lines > 0) { + ser->printf("\033[%dT", lines); + } + else { + ser->printf("\033[%dS", -lines); + } +} + + +void ESPTerm::cursor_push(bool with_attribs) +{ + if (with_attribs) { + ser->puts("\0337"); + } + else { + ser->puts("\033[s"); + } +} + + +void ESPTerm::cursor_pop(bool with_attribs) +{ + if (with_attribs) { + ser->puts("\0338"); + } + else { + ser->puts("\033[u"); + } +} + + +void ESPTerm::wrap_enable(bool yes) +{ + if (yes) { + ser->puts("\033[?7h"); + } + else { + ser->puts("\033[?7l"); + } }