Master_Node

Dependencies:   XBeeLib_Master mbed

main.cpp

Committer:
basvuyk
Date:
2018-03-05
Revision:
0:a6ed4a102013
Child:
1:f28c98c04cbd

File content as of revision 0:a6ed4a102013:

#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();
    }
}