Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed LoRaWAN-lib SX1276Lib
Fork of LoRaWAN-demo-76 by
Revision 8:9d6683e60974, committed 2016-08-25
- Comitter:
- helloqi
- Date:
- Thu Aug 25 13:20:05 2016 +0000
- Parent:
- 7:3173f0508a98
- Commit message:
- LoRaWan demo for sx1276;
Changed in this revision
diff -r 3173f0508a98 -r 9d6683e60974 app/Comissioning.h --- a/app/Comissioning.h Tue Jul 05 15:01:57 2016 +0000 +++ b/app/Comissioning.h Thu Aug 25 13:20:05 2016 +0000 @@ -19,7 +19,7 @@ * When set to 1 the application uses the Over-the-Air activation procedure * When set to 0 the application uses the Personalization activation procedure */ -#define OVER_THE_AIR_ACTIVATION 1 +#define OVER_THE_AIR_ACTIVATION 0 /*! * Indicates if the end-device is to be connected to a private or public network
diff -r 3173f0508a98 -r 9d6683e60974 app/SerialDisplay.cpp
--- a/app/SerialDisplay.cpp Tue Jul 05 15:01:57 2016 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,444 +0,0 @@
-/*
- / _____) _ | |
-( (____ _____ ____ _| |_ _____ ____| |__
- \____ \| ___ | (_ _) ___ |/ ___) _ \
- _____) ) ____| | | || |_| ____( (___| | | |
-(______/|_____)_|_|_| \__)_____)\____)_| |_|
- (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 "board.h"
-#include "vt100.h"
-#include "SerialDisplay.h"
-
-VT100 vt( USBTX, USBRX );
-
-void SerialPrintCheckBox( bool activated, uint8_t color )
-{
- if( activated == true )
- {
- vt.SetAttribute( VT100::ATTR_OFF, color, color );
- }
- else
- {
- vt.SetAttribute( VT100::ATTR_OFF );
- }
- vt.printf( " " );
- vt.SetAttribute( VT100::ATTR_OFF );
-}
-
-void SerialDisplayUpdateActivationMode( bool otaa )
-{
- vt.SetCursorPos( 4, 17 );
- SerialPrintCheckBox( otaa, VT100::WHITE );
- vt.SetCursorPos( 9, 17 );
- SerialPrintCheckBox( !otaa, VT100::WHITE );
-}
-
-void SerialDisplayUpdateEui( uint8_t line, uint8_t *eui )
-{
- vt.SetCursorPos( line, 27 );
- for( uint8_t i = 0; i < 8; i++ )
- {
- vt.printf( "%02X ", eui[i] );
- }
- vt.SetCursorPos( line, 50 );
- vt.printf( "]" );
-}
-
-void SerialDisplayUpdateKey( uint8_t line, uint8_t *key )
-{
- vt.SetCursorPos( line, 27 );
- for( uint8_t i = 0; i < 16; i++ )
- {
- vt.printf( "%02X ", key[i] );
- }
- vt.SetCursorPos( line, 74 );
- vt.printf( "]" );
-}
-
-void SerialDisplayUpdateNwkId( uint8_t id )
-{
- vt.SetCursorPos( 10, 27 );
- vt.printf( "%03d", id );
-}
-
-void SerialDisplayUpdateDevAddr( uint32_t addr )
-{
- vt.SetCursorPos( 11, 27 );
- vt.printf( "%02X %02X %02X %02X", ( addr >> 24 ) & 0xFF, ( addr >> 16 ) & 0xFF, ( addr >> 8 ) & 0xFF, addr & 0xFF );
-}
-
-void SerialDisplayUpdateFrameType( bool confirmed )
-{
- vt.SetCursorPos( 15, 17 );
- SerialPrintCheckBox( confirmed, VT100::WHITE );
- vt.SetCursorPos( 15, 32 );
- SerialPrintCheckBox( !confirmed, VT100::WHITE );
-}
-
-void SerialDisplayUpdateAdr( bool adr )
-{
- vt.SetCursorPos( 16, 27 );
- if( adr == true )
- {
- vt.printf( " ON" );
- }
- else
- {
- vt.printf( "OFF" );
- }
-}
-
-void SerialDisplayUpdateDutyCycle( bool dutyCycle )
-{
- vt.SetCursorPos( 17, 27 );
- if( dutyCycle == true )
- {
- vt.printf( " ON" );
- }
- else
- {
- vt.printf( "OFF" );
- }
-}
-
-void SerialDisplayUpdatePublicNetwork( bool network )
-{
- vt.SetCursorPos( 19, 17 );
- SerialPrintCheckBox( network, VT100::WHITE );
- vt.SetCursorPos( 19, 30 );
- SerialPrintCheckBox( !network, VT100::WHITE );
-}
-
-void SerialDisplayUpdateNetworkIsJoined( bool state )
-{
- vt.SetCursorPos( 20, 17 );
- SerialPrintCheckBox( !state, VT100::RED );
- vt.SetCursorPos( 20, 30 );
- SerialPrintCheckBox( state, VT100::GREEN );
-}
-
-void SerialDisplayUpdateLedState( uint8_t id, uint8_t state )
-{
- switch( id )
- {
- case 1:
- vt.SetCursorPos( 22, 17 );
- SerialPrintCheckBox( state, VT100::RED );
- break;
- case 2:
- vt.SetCursorPos( 22, 31 );
- SerialPrintCheckBox( state, VT100::GREEN );
- break;
- case 3:
- vt.SetCursorPos( 22, 45 );
- SerialPrintCheckBox( state, VT100::BLUE );
- break;
- }
-}
-
-void SerialDisplayUpdateData( uint8_t line, uint8_t *buffer, uint8_t size )
-{
- if( size != 0 )
- {
- vt.SetCursorPos( line, 27 );
- for( uint8_t i = 0; i < size; i++ )
- {
- vt.printf( "%02X ", buffer[i] );
- if( ( ( i + 1 ) % 16 ) == 0 )
- {
- line++;
- vt.SetCursorPos( line, 27 );
- }
- }
- for( uint8_t i = size; i < 64; i++ )
- {
- vt.printf( "__ " );
- if( ( ( i + 1 ) % 16 ) == 0 )
- {
- line++;
- vt.SetCursorPos( line, 27 );
- }
- }
- vt.SetCursorPos( line - 1, 74 );
- vt.printf( "]" );
- }
- else
- {
- vt.SetCursorPos( line, 27 );
- for( uint8_t i = 0; i < 64; i++ )
- {
- vt.printf( "__ " );
- if( ( ( i + 1 ) % 16 ) == 0 )
- {
- line++;
- vt.SetCursorPos( line, 27 );
- }
- }
- vt.SetCursorPos( line - 1, 74 );
- vt.printf( "]" );
- }
-}
-
-void SerialDisplayUpdateUplinkAcked( bool state )
-{
- vt.SetCursorPos( 24, 36 );
- SerialPrintCheckBox( state, VT100::GREEN );
-}
-
-void SerialDisplayUpdateUplink( bool acked, uint8_t datarate, uint16_t counter, uint8_t port, uint8_t *buffer, uint8_t bufferSize )
-{
- // Acked
- SerialDisplayUpdateUplinkAcked( acked );
- // Datarate
- vt.SetCursorPos( 25, 33 );
- vt.printf( "DR%d", datarate );
- // Counter
- vt.SetCursorPos( 26, 27 );
- vt.printf( "%10d", counter );
- // Port
- vt.SetCursorPos( 27, 34 );
- vt.printf( "%3d", port );
- // Data
- SerialDisplayUpdateData( 28, buffer, bufferSize );
- // Help message
- vt.SetCursorPos( 42, 1 );
- vt.printf( "To refresh screen please hit 'r' key." );
-}
-
-void SerialDisplayUpdateDonwlinkRxData( bool state )
-{
- vt.SetCursorPos( 34, 4 );
- SerialPrintCheckBox( state, VT100::GREEN );
-}
-
-void SerialDisplayUpdateDownlink( bool rxData, int16_t rssi, int8_t snr, uint16_t counter, uint8_t port, uint8_t *buffer, uint8_t bufferSize )
-{
- // Rx data
- SerialDisplayUpdateDonwlinkRxData( rxData );
- // RSSI
- vt.SetCursorPos( 33, 32 );
- vt.printf( "%5d", rssi );
- // SNR
- vt.SetCursorPos( 34, 32 );
- vt.printf( "%5d", snr );
- // Counter
- vt.SetCursorPos( 35, 27 );
- vt.printf( "%10d", counter );
- if( rxData == true )
- {
- // Port
- vt.SetCursorPos( 36, 34 );
- vt.printf( "%3d", port );
- // Data
- SerialDisplayUpdateData( 37, buffer, bufferSize );
- }
- else
- {
- // Port
- vt.SetCursorPos( 36, 34 );
- vt.printf( " " );
- // Data
- SerialDisplayUpdateData( 37, NULL, 0 );
- }
-}
-
-void SerialDisplayDrawFirstLine( void )
-{
- vt.PutBoxDrawingChar( 'l' );
- for( int8_t i = 0; i <= 77; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'k' );
- vt.printf( "\r\n" );
-}
-
-void SerialDisplayDrawTitle( const char* title )
-{
- vt.PutBoxDrawingChar( 'x' );
- vt.printf( "%s", title );
- vt.PutBoxDrawingChar( 'x' );
- vt.printf( "\r\n" );
-}
-void SerialDisplayDrawTopSeparator( void )
-{
- vt.PutBoxDrawingChar( 't' );
- for( int8_t i = 0; i <= 11; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'w' );
- for( int8_t i = 0; i <= 64; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'u' );
- vt.printf( "\r\n" );
-}
-
-void SerialDisplayDrawColSeparator( void )
-{
- vt.PutBoxDrawingChar( 'x' );
- for( int8_t i = 0; i <= 11; i++ )
- {
- vt.PutBoxDrawingChar( ' ' );
- }
- vt.PutBoxDrawingChar( 't' );
- for( int8_t i = 0; i <= 64; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'u' );
- vt.printf( "\r\n" );
-}
-
-void SerialDisplayDrawSeparator( void )
-{
- vt.PutBoxDrawingChar( 't' );
- for( int8_t i = 0; i <= 11; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'n' );
- for( int8_t i = 0; i <= 64; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'u' );
- vt.printf( "\r\n" );
-}
-
-void SerialDisplayDrawLine( const char* firstCol, const char* secondCol )
-{
- vt.PutBoxDrawingChar( 'x' );
- vt.printf( "%s", firstCol );
- vt.PutBoxDrawingChar( 'x' );
- vt.printf( "%s", secondCol );
- vt.PutBoxDrawingChar( 'x' );
- vt.printf( "\r\n" );
-}
-
-void SerialDisplayDrawBottomLine( void )
-{
- vt.PutBoxDrawingChar( 'm' );
- for( int8_t i = 0; i <= 11; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'v' );
- for( int8_t i = 0; i <= 64; i++ )
- {
- vt.PutBoxDrawingChar( 'q' );
- }
- vt.PutBoxDrawingChar( 'j' );
- vt.printf( "\r\n" );
-}
-
-void SerialDisplayInit( void )
-{
- vt.ClearScreen( 2 );
- vt.SetCursorMode( false );
- vt.SetCursorPos( 0, 0 );
-
- // "+-----------------------------------------------------------------------------+" );
- SerialDisplayDrawFirstLine( );
- // "¦ LoRaWAN Demonstration Application ¦" );
- SerialDisplayDrawTitle( " LoRaWAN Demonstration Application " );
- // "+------------+----------------------------------------------------------------¦" );
- SerialDisplayDrawTopSeparator( );
- // "¦ Activation ¦ [ ]Over The Air ¦" );
- SerialDisplayDrawLine( " Activation ", " [ ]Over The Air " );
- // "¦ ¦ DevEui [__ __ __ __ __ __ __ __] ¦" );
- SerialDisplayDrawLine( " ", " DevEui [__ __ __ __ __ __ __ __] " );
- // "¦ ¦ AppEui [__ __ __ __ __ __ __ __] ¦" );
- SerialDisplayDrawLine( " ", " AppEui [__ __ __ __ __ __ __ __] " );
- // "¦ ¦ AppKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] ¦" );
- SerialDisplayDrawLine( " ", " AppKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] " );
- // "¦ +----------------------------------------------------------------¦" );
- SerialDisplayDrawColSeparator( );
- // "¦ ¦ [x]Personalisation ¦" );
- SerialDisplayDrawLine( " ", " [ ]Personalisation " );
- // "¦ ¦ NwkId [___] ¦" );
- SerialDisplayDrawLine( " ", " NwkId [___] " );
- // "¦ ¦ DevAddr [__ __ __ __] ¦" );
- SerialDisplayDrawLine( " ", " DevAddr [__ __ __ __] " );
- // "¦ ¦ NwkSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] ¦" );
- SerialDisplayDrawLine( " ", " NwkSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] " );
- // "¦ ¦ AppSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] ¦" );
- SerialDisplayDrawLine( " ", " AppSKey [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __] " );
- // "+------------+----------------------------------------------------------------¦" );
- SerialDisplayDrawSeparator( );
- // "¦ MAC params ¦ [ ]Confirmed / [ ]Unconfirmed ¦" );
- SerialDisplayDrawLine( " MAC params ", " [ ]Confirmed / [ ]Unconfirmed " );
- // "¦ ¦ ADR [ ] ¦" );
- SerialDisplayDrawLine( " ", " ADR [ ] " );
- // "¦ ¦ Duty cycle[ ] ¦" );
- SerialDisplayDrawLine( " ", " Duty cycle[ ] " );
- // "+------------+----------------------------------------------------------------¦" );
- SerialDisplayDrawSeparator( );
- // "¦ Network ¦ [ ]Public / [ ]Private ¦" );
- SerialDisplayDrawLine( " Network ", " [ ]Public / [ ]Private " );
- // "¦ ¦ [ ]Joining / [ ]Joined ¦" );
- SerialDisplayDrawLine( " ", " [ ]Joining / [ ]Joined " );
- // "+------------+----------------------------------------------------------------¦" );
- SerialDisplayDrawSeparator( );
- // "¦ LED status ¦ [ ]LED1(Tx) / [ ]LED2(Rx) / [ ]LED3(App) ¦" );
- SerialDisplayDrawLine( " LED status ", " [ ]LED1(Tx) / [ ]LED2(Rx) / [ ]LED3(App) " );
- // "+------------+----------------------------------------------------------------¦" );
- SerialDisplayDrawSeparator( );
- // "¦ Uplink ¦ Acked [ ] ¦" );
- SerialDisplayDrawLine( " Uplink ", " Acked [ ] " );
- // "¦ ¦ Datarate [ ] ¦" );
- SerialDisplayDrawLine( " ", " Datarate [ ] " );
- // "¦ ¦ Counter [ ] ¦" );
- SerialDisplayDrawLine( " ", " Counter [ ] " );
- // "¦ ¦ Port [ ] ¦" );
- SerialDisplayDrawLine( " ", " Port [ ] " );
- // "¦ ¦ Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "+------------+----------------------------------------------------------------¦" );
- SerialDisplayDrawSeparator( );
- // "¦ Downlink ¦ RSSI [ ] dBm ¦" );
- SerialDisplayDrawLine( " Downlink ", " RSSI [ ] dBm " );
- // "¦ [ ]Data ¦ SNR [ ] dB ¦" );
- SerialDisplayDrawLine( " [ ]Data ", " SNR [ ] dB " );
- // "¦ ¦ Counter [ ] ¦" );
- // "¦ ¦ Counter [ ] ¦" );
- SerialDisplayDrawLine( " ", " Counter [ ] " );
- // "¦ ¦ Port [ ] ¦" );
- SerialDisplayDrawLine( " ", " Port [ ] " );
- // "¦ ¦ Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " Data [__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "¦ ¦ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ¦" );
- SerialDisplayDrawLine( " ", " __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ " );
- // "+------------+----------------------------------------------------------------+" );
- SerialDisplayDrawBottomLine( );
- vt.printf( "To refresh screen please hit 'r' key.\r\n" );
-}
-
-bool SerialDisplayReadable( void )
-{
- return vt.Readable( );
-}
-
-uint8_t SerialDisplayGetChar( void )
-{
- return vt.GetChar( );
-}
diff -r 3173f0508a98 -r 9d6683e60974 app/SerialDisplay.h --- a/app/SerialDisplay.h Tue Jul 05 15:01:57 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* - / _____) _ | | -( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | -(______/|_____)_|_|_| \__)_____)\____)_| |_| - (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 -*/ -#ifndef __SERIAL_DISPLAY_H__ -#define __SERIAL_DISPLAY_H__ - -void SerialDisplayInit( void ); -void SerialDisplayUpdateUplink( bool acked, uint8_t datarate, uint16_t counter, uint8_t port, uint8_t *buffer, uint8_t bufferSize ); -void SerialDisplayUpdateDownlink( bool rxData, int16_t rssi, int8_t snr, uint16_t counter, uint8_t port, uint8_t *buffer, uint8_t bufferSize ); -void SerialDisplayPrintCheckBox( bool activated ); -void SerialDisplayUpdateLedState( uint8_t id, uint8_t state ); -void SerialDisplayUpdateActivationMode( bool otaa ); -void SerialDisplayUpdateEui( uint8_t line, uint8_t *eui ); -void SerialDisplayUpdateKey( uint8_t line, uint8_t *key ); -void SerialDisplayUpdateNwkId( uint8_t id ); -void SerialDisplayUpdateDevAddr( uint32_t addr ); -void SerialDisplayUpdateFrameType( bool confirmed ); -void SerialDisplayUpdateAdr( bool adr ); -void SerialDisplayUpdateDutyCycle( bool dutyCycle ); -void SerialDisplayUpdatePublicNetwork( bool network ); -void SerialDisplayUpdateData( uint8_t *buffer ); -void SerialDisplayUpdateNetworkIsJoined( bool state ); -void SerialDisplayUpdateUplinkAcked( bool state ); -void SerialDisplayUpdateDonwlinkRxData( bool state ); -bool SerialDisplayReadable( void ); -uint8_t SerialDisplayGetChar( void ); - -#endif // __SERIAL_DISPLAY_H__
diff -r 3173f0508a98 -r 9d6683e60974 app/main.cpp
--- a/app/main.cpp Tue Jul 05 15:01:57 2016 +0000
+++ b/app/main.cpp Thu Aug 25 13:20:05 2016 +0000
@@ -18,7 +18,6 @@
#include "LoRaMac.h"
#include "Comissioning.h"
-#include "SerialDisplay.h"
/*!
* Defines the application data transmission duty cycle. 5s, value in [us].
@@ -125,7 +124,7 @@
/*!
* User application data
*/
-static uint8_t AppData[LORAWAN_APP_DATA_MAX_SIZE];
+static char AppData[LORAWAN_APP_DATA_MAX_SIZE];
/*!
* Indicates if the node is sending confirmed or unconfirmed messages
@@ -135,7 +134,6 @@
/*!
* Defines the application data transmission duty cycle
*/
-static uint32_t TxDutyCycleTime;
/*!
* Timer to handle the application data transmission duty cycle
@@ -145,7 +143,7 @@
/*!
* Specifies the state of the application LED
*/
-static bool AppLedStateOn = false;
+//static bool AppLedStateOn = false;
volatile bool Led3StateChanged = false;
/*!
* Timer to handle the state of LED1
@@ -163,7 +161,6 @@
/*!
* Indicates if a new packet can be sent
*/
-static bool NextTx = true;
/*!
* Device states
@@ -201,7 +198,7 @@
/*!
* Indicates if the MAC layer network join status has changed.
*/
-static bool IsNetworkJoinedStatusUpdate = false;
+
/*!
* Strucure containing the Uplink status
@@ -212,7 +209,7 @@
int8_t Datarate;
uint16_t UplinkCounter;
uint8_t Port;
- uint8_t *Buffer;
+ char *Buffer;
uint8_t BufferSize;
}LoRaMacUplinkStatus;
volatile bool UplinkStatusUpdated = false;
@@ -232,103 +229,21 @@
}LoRaMacDownlinkStatus;
volatile bool DownlinkStatusUpdated = false;
-void SerialDisplayRefresh( void )
-{
- MibRequestConfirm_t mibReq;
-
- SerialDisplayInit( );
- SerialDisplayUpdateActivationMode( OVER_THE_AIR_ACTIVATION );
-
-#if( OVER_THE_AIR_ACTIVATION == 0 )
- SerialDisplayUpdateNwkId( LORAWAN_NETWORK_ID );
- SerialDisplayUpdateDevAddr( DevAddr );
- SerialDisplayUpdateKey( 12, NwkSKey );
- SerialDisplayUpdateKey( 13, AppSKey );
-#endif
- SerialDisplayUpdateEui( 5, DevEui );
- SerialDisplayUpdateEui( 6, AppEui );
- SerialDisplayUpdateKey( 7, AppKey );
-
- mibReq.Type = MIB_NETWORK_JOINED;
- LoRaMacMibGetRequestConfirm( &mibReq );
- SerialDisplayUpdateNetworkIsJoined( mibReq.Param.IsNetworkJoined );
-
- SerialDisplayUpdateAdr( LORAWAN_ADR_ON );
-#if defined( USE_BAND_868 )
- SerialDisplayUpdateDutyCycle( LORAWAN_DUTYCYCLE_ON );
-#else
- SerialDisplayUpdateDutyCycle( false );
-#endif
- SerialDisplayUpdatePublicNetwork( LORAWAN_PUBLIC_NETWORK );
-
- SerialDisplayUpdateLedState( 3, AppLedStateOn );
-}
-
-void SerialRxProcess( void )
-{
- if( SerialDisplayReadable( ) == true )
- {
- switch( SerialDisplayGetChar( ) )
- {
- case 'R':
- case 'r':
- // Refresh Serial screen
- SerialDisplayRefresh( );
- break;
- default:
- break;
- }
- }
-}
/*!
* \brief Prepares the payload of the frame
*/
-static void PrepareTxFrame( uint8_t port )
+static void PrepareTxFrame(char* value )
{
- switch( port )
- {
- case 15:
- {
- AppData[0] = AppLedStateOn;
- if( IsTxConfirmed == true )
- {
- AppData[1] = LoRaMacDownlinkStatus.DownlinkCounter >> 8;
- AppData[2] = LoRaMacDownlinkStatus.DownlinkCounter;
- AppData[3] = LoRaMacDownlinkStatus.Rssi >> 8;
- AppData[4] = LoRaMacDownlinkStatus.Rssi;
- AppData[5] = LoRaMacDownlinkStatus.Snr;
- }
- }
- break;
- case 224:
- if( ComplianceTest.LinkCheck == true )
- {
- ComplianceTest.LinkCheck = false;
- AppDataSize = 3;
- AppData[0] = 5;
- AppData[1] = ComplianceTest.DemodMargin;
- AppData[2] = ComplianceTest.NbGateways;
- ComplianceTest.State = 1;
- }
- else
- {
- switch( ComplianceTest.State )
- {
- case 4:
- ComplianceTest.State = 1;
- break;
- case 1:
- AppDataSize = 2;
- AppData[0] = ComplianceTest.DownLinkCounter >> 8;
- AppData[1] = ComplianceTest.DownLinkCounter;
- break;
- }
- }
- break;
- default:
- break;
- }
+
+ for( int i = 0;i < strlen(value);i++)
+ AppData[i] = value[i];
+ //AppData[0] = 0x12;
+ //AppData[1] = 0x34;
+ //AppData[2] = 0x56;
+ //AppData[3] = 0x78;
+ //AppData[4] = 0x90;
+ //AppData[5] = 0x12;
}
/*!
@@ -353,7 +268,7 @@
LoRaMacUplinkStatus.Port = 0;
LoRaMacUplinkStatus.Buffer = NULL;
LoRaMacUplinkStatus.BufferSize = 0;
- SerialDisplayUpdateFrameType( false );
+ //SerialDisplayUpdateFrameType( false );
}
else
{
@@ -361,7 +276,7 @@
LoRaMacUplinkStatus.Port = AppPort;
LoRaMacUplinkStatus.Buffer = AppData;
LoRaMacUplinkStatus.BufferSize = AppDataSize;
- SerialDisplayUpdateFrameType( IsTxConfirmed );
+ //SerialDisplayUpdateFrameType( IsTxConfirmed );
if( IsTxConfirmed == false )
{
@@ -390,55 +305,6 @@
}
/*!
- * \brief Function executed on TxNextPacket Timeout event
- */
-static void OnTxNextPacketTimerEvent( void )
-{
- MibRequestConfirm_t mibReq;
- LoRaMacStatus_t status;
-
- TimerStop( &TxNextPacketTimer );
-
- mibReq.Type = MIB_NETWORK_JOINED;
- status = LoRaMacMibGetRequestConfirm( &mibReq );
-
- if( status == LORAMAC_STATUS_OK )
- {
- if( mibReq.Param.IsNetworkJoined == true )
- {
- DeviceState = DEVICE_STATE_SEND;
- NextTx = true;
- }
- else
- {
- DeviceState = DEVICE_STATE_JOIN;
- }
- }
-}
-
-/*!
- * \brief Function executed on Led 1 Timeout event
- */
-static void OnLed1TimerEvent( void )
-{
- TimerStop( &Led1Timer );
- // Switch LED 1 OFF
- Led1State = false;
- Led1StateChanged = true;
-}
-
-/*!
- * \brief Function executed on Led 2 Timeout event
- */
-static void OnLed2TimerEvent( void )
-{
- TimerStop( &Led2Timer );
- // Switch LED 2 OFF
- Led2State = false;
- Led2StateChanged = true;
-}
-
-/*!
* \brief MCPS-Confirm event function
*
* \param [IN] mcpsConfirm - Pointer to the confirm structure,
@@ -482,7 +348,7 @@
UplinkStatusUpdated = true;
}
- NextTx = true;
+
}
/*!
@@ -560,7 +426,6 @@
case 2:
if( mcpsIndication->BufferSize == 1 )
{
- AppLedStateOn = mcpsIndication->Buffer[0] & 0x01;
Led3StateChanged = true;
}
break;
@@ -687,9 +552,7 @@
case MLME_JOIN:
{
// Status is OK, node has joined the network
- IsNetworkJoinedStatusUpdate = true;
DeviceState = DEVICE_STATE_SEND;
- NextTx = true;
break;
}
case MLME_LINK_CHECK:
@@ -708,7 +571,6 @@
break;
}
}
- NextTx = true;
UplinkStatusUpdated = true;
}
@@ -717,63 +579,16 @@
*/
int main( void )
{
+ char send_data[] = "abcdefghijklmn";
LoRaMacPrimitives_t LoRaMacPrimitives;
LoRaMacCallback_t LoRaMacCallbacks;
MibRequestConfirm_t mibReq;
BoardInit( );
- SerialDisplayInit( );
-
- SerialDisplayUpdateEui( 5, DevEui );
- SerialDisplayUpdateEui( 6, AppEui );
- SerialDisplayUpdateKey( 7, AppKey );
-
-#if( OVER_THE_AIR_ACTIVATION == 0 )
- SerialDisplayUpdateNwkId( LORAWAN_NETWORK_ID );
- SerialDisplayUpdateDevAddr( DevAddr );
- SerialDisplayUpdateKey( 12, NwkSKey );
- SerialDisplayUpdateKey( 13, AppSKey );
-#endif
-
DeviceState = DEVICE_STATE_INIT;
while( 1 )
{
- SerialRxProcess( );
- if( IsNetworkJoinedStatusUpdate == true )
- {
- IsNetworkJoinedStatusUpdate = false;
- mibReq.Type = MIB_NETWORK_JOINED;
- LoRaMacMibGetRequestConfirm( &mibReq );
- SerialDisplayUpdateNetworkIsJoined( mibReq.Param.IsNetworkJoined );
- }
- if( Led1StateChanged == true )
- {
- Led1StateChanged = false;
- SerialDisplayUpdateLedState( 1, Led1State );
- }
- if( Led2StateChanged == true )
- {
- Led2StateChanged = false;
- SerialDisplayUpdateLedState( 2, Led2State );
- }
- if( Led3StateChanged == true )
- {
- Led3StateChanged = false;
- SerialDisplayUpdateLedState( 3, AppLedStateOn );
- }
- if( UplinkStatusUpdated == true )
- {
- UplinkStatusUpdated = false;
- SerialDisplayUpdateUplink( LoRaMacUplinkStatus.Acked, LoRaMacUplinkStatus.Datarate, LoRaMacUplinkStatus.UplinkCounter, LoRaMacUplinkStatus.Port, LoRaMacUplinkStatus.Buffer, LoRaMacUplinkStatus.BufferSize );
- }
- if( DownlinkStatusUpdated == true )
- {
- DownlinkStatusUpdated = false;
- SerialDisplayUpdateLedState( 2, Led2State );
- SerialDisplayUpdateDownlink( LoRaMacDownlinkStatus.RxData, LoRaMacDownlinkStatus.Rssi, LoRaMacDownlinkStatus.Snr, LoRaMacDownlinkStatus.DownlinkCounter, LoRaMacDownlinkStatus.Port, LoRaMacDownlinkStatus.Buffer, LoRaMacDownlinkStatus.BufferSize );
- }
-
switch( DeviceState )
{
case DEVICE_STATE_INIT:
@@ -783,15 +598,6 @@
LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm;
LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel;
LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks );
-
- TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent );
-
- TimerInit( &Led1Timer, OnLed1TimerEvent );
- TimerSetValue( &Led1Timer, 25000 );
-
- TimerInit( &Led2Timer, OnLed2TimerEvent );
- TimerSetValue( &Led2Timer, 25000 );
-
mibReq.Type = MIB_ADR;
mibReq.Param.AdrEnable = LORAWAN_ADR_ON;
LoRaMacMibSetRequestConfirm( &mibReq );
@@ -802,7 +608,6 @@
#if defined( USE_BAND_868 )
LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON );
- SerialDisplayUpdateDutyCycle( LORAWAN_DUTYCYCLE_ON );
#if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 )
LoRaMacChannelAdd( 3, ( ChannelParams_t )LC4 );
@@ -819,10 +624,6 @@
#endif
#endif
- SerialDisplayUpdateActivationMode( OVER_THE_AIR_ACTIVATION );
- SerialDisplayUpdateAdr( LORAWAN_ADR_ON );
- SerialDisplayUpdatePublicNetwork( LORAWAN_PUBLIC_NETWORK );
-
LoRaMacDownlinkStatus.DownlinkCounter = 0;
DeviceState = DEVICE_STATE_JOIN;
@@ -867,39 +668,18 @@
DeviceState = DEVICE_STATE_SEND;
#endif
- IsNetworkJoinedStatusUpdate = true;
break;
}
case DEVICE_STATE_SEND:
{
- if( NextTx == true )
- {
- SerialDisplayUpdateUplinkAcked( false );
- SerialDisplayUpdateDonwlinkRxData( false );
- PrepareTxFrame( AppPort );
-
- NextTx = SendFrame( );
- }
- if( ComplianceTest.Running == true )
- {
- // Schedule next packet transmission
- TxDutyCycleTime = 5000000; // 5000000 us
- }
- else
- {
- // Schedule next packet transmission
- TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND );
- }
+ PrepareTxFrame(send_data);
+ SendFrame();
DeviceState = DEVICE_STATE_CYCLE;
break;
}
case DEVICE_STATE_CYCLE:
{
- DeviceState = DEVICE_STATE_SLEEP;
-
- // Schedule next packet transmission
- TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime );
- TimerStart( &TxNextPacketTimer );
+ DeviceState = DEVICE_STATE_INIT;
break;
}
case DEVICE_STATE_SLEEP:
diff -r 3173f0508a98 -r 9d6683e60974 app/vt100.h
--- a/app/vt100.h Tue Jul 05 15:01:57 2016 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-/*
- / _____) _ | |
-( (____ _____ ____ _| |_ _____ ____| |__
- \____ \| ___ | (_ _) ___ |/ ___) _ \
- _____) ) ____| | | || |_| ____( (___| | | |
-(______/|_____)_|_|_| \__)_____)\____)_| |_|
- (C)2015 Semtech
-
-Description: VT100 terminal support class
-
-License: Revised BSD License, see LICENSE.TXT file include in the project
-
-Maintainer: Miguel Luis and Gregory Cristian
-*/
-#ifndef __VT100_H__
-#define __VT100_H__
-
-#ifndef STRING_STACK_LIMIT
-#define STRING_STACK_LIMIT 120
-#endif
-
-/**
- * Implements VT100 terminal commands support.
- * Implments also the same behaviour has RawSerial class. The only difference
- * is located in putc fucntion where writeable check is made befor sending the character.
- */
-class VT100 : public SerialBase
-{
-public:
- enum TextAttributes
- {
- ATTR_OFF = 0,
- BOLD = 1,
- USCORE = 4,
- BLINK = 5,
- REVERSE = 7,
- BOLD_OFF = 21,
- USCORE_OFF = 24,
- BLINK_OFF = 25,
- REVERSE_OFF = 27,
- };
-
- enum Colors
- {
- BLACK = 0,
- RED = 1,
- GREEN = 2,
- BROWN = 3,
- BLUE = 4,
- MAGENTA = 5,
- CYAN = 6,
- WHITE = 7,
- };
-
- VT100( PinName tx, PinName rx ): SerialBase( tx, rx )
- {
- this->baud( 115200 );
- // initializes terminal to "power-on" settings
- // ESC c
- this->printf( "\x1B\x63" );
- }
-
- void ClearScreen( uint8_t param )
- {
- // ESC [ Ps J
- // 0 Clear screen from cursor down
- // 1 Clear screen from cursor up
- // 2 Clear entire screen
- this->printf( "\x1B[%dJ", param );
- }
-
- void ClearLine( uint8_t param )
- {
- // ESC [ Ps K
- // 0 Erase from the active position to the end of the line, inclusive (default)
- // 1 Erase from the start of the screen to the active position, inclusive
- // 2 Erase all of the line, inclusive
- this->printf( "\x1B[%dK", param );
- }
-
- void SetAttribute( uint8_t attr )
- {
- // ESC [ Ps;...;Ps m
- this->printf( "\x1B[%dm", attr );
- }
-
- void SetAttribute( uint8_t attr, uint8_t fgcolor, uint8_t bgcolor )
- {
- // ESC [ Ps;...;Ps m
- this->printf( "\x1B[%d;%d;%dm", attr, fgcolor + 30, bgcolor + 40 );
- }
-
- void SetCursorMode( uint8_t visible )
- {
- if( visible == true )
- {
- // ESC [ ? 25 h
- this->printf( "\x1B[?25h" );
- }
- else
- {
- // ESC [ ? 25 l
- this->printf( "\x1B[?25l" );
- }
- }
-
- void SetCursorPos( uint8_t line, uint8_t col )
- {
- // ESC [ Pl ; Pc H
- this->printf( "\x1B[%d;%dH", line, col );
- }
-
- void PutStringAt( uint8_t line, uint8_t col, const char *s )
- {
- this->SetCursorPos( line, col );
- this->printf( "%s", s );
- }
-
- void PutCharAt( uint8_t line, uint8_t col, uint8_t c )
- {
- this->SetCursorPos( line, col );
- this->printf( "%c", c );
- }
-
- void PutHexAt( uint8_t line, uint8_t col, uint16_t n )
- {
- this->SetCursorPos( line, col );
- this->printf( "%X", n );
- }
-
- void PutBoxDrawingChar( uint8_t c )
- {
- this->printf( "\x1B(0%c\x1b(B", c );
- }
-
- bool Readable( void )
- {
- return this->readable( );
- }
-
- uint8_t GetChar( void )
- {
- return this->getc( );
- }
-
- /*
- * RawSerial class implmentation copy.
- */
- /** Read a char from the serial port
- *
- * @returns The char read from the serial port
- */
- int getc( )
- {
- return _base_getc();
- }
-
- /** Write a char to the serial port
- *
- * @param c The char to write
- *
- * @returns The written char or -1 if an error occured
- */
- int putc( int c )
- {
- while( this->writeable( ) != 1 );
- return _base_putc( c );
- }
-
- /** Write a string to the serial port
- *
- * @param str The string to write
- *
- * @returns 0 if the write succeeds, EOF for error
- */
- int puts( const char *str )
- {
- while( *str )
- putc( *str++ );
- return 0;
- }
-
- // Experimental support for printf in RawSerial. No Stream inheritance
- // means we can't call printf() directly, so we use sprintf() instead.
- // We only call malloc() for the sprintf() buffer if the buffer
- // length is above a certain threshold, otherwise we use just the stack.
- int printf( const char *format, ... )
- {
- std::va_list arg;
- va_start( arg, format );
- int len = vsnprintf( NULL, 0, format, arg );
- if( len < STRING_STACK_LIMIT )
- {
- char temp[STRING_STACK_LIMIT];
- vsprintf( temp, format, arg );
- puts( temp );
- }
- else
- {
- char *temp = new char[len + 1];
- vsprintf( temp, format, arg );
- puts( temp );
- delete[] temp;
- }
- va_end( arg );
- return len;
- }
-
-private:
-
-};
-
-#endif // __VT100_H__
