Master_Node

Dependencies:   XBeeLib_Master mbed

Committer:
basvuyk
Date:
Mon Mar 05 11:19:32 2018 +0000
Revision:
0:a6ed4a102013
Child:
1:f28c98c04cbd
Initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
basvuyk 0:a6ed4a102013 1 #include "mbed.h"
basvuyk 0:a6ed4a102013 2 #include "XBeeLib.h"
basvuyk 0:a6ed4a102013 3 #include "buzzer.h"
basvuyk 0:a6ed4a102013 4
basvuyk 0:a6ed4a102013 5 using namespace XBeeLib;
basvuyk 0:a6ed4a102013 6
basvuyk 0:a6ed4a102013 7 uint8_t systemStatus = 0;
basvuyk 0:a6ed4a102013 8 uint8_t emergency = 1;
basvuyk 0:a6ed4a102013 9
basvuyk 0:a6ed4a102013 10 // Activate Timer
basvuyk 0:a6ed4a102013 11 Ticker loopTimer;
basvuyk 0:a6ed4a102013 12
basvuyk 0:a6ed4a102013 13 // Create DigiMesh Object
basvuyk 0:a6ed4a102013 14 XBeeDM DMLocalNode = XBeeDM(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 115200);
basvuyk 0:a6ed4a102013 15
basvuyk 0:a6ed4a102013 16 //------------Define Pinouts------------//
basvuyk 0:a6ed4a102013 17 DigitalOut statusLED(PA_11);
basvuyk 0:a6ed4a102013 18 DigitalOut powerLED(PA_8);
basvuyk 0:a6ed4a102013 19 DigitalOut SCL(PA_6);
basvuyk 0:a6ed4a102013 20 DigitalOut SDA(PA_5);
basvuyk 0:a6ed4a102013 21
basvuyk 0:a6ed4a102013 22 DigitalIn emergencyStop(PB_7);
basvuyk 0:a6ed4a102013 23 DigitalIn resetButton(PB_0);
basvuyk 0:a6ed4a102013 24 DigitalIn spareButton(PA_12);
basvuyk 0:a6ed4a102013 25 //------------Define Pinouts------------//
basvuyk 0:a6ed4a102013 26
basvuyk 0:a6ed4a102013 27 // Initialize Buzzer
basvuyk 0:a6ed4a102013 28 Beep piezo(PB_4);
basvuyk 0:a6ed4a102013 29
basvuyk 0:a6ed4a102013 30 void initialize(){
basvuyk 0:a6ed4a102013 31 powerLED = 1;
basvuyk 0:a6ed4a102013 32 // Initialize device. Read the relevant parameters.
basvuyk 0:a6ed4a102013 33 RadioStatus radioStatus = DMLocalNode.init();
basvuyk 0:a6ed4a102013 34 if (radioStatus != Success) {
basvuyk 0:a6ed4a102013 35 printf("Initialization failed!");
basvuyk 0:a6ed4a102013 36 }
basvuyk 0:a6ed4a102013 37 systemStatus = 1;
basvuyk 0:a6ed4a102013 38 }
basvuyk 0:a6ed4a102013 39
basvuyk 0:a6ed4a102013 40 static void sendHeartbeat(XBeeDM &DMLocalNode)
basvuyk 0:a6ed4a102013 41 {
basvuyk 0:a6ed4a102013 42 const char data[] = "1";
basvuyk 0:a6ed4a102013 43 const uint16_t data_len = strlen(data);
basvuyk 0:a6ed4a102013 44
basvuyk 0:a6ed4a102013 45 const TxStatus txStatus = DMLocalNode.send_data_broadcast((const uint8_t *)data, data_len);
basvuyk 0:a6ed4a102013 46 }
basvuyk 0:a6ed4a102013 47
basvuyk 0:a6ed4a102013 48 void checkBuzzer(){
basvuyk 0:a6ed4a102013 49 if (systemStatus == 1){
basvuyk 0:a6ed4a102013 50 piezo.beep(2400, 0.2);
basvuyk 0:a6ed4a102013 51 }
basvuyk 0:a6ed4a102013 52 }
basvuyk 0:a6ed4a102013 53
basvuyk 0:a6ed4a102013 54 void checkLoop()
basvuyk 0:a6ed4a102013 55 {
basvuyk 0:a6ed4a102013 56 sendHeartbeat(DMLocalNode);
basvuyk 0:a6ed4a102013 57 checkBuzzer();
basvuyk 0:a6ed4a102013 58 }
basvuyk 0:a6ed4a102013 59
basvuyk 0:a6ed4a102013 60 void checkStatus(){
basvuyk 0:a6ed4a102013 61 if (emergencyStop == 0){
basvuyk 0:a6ed4a102013 62 emergency = true;
basvuyk 0:a6ed4a102013 63 }
basvuyk 0:a6ed4a102013 64
basvuyk 0:a6ed4a102013 65 if (emergencyStop == 1 && resetButton == 1){
basvuyk 0:a6ed4a102013 66 emergency = false;
basvuyk 0:a6ed4a102013 67 }
basvuyk 0:a6ed4a102013 68
basvuyk 0:a6ed4a102013 69 if (emergency == true){
basvuyk 0:a6ed4a102013 70 systemStatus = 0;
basvuyk 0:a6ed4a102013 71 }
basvuyk 0:a6ed4a102013 72 else{
basvuyk 0:a6ed4a102013 73 systemStatus = 1;
basvuyk 0:a6ed4a102013 74 }
basvuyk 0:a6ed4a102013 75
basvuyk 0:a6ed4a102013 76 statusLED = systemStatus;
basvuyk 0:a6ed4a102013 77 }
basvuyk 0:a6ed4a102013 78 int main(){
basvuyk 0:a6ed4a102013 79 initialize();
basvuyk 0:a6ed4a102013 80
basvuyk 0:a6ed4a102013 81 loopTimer.attach(checkLoop, 0.5f) ;
basvuyk 0:a6ed4a102013 82
basvuyk 0:a6ed4a102013 83 for(;;){
basvuyk 0:a6ed4a102013 84 checkStatus();
basvuyk 0:a6ed4a102013 85 }
basvuyk 0:a6ed4a102013 86 }