MTDOT-EVB link check code for site survey

Dependencies:   DOGS102 GpsParser MTS-Serial NCP5623B libmDot mbed-rtos mbed

Revision:
1:4e3ee9c860e3
Parent:
0:dba397ff987f
--- a/main.cpp	Thu Oct 22 19:45:01 2015 +0000
+++ b/main.cpp	Tue Oct 27 20:00:23 2015 +0000
@@ -19,7 +19,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- * 1.00 TAB 10/22/15  Copied from MDOT-EVB-LinkCheck version 1.02. 
+ * 1.00 TAB 10/22/15  Copied from MDOT-EVB-LinkCheck version 1.02.
  *					Added mutex around certain mDot radio commands.
  *					Moved ping check code to callable function. Added sweep
  *					mode, re-wrote join code, and modified button operation
@@ -120,9 +120,9 @@
 uint8_t swp_sf;
 
 const uint8_t sweep_table [2][4] = {
-	{ 11, 14, 18, 20},
-	{mDot::SF_7, mDot::SF_8, mDot::SF_9, mDot::SF_10}
-	};
+    { 11, 14, 18, 20},
+    {mDot::SF_7, mDot::SF_8, mDot::SF_9, mDot::SF_10}
+};
 
 // max size of text string for 6x8 font. Set to 12 if using 8x8 font
 char txtstr[17];
@@ -169,16 +169,16 @@
 
     debugUART.baud(115200);
 
-	printf ("Start program \r\n");
+    printf ("Start program \r\n");
 
     Thread thread_1(pb1_debounce);
     Thread thread_2(pb2_debounce);
 
-	printf("Thread init done\r\n");
+    printf("Thread init done\r\n");
 
     mainThreadID = osThreadGetId();
 
-	printf("Device init start\r\n");
+    printf("Device init start\r\n");
 
     evbBackLight = new NCP5623B(mDoti2c);				// setup backlight and LED 2 driver chip
     evbLCD = new DOGS102(mDotspi, mDot17, mDot13);		// setup LCD
@@ -219,8 +219,8 @@
     mDot15.mode(PullUp);
     mDot16.mode(PullUp);
 
-	printf("Switch IRQs set\r\n");
-	 
+    printf("Switch IRQs set\r\n");
+
     printf("font table address %p\r\n",&font_6x8);
     printf("bitmap address %p\r\n",&MultiTech_Logo);
 
@@ -243,7 +243,7 @@
 
     if (mdot_radio) {
         // reset to default config so we know what state we're in
-        mdot_mutex.lock(); 	// lock mdot before setting configuration 
+        mdot_mutex.lock(); 	// lock mdot before setting configuration
         mdot_radio->resetConfig();
 
         // Setting up LED1 as activity LED
@@ -296,9 +296,9 @@
             log_error(mdot_radio, "failed to set TX data rate", mdot_ret);
         }
 
-		sprintf(txtstr,"DR=%2d Pwr=%2d",(12 - sf_val),pwr_val);
+        sprintf(txtstr,"DR=%2d Pwr=%2d",(12 - sf_val),pwr_val);
         evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
