Application example using LoRaWAN-lib MAC layer implementation for STM32 + SX1276 on OpenChirp
Dependencies: mbed LoRaWAN-lib SX1276Lib
app/vt100.h@0:92bca02df485, 2015-10-20 (annotated)
- Committer:
- mluis
- Date:
- Tue Oct 20 13:23:35 2015 +0000
- Revision:
- 0:92bca02df485
- Child:
- 3:9c6f7f082151
LoRaWAN-demo project creation using LoRaWAN-lib library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mluis | 0:92bca02df485 | 1 | /* |
mluis | 0:92bca02df485 | 2 | / _____) _ | | |
mluis | 0:92bca02df485 | 3 | ( (____ _____ ____ _| |_ _____ ____| |__ |
mluis | 0:92bca02df485 | 4 | \____ \| ___ | (_ _) ___ |/ ___) _ \ |
mluis | 0:92bca02df485 | 5 | _____) ) ____| | | || |_| ____( (___| | | | |
mluis | 0:92bca02df485 | 6 | (______/|_____)_|_|_| \__)_____)\____)_| |_| |
mluis | 0:92bca02df485 | 7 | (C)2015 Semtech |
mluis | 0:92bca02df485 | 8 | |
mluis | 0:92bca02df485 | 9 | Description: VT100 terminal support class |
mluis | 0:92bca02df485 | 10 | |
mluis | 0:92bca02df485 | 11 | License: Revised BSD License, see LICENSE.TXT file include in the project |
mluis | 0:92bca02df485 | 12 | |
mluis | 0:92bca02df485 | 13 | Maintainer: Miguel Luis and Gregory Cristian |
mluis | 0:92bca02df485 | 14 | */ |
mluis | 0:92bca02df485 | 15 | #ifndef __VT100_H__ |
mluis | 0:92bca02df485 | 16 | #define __VT100_H__ |
mluis | 0:92bca02df485 | 17 | |
mluis | 0:92bca02df485 | 18 | class VT100 : public Serial |
mluis | 0:92bca02df485 | 19 | { |
mluis | 0:92bca02df485 | 20 | public: |
mluis | 0:92bca02df485 | 21 | enum TextAttributes |
mluis | 0:92bca02df485 | 22 | { |
mluis | 0:92bca02df485 | 23 | ATTR_OFF = 0, |
mluis | 0:92bca02df485 | 24 | BOLD = 1, |
mluis | 0:92bca02df485 | 25 | USCORE = 4, |
mluis | 0:92bca02df485 | 26 | BLINK = 5, |
mluis | 0:92bca02df485 | 27 | REVERSE = 7, |
mluis | 0:92bca02df485 | 28 | BOLD_OFF = 21, |
mluis | 0:92bca02df485 | 29 | USCORE_OFF = 24, |
mluis | 0:92bca02df485 | 30 | BLINK_OFF = 25, |
mluis | 0:92bca02df485 | 31 | REVERSE_OFF = 27, |
mluis | 0:92bca02df485 | 32 | }; |
mluis | 0:92bca02df485 | 33 | |
mluis | 0:92bca02df485 | 34 | enum Colors |
mluis | 0:92bca02df485 | 35 | { |
mluis | 0:92bca02df485 | 36 | BLACK = 0, |
mluis | 0:92bca02df485 | 37 | RED = 1, |
mluis | 0:92bca02df485 | 38 | GREEN = 2, |
mluis | 0:92bca02df485 | 39 | BROWN = 3, |
mluis | 0:92bca02df485 | 40 | BLUE = 4, |
mluis | 0:92bca02df485 | 41 | MAGENTA = 5, |
mluis | 0:92bca02df485 | 42 | CYAN = 6, |
mluis | 0:92bca02df485 | 43 | WHITE = 7, |
mluis | 0:92bca02df485 | 44 | }; |
mluis | 0:92bca02df485 | 45 | /*! |
mluis | 0:92bca02df485 | 46 | * |
mluis | 0:92bca02df485 | 47 | */ |
mluis | 0:92bca02df485 | 48 | VT100( PinName tx, PinName rx ): Serial( tx, rx ) |
mluis | 0:92bca02df485 | 49 | { |
mluis | 0:92bca02df485 | 50 | this->baud( 115200 ); |
mluis | 0:92bca02df485 | 51 | // initializes terminal to "power-on" settings |
mluis | 0:92bca02df485 | 52 | // ESC c |
mluis | 0:92bca02df485 | 53 | this->printf( "\x1B\x63" ); |
mluis | 0:92bca02df485 | 54 | } |
mluis | 0:92bca02df485 | 55 | |
mluis | 0:92bca02df485 | 56 | void ClearScreen( uint8_t param ) |
mluis | 0:92bca02df485 | 57 | { |
mluis | 0:92bca02df485 | 58 | // ESC [ Ps J |
mluis | 0:92bca02df485 | 59 | // 0 Clear screen from cursor down |
mluis | 0:92bca02df485 | 60 | // 1 Clear screen from cursor up |
mluis | 0:92bca02df485 | 61 | // 2 Clear entire screen |
mluis | 0:92bca02df485 | 62 | |
mluis | 0:92bca02df485 | 63 | this->printf( "\x1B[%dJ", param ); |
mluis | 0:92bca02df485 | 64 | } |
mluis | 0:92bca02df485 | 65 | |
mluis | 0:92bca02df485 | 66 | void ClearLine( uint8_t param ) |
mluis | 0:92bca02df485 | 67 | { |
mluis | 0:92bca02df485 | 68 | // ESC [ Ps K |
mluis | 0:92bca02df485 | 69 | // 0 Erase from the active position to the end of the line, inclusive (default) |
mluis | 0:92bca02df485 | 70 | // 1 Erase from the start of the screen to the active position, inclusive |
mluis | 0:92bca02df485 | 71 | // 2 Erase all of the line, inclusive |
mluis | 0:92bca02df485 | 72 | |
mluis | 0:92bca02df485 | 73 | this->printf( "\x1B[%dK", param ); |
mluis | 0:92bca02df485 | 74 | } |
mluis | 0:92bca02df485 | 75 | |
mluis | 0:92bca02df485 | 76 | void SetAttribute( uint8_t attr ) |
mluis | 0:92bca02df485 | 77 | { |
mluis | 0:92bca02df485 | 78 | // ESC [ Ps;...;Ps m |
mluis | 0:92bca02df485 | 79 | this->printf( "\x1B[%dm", attr ); |
mluis | 0:92bca02df485 | 80 | } |
mluis | 0:92bca02df485 | 81 | |
mluis | 0:92bca02df485 | 82 | void SetAttribute( uint8_t attr, uint8_t fgcolor, uint8_t bgcolor ) |
mluis | 0:92bca02df485 | 83 | { |
mluis | 0:92bca02df485 | 84 | // ESC [ Ps;...;Ps m |
mluis | 0:92bca02df485 | 85 | this->printf( "\x1B[%d;%d;%dm", attr, fgcolor + 30, bgcolor + 40 ); |
mluis | 0:92bca02df485 | 86 | } |
mluis | 0:92bca02df485 | 87 | |
mluis | 0:92bca02df485 | 88 | void SetCursorMode( uint8_t visible ) |
mluis | 0:92bca02df485 | 89 | { |
mluis | 0:92bca02df485 | 90 | if( visible == true ) |
mluis | 0:92bca02df485 | 91 | { |
mluis | 0:92bca02df485 | 92 | // ESC [ ? 25 h |
mluis | 0:92bca02df485 | 93 | this->printf( "\x1B[?25h" ); |
mluis | 0:92bca02df485 | 94 | } |
mluis | 0:92bca02df485 | 95 | else |
mluis | 0:92bca02df485 | 96 | { |
mluis | 0:92bca02df485 | 97 | // ESC [ ? 25 l |
mluis | 0:92bca02df485 | 98 | this->printf( "\x1B[?25l" ); |
mluis | 0:92bca02df485 | 99 | } |
mluis | 0:92bca02df485 | 100 | } |
mluis | 0:92bca02df485 | 101 | |
mluis | 0:92bca02df485 | 102 | void SetCursorPos( uint8_t line, uint8_t col ) |
mluis | 0:92bca02df485 | 103 | { |
mluis | 0:92bca02df485 | 104 | // ESC [ Pl ; Pc H |
mluis | 0:92bca02df485 | 105 | this->printf( "\x1B[%d;%dH", line, col ); |
mluis | 0:92bca02df485 | 106 | } |
mluis | 0:92bca02df485 | 107 | |
mluis | 0:92bca02df485 | 108 | void PutStringAt( uint8_t line, uint8_t col, const char *s ) |
mluis | 0:92bca02df485 | 109 | { |
mluis | 0:92bca02df485 | 110 | this->SetCursorPos( line, col ); |
mluis | 0:92bca02df485 | 111 | this->printf( "%s", s ); |
mluis | 0:92bca02df485 | 112 | } |
mluis | 0:92bca02df485 | 113 | |
mluis | 0:92bca02df485 | 114 | void PutCharAt( uint8_t line, uint8_t col, uint8_t c ) |
mluis | 0:92bca02df485 | 115 | { |
mluis | 0:92bca02df485 | 116 | this->SetCursorPos( line, col ); |
mluis | 0:92bca02df485 | 117 | this->printf( "%c", c ); |
mluis | 0:92bca02df485 | 118 | } |
mluis | 0:92bca02df485 | 119 | |
mluis | 0:92bca02df485 | 120 | void PutHexAt( uint8_t line, uint8_t col, uint16_t n ) |
mluis | 0:92bca02df485 | 121 | { |
mluis | 0:92bca02df485 | 122 | this->SetCursorPos( line, col ); |
mluis | 0:92bca02df485 | 123 | this->printf( "%X", n ); |
mluis | 0:92bca02df485 | 124 | } |
mluis | 0:92bca02df485 | 125 | |
mluis | 0:92bca02df485 | 126 | void PutBoxDrawingChar( uint8_t c ) |
mluis | 0:92bca02df485 | 127 | { |
mluis | 0:92bca02df485 | 128 | this->printf( "\x1B(0%c\x1b(B", c ); |
mluis | 0:92bca02df485 | 129 | } |
mluis | 0:92bca02df485 | 130 | |
mluis | 0:92bca02df485 | 131 | bool Readable( void ) |
mluis | 0:92bca02df485 | 132 | { |
mluis | 0:92bca02df485 | 133 | return this->readable( ); |
mluis | 0:92bca02df485 | 134 | } |
mluis | 0:92bca02df485 | 135 | |
mluis | 0:92bca02df485 | 136 | uint8_t GetChar( void ) |
mluis | 0:92bca02df485 | 137 | { |
mluis | 0:92bca02df485 | 138 | return this->getc( ); |
mluis | 0:92bca02df485 | 139 | } |
mluis | 0:92bca02df485 | 140 | private: |
mluis | 0:92bca02df485 | 141 | |
mluis | 0:92bca02df485 | 142 | }; |
mluis | 0:92bca02df485 | 143 | |
mluis | 0:92bca02df485 | 144 | #endif // __VT100_H__ |