|
@@ -3,11 +3,13 @@
|
|
|
#include <../../Common/LED.cpp>
|
|
|
#include <../../Common/Variables.cpp>
|
|
|
|
|
|
+#define TIMEOUT_DURATION 30000 // 30 seconds
|
|
|
+
|
|
|
void messageCallback(char *message);
|
|
|
Receiver _receiver(2, &messageCallback, 9);
|
|
|
LED _led(5, FADE_IN_DURATION, FADE_OUT_DURATION);
|
|
|
-
|
|
|
-unsigned long lastSwitch = 0;
|
|
|
+unsigned long _lastMessageTime;
|
|
|
+bool _timedOut = false;
|
|
|
|
|
|
bool validateMessage(char* message){
|
|
|
return strncmp("LED On: ", message, 8) == 0; //returns 0 on match
|
|
@@ -17,11 +19,26 @@ bool parseMessage(char* message){
|
|
|
return validateMessage(message) && message[8] == '1';
|
|
|
}
|
|
|
|
|
|
+void resetTimeout(){
|
|
|
+ _lastMessageTime = millis();
|
|
|
+ _timedOut = false;
|
|
|
+}
|
|
|
+
|
|
|
void messageCallback(char* message){
|
|
|
Serial.print("Message: ");
|
|
|
Serial.println(message);
|
|
|
|
|
|
parseMessage(message) ? _led.on() : _led.off();
|
|
|
+
|
|
|
+ resetTimeout();
|
|
|
+}
|
|
|
+
|
|
|
+void timeout(){
|
|
|
+ if (!_timedOut && millis() >= _lastMessageTime + TIMEOUT_DURATION){
|
|
|
+ Serial.println("No message for 30 seconds.");
|
|
|
+ _led.off();
|
|
|
+ _timedOut = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void setup(){
|
|
@@ -30,10 +47,11 @@ void setup(){
|
|
|
_receiver.setup();
|
|
|
Serial.println("Started");
|
|
|
_led.off();
|
|
|
- lastSwitch = millis();
|
|
|
+ _lastMessageTime = millis();
|
|
|
}
|
|
|
|
|
|
void loop(){
|
|
|
_receiver.loop();
|
|
|
_led.loop();
|
|
|
+ timeout();
|
|
|
}
|