-		printf("%s \r\n",txtstr);
+        printf("%s \r\n",txtstr);
 
         /*
          * Setting packet ACK to 1 try.
@@ -339,78 +339,76 @@
         // attempt to join the network
         printf("joining network\r\n");
         do {
-	        mdot_mutex.lock();		// lock mdot mutex before join attempt
+            mdot_mutex.lock();		// lock mdot mutex before join attempt
             mdot_ret = mdot_radio->joinNetwork();
-	        mdot_mutex.unlock();		// unlock mdot mutex after join attempt so SW1 can work
+            mdot_mutex.unlock();		// unlock mdot mutex after join attempt so SW1 can work
 
             if (mdot_ret != mDot::MDOT_OK) {
-            	log_error(mdot_radio,"failed to join network:", mdot_ret);
+                log_error(mdot_radio,"failed to join network:", mdot_ret);
 
-       			if (toggle_text)
-			    	sprintf(txtstr," > Join Failed <");
-       			else
-			    	sprintf(txtstr," < Join Failed >");
+                if (toggle_text)
+                    sprintf(txtstr," > Join Failed <");
+                else
+                    sprintf(txtstr," < Join Failed >");
 
-		    	evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
+                evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
 
-            	if (mdot_radio->getFrequencyBand() == mDot::FB_868) {
-               		join_delay = mdot_radio->getNextTxMs();
-            	} else {
-                	join_delay = 10;
-            	}
-	            printf("delay = %lu\r\n",join_delay);
-    	        osDelay(join_delay + 1);
-   				toggle_text = !toggle_text;
-			}
-	
-	    /*
-         * Setting TX power and Data Rate for radio just in case user requested by SW2 
-         */
-	        mdot_mutex.lock();		// lock mdot mutex before setting change
-	        mdot_radio->setTxPower(pwr_val);
-	        mdot_radio->setTxDataRate(sf_val);
-	        mdot_mutex.unlock();		// unlock mdot mutex after settings change so SW1 can work
+                if (mdot_radio->getFrequencyBand() == mDot::FB_868) {
+                    join_delay = mdot_radio->getNextTxMs();
+                } else {
+                    join_delay = 10;
+                }
+                printf("delay = %lu\r\n",join_delay);
+                osDelay(join_delay + 1);
+                toggle_text = !toggle_text;
+            }
+
+            /*
+             * Setting TX power and Data Rate for radio just in case user requested by SW2
+             */
+            mdot_mutex.lock();		// lock mdot mutex before setting change
+            mdot_radio->setTxPower(pwr_val);
+            mdot_radio->setTxDataRate(sf_val);
+            mdot_mutex.unlock();		// unlock mdot mutex after settings change so SW1 can work
 
         } while (mdot_ret != mDot::MDOT_OK);
-        
-	    sprintf(txtstr,"*Network Joined*");
-    	evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
+
+        sprintf(txtstr,"*Network Joined*");
+        evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
 
     } else {
-	    sprintf(txtstr,"Radio Init Failed!");
-    	evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
+        sprintf(txtstr,"Radio Init Failed!");
+        evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
         printf("%s\r\n",txtstr);
         exit(1);
     }
 
