LR Initial Publish
Dependencies: X_NUCLEO_IKS01A2 driver_mbed_TH02 mbed LoRaWAN-lib-v1_0_1 SX1272Lib
Fork of Training-Aug2018-SX1272-X-NUCLEO-IKS01A2 by
Diff: app/LoRaEventProc.cpp
- Revision:
- 2:19dd7bfcacf7
- Parent:
- 0:6cc76d70e2a1
- Child:
- 9:a47750bce9f8
diff -r 428dbf097fe6 -r 19dd7bfcacf7 app/LoRaEventProc.cpp --- 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; }