23 #ifndef _VGATERMINAL_H_INCLUDED 24 #define _VGATERMINAL_H_INCLUDED 34 #include "freertos/FreeRTOS.h" 215 struct TerminalCursorState_t {
216 TerminalCursorState_t * next;
220 bool cursorPastLastCol;
222 GlyphOptions_t glyphOptions;
223 uint8_t characterSetIndex;
224 uint8_t characterSet[4];
228 enum class KeypadMode_t {
262 void connectSerialPort(HardwareSerial & serialPort,
bool autoXONXOFF =
true);
263 void pollSerialPort();
265 void setLogStream(Stream & stream) { m_logStream = &stream; }
266 void logFmt(
const char * format, ...);
267 void log(
const char * txt);
270 void loadFont(FontInfo
const * font);
272 void setBackgroundColor(
Color color,
bool setAsDefault =
true);
273 void setForegroundColor(
Color color,
bool setAsDefault =
true);
277 void flush(
bool waitVSync);
280 int16_t getColumns() {
return m_columns; }
281 int16_t getRows() {
return m_rows; }
284 void enableCursor(
bool value);
286 int availableForWrite();
293 size_t write(
const uint8_t * buffer,
size_t size);
294 size_t write(uint8_t c);
301 void clearMap(uint32_t * map);
305 void freeGlyphsMap();
307 void set132ColumnMode(
bool value);
311 void setCursorPos(int16_t X, int16_t Y);
312 int16_t getAbsoluteRow(int16_t Y);
314 void int_setBackgroundColor(
Color color);
315 void int_setForegroundColor(
Color color);
319 void setTabStop(int16_t column,
bool set);
320 void resetTabStops();
324 void scrollDownAt(int16_t startingRow);
326 void scrollUpAt(int16_t startingRow);
327 void setScrollingRegion(int16_t top, int16_t down,
bool resetCursorPos =
true);
330 void saveCursorState();
331 void restoreCursorState();
332 void clearSavedCursorStates();
334 void erase(int16_t X1, int16_t Y1, int16_t X2, int16_t Y2,
char c,
bool maintainDoubleWidth);
336 void consumeInputQueue();
339 void consumeCSISPC(
int * params,
int paramsCount);
340 char consumeParamsAndGetCode(
int * params,
int * paramsCount,
bool * questionMarkFound);
341 void consumeDECPrivateModes(
int const * params,
int paramsCount,
char c);
343 void execSGRParameters(
int const * params,
int paramsCount);
345 void execCtrlCode(
char c);
347 static void charsConsumerTask(
void * pvParameters);
348 static void keyboardReaderTask(
void * pvParameters);
350 static void blinkTimerFunc(TimerHandle_t xTimer);
352 bool enableBlinkingText(
bool value);
354 bool int_enableCursor(
bool value);
356 char getNextCode(
bool processCtrlCodes);
358 void setChar(
char c);
361 void insertAt(int16_t column, int16_t row, uint16_t count);
362 void deleteAt(int16_t column, int16_t row, uint16_t count);
364 void reverseVideo(
bool value);
367 void refresh(int16_t X, int16_t Y);
368 void refresh(int16_t X1, int16_t Y1, int16_t X2, int16_t Y2);
372 void setLineDoubleWidth(int16_t row, uint8_t value);
373 uint8_t getCharWidthAt(int16_t row);
375 void useAlternateScreenBuffer(
bool value);
378 void send(
char const * str);
380 Stream * m_logStream;
384 GlyphsBuffer_t m_glyphsBuffer;
385 uint32_t * m_alternateMap;
386 bool m_alternateScreenBuffer;
387 volatile int16_t m_alternateCursorX;
388 volatile int16_t m_alternateCursorY;
393 uint8_t m_characterSetIndex;
394 uint8_t m_characterSet[4];
397 Color m_foregroundColor;
398 Color m_defaultForegroundColor;
399 Color m_backgroundColor;
400 Color m_defaultBackgroundColor;
405 bool m_prevCursorEnabled;
406 bool m_prevBlinkingTextEnabled;
409 TaskHandle_t m_charsConsumerTaskHandle;
413 TaskHandle_t m_keyboardReaderTaskHandle;
416 volatile int16_t m_cursorX;
417 volatile int16_t m_cursorY;
418 bool m_cursorPastLastCol;
421 int16_t m_scrollingRegionTop;
422 int16_t m_scrollingRegionDown;
423 volatile bool m_cursorState;
424 volatile bool m_cursorEnabled;
425 volatile bool m_cursorBlinkingEnabled;
426 volatile uint8_t m_cursorStyle;
429 TimerHandle_t m_blinkTimer;
430 volatile SemaphoreHandle_t m_blinkTimerMutex;
432 volatile bool m_blinkingTextVisible;
433 volatile bool m_blinkingTextEnabled;
436 volatile int16_t m_columns;
437 volatile int16_t m_rows;
442 HardwareSerial * m_serialPort;
445 QueueHandle_t m_inputQueue;
448 TerminalCursorState_t * m_savedCursorStateList;
451 bool m_resetRequested;
467 KeypadMode_t m_keypadMode;
470 bool m_cursorKeysMode;
475 uint8_t m_conformanceLevel;
478 bool m_keyAutorepeat;
Color
This enum defines named colors.
Definition: VGAController.h:184
This file contains VGACanvasClass definition and the VGACanvas instance.
This file contains VGAKeyboardClass definition and the VGAKeyboard instance.
This file contains ESP32VGA library configuration settings, like number of supported colors...
Definition: VGACanvas.cpp:29
Specifies general paint options.
Definition: VGAController.h:329
An ANSI-VT100 compatible display terminal.
Definition: VGATerminal.h:238
Specifies various glyph painting options.
Definition: VGAController.h:301
void end()
Definition: VGATerminal.cpp:192
VirtualKey_t
Represents each possible real or derived (SHIFT + real) key.
Definition: VGAKeyboard.h:98
void begin()
Initializes the terminal.
Definition: VGATerminal.cpp:65