code crashes accessing randomization code

Dependencies:   LoRaWAN-SX1272-Application-24-31-9sec X_NUCLEO_IKS01A1 driver_mbed_TH02 LoRaWAN-lib-v1_0_1 SX1272Lib mbed

Fork of LoRaWAN-SX1272-Application-24-31-9sec by Oleh Zvonarov

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;
     }