This code uses Semtech's open source LoRaWAN stack ported to mbed environment.

Dependencies:   mbed LoRaWAN-lib SX1272Lib

Committer:
Mehrad
Date:
Thu Jun 09 23:58:16 2016 +0000
Revision:
0:6155544d38b1
The initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mehrad 0:6155544d38b1 1 /*
Mehrad 0:6155544d38b1 2 / _____) _ | |
Mehrad 0:6155544d38b1 3 ( (____ _____ ____ _| |_ _____ ____| |__
Mehrad 0:6155544d38b1 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
Mehrad 0:6155544d38b1 5 _____) ) ____| | | || |_| ____( (___| | | |
Mehrad 0:6155544d38b1 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
Mehrad 0:6155544d38b1 7 (C)2015 Semtech
Mehrad 0:6155544d38b1 8
Mehrad 0:6155544d38b1 9 Description: VT100 serial display management
Mehrad 0:6155544d38b1 10
Mehrad 0:6155544d38b1 11 License: Revised BSD License, see LICENSE.TXT file include in the project
Mehrad 0:6155544d38b1 12
Mehrad 0:6155544d38b1 13 Maintainer: Miguel Luis and Gregory Cristian
Mehrad 0:6155544d38b1 14 */
Mehrad 0:6155544d38b1 15 #include "board.h"
Mehrad 0:6155544d38b1 16 #include "vt100.h"
Mehrad 0:6155544d38b1 17 #include "SerialDisplay.h"
Mehrad 0:6155544d38b1 18
Mehrad 0:6155544d38b1 19 // Mehrad
Mehrad 0:6155544d38b1 20 //VT100 vt( SERIAL_TX, SERIAL_RX );
Mehrad 0:6155544d38b1 21 VT100 vt( USBTX, USBRX );
Mehrad 0:6155544d38b1 22
Mehrad 0:6155544d38b1 23
Mehrad 0:6155544d38b1 24 void SerialPrintCheckBox( bool activated, uint8_t color )
Mehrad 0:6155544d38b1 25 {
Mehrad 0:6155544d38b1 26 if( activated == true )
Mehrad 0:6155544d38b1 27 {
Mehrad 0:6155544d38b1 28 vt.SetAttribute( VT100::ATTR_OFF, color, color );
Mehrad 0:6155544d38b1 29 }
Mehrad 0:6155544d38b1 30 else
Mehrad 0:6155544d38b1 31 {
Mehrad 0:6155544d38b1 32 vt.SetAttribute( VT100::ATTR_OFF );
Mehrad 0:6155544d38b1 33 }
Mehrad 0:6155544d38b1 34 vt.printf( " " );
Mehrad 0:6155544d38b1 35 vt.SetAttribute( VT100::ATTR_OFF );
Mehrad 0:6155544d38b1 36 }
Mehrad 0:6155544d38b1 37
Mehrad 0:6155544d38b1 38 void SerialDisplayUpdateActivationMode( bool otaa )
Mehrad 0:6155544d38b1 39 {
Mehrad 0:6155544d38b1 40 vt.SetCursorPos( 4, 17 );
Mehrad 0:6155544d38b1 41 SerialPrintCheckBox( otaa, VT100::WHITE );
Mehrad 0:6155544d38b1 42 vt.SetCursorPos( 9, 17 );
Mehrad 0:6155544d38b1 43 SerialPrintCheckBox( !otaa, VT100::WHITE );
Mehrad 0:6155544d38b1 44 }
Mehrad 0:6155544d38b1 45
Mehrad 0:6155544d38b1 46 void SerialDisplayUpdateEui( uint8_t line, uint8_t *eui )
Mehrad 0:6155544d38b1 47 {
Mehrad 0:6155544d38b1 48 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 49 for( uint8_t i = 0; i < 8; i++ )
Mehrad 0:6155544d38b1 50 {
Mehrad 0:6155544d38b1 51 vt.printf( "%02X ", eui[i] );
Mehrad 0:6155544d38b1 52 }
Mehrad 0:6155544d38b1 53 vt.SetCursorPos( line, 50 );
Mehrad 0:6155544d38b1 54 vt.printf( "]" );
Mehrad 0:6155544d38b1 55 }
Mehrad 0:6155544d38b1 56
Mehrad 0:6155544d38b1 57 void SerialDisplayUpdateKey( uint8_t line, uint8_t *key )
Mehrad 0:6155544d38b1 58 {
Mehrad 0:6155544d38b1 59 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 60 for( uint8_t i = 0; i < 16; i++ )
Mehrad 0:6155544d38b1 61 {
Mehrad 0:6155544d38b1 62 vt.printf( "%02X ", key[i] );
Mehrad 0:6155544d38b1 63 }
Mehrad 0:6155544d38b1 64 vt.SetCursorPos( line, 74 );
Mehrad 0:6155544d38b1 65 vt.printf( "]" );
Mehrad 0:6155544d38b1 66 }
Mehrad 0:6155544d38b1 67
Mehrad 0:6155544d38b1 68 void SerialDisplayUpdateNwkId( uint8_t id )
Mehrad 0:6155544d38b1 69 {
Mehrad 0:6155544d38b1 70 vt.SetCursorPos( 10, 27 );
Mehrad 0:6155544d38b1 71 vt.printf( "%03d", id );
Mehrad 0:6155544d38b1 72 }
Mehrad 0:6155544d38b1 73
Mehrad 0:6155544d38b1 74 void SerialDisplayUpdateDevAddr( uint32_t addr )
Mehrad 0:6155544d38b1 75 {
Mehrad 0:6155544d38b1 76 vt.SetCursorPos( 11, 27 );
Mehrad 0:6155544d38b1 77 vt.printf( "%02X %02X %02X %02X", ( addr >> 24 ) & 0xFF, ( addr >> 16 ) & 0xFF, ( addr >> 8 ) & 0xFF, addr & 0xFF );
Mehrad 0:6155544d38b1 78 }
Mehrad 0:6155544d38b1 79
Mehrad 0:6155544d38b1 80 void SerialDisplayUpdateFrameType( bool confirmed )
Mehrad 0:6155544d38b1 81 {
Mehrad 0:6155544d38b1 82 vt.SetCursorPos( 15, 17 );
Mehrad 0:6155544d38b1 83 SerialPrintCheckBox( confirmed, VT100::WHITE );
Mehrad 0:6155544d38b1 84 vt.SetCursorPos( 15, 32 );
Mehrad 0:6155544d38b1 85 SerialPrintCheckBox( !confirmed, VT100::WHITE );
Mehrad 0:6155544d38b1 86 }
Mehrad 0:6155544d38b1 87
Mehrad 0:6155544d38b1 88 void SerialDisplayUpdateAdr( bool adr )
Mehrad 0:6155544d38b1 89 {
Mehrad 0:6155544d38b1 90 vt.SetCursorPos( 16, 27 );
Mehrad 0:6155544d38b1 91 if( adr == true )
Mehrad 0:6155544d38b1 92 {
Mehrad 0:6155544d38b1 93 vt.printf( " ON" );
Mehrad 0:6155544d38b1 94 }
Mehrad 0:6155544d38b1 95 else
Mehrad 0:6155544d38b1 96 {
Mehrad 0:6155544d38b1 97 vt.printf( "OFF" );
Mehrad 0:6155544d38b1 98 }
Mehrad 0:6155544d38b1 99 }
Mehrad 0:6155544d38b1 100
Mehrad 0:6155544d38b1 101 void SerialDisplayUpdateDutyCycle( bool dutyCycle )
Mehrad 0:6155544d38b1 102 {
Mehrad 0:6155544d38b1 103 vt.SetCursorPos( 17, 27 );
Mehrad 0:6155544d38b1 104 if( dutyCycle == true )
Mehrad 0:6155544d38b1 105 {
Mehrad 0:6155544d38b1 106 vt.printf( " ON" );
Mehrad 0:6155544d38b1 107 }
Mehrad 0:6155544d38b1 108 else
Mehrad 0:6155544d38b1 109 {
Mehrad 0:6155544d38b1 110 vt.printf( "OFF" );
Mehrad 0:6155544d38b1 111 }
Mehrad 0:6155544d38b1 112 }
Mehrad 0:6155544d38b1 113
Mehrad 0:6155544d38b1 114 void SerialDisplayUpdatePublicNetwork( bool network )
Mehrad 0:6155544d38b1 115 {
Mehrad 0:6155544d38b1 116 vt.SetCursorPos( 19, 17 );
Mehrad 0:6155544d38b1 117 SerialPrintCheckBox( network, VT100::WHITE );
Mehrad 0:6155544d38b1 118 vt.SetCursorPos( 19, 30 );
Mehrad 0:6155544d38b1 119 SerialPrintCheckBox( !network, VT100::WHITE );
Mehrad 0:6155544d38b1 120 }
Mehrad 0:6155544d38b1 121
Mehrad 0:6155544d38b1 122 void SerialDisplayUpdateNetworkIsJoined( bool state )
Mehrad 0:6155544d38b1 123 {
Mehrad 0:6155544d38b1 124 vt.SetCursorPos( 20, 17 );
Mehrad 0:6155544d38b1 125 SerialPrintCheckBox( !state, VT100::RED );
Mehrad 0:6155544d38b1 126 vt.SetCursorPos( 20, 30 );
Mehrad 0:6155544d38b1 127 SerialPrintCheckBox( state, VT100::GREEN );
Mehrad 0:6155544d38b1 128 }
Mehrad 0:6155544d38b1 129
Mehrad 0:6155544d38b1 130 void SerialDisplayUpdateLedState( uint8_t id, uint8_t state )
Mehrad 0:6155544d38b1 131 {
Mehrad 0:6155544d38b1 132 switch( id )
Mehrad 0:6155544d38b1 133 {
Mehrad 0:6155544d38b1 134 case 1:
Mehrad 0:6155544d38b1 135 vt.SetCursorPos( 22, 17 );
Mehrad 0:6155544d38b1 136 SerialPrintCheckBox( state, VT100::RED );
Mehrad 0:6155544d38b1 137 break;
Mehrad 0:6155544d38b1 138 case 2:
Mehrad 0:6155544d38b1 139 vt.SetCursorPos( 22, 31 );
Mehrad 0:6155544d38b1 140 SerialPrintCheckBox( state, VT100::GREEN );
Mehrad 0:6155544d38b1 141 break;
Mehrad 0:6155544d38b1 142 case 3:
Mehrad 0:6155544d38b1 143 vt.SetCursorPos( 22, 45 );
Mehrad 0:6155544d38b1 144 SerialPrintCheckBox( state, VT100::BLUE );
Mehrad 0:6155544d38b1 145 break;
Mehrad 0:6155544d38b1 146 }
Mehrad 0:6155544d38b1 147 }
Mehrad 0:6155544d38b1 148
Mehrad 0:6155544d38b1 149 void SerialDisplayUpdateData( uint8_t line, uint8_t *buffer, uint8_t size )
Mehrad 0:6155544d38b1 150 {
Mehrad 0:6155544d38b1 151 if( size != 0 )
Mehrad 0:6155544d38b1 152 {
Mehrad 0:6155544d38b1 153 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 154 for( uint8_t i = 0; i < size; i++ )
Mehrad 0:6155544d38b1 155 {
Mehrad 0:6155544d38b1 156 vt.printf( "%02X ", buffer[i] );
Mehrad 0:6155544d38b1 157 if( ( ( i + 1 ) % 16 ) == 0 )
Mehrad 0:6155544d38b1 158 {
Mehrad 0:6155544d38b1 159 line++;
Mehrad 0:6155544d38b1 160 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 161 }
Mehrad 0:6155544d38b1 162 }
Mehrad 0:6155544d38b1 163 for( uint8_t i = size; i < 64; i++ )
Mehrad 0:6155544d38b1 164 {
Mehrad 0:6155544d38b1 165 vt.printf( "__ " );
Mehrad 0:6155544d38b1 166 if( ( ( i + 1 ) % 16 ) == 0 )
Mehrad 0:6155544d38b1 167 {
Mehrad 0:6155544d38b1 168 line++;
Mehrad 0:6155544d38b1 169 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 170 }
Mehrad 0:6155544d38b1 171 }
Mehrad 0:6155544d38b1 172 vt.SetCursorPos( line - 1, 74 );
Mehrad 0:6155544d38b1 173 vt.printf( "]" );
Mehrad 0:6155544d38b1 174 }
Mehrad 0:6155544d38b1 175 else
Mehrad 0:6155544d38b1 176 {
Mehrad 0:6155544d38b1 177 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 178 for( uint8_t i = 0; i < 64; i++ )
Mehrad 0:6155544d38b1 179 {
Mehrad 0:6155544d38b1 180 vt.printf( "__ " );
Mehrad 0:6155544d38b1 181 if( ( ( i + 1 ) % 16 ) == 0 )
Mehrad 0:6155544d38b1 182 {
Mehrad 0:6155544d38b1 183 line++;
Mehrad 0:6155544d38b1 184 vt.SetCursorPos( line, 27 );
Mehrad 0:6155544d38b1 185 }
Mehrad 0:6155544d38b1 186 }
Mehrad 0:6155544d38b1 187 vt.SetCursorPos( line - 1, 74 );
Mehrad 0:6155544d38b1 188 vt.printf( "]" );
Mehrad 0:6155544d38b1 189 }
Mehrad 0:6155544d38b1 190 }
Mehrad 0:6155544d38b1 191
Mehrad 0:6155544d38b1 192 void SerialDisplayUpdateUplinkAcked( bool state )
Mehrad 0:6155544d38b1 193 {
Mehrad 0:6155544d38b1 194 vt.SetCursorPos( 24, 36 );
Mehrad 0:6155544d38b1 195 SerialPrintCheckBox( state, VT100::GREEN );
Mehrad 0:6155544d38b1 196 }
Mehrad 0:6155544d38b1 197
Mehrad 0:6155544d38b1 198 void SerialDisplayUpdateUplink( bool acked, uint8_t datarate, uint16_t counter, uint8_t port, uint8_t *buffer, uint8_t bufferSize )
Mehrad 0:6155544d38b1 199 {
Mehrad 0:6155544d38b1 200 // Acked
Mehrad 0:6155544d38b1 201 SerialDisplayUpdateUplinkAcked( acked );
Mehrad 0:6155544d38b1 202 // Datarate
Mehrad 0:6155544d38b1 203 vt.SetCursorPos( 25, 33 );
Mehrad 0:6155544d38b1 204 vt.printf( "DR%d", datarate );
Mehrad 0:6155544d38b1 205 // Counter
Mehrad 0:6155544d38b1 206 vt.SetCursorPos( 26, 27 );
Mehrad 0:6155544d38b1 207 vt.printf( "%10d", counter );
Mehrad 0:6155544d38b1 208 // Port
Mehrad 0:6155544d38b1 209 vt.SetCursorPos( 27, 34 );
Mehrad 0:6155544d38b1 210 vt.printf( "%3d", port );
Mehrad 0:6155544d38b1 211 // Data
Mehrad 0:6155544d38b1 212 SerialDisplayUpdateData( 28, buffer, bufferSize );
Mehrad 0:6155544d38b1 213 // Help message
Mehrad 0:6155544d38b1 214 vt.SetCursorPos( 42, 1 );
Mehrad 0:6155544d38b1 215 vt.printf( "To refresh screen please hit 'r' key." );
Mehrad 0:6155544d38b1 216 }
Mehrad 0:6155544d38b1 217
Mehrad 0:6155544d38b1 218 void SerialDisplayUpdateDonwlinkRxData( bool state )
Mehrad 0:6155544d38b1 219 {
Mehrad 0:6155544d38b1 220 vt.SetCursorPos( 34, 4 );
Mehrad 0:6155544d38b1 221 SerialPrintCheckBox( state, VT100::GREEN );
Mehrad 0:6155544d38b1 222 }
Mehrad 0:6155544d38b1 223
Mehrad 0:6155544d38b1 224 void SerialDisplayUpdateDownlink( bool rxData, int16_t rssi, int8_t snr, uint16_t counter, uint8_t port, uint8_t *buffer, uint8_t bufferSize )
Mehrad 0:6155544d38b1 225 {
Mehrad 0:6155544d38b1 226 // Rx data
Mehrad 0:6155544d38b1 227 SerialDisplayUpdateDonwlinkRxData( rxData );
Mehrad 0:6155544d38b1 228 // RSSI
Mehrad 0:6155544d38b1 229 vt.SetCursorPos( 33, 32 );
Mehrad 0:6155544d38b1 230 vt.printf( "%5d", rssi );
Mehrad 0:6155544d38b1 231 // SNR
Mehrad 0:6155544d38b1 232 vt.SetCursorPos( 34, 32 );
Mehrad 0:6155544d38b1 233 vt.printf( "%5d", snr );
Mehrad 0:6155544d38b1 234 // Counter
Mehrad 0:6155544d38b1 235 vt.SetCursorPos( 35, 27 );
Mehrad 0:6155544d38b1 236 vt.printf( "%10d", counter );
Mehrad 0:6155544d38b1 237 if( rxData == true )
Mehrad 0:6155544d38b1 238 {
Mehrad 0:6155544d38b1 239 // Port
Mehrad 0:6155544d38b1 240 vt.SetCursorPos( 36, 34 );
Mehrad 0:6155544d38b1 241 vt.printf( "%3d", port );
Mehrad 0:6155544d38b1 242 // Data
Mehrad 0:6155544d38b1 243 SerialDisplayUpdateData( 37, buffer, bufferSize );
Mehrad 0:6155544d38b1 244 }
Mehrad 0:6155544d38b1 245 else
Mehrad 0:6155544d38b1 246 {
Mehrad 0:6155544d38b1 247 // Port
Mehrad 0:6155544d38b1 248 vt.SetCursorPos( 36, 34 );
Mehrad 0:6155544d38b1 249 vt.printf( " " );
Mehrad 0:6155544d38b1 250 // Data
Mehrad 0:6155544d38b1 251 SerialDisplayUpdateData( 37, NULL, 0 );
Mehrad 0:6155544d38b1 252 }
Mehrad 0:6155544d38b1 253 }
Mehrad 0:6155544d38b1 254
Mehrad 0:6155544d38b1 255 void SerialDisplayDrawFirstLine( void )
Mehrad 0:6155544d38b1 256 {
Mehrad 0:6155544d38b1 257 vt.PutBoxDrawingChar( 'l' );
Mehrad 0:6155544d38b1 258 for( int8_t i = 0; i <= 77; i++ )
Mehrad 0:6155544d38b1 259 {
Mehrad 0:6155544d38b1 260 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 261 }
Mehrad 0:6155544d38b1 262 vt.PutBoxDrawingChar( 'k' );
Mehrad 0:6155544d38b1 263 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 264 }
Mehrad 0:6155544d38b1 265
Mehrad 0:6155544d38b1 266 void SerialDisplayDrawTitle( const char* title )
Mehrad 0:6155544d38b1 267 {
Mehrad 0:6155544d38b1 268 vt.PutBoxDrawingChar( 'x' );
Mehrad 0:6155544d38b1 269 vt.printf( "%s", title );
Mehrad 0:6155544d38b1 270 vt.PutBoxDrawingChar( 'x' );
Mehrad 0:6155544d38b1 271 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 272 }
Mehrad 0:6155544d38b1 273 void SerialDisplayDrawTopSeparator( void )
Mehrad 0:6155544d38b1 274 {
Mehrad 0:6155544d38b1 275 vt.PutBoxDrawingChar( 't' );
Mehrad 0:6155544d38b1 276 for( int8_t i = 0; i <= 11; i++ )
Mehrad 0:6155544d38b1 277 {
Mehrad 0:6155544d38b1 278 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 279 }
Mehrad 0:6155544d38b1 280 vt.PutBoxDrawingChar( 'w' );
Mehrad 0:6155544d38b1 281 for( int8_t i = 0; i <= 64; i++ )
Mehrad 0:6155544d38b1 282 {
Mehrad 0:6155544d38b1 283 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 284 }
Mehrad 0:6155544d38b1 285 vt.PutBoxDrawingChar( 'u' );
Mehrad 0:6155544d38b1 286 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 287 }
Mehrad 0:6155544d38b1 288
Mehrad 0:6155544d38b1 289 void SerialDisplayDrawColSeparator( void )
Mehrad 0:6155544d38b1 290 {
Mehrad 0:6155544d38b1 291 vt.PutBoxDrawingChar( 'x' );
Mehrad 0:6155544d38b1 292 for( int8_t i = 0; i <= 11; i++ )
Mehrad 0:6155544d38b1 293 {
Mehrad 0:6155544d38b1 294 vt.PutBoxDrawingChar( ' ' );
Mehrad 0:6155544d38b1 295 }
Mehrad 0:6155544d38b1 296 vt.PutBoxDrawingChar( 't' );
Mehrad 0:6155544d38b1 297 for( int8_t i = 0; i <= 64; i++ )
Mehrad 0:6155544d38b1 298 {
Mehrad 0:6155544d38b1 299 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 300 }
Mehrad 0:6155544d38b1 301 vt.PutBoxDrawingChar( 'u' );
Mehrad 0:6155544d38b1 302 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 303 }
Mehrad 0:6155544d38b1 304
Mehrad 0:6155544d38b1 305 void SerialDisplayDrawSeparator( void )
Mehrad 0:6155544d38b1 306 {
Mehrad 0:6155544d38b1 307 vt.PutBoxDrawingChar( 't' );
Mehrad 0:6155544d38b1 308 for( int8_t i = 0; i <= 11; i++ )
Mehrad 0:6155544d38b1 309 {
Mehrad 0:6155544d38b1 310 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 311 }
Mehrad 0:6155544d38b1 312 vt.PutBoxDrawingChar( 'n' );
Mehrad 0:6155544d38b1 313 for( int8_t i = 0; i <= 64; i++ )
Mehrad 0:6155544d38b1 314 {
Mehrad 0:6155544d38b1 315 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 316 }
Mehrad 0:6155544d38b1 317 vt.PutBoxDrawingChar( 'u' );
Mehrad 0:6155544d38b1 318 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 319 }
Mehrad 0:6155544d38b1 320
Mehrad 0:6155544d38b1 321 void SerialDisplayDrawLine( const char* firstCol, const char* secondCol )
Mehrad 0:6155544d38b1 322 {
Mehrad 0:6155544d38b1 323 vt.PutBoxDrawingChar( 'x' );
Mehrad 0:6155544d38b1 324 vt.printf( "%s", firstCol );
Mehrad 0:6155544d38b1 325 vt.PutBoxDrawingChar( 'x' );
Mehrad 0:6155544d38b1 326 vt.printf( "%s", secondCol );
Mehrad 0:6155544d38b1 327 vt.PutBoxDrawingChar( 'x' );
Mehrad 0:6155544d38b1 328 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 329 }
Mehrad 0:6155544d38b1 330
Mehrad 0:6155544d38b1 331 void SerialDisplayDrawBottomLine( void )
Mehrad 0:6155544d38b1 332 {
Mehrad 0:6155544d38b1 333 vt.PutBoxDrawingChar( 'm' );
Mehrad 0:6155544d38b1 334 for( int8_t i = 0; i <= 11; i++ )
Mehrad 0:6155544d38b1 335 {
Mehrad 0:6155544d38b1 336 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 337 }
Mehrad 0:6155544d38b1 338 vt.PutBoxDrawingChar( 'v' );
Mehrad 0:6155544d38b1 339 for( int8_t i = 0; i <= 64; i++ )
Mehrad 0:6155544d38b1 340 {
Mehrad 0:6155544d38b1 341 vt.PutBoxDrawingChar( 'q' );
Mehrad 0:6155544d38b1 342 }
Mehrad 0:6155544d38b1 343 vt.PutBoxDrawingChar( 'j' );
Mehrad 0:6155544d38b1 344 vt.printf( "\r\n" );
Mehrad 0:6155544d38b1 345 }
Mehrad 0:6155544d38b1 346
Mehrad 0:6155544d38b1 347 void SerialDisplayInit( void )
Mehrad 0:6155544d38b1 348 {
Mehrad 0:6155544d38b1 349 vt.ClearScreen( 2 );
Mehrad 0:6155544d38b1 350 vt.SetCursorMode( false );
Mehrad 0:6155544d38b1 351 vt.SetCursorPos( 0, 0 );
Mehrad 0:6155544d38b1 352
Mehrad 0:6155544d38b1 353 // "+-----------------------------------------------------------------------------+" );
Mehrad 0:6155544d38b1 354 SerialDisplayDrawFirstLine( );
Mehrad 0:6155544d38b1 355 // "¦ LoRaWAN Demonstration Application ¦" );
Mehrad 0:6155544d38b1 356 SerialDisplayDrawTitle( " LoRaWAN Demonstration Application " );
Mehrad 0:6155544d38b1 357 // "+------------+----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 358 SerialDisplayDrawTopSeparator( );
Mehrad 0:6155544d38b1 359 // "¦ Activation ¦ [ ]Over The Air ¦" );
Mehrad 0:6155544d38b1 360 SerialDisplayDrawLine( " Activation ", " [ ]Over The Air " );
Mehrad 0:6155544d38b1 361 // "¦ ¦ DevEui [__ __ __ __ __ __ __ __] ¦" );
Mehrad 0:6155544d38b1 362 SerialDisplayDrawLine( " ", " DevEui [__ __ __ __ __ __ __ __] " );
Mehrad 0:6155544d38b1 363 // "¦ ¦ AppEui [__ __ __ __ __ __ __ __] ¦" );
Mehrad 0:6155544d38b1 364 SerialDisplayDrawLine( " ", " AppEui [__ __ __ __ __ __ __ __] " );
Mehrad 0:6155544d38b1 365 // "¦ ¦ AppKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] ¦" );
Mehrad 0:6155544d38b1 366 SerialDisplayDrawLine( " ", " AppKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] " );
Mehrad 0:6155544d38b1 367 // "¦ +----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 368 SerialDisplayDrawColSeparator( );
Mehrad 0:6155544d38b1 369 // "¦ ¦ [x]Personalisation ¦" );
Mehrad 0:6155544d38b1 370 SerialDisplayDrawLine( " ", " [ ]Personalisation " );
Mehrad 0:6155544d38b1 371 // "¦ ¦ NwkId [___] ¦" );
Mehrad 0:6155544d38b1 372 SerialDisplayDrawLine( " ", " NwkId [___] " );
Mehrad 0:6155544d38b1 373 // "¦ ¦ DevAddr [__ __ __ __] ¦" );
Mehrad 0:6155544d38b1 374 SerialDisplayDrawLine( " ", " DevAddr [__ __ __ __] " );
Mehrad 0:6155544d38b1 375 // "¦ ¦ NwkSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] ¦" );
Mehrad 0:6155544d38b1 376 SerialDisplayDrawLine( " ", " NwkSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] " );
Mehrad 0:6155544d38b1 377 // "¦ ¦ AppSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] ¦" );
Mehrad 0:6155544d38b1 378 SerialDisplayDrawLine( " ", " AppSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] " );
Mehrad 0:6155544d38b1 379 // "+------------+----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 380 SerialDisplayDrawSeparator( );
Mehrad 0:6155544d38b1 381 // "¦ MAC params ¦ [ ]Confirmed / [ ]Unconfirmed ¦" );
Mehrad 0:6155544d38b1 382 SerialDisplayDrawLine( " MAC params ", " [ ]Confirmed / [ ]Unconfirmed " );
Mehrad 0:6155544d38b1 383 // "¦ ¦ ADR [ ] ¦" );
Mehrad 0:6155544d38b1 384 SerialDisplayDrawLine( " ", " ADR [ ] " );
Mehrad 0:6155544d38b1 385 // "¦ ¦ Duty cycle[ ] ¦" );
Mehrad 0:6155544d38b1 386 SerialDisplayDrawLine( " ", " Duty cycle[ ] " );
Mehrad 0:6155544d38b1 387 // "+------------+----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 388 SerialDisplayDrawSeparator( );
Mehrad 0:6155544d38b1 389 // "¦ Network ¦ [ ]Public / [ ]Private ¦" );
Mehrad 0:6155544d38b1 390 SerialDisplayDrawLine( " Network ", " [ ]Public / [ ]Private " );
Mehrad 0:6155544d38b1 391 // "¦ ¦ [ ]Joining / [ ]Joined ¦" );
Mehrad 0:6155544d38b1 392 SerialDisplayDrawLine( " ", " [ ]Joining / [ ]Joined " );
Mehrad 0:6155544d38b1 393 // "+------------+----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 394 SerialDisplayDrawSeparator( );
Mehrad 0:6155544d38b1 395 // "¦ LED status ¦ [ ]LED1(Tx) / [ ]LED2(Rx) / [ ]LED3(App) ¦" );
Mehrad 0:6155544d38b1 396 SerialDisplayDrawLine( " LED status ", " [ ]LED1(Tx) / [ ]LED2(Rx) / [ ]LED3(App) " );
Mehrad 0:6155544d38b1 397 // "+------------+----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 398 SerialDisplayDrawSeparator( );
Mehrad 0:6155544d38b1 399 // "¦ Uplink ¦ Acked [ ] ¦" );
Mehrad 0:6155544d38b1 400 SerialDisplayDrawLine( " Uplink ", " Acked [ ] " );
Mehrad 0:6155544d38b1 401 // "¦ ¦ Datarate [ ] ¦" );
Mehrad 0:6155544d38b1 402 SerialDisplayDrawLine( " ", " Datarate [ ] " );
Mehrad 0:6155544d38b1 403 // "¦ ¦ Counter [ ] ¦" );
Mehrad 0:6155544d38b1 404 SerialDisplayDrawLine( " ", " Counter [ ] " );
Mehrad 0:6155544d38b1 405 // "¦ ¦ Port [ ] ¦" );
Mehrad 0:6155544d38b1 406 SerialDisplayDrawLine( " ", " Port [ ] " );
Mehrad 0:6155544d38b1 407 // "¦ ¦ Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 408 SerialDisplayDrawLine( " ", " Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 409 // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 410 SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 411 // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 412 SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 413 // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 414 SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 415 // "+------------+----------------------------------------------------------------¦" );
Mehrad 0:6155544d38b1 416 SerialDisplayDrawSeparator( );
Mehrad 0:6155544d38b1 417 // "¦ Downlink ¦ RSSI [ ] dBm ¦" );
Mehrad 0:6155544d38b1 418 SerialDisplayDrawLine( " Downlink ", " RSSI [ ] dBm " );
Mehrad 0:6155544d38b1 419 // "¦ [ ]Data ¦ SNR [ ] dB ¦" );
Mehrad 0:6155544d38b1 420 SerialDisplayDrawLine( " [ ]Data ", " SNR [ ] dB " );
Mehrad 0:6155544d38b1 421 // "¦ ¦ Counter [ ] ¦" );
Mehrad 0:6155544d38b1 422 // "¦ ¦ Counter [ ] ¦" );
Mehrad 0:6155544d38b1 423 SerialDisplayDrawLine( " ", " Counter [ ] " );
Mehrad 0:6155544d38b1 424 // "¦ ¦ Port [ ] ¦" );
Mehrad 0:6155544d38b1 425 SerialDisplayDrawLine( " ", " Port [ ] " );
Mehrad 0:6155544d38b1 426 // "¦ ¦ Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 427 SerialDisplayDrawLine( " ", " Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 428 // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 429 SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 430 // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 431 SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 432 // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
Mehrad 0:6155544d38b1 433 SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
Mehrad 0:6155544d38b1 434 // "+------------+----------------------------------------------------------------+" );
Mehrad 0:6155544d38b1 435 SerialDisplayDrawBottomLine( );
Mehrad 0:6155544d38b1 436 vt.printf( "To refresh screen please hit 'r' key.\r\n" );
Mehrad 0:6155544d38b1 437 }
Mehrad 0:6155544d38b1 438
Mehrad 0:6155544d38b1 439 bool SerialDisplayReadable( void )
Mehrad 0:6155544d38b1 440 {
Mehrad 0:6155544d38b1 441 return vt.Readable( );
Mehrad 0:6155544d38b1 442 }
Mehrad 0:6155544d38b1 443
Mehrad 0:6155544d38b1 444 uint8_t SerialDisplayGetChar( void )
Mehrad 0:6155544d38b1 445 {
Mehrad 0:6155544d38b1 446 return vt.GetChar( );
Mehrad 0:6155544d38b1 447 }