Ottawa Bootcamp Publish

Dependencies:   SX127x lorawan1v1

Committer:
Wayne Roberts
Date:
Mon Jul 23 17:56:47 2018 -0700
Revision:
9:1a94f4a5e716
Parent:
0:62e456e60083
rename board.h to lorawan_board.h

Who changed what in which revision?

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