Node code for sx1272 LoRa transciever

Dependencies:   mbed BMP085 BufferedSerial DHT Sds021 Chainable_RGB_LED DigitDisplay LoRaWAN-lib SX1272Lib

Fork of LoRaWAN-demo-72-bootcamp by Semtech

Committer:
abouillot
Date:
Mon Jan 30 21:49:58 2017 +0000
Revision:
9:16106008960b
Parent:
0:45496a70a8a5
Added support for BMP085, DHT22 and SDS021 sensors; Added support of update upon User Button push

Who changed what in which revision?

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