ChapTEr 8 ■ DEmonsTraTion of high availabiliTy TEChniquEs
Serial.println("Master is ok.");
// Reset timer since master is Ok
startTime = millis();
elapsedTime = 0;
blink(); // visual feedback
}
#else
// Send the heartbeat pulse
void sendHeartbeat() {
Wire.beginTransmission(address);
Wire.write("hello!");
Wire.endTransmission();
blink(); // visual feedback
}
#endif
void setup() {
#if defined SLAVE
Wire.begin(address); // join i2c bus
Wire.onReceive(getHeartbeat); // register the heartbeat code
startTime = millis(); // initiate timer
elapsedTime = 0;
#else
Wire.begin();
#endif
pinMode(13, OUTPUT); // turn on onboard LED (pin 13)
Serial.begin(115200);
// TODO: Add any database initialization code here
}
void loop() {
#if defined SLAVE
Serial.println("looping...");
// Check timeout
elapsedTime += millis() - startTime;
Serial.println(elapsedTime);
if (elapsedTime > maxTime) {
// Master is dead. Read and save the sensor data!
Serial.println("Master has died! Oh, my...");
// OPTIONAL: reset master timer to try again.
startTime = millis();
elapsedTime = 0;