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: X_NUCLEO_IKS01A1 driver_mbed_TH02 LoRaWAN-lib-v1_0_1 SX1272Lib mbed
Fork of LoRaWAN-SX1272-Application-Demo by
Diff: app/LoRaEventProc.cpp
- Revision:
- 2:19dd7bfcacf7
- Parent:
- 0:6cc76d70e2a1
--- a/app/LoRaEventProc.cpp Sat Apr 29 07:41:12 2017 +0000
+++ b/app/LoRaEventProc.cpp Sat Nov 04 20:05:46 2017 +0000
@@ -31,21 +31,19 @@
void PrepareLoRaFrame( uint8_t port )
{
- switch( port )
- {
- case 5:
- {
+ switch( port ) {
+ case 5: {
uint8_t tmp;
uint8_t tmpLength;
uint8_t ptrIndex = 0;
-
+
// Point the pointer to position index of Tx Buffer
LoRaApp.ApplicationPtrPos( ptrIndex );
tmp = ( AppLed != 0 ) ? 0x0F : 0x00;
tmpLength = 1;
-
- LoRaApp.ApplicationAppendData( &tmp, tmpLength ); // Populate lower nibble of 0th Byte with LED state
+
+ LoRaApp.ApplicationAppendData( &tmp, tmpLength ); // Populate lower nibble of 0th Byte with LED state
/*!
* Generate Ramp data bytes
@@ -54,27 +52,26 @@
LoRaApp.ApplicationCall( AppRamp );
break;
- }
+ }
- case 8:
- {
+ case 8: {
uint8_t ptrIndex = 0;
-
+
//Point the pointer to position index of Tx Buffer
- LoRaApp.ApplicationPtrPos( ptrIndex );
-
+ LoRaApp.ApplicationPtrPos( ptrIndex );
+
/*!
* Read Pressure
* Appends 2 Bytes to TX buffer
*/
LoRaApp.ApplicationCall( AppPressr );
-
+
/*!
* Read Temperature
* Appends 1 Byte to TX buffer
*/
LoRaApp.ApplicationCall( AppTemp );
-
+
/*!
* Read Humidity
* Appends 1 Byte to TX buffer
@@ -89,126 +86,155 @@
* 0x66 0x00 horizontal + facedown
* 0x00 0x11 vertical
*/
- LoRaApp.ApplicationCall( AppAccl ); // Generate Accelerometer data bytes
+ LoRaApp.ApplicationCall( AppAccl ); // Generate Accelerometer data bytes
break;
}
-
+
// IKAS sensor using Cayenne Payload Format
- case 9:
- {
-#ifdef USE_CAYENNE_LPP
+ case 9: {
+#ifdef USE_CAYENNE_LPP
uint8_t ptrIndex = 0;
-
+
uint16_t AppSize = 0;
-
+
uint8_t tmp[2] = {0};
-
+
//Point the pointer to position index of Tx Buffer
LoRaApp.ApplicationPtrPos( ptrIndex );
-
+
AppCase = AppCase > 3 ? 0 : AppCase;
-
- while( 1 )
- {
- switch( AppCase )
- {
- case 0:
- {
+
+ while( 1 ) {
+ switch( AppCase ) {
+ case 0: {
tmp[0] = 0;
tmp[1] = 115; // Data Type PRESSURE: 115
LoRaApp.ApplicationAppendData( tmp, 2 );
-
+
/*!
* Read Pressure
* Appends 2 Bytes to TX buffer
*/
LoRaApp.ApplicationCall( AppPressr );
-
+
AppSize += maxLPPsize[AppCase];
break;
}
-
- case 1:
- {
+
+ case 1: {
tmp[0] = 1;
tmp[1] = 103; // Data Type TEMP: 103
LoRaApp.ApplicationAppendData( tmp, 2 );
-
+
/*!
* Read Temperature
* Appends 1 Byte to TX buffer
*/
LoRaApp.ApplicationCall( AppTemp );
-
+
AppSize += maxLPPsize[AppCase];
break;
}
-
- case 2:
- {
+
+ case 2: {
tmp[0] = 2;
tmp[1] = 104; // Data Type HUMIDITY: 103
LoRaApp.ApplicationAppendData( tmp, 2 );
-
+
/*!
* Read Humidity
* Appends 1 Byte to TX buffer
*/
LoRaApp.ApplicationCall( AppHumid );
-
+
AppSize += maxLPPsize[AppCase];
break;
}
-
- case 3:
- {
+
+ case 3: {
tmp[0] = 3;
tmp[1] = 113; // Data Type Accl: 113
LoRaApp.ApplicationAppendData( tmp, 2 );
/*!
- * Read Accelerometer
+ * Read Accelerometer
*/
LoRaApp.ApplicationCall( AppAccl ); // Generate Accelerometer data bytes
-
+
AppSize += maxLPPsize[AppCase];
break;
}
}
-
+
AppCase++;
-
- if( AppSize + maxLPPsize[AppCase] > LORAWAN_APP_DATA_SIZE )
- {
+
+ if( AppSize + maxLPPsize[AppCase] > LORAWAN_APP_DATA_SIZE ) {
break;
}
}
-
- AppDataSize = AppSize;
+
+ AppDataSize = AppSize;
#endif
break;
}
- // Push-Button Demo
- case 11:
- {
+ // Push-Button Demo
+ case 11: {
uint8_t ptrIndex = 0;
-
+
+ //Point the pointer to position index of Tx Buffer
+ LoRaApp.ApplicationPtrPos( ptrIndex );
+
+ LoRaApp.ApplicationCall( AppPushButton ); // Transmit uplink counter
+
+ break;
+ }
+
+ // GROVE sensor using Cayenne Payload Format
+ case 12: {
+#ifdef USE_CAYENNE_LPP
+ uint8_t ptrIndex = 0;
+
+ uint8_t tmp[2] = {0};
+
//Point the pointer to position index of Tx Buffer
LoRaApp.ApplicationPtrPos( ptrIndex );
+
+ tmp[0] = 1;
+ tmp[1] = 103; // Data Type TEMP: 103
+ LoRaApp.ApplicationAppendData( tmp, 2 );
- LoRaApp.ApplicationCall( AppPushButton ); // Transmit uplink counter
+ printf("Temp Call\r\n");
+
+ /*!
+ * Read Temperature
+ * Appends 1 Byte to TX buffer
+ */
+ LoRaApp.ApplicationCall( AppTemp );
+
+ tmp[0] = 2;
+ tmp[1] = 104; // Data Type HUMIDITY: 103
+ LoRaApp.ApplicationAppendData( tmp, 2 );
+ printf("Humidity Call\r\n");
+
+ /*!
+ * Read Humidity
+ * Appends 1 Byte to TX buffer
+ */
+ LoRaApp.ApplicationCall( AppHumid );
+
+#endif
break;
}
-
- default:
- break;
+
+ default:
+ break;
}
}
@@ -217,29 +243,25 @@
* \brief Sets Interrupt for next payload transmission
*/
void InitNextTxInterrupt( uint8_t port )
-{
- switch( port )
- {
- /* GPS Application Demo
- Set Timer interrupt for next uplink
- */
- case 5:
- {
+{
+ switch( port ) {
+ /* GPS Application Demo
+ Set Timer interrupt for next uplink
+ */
+ case 5: {
}
- /* Senet + M2X demo
- Set Timer interrupt for next uplink
- */
- case 6:
- {
-
+ /* Senet + M2X demo
+ Set Timer interrupt for next uplink
+ */
+ case 6: {
+
}
-
- /* Senet GPS Demo
- Set Timer interrupt for next uplink
- */
- case 7:
- {
+
+ /* Senet GPS Demo
+ Set Timer interrupt for next uplink
+ */
+ case 7: {
// Schedule next packet transmission
TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND );
TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime );
@@ -247,64 +269,48 @@
break;
}
- /* Push Button Demo
- Send Packet Immedietly if PC0 = GND
- */
- case 11:
- {
+ /* Push Button Demo
+ Send Packet Immedietly if PC0 = GND
+ */
+ case 11: {
volatile bool PushButtonStatus;
PushButtonStatus = UsrButton;
-
- if(PushButtonStatus == 0)
- {
+
+ if(PushButtonStatus == 0) {
// Send Pkt immedietly if PC = GND
DeviceState = DEVICE_STATE_SEND;
NextTx = true;
- }
- else
- {
+ } else {
// Keep polling
IsTxIntUpdate = true;
}
-
+
break;
- }
+ }
- /* Orientation Demo
- Send Packet Immedietly if Mote is Vertical
- */
- case 12:
- {
- CheckOrientation( );
-
- if(VerticalStatus == true)
- {
- // Send Pkt immedietly if PC = GND
- DeviceState = DEVICE_STATE_SEND;
- NextTx = true;
- }
- else
- {
- // Keep polling
- IsTxIntUpdate = true;
- }
+ /* Orientation Demo
+ Send Packet Immedietly if Mote is Vertical
+ */
+ case 12: {
+ // Schedule next packet transmission
+ TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND );
+ TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime );
+ TimerStart( &TxNextPacketTimer );
break;
- }
+ }
- /* Compliance Test
- Set Timer interrupt for next uplink
- */
- case 224:
- {
+ /* Compliance Test
+ Set Timer interrupt for next uplink
+ */
+ case 224: {
// Schedule next packet transmission
TimerSetValue( &TxNextPacketTimer, COMPLIANCE_TX_DUTYCYCLE );
TimerStart( &TxNextPacketTimer );
break;
}
- default:
- {
+ default: {
// Schedule next packet transmission
TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime );
TimerStart( &TxNextPacketTimer );
@@ -322,7 +328,7 @@
// CtrlLED is defined in LoRaBoardAppIf.h
// param 1: LED color (Red, Yellow or Green)
// param 2: LED_ON or LED_OFF
- //CtrlLED( Red, LED_ON );
+ //CtrlLED( Red, LED_ON );
}
@@ -340,31 +346,23 @@
void RxEvent()
{
// Toggle yellow LED
- //ToggleLED( Yellow );
+ //ToggleLED( Yellow );
// If Rx Data is 0x01 turn on Green LED else if 0x0 Turn Green LED off
- if( LoRaMacDownlinkStatus.BufferSize == 1 )
- {
- if( LoRaMacDownlinkStatus.Buffer[0] == 0x01 )
- {
+ if( LoRaMacDownlinkStatus.BufferSize == 1 ) {
+ if( LoRaMacDownlinkStatus.Buffer[0] == 0x01 ) {
AppLed = 1;
- }
- else
- {
- if( LoRaMacDownlinkStatus.Buffer[0] == 0x00 )
- {
+ } else {
+ if( LoRaMacDownlinkStatus.Buffer[0] == 0x00 ) {
AppLed = 0;
}
}
}
- if( AppLed != 0 )
- {
+ if( AppLed != 0 ) {
// Turn USR_LED ON
//UsrLED = 3.3;
- }
- else
- {
+ } else {
// Turn USR_LED OFF
//UsrLED = 0;
}
