System Management code

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Revision:
30:91af74a299e1
Child:
31:7eaa5e881b56
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Nov 13 10:53:10 2014 +0000
@@ -0,0 +1,33 @@
+#include "IOobjects.h"
+#include "runTime.h"
+#include "outDiagnostics.h"
+
+int main() {
+    wdt.kick(0.11);                     // Kick the watchdog timer, set the timeout to 110ms
+    pc.baud(921600);
+    pc.printf("\r\n\r\nSys Mgmt Reset\r\n");
+    can.mode(FIFO);                     // Use FIFO mode
+    NVIC_SetPriority(TIMER3_IRQn, 2);   // Decrease timer3 priority (mbed timer, rtos)
+    NVIC_SetPriority(UART0_IRQn, 1);    // Decrease serial priority to give CAN higher priority
+    
+    // Did a watchdog reset occur since last power cycle?
+    if (wdt.checkFlag()) {
+        data.watchdogReset = true;
+        pc.printf("Watchdog Reset\r\n");
+    }
+
+    // Start the 10Hz data thread
+    Thread gather_10Hz(runTime::thread_gather_10Hz, 0, osPriorityHigh);
+    
+    // Start the 100Hz data timer (more time critical than thread)
+    Thread gather_100Hz(runTime::thread_gather_100Hz, 0, osPriorityRealtime);
+
+    // Start the serial, CAN threads
+    Thread serial_out(outDiagnostics::thread_serialOut, 0, osPriorityAboveNormal, 6000);     // Allocate 6kB RAM stack
+    Thread can_out(outDiagnostics::thread_canOut, 0, osPriorityAboveNormal, 256);            // Allocate 256B RAM stack
+    
+    // Background task
+    while(1) {
+        // Service CAN and Xbee logic
+    }
+}
\ No newline at end of file