Master_Node

Dependencies:   XBeeLib_Master mbed

Revision:
0:a6ed4a102013
Child:
1:f28c98c04cbd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Mar 05 11:19:32 2018 +0000
@@ -0,0 +1,86 @@
+#include "mbed.h"
+#include "XBeeLib.h"
+#include "buzzer.h"
+  
+using namespace XBeeLib;
+
+uint8_t systemStatus = 0;
+uint8_t emergency = 1;
+
+// Activate Timer
+Ticker loopTimer;
+
+// Create DigiMesh Object
+XBeeDM DMLocalNode = XBeeDM(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 115200);
+
+//------------Define Pinouts------------//
+DigitalOut statusLED(PA_11);
+DigitalOut powerLED(PA_8);
+DigitalOut SCL(PA_6); 
+DigitalOut SDA(PA_5);
+
+DigitalIn emergencyStop(PB_7);
+DigitalIn resetButton(PB_0);
+DigitalIn spareButton(PA_12);
+//------------Define Pinouts------------//
+
+// Initialize Buzzer
+Beep piezo(PB_4);
+
+void initialize(){
+    powerLED = 1;
+    // Initialize device. Read the relevant parameters.
+    RadioStatus radioStatus = DMLocalNode.init();
+    if (radioStatus != Success) {
+        printf("Initialization failed!");
+    }
+    systemStatus = 1;
+}
+
+static void sendHeartbeat(XBeeDM &DMLocalNode)
+{
+    const char data[] = "1";
+    const uint16_t data_len = strlen(data);
+ 
+    const TxStatus txStatus = DMLocalNode.send_data_broadcast((const uint8_t *)data, data_len);
+}
+
+void checkBuzzer(){
+    if (systemStatus == 1){
+        piezo.beep(2400, 0.2);
+    }       
+}
+
+void checkLoop() 
+{
+    sendHeartbeat(DMLocalNode);
+    checkBuzzer();
+}
+
+void checkStatus(){
+    if (emergencyStop == 0){
+        emergency = true;
+    }
+  
+    if (emergencyStop == 1 && resetButton == 1){
+        emergency = false;
+    }
+                
+    if (emergency == true){
+        systemStatus = 0;
+    }
+    else{
+        systemStatus = 1;
+    }
+                    
+    statusLED = systemStatus;
+}
+int main(){
+    initialize();  
+    
+    loopTimer.attach(checkLoop, 0.5f) ;
+
+    for(;;){
+        checkStatus();
+    }
+} 
\ No newline at end of file