- 	mdot_gps = new GPSPARSER(&mDotUART);
- 
-    if (!mdot_gps->gpsDetected()){
-   		sprintf(txtstr,"*No GPS Detected*");
-   		evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
-    	printf ("%s\r\n", txtstr);
+    mdot_gps = new GPSPARSER(&mDotUART);
+
+    if (!mdot_gps->gpsDetected()) {
+        sprintf(txtstr,"*No GPS Detected*");
+        evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
+        printf ("%s\r\n", txtstr);
+    } else {
+        main_single = main_sweep = false;
+        do {
+            osSignalWait(0x10, 2000);
+            if (mdot_gps->getLockStatus()) {
+                sprintf(txtstr,"!!GPS locked!!");
+                evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
+                printf("%s \r\n",txtstr);
+            } else {
+                if (toggle_text)
+                    sprintf(txtstr," > no GPS lock <");
+                else
+                    sprintf(txtstr," < no GPS lock >");
+
+                evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
+                printf("%s \r\n",txtstr);
+                toggle_text = !toggle_text;
+            }
+        } while ( !(mdot_gps->getLockStatus()) && (!main_single && !main_sweep));
     }
-    else {
- 		main_single = main_sweep = false;
-    	do {
-	        osSignalWait(0x10, 2000);
-			if (mdot_gps->getLockStatus()){
-	    		sprintf(txtstr,"!!GPS locked!!");
-        		evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
-				printf("%s \r\n",txtstr);
-			}
-			else {
-       			if (toggle_text)
-       				sprintf(txtstr," > no GPS lock <");
-       			else
-      				sprintf(txtstr," < no GPS lock >");
-
-           		evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
-				printf("%s \r\n",txtstr);
-				toggle_text = !toggle_text;
-			}
-   		} while ( !(mdot_gps->getLockStatus()) && (!main_single && !main_sweep));
-   	}	
     osDelay(200);
     evbBackLight->setPWM(NCP5623B::LED_3,16); // enable LED2 on EVB and set to 50% PWM
 
@@ -420,8 +418,8 @@
     osDelay (500);			// allows other threads to process
     printf("shutdown LED:\r\n");
     evbBackLight->shutdown();
-	osDelay(500);
-	/*
+    osDelay(500);
+    /*
      * Main data acquisition loop
      */
     i = 0;
@@ -429,62 +427,58 @@
     do {
 
         // Main program waits until SW2 is pressed.
- 		main_single = main_sweep = false;
+        main_single = main_sweep = false;
 
-		sprintf(txtstr,"Ready for Trigger");
-		evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
- 	 	printf ("%s\r\n", txtstr);
+        sprintf(txtstr,"Ready for Trigger");
+        evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
+        printf ("%s\r\n", txtstr);
 
         osSignalWait(0x10, osWaitForever);
-        
-		if (main_single) {
-			evbLCD->clearBuffer();
-			sprintf(txtstr,"**Single Ping**");
-			evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
 
-			result = ping_check(pwr_val, sf_val);
+        if (main_single) {
+            evbLCD->clearBuffer();
+            sprintf(txtstr,"**Single Ping**");
+            evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
+
+            result = ping_check(pwr_val, sf_val);
 
-			if (result != 0)
-				printf("Ping check completed\r\n");
-			else
-				printf("Ping check failed \r\n");
-		}
-		else if (main_sweep) {
+            if (result != 0)
+                printf("Ping check completed\r\n");
+            else
+                printf("Ping check failed \r\n");
+        } else if (main_sweep) {
 
-				evbLCD->clearBuffer();
-				sprintf(txtstr,"**Ping Sweep**");
-				evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
+            evbLCD->clearBuffer();
+            sprintf(txtstr,"**Ping Sweep**");
+            evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
 
-		   		printf("start sweep and shutdown LED:\r\n");
-    			evbBackLight->shutdown();
+            printf("start sweep and shutdown LED:\r\n");
+            evbBackLight->shutdown();
 
-				for (swp_pwr = 0; swp_pwr < 4; swp_pwr++)
-				{
-					for (swp_sf = 0; swp_sf < 4; swp_sf++)
-					{	        
-						result = ping_check(sweep_table[0][swp_pwr], sweep_table[1][swp_sf], number_of_pings);
+            for (swp_pwr = 0; swp_pwr < 4; swp_pwr++) {
+                for (swp_sf = 0; swp_sf < 4; swp_sf++) {
+                    result = ping_check(sweep_table[0][swp_pwr], sweep_table[1][swp_sf], number_of_pings);
 
-						if (result != 0)
-							printf("Ping check completed %d attempts\r\n", result);
-						else
-							printf("Ping check failed all attempts\r\n");
+                    if (result != 0)
+                        printf("Ping check completed %d attempts\r\n", result);
+                    else
+                        printf("Ping check failed all attempts\r\n");
 
-						osDelay(1000);
-					}
-				}
-			}
-			else {
-				printf("Got here because of code error.\r\n");
-				osDelay(1000);
-			}
+                    osDelay(1000);
+                }
+            }
+        } else {
+            printf("Got here because of code error.\r\n");
+            osDelay(1000);
+        }
 
     } while(i < 1000);
 
-	printf("End of Test\r\n");
-	
-	evbLCD->clearBuffer();
-	sprintf(txtstr,"Exiting Program");
-	evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
+    printf("End of Test\r\n");
+
+    evbLCD->clearBuffer();
+    sprintf(txtstr,"Exiting Program");
+    evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
 }
 
 /*
@@ -492,8 +486,8 @@
  */
 void pb1ISR(void)
 {
-	if (!pb1_low)
-		pb1_low = true;
+    if (!pb1_low)
+        pb1_low = true;
 }
 
 /*
@@ -508,41 +502,41 @@
     while (true) {
 
         if (pb1_low && (mDot08 == 0))
-			count++;
+            count++;
         else {
-        	count = 0;
-        	pb1_low = false;
+            count = 0;
+            pb1_low = false;
         }
-        
-		if (count == 5) {
-			test_now++;
-			
-			if (test_now > 15)   // resets test_now
-				test_now = 0;
+
+        if (count == 5) {
+            test_now++;
+
+            if (test_now > 15)   // resets test_now
+                test_now = 0;
 
-			// selects power output level using upper bits for select
-			switch(test_now >> 2){
-				case 0: 
-					pwr_val = 11;
-					break;
-				case 1:
-					pwr_val = 14;
-					break;
-				case 2:
-					pwr_val = 18;
-					break;
-				case 3:
-					pwr_val = 20;
-			}
-			
-			// sets data rate based on lower bits
-			sf_val = mDot::SF_7 - (test_now & 0x03);
-			
-			sprintf(txtstr,"DR=%2d Pwr=%2d     ",(12 - sf_val),pwr_val);
+            // selects power output level using upper bits for select
+            switch(test_now >> 2) {
+                case 0:
+                    pwr_val = 11;
+                    break;
+                case 1:
+                    pwr_val = 14;
+                    break;
+                case 2:
+                    pwr_val = 18;
+                    break;
+                case 3:
+                    pwr_val = 20;
+            }
+
+            // sets data rate based on lower bits
+            sf_val = mDot::SF_7 - (test_now & 0x03);
+
+            sprintf(txtstr,"DR=%2d Pwr=%2d     ",(12 - sf_val),pwr_val);
             evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
-   			printf("%s \r\n",txtstr);
-		}
-		
+            printf("%s \r\n",txtstr);
+        }
+
         Thread::wait(5);
     }
 }
@@ -552,8 +546,8 @@
  */
 void pb2ISR(void)
 {
-	if (!pb2_low)
-		pb2_low = true;
+    if (!pb2_low)
+        pb2_low = true;
 }
 
 /*
@@ -566,30 +560,29 @@
 
     while (true) {
 
-        if (pb2_low && (mDot09 == 0)){
-			count++;
-			if (count == 100){
-		    // sets LED2 to 50% max current
-				evbBackLight->setPWM(NCP5623B::LED_3,16); // enable LED2 on EVB and set to 50% PWM
-			    evbBackLight->setLEDCurrent(16);
-			}
-		}
-        else {
-			if ((count > 5) && (count <= 100)) {
-				main_single = true;
-				osSignalSet(mainThreadID, 0x10);
-			} else if (count > 100) {
-				main_sweep = true;
-				osSignalSet(mainThreadID, 0x10);
-			}
+        if (pb2_low && (mDot09 == 0)) {
+            count++;
+            if (count == 100) {
+                // sets LED2 to 50% max current
+                evbBackLight->setPWM(NCP5623B::LED_3,16); // enable LED2 on EVB and set to 50% PWM
+                evbBackLight->setLEDCurrent(16);
+            }
+        } else {
+            if ((count > 5) && (count <= 100)) {
+                main_single = true;
+                osSignalSet(mainThreadID, 0x10);
+            } else if (count > 100) {
+                main_sweep = true;
+                osSignalSet(mainThreadID, 0x10);
+            }
 
-        	count = 0;
-        	pb2_low = false;
+            count = 0;
+            pb2_low = false;
         }
-        
+
         Thread::wait(5);
- 	}
- }
+    }
+}
 
 /*
  *  Function that print clear text verion of mDot errors
@@ -600,176 +593,173 @@
 }
 
 // return = number of ping checks that passed
-uint8_t ping_check(uint8_t set_pwr, uint8_t set_sf, uint8_t pings_per_check) 
+uint8_t ping_check(uint8_t set_pwr, uint8_t set_sf, uint8_t pings_per_check)
 {
 
-	uint8_t result = 0;
-	uint8_t ping_cnt;
-	mDot::ping_response ping_data;
-	mDot::rssi_stats rssi_data;
-	mDot::snr_stats snr_data;
-	struct tm gps_timestamp;
-	GPSPARSER::longitude evb_longitude;
-	GPSPARSER::latitude evb_latitude;
-	GPSPARSER::satellite_prn gps_sat_prn;
-	uint8_t gps_fix_quality;
-	int16_t evb_altitude;
-	uint8_t gps_num_satellites;
-	uint8_t gps_fix_status;
+    uint8_t result = 0;
+    uint8_t ping_cnt;
+    mDot::ping_response ping_data;
+    mDot::rssi_stats rssi_data;
+    mDot::snr_stats snr_data;
+    struct tm gps_timestamp;
+    GPSPARSER::longitude evb_longitude;
+    GPSPARSER::latitude evb_latitude;
+    GPSPARSER::satellite_prn gps_sat_prn;
+    uint8_t gps_fix_quality;
+    int16_t evb_altitude;
+    uint8_t gps_num_satellites;
+    uint8_t gps_fix_status;
     std::vector<uint8_t> mdot_data;
 
-	mdot_mutex.lock();		// lock mdot mutex before changing radio parameters
+    mdot_mutex.lock();		// lock mdot mutex before changing radio parameters
     if ((mdot_ret = mdot_radio->setTxPower(set_pwr)) != mDot::MDOT_OK) {
-    	log_error(mdot_radio, "failed to set TX power level", mdot_ret);
+        log_error(mdot_radio, "failed to set TX power level", mdot_ret);
     }
-	if ((mdot_ret = mdot_radio->setTxDataRate(set_sf)) != mDot::MDOT_OK) {
-       	log_error(mdot_radio, "failed to set DataRate value", mdot_ret);
+    if ((mdot_ret = mdot_radio->setTxDataRate(set_sf)) != mDot::MDOT_OK) {
+        log_error(mdot_radio, "failed to set DataRate value", mdot_ret);
     }
-	mdot_mutex.unlock();		// unlock mdot mutex after changing radio parameters
+    mdot_mutex.unlock();		// unlock mdot mutex after changing radio parameters
 
-	for (ping_cnt = 0; ping_cnt < pings_per_check; ping_cnt++) {
-		evbLCD->startUpdate();
-	    evbLCD->clearBuffer();
+    for (ping_cnt = 0; ping_cnt < pings_per_check; ping_cnt++) {
+        evbLCD->startUpdate();
+        evbLCD->clearBuffer();
 
-	    mdot_mutex.lock();		// lock mdot mutex before ping
-		ping_data = mdot_radio->ping();
-		mdot_mutex.unlock();		// unlock mdot mutex after ping
+        mdot_mutex.lock();		// lock mdot mutex before ping
+        ping_data = mdot_radio->ping();
+        mdot_mutex.unlock();		// unlock mdot mutex after ping
 
-		if (ping_data.status == mDot::MDOT_OK) {
-    		rssi_data = mdot_radio->getRssiStats();
-    		snr_data = mdot_radio->getSnrStats();
-			gps_fix_status = mdot_gps->getFixStatus();
-			gps_fix_quality = mdot_gps->getFixQuality();
-			gps_num_satellites = mdot_gps->getNumSatellites();
-			
-			printf ("\r\n GPS Fix Status= %d num of sats = %d\r\n", gps_fix_status, gps_num_satellites);
+        if (ping_data.status == mDot::MDOT_OK) {
+            rssi_data = mdot_radio->getRssiStats();
+            snr_data = mdot_radio->getSnrStats();
+            gps_fix_status = mdot_gps->getFixStatus();
+            gps_fix_quality = mdot_gps->getFixQuality();
+            gps_num_satellites = mdot_gps->getNumSatellites();
+
+            printf ("\r\n GPS Fix Status= %d num of sats = %d\r\n", gps_fix_status, gps_num_satellites);
 
-        	sprintf(txtstr,"PGOOD DR=%2d P=%2d",(12 - set_sf),set_pwr);
-        	evbLCD->writeText(0,0,font_6x8,txtstr,strlen(txtstr));
-			printf("%s \r\n",txtstr);
+            sprintf(txtstr,"PGOOD DR=%2d P=%2d",(12 - set_sf),set_pwr);
+            evbLCD->writeText(0,0,font_6x8,txtstr,strlen(txtstr));
+            printf("%s \r\n",txtstr);
 
-        	sprintf(txtstr,"UP  %3d dBm %2d.%1d",ping_data.rssi, ping_data.snr/10, abs(ping_data.snr)%10);
-        	evbLCD->writeText(0,1,font_6x8,txtstr,strlen(txtstr));
-			printf("Link Quality %s \r\n",txtstr);
+            sprintf(txtstr,"UP  %3d dBm %2d.%1d",ping_data.rssi, ping_data.snr/10, abs(ping_data.snr)%10);
+            evbLCD->writeText(0,1,font_6x8,txtstr,strlen(txtstr));
+            printf("Link Quality %s \r\n",txtstr);
 
-        	sprintf(txtstr,"DWN %3d dBm %2d.%02d",rssi_data.last, snr_data.last/4, abs(snr_data.last)%4*25);
-        	evbLCD->writeText(0,2,font_6x8,txtstr,strlen(txtstr));
-			printf("Link Quality %s \r\n",txtstr);
+            sprintf(txtstr,"DWN %3d dBm %2d.%02d",rssi_data.last, snr_data.last/4, abs(snr_data.last)%4*25);
+            evbLCD->writeText(0,2,font_6x8,txtstr,strlen(txtstr));
+            printf("Link Quality %s \r\n",txtstr);
 
-			mdot_data.clear();
-			mdot_data.push_back(0x1D);			// key for start of data structure
-			mdot_data.push_back(0x1A);			// key for uplink QOS + RF Pwr
-			convertS.f_s = ping_data.rssi;
-			mdot_data.push_back(convertS.t_u[1]);
-			mdot_data.push_back(convertS.t_u[0]);
-			mdot_data.push_back((ping_data.snr/10) & 0xFF);
-			mdot_data.push_back(set_pwr);
+            mdot_data.clear();
+            mdot_data.push_back(0x1D);			// key for start of data structure
+            mdot_data.push_back(0x1A);			// key for uplink QOS + RF Pwr
+            convertS.f_s = ping_data.rssi;
+            mdot_data.push_back(convertS.t_u[1]);
+            mdot_data.push_back(convertS.t_u[0]);
+            mdot_data.push_back((ping_data.snr/10) & 0xFF);
+            mdot_data.push_back(set_pwr);
 
-			mdot_data.push_back(0x1B);			// key for downlink QOS
-			convertS.f_s=rssi_data.last;
-			mdot_data.push_back(convertS.t_u[1]);
-			mdot_data.push_back(convertS.t_u[0]);
-			mdot_data.push_back(snr_data.last);
+            mdot_data.push_back(0x1B);			// key for downlink QOS
+            convertS.f_s=rssi_data.last;
+            mdot_data.push_back(convertS.t_u[1]);
+            mdot_data.push_back(convertS.t_u[0]);
+            mdot_data.push_back(snr_data.last);
 
-	// collect GPS data if GPS device detected
-			if (mdot_gps->gpsDetected() && (set_sf != mDot::SF_10)){
+            // collect GPS data if GPS device detected
+            if (mdot_gps->gpsDetected() && (set_sf != mDot::SF_10)) {
 
-					mdot_data.push_back(0x19);			// key for GPS Lock Status
-					data = ( gps_num_satellites << 4 ) | ( gps_fix_status & 0x0F );
-					mdot_data.push_back(data);
+                mdot_data.push_back(0x19);			// key for GPS Lock Status
+                data = ( gps_num_satellites << 4 ) | ( gps_fix_status & 0x0F );
+                mdot_data.push_back(data);
 
-				if (mdot_gps->getLockStatus()){			// if gps has a lock
-					evb_longitude = mdot_gps->getLongitude();
-					evb_latitude = mdot_gps->getLatitude();
-					evb_altitude = mdot_gps->getAltitude();
-					gps_timestamp = mdot_gps->getTimestamp();
+                if (mdot_gps->getLockStatus()) {			// if gps has a lock
+                    evb_longitude = mdot_gps->getLongitude();
+                    evb_latitude = mdot_gps->getLatitude();
+                    evb_altitude = mdot_gps->getAltitude();
+                    gps_timestamp = mdot_gps->getTimestamp();
 
-	    			sprintf(txtstr,"%3d %2d %2d.%03d",abs(evb_longitude.degrees),evb_longitude.minutes,(evb_longitude.seconds*6)/1000,(evb_longitude.seconds*6)%1000);
+                    sprintf(txtstr,"%3d %2d %2d.%03d",abs(evb_longitude.degrees),evb_longitude.minutes,(evb_longitude.seconds*6)/1000,(evb_longitude.seconds*6)%1000);
 
-	   	 			if (evb_longitude.degrees < 0)
-	    				strncat(txtstr," W",2);
-	    			else
-	    				strncat(txtstr," E",2);
-    				
-	           		evbLCD->writeText(0,3,font_6x8,txtstr,strlen(txtstr));
-					printf("Longitude: %s \r\n",txtstr);
+                    if (evb_longitude.degrees < 0)
+                        strncat(txtstr," W",2);
+                    else
+                        strncat(txtstr," E",2);
 
-	    			sprintf(txtstr,"%3d %2d %2d.%03d",abs(evb_latitude.degrees),evb_latitude.minutes,(evb_latitude.seconds*6)/1000,(evb_latitude.seconds*6)%1000);
+                    evbLCD->writeText(0,3,font_6x8,txtstr,strlen(txtstr));
+                    printf("Longitude: %s \r\n",txtstr);
 
-	    			if (evb_latitude.degrees < 0)
-	    				strncat(txtstr," S",2);
-	    			else
-	    				strncat(txtstr," N",2);
+                    sprintf(txtstr,"%3d %2d %2d.%03d",abs(evb_latitude.degrees),evb_latitude.minutes,(evb_latitude.seconds*6)/1000,(evb_latitude.seconds*6)%1000);
+
+                    if (evb_latitude.degrees < 0)
+                        strncat(txtstr," S",2);
+                    else
+                        strncat(txtstr," N",2);
 
-	            	evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
-					printf("Latitude:  %s \r\n",txtstr);
+                    evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
+                    printf("Latitude:  %s \r\n",txtstr);
 
-	    			sprintf(txtstr,"Time %02d:%02d:%02d ",gps_timestamp.tm_hour,gps_timestamp.tm_min,gps_timestamp.tm_sec);
-	            	evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
-					printf("%s \r\n",txtstr);
+                    sprintf(txtstr,"Time %02d:%02d:%02d ",gps_timestamp.tm_hour,gps_timestamp.tm_min,gps_timestamp.tm_sec);
+                    evbLCD->writeText(0,5,font_6x8,txtstr,strlen(txtstr));
+                    printf("%s \r\n",txtstr);
 
-	    			sprintf(txtstr,"Date %02d/%02d/%04d",gps_timestamp.tm_mon + 1,gps_timestamp.tm_mday,gps_timestamp.tm_year +1900);
-	            	evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
-					printf("%s \r\n\r\n",txtstr);
+                    sprintf(txtstr,"Date %02d/%02d/%04d",gps_timestamp.tm_mon + 1,gps_timestamp.tm_mday,gps_timestamp.tm_year +1900);
+                    evbLCD->writeText(0,6,font_6x8,txtstr,strlen(txtstr));
+                    printf("%s \r\n\r\n",txtstr);
 
-			// Send GPS data if GSP device locked
-					mdot_data.push_back(0x15);			// key for GPS Latitude
-					mdot_data.push_back(evb_latitude.degrees);
-					mdot_data.push_back(evb_latitude.minutes);
-					convertS.f_s = evb_latitude.seconds;
-					mdot_data.push_back(convertS.t_u[1]);
-					mdot_data.push_back(convertS.t_u[0]);
+                    // Send GPS data if GSP device locked
+                    mdot_data.push_back(0x15);			// key for GPS Latitude
+                    mdot_data.push_back(evb_latitude.degrees);
+                    mdot_data.push_back(evb_latitude.minutes);
+                    convertS.f_s = evb_latitude.seconds;
+                    mdot_data.push_back(convertS.t_u[1]);
+                    mdot_data.push_back(convertS.t_u[0]);
 
-					mdot_data.push_back(0x16);			// key for GPS Longitude
-					convertS.f_s = evb_longitude.degrees;
-					mdot_data.push_back(convertS.t_u[1]);
-					mdot_data.push_back(convertS.t_u[0]);
+                    mdot_data.push_back(0x16);			// key for GPS Longitude
+                    convertS.f_s = evb_longitude.degrees;
+                    mdot_data.push_back(convertS.t_u[1]);
+                    mdot_data.push_back(convertS.t_u[0]);
 
-					mdot_data.push_back(evb_longitude.minutes);
-					convertS.f_s = evb_longitude.seconds;
-					mdot_data.push_back(convertS.t_u[1]);
-					mdot_data.push_back(convertS.t_u[0]);
-		    	}
-		    	else {
-		    		sprintf(txtstr,"no GPS lock");
-	   	    	   	evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
-					printf("%s \r\n",txtstr);
-		    	}
-			}
-	// key for end of data structure		
-			mdot_data.push_back(0x1D);
-		
-	// if SF_10 this sends 11 bytes of data, otherwise sends full data packet
-	        mdot_mutex.lock();		// lock mdot mutex before packet send
-			mdot_ret = mdot_radio->send(mdot_data);
-	        mdot_mutex.unlock();		// unlock mdot mutex after packet send
+                    mdot_data.push_back(evb_longitude.minutes);
+                    convertS.f_s = evb_longitude.seconds;
+                    mdot_data.push_back(convertS.t_u[1]);
+                    mdot_data.push_back(convertS.t_u[0]);
+                } else {
+                    sprintf(txtstr,"no GPS lock");
+                    evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
+                    printf("%s \r\n",txtstr);
+                }
+            }
+            // key for end of data structure
+            mdot_data.push_back(0x1D);
+
+            // if SF_10 this sends 11 bytes of data, otherwise sends full data packet
+            mdot_mutex.lock();		// lock mdot mutex before packet send
+            mdot_ret = mdot_radio->send(mdot_data);
+            mdot_mutex.unlock();		// unlock mdot mutex after packet send
 
-			if (mdot_ret  != mDot::MDOT_OK) {
-		       	sprintf(txtstr,"mDot Send failed");
-	            evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
-				log_error(mdot_radio, txtstr, mdot_ret);
-			}
-			else {
-		       	sprintf(txtstr,"mDot Send success");
-	            evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
-				printf("successfully sent data to gateway\r\n");
-				result++;
-			}
-	    }
-	    else {
-			sprintf(txtstr,"Ping Check Failed");
-	        evbLCD->writeText(0,2,font_6x8,txtstr,strlen(txtstr));
-			printf("%s \r\n",txtstr);
-	        sprintf(txtstr,"DR=%2d P=%2d",(12 - set_sf),set_pwr);
-	        evbLCD->writeText(0,3,font_6x8,txtstr,strlen(txtstr));
-			printf("%s \r\n",txtstr);
-			strncpy(txtstr,mDot::getReturnCodeString(ping_data.status).c_str(),17);
-	        evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
-			printf("%s \r\n",txtstr);
-	    }
+            if (mdot_ret  != mDot::MDOT_OK) {
+                sprintf(txtstr,"mDot Send failed");
+                evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
+                log_error(mdot_radio, txtstr, mdot_ret);
+            } else {
+                sprintf(txtstr,"mDot Send success");
+                evbLCD->writeText(0,7,font_6x8,txtstr,strlen(txtstr));
+                printf("successfully sent data to gateway\r\n");
+                result++;
+            }
+        } else {
+            sprintf(txtstr,"Ping Check Failed");
+            evbLCD->writeText(0,2,font_6x8,txtstr,strlen(txtstr));
+            printf("%s \r\n",txtstr);
+            sprintf(txtstr,"DR=%2d P=%2d",(12 - set_sf),set_pwr);
+            evbLCD->writeText(0,3,font_6x8,txtstr,strlen(txtstr));
+            printf("%s \r\n",txtstr);
+            strncpy(txtstr,mDot::getReturnCodeString(ping_data.status).c_str(),17);
+            evbLCD->writeText(0,4,font_6x8,txtstr,strlen(txtstr));
+            printf("%s \r\n",txtstr);
+        }
 
-		evbLCD->endUpdate();
-		osDelay(1000);
-	}
-	return result;
+        evbLCD->endUpdate();
+        osDelay(1000);
+    }
+    return result;
 }
\ No newline at end of file