Master_Node
Dependencies: XBeeLib_Master mbed
Diff: main.cpp
- Revision:
- 0:a6ed4a102013
- Child:
- 1:f28c98c04cbd
diff -r 000000000000 -r a6ed4a102013 main.cpp --- /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