An example project for the Heltec Turtle LoRa board (STM32L4 and SX1276 chips). The projects is only supported for the Nucleo-L432KC board platform in the mbed online and offline compiler environment. Visit www.radioshuttle.de (choose Turtle board) for instructions. Note that most source files and libraries are open source, however some files especially the RadioShuttle core protocol is copyrighted work. Check header for details.

Dependencies:   mbed BufferedSerial SX1276GenericLib OLED_SSD1306 HELIOS_Si7021 NVProperty RadioShuttle-STM32L4 USBDeviceHT

Revision:
37:77fa81e4ad79
Parent:
35:9e799d093b7f
Child:
45:22bb680cad5a
--- a/main.cpp	Wed Feb 13 14:08:15 2019 +0100
+++ b/main.cpp	Wed Feb 13 14:10:17 2019 +0100
@@ -9,15 +9,8 @@
   * Compiler Date/Time is not set correctly on startup
   */
 #include "main.h"
-#include "RadioShuttle.h"
 #include "RadioTest.h"
-#include "GenericPingPong.h"
-#ifdef FEATURE_NVPROPERTY
-#include <NVPropertyProviderInterface.h>
-#include "NVProperty.h"
-#endif
 
-void RunCommands(int timeout_ms);
 
 DigitalOut statusLED(LED);
 DigitalOut redLED(LED2);
@@ -28,7 +21,6 @@
 	InterrruptMSG(INT_BUTTON1);
 }
 
-
 void timerUpdate(void) {
 	static LowPowerTimeout timeout;
 	if (redLED == 0)
@@ -36,7 +28,6 @@
 	else
     	timeout.attach_us(&timerUpdate, 2000000); // setup to call timerUpdate after 2 seconds
 
-	redLED = ! redLED;
 	InterrruptMSG(INT_TIMEOUT);
 }
 
@@ -50,23 +41,21 @@
      * It waits up to 30 seconds for a USB terminal connections 
      */
     InitSerial(30*1000, &statusLED);
+	RunStartup();
 	dprintf("Welcome to RadioShuttle v%d.%d", RS_MAJOR, RS_MINOR);
-    dprintf("Voltage: %.2f (%s powered)", BatteryVoltage(), BatterySource());
-    timerUpdate(); // start timer
+    timerUpdate(); // start timer for status blinked, can be disalbed to save energy
 #if defined (USER_BUTTON_RISE) // attach switchInput function to the rising or falling edge
 	buttonIntr.rise(&switchInput);
 #else
 	buttonIntr.fall(&switchInput);
 #endif
 	
-	RunCommands(10000);	// check for any commands
+	RunCommands(10000);	// check 10 secs for any commands
 	
 #ifdef FEATURE_LORA
     InitRadio();
 #endif
 
-    dprintf("InitDefaults Done");
-
 	/*
 	 * Main event loop, process interrupts and go to sleep
 	 * the green statusLED indicates CPU activity
@@ -95,75 +84,7 @@
 #endif
         }
         if (pendirqs & INT_TIMEOUT) {
+			redLED = ! redLED;
 		}
 	}
 }
-
-static const char *cmds = \
-	"\r\nThe following commands are available:\r\n\r\n" \
-	" p -- Property Editor\r\n" \
-	" t -- LoRa PingPong Test\r\n" \
-	" d -- Hexdump of memory address [offset count]\r\n"
-	" r -- Reset\r\n" \
-	" c -- Continue with RadioShuttle\r\n" \
-	"\r\n" \
-	"waiting 10 secs ...\r\n" \
-	"\r\n";
-
-void RunCommands(int timeout_ms) {
-	bool cmdLoop = true;
-	while(cmdLoop) {
-		char buf[32];
-
-		rprintf(cmds);
-		rprintf("Turtle$ ");
-		if (ConsoleReadline(buf, sizeof(buf), true, timeout_ms) == NULL) {
-			cmdLoop = false;
-			break;
-		}
-		switch(buf[0]) {
-			case 'p':
-			case 'P':
-#ifdef FEATURE_NVPROPERTYEDITOR
-				NVPropertyEditor();
-#endif
-			break;
-			case 't':
-			case 'T':
-#ifdef FEATURE_LORA_PING_PONG
-    			SX1276PingPong();	// basic LoRa raw ping/pong without RadioShuttle
-#endif
-				break;
-			case 'r':
-			case 'R':
-				MCUReset();
-				break;
-			case 'd':
-			case 'D':
-				{
-					char *addr = strchr(buf, ' ');
-					if (addr) {
-						*addr++ = 0;
-						char *length = strchr(addr, ' ');
-						if (length) {
-							*length++ = 0;
-						}
-						unsigned long address = strtoll(addr, NULL, 0);
-						unsigned long cnt = 32;
-						if (length)
-							cnt = strtoll(length, NULL, 0);
-						dump("Hexdump", (void *)address, cnt);
-					}
-				}
-				break;
-			case 'c':
-			case 'C':
-				cmdLoop = false;
-				break;
-			default:
-				break;
-		}
-	}
-	rprintf("\r\n");
-
-}