Application example using LoRaWAN-lib MAC layer implementation

Dependencies:   mbed LoRaWAN-lib SX1272Lib

Fork of LoRaWAN-demo-72 by Semtech

Committer:
mluis
Date:
Thu Jan 07 15:11:08 2016 +0000
Revision:
0:45496a70a8a5
Initial commit

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