test harness

Dependencies:   LoRaWAN-NAMote72-Application-Demo LoRaWAN-lib2 SX1272Lib lib_gps lib_mma8451q lib_mpl3115a2 mbed

Fork of LoRaWAN-NAMote72-Application-Demo by Semtech

Revision:
0:69f2e28d12c1
Child:
16:3aa2e2bf34c3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/SerialDisplay.cpp	Tue May 17 00:21:55 2016 +0000
@@ -0,0 +1,157 @@
+/*
+ / _____)             _              | |
+( (____  _____ ____ _| |_ _____  ____| |__
+ \____ \| ___ |    (_   _) ___ |/ ___)  _ \
+ _____) ) ____| | | || |_| ____( (___| | | |
+(______/|_____)_|_|_| \__)_____)\____)_| |_|
+    (C)2015 Semtech
+
+Description: VT100 serial display management
+
+License: Revised BSD License, see LICENSE.TXT file include in the project
+
+Maintainer: Miguel Luis and Gregory Cristian
+*/
+
+#include "SerialDisplay.h"
+
+VT100 vt( USBTX, USBRX );
+
+void SerialDisplayJoinUpdate( void )
+{
+    printf( "###### ===== JOINING ==== ######\r\n" );
+    
+    DisplayNetworkParam( );
+
+    printf( "\r\n" );
+}
+
+void SerialDisplayTxUpdate(void)
+{
+    printf( "###### ===== UPLINK FRAME %d ==== ######\r\n", LoRaMacUplinkStatus.UplinkCounter );
+
+    DisplayNetworkParam( );
+    
+    printf( "TX PORT: %d\r\n", LoRaMacUplinkStatus.Port );
+
+    if( LoRaMacUplinkStatus.BufferSize != 0 )
+    {
+        printf( "TX DATA: " );
+        if( LoRaMacUplinkStatus.Type == MCPS_CONFIRMED )
+        {
+            printf( "CONFIRMED\r\n" );
+        }
+        else
+        {
+            printf( "UNCONFIRMED\r\n" );
+        }
+        SerialDisplayHex( LoRaMacUplinkStatus.Buffer, LoRaMacUplinkStatus.BufferSize );
+    }
+
+    printf( "DATA RATE: DR%d\r\n", LoRaMacUplinkStatus.Datarate );
+
+    printf( "TX POWER: %d dBm\r\n", 30 - ( LoRaMacUplinkStatus.TxPower << 1 ) );
+
+    printf( "BATTERY: %2.2fV\r\n", BoardGetBatteryVoltage( ) );
+
+    printf( "\r\n");
+}
+
+void SerialDisplayRxUpdate( void )
+{
+    printf( "###### ===== DOWNLINK FRAME %d ==== ######\r\n", LoRaMacDownlinkStatus.DownlinkCounter );
+
+    printf( "RX WINDOW: %d\r\n", LoRaMacDownlinkStatus.RxSlot + 1 );
+    
+    printf( "RX PORT: %d\r\n", LoRaMacDownlinkStatus.Port );
+
+    if( LoRaMacDownlinkStatus.BufferSize != 0 )
+    {
+        printf( "RX DATA: \r\n" );
+        SerialDisplayHex( LoRaMacDownlinkStatus.Buffer, LoRaMacDownlinkStatus.BufferSize );
+    }
+
+    printf( "RX RSSI: %d\r\n", LoRaMacDownlinkStatus.Rssi );
+
+    printf( "RX SNR: %d\r\n", LoRaMacDownlinkStatus.Snr );
+
+    printf( "\r\n" );
+}
+
+void SerialDisplayHex( uint8_t *pData, uint8_t len )
+{
+    int i;
+    bool newline = 0;
+
+    for( i = 0; i < len; i++ )
+    {
+        if( newline != 0 )
+        {
+            printf( "\r\n" );
+            newline = 0;
+        }
+
+        printf( "%02X ", pData[i] );
+
+        if( ( ( i + 1 ) % 16 ) == 0 )
+        {
+            newline = 1;
+        }
+    }
+    printf( "\r\n" );
+}
+
+void SerialAcclMetrDisplay( uint8_t statusReg )
+{
+    printf( "===== DEVICE ORIENTATION ====\r\n" );
+    if( ( statusReg & 0x40 ) != 0 )
+    {
+        printf( "HORIZONTAL + " );
+        if( ( statusReg & 0x01 ) != 0 )
+        {
+            printf( "FACE DOWN" );
+        }
+        else
+        {
+            printf( "FACE UP" );
+        }
+    }
+    else
+    {
+        printf( "VERTICAL" ); 
+    }
+    printf( "\r\n\r\n" );
+}
+
+void DisplayNetworkParam( void )
+{
+#if( OVER_THE_AIR_ACTIVATION != 0 )
+
+    printf( "DEVEUI: " );
+    SerialDisplayHex( DevEui, 8 );
+
+    printf( "APPEUI: " );
+    SerialDisplayHex( AppEui, 8 );
+
+    printf( "APPKEY: " );
+    SerialDisplayHex( AppKey, 16 );
+
+#else
+
+    printf( "DEVADDR: " );
+    
+    uint8_t *pData = ( uint8_t* )&DevAddr;
+    for( int32_t i = 3; i >= 0; i-- )
+    {
+        printf( "%02X ", pData[i] );
+    }
+    printf( "\r\n" );
+
+    printf( "NWKSKEY: " );
+    SerialDisplayHex( NwkSKey, 16 );
+
+    printf( "APPSKEY: " );
+    SerialDisplayHex( AppSKey, 16 );
+
+#endif
+}
\ No newline at end of file