|
@@ -1,38 +1,37 @@
|
|
|
-#include <Arduino.h>
|
|
|
-#include <Receiver.cpp>
|
|
|
#include <../../Common/LED.cpp>
|
|
|
#include <../../Common/Variables.cpp>
|
|
|
+#include <Arduino.h>
|
|
|
+#include <ESP8266WiFi.h>
|
|
|
+#include <espnow.h>
|
|
|
|
|
|
#define TIMEOUT_DURATION 30000 // 30 seconds
|
|
|
|
|
|
-void messageCallback(char *message);
|
|
|
-Receiver _receiver(2, &messageCallback, 9);
|
|
|
-LED _led(5, FADE_IN_DURATION, FADE_OUT_DURATION);
|
|
|
+void messageCallback(int value);
|
|
|
+LED _led(D1, FADE_IN_DURATION, FADE_OUT_DURATION);
|
|
|
unsigned long _lastMessageTime;
|
|
|
bool _timedOut = false;
|
|
|
|
|
|
-bool validateMessage(char* message){
|
|
|
- return strncmp("LED On: ", message, 8) == 0; //returns 0 on match
|
|
|
-}
|
|
|
-
|
|
|
-bool parseMessage(char* message){
|
|
|
- return validateMessage(message) && message[8] == '1';
|
|
|
-}
|
|
|
-
|
|
|
void resetTimeout(){
|
|
|
_lastMessageTime = millis();
|
|
|
_timedOut = false;
|
|
|
}
|
|
|
|
|
|
-void messageCallback(char* message){
|
|
|
+void messageCallback(int value){
|
|
|
Serial.print("Message: ");
|
|
|
- Serial.println(message);
|
|
|
+ Serial.println(value);
|
|
|
|
|
|
- parseMessage(message) ? _led.on() : _led.off();
|
|
|
+ value ? _led.on() : _led.off();
|
|
|
|
|
|
resetTimeout();
|
|
|
}
|
|
|
|
|
|
+void OnDataRecv(uint8_t *mac, uint8_t *incomingData, uint8_t len) {
|
|
|
+ int value;
|
|
|
+ memcpy(&value, incomingData, sizeof(value));
|
|
|
+ Serial.println(value);
|
|
|
+ messageCallback(value);
|
|
|
+}
|
|
|
+
|
|
|
void timeout(){
|
|
|
if (!_timedOut && millis() >= _lastMessageTime + TIMEOUT_DURATION){
|
|
|
Serial.println("No message for 30 seconds.");
|
|
@@ -41,17 +40,32 @@ void timeout(){
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void setupReceiver() {
|
|
|
+ Serial.print("ESP8266 Board MAC Address: ");
|
|
|
+ Serial.println(WiFi.macAddress());
|
|
|
+
|
|
|
+ WiFi.mode(WIFI_STA);
|
|
|
+
|
|
|
+ if (esp_now_init() != 0) {
|
|
|
+ Serial.println("Error initialising ESP-NOW");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
|
|
|
+ esp_now_register_recv_cb(OnDataRecv);
|
|
|
+}
|
|
|
+
|
|
|
void setup(){
|
|
|
- Serial.begin(9600);
|
|
|
+ Serial.begin(115200);
|
|
|
Serial.println("Starting...");
|
|
|
- _receiver.setup();
|
|
|
+ setupReceiver();
|
|
|
Serial.println("Started");
|
|
|
_led.off();
|
|
|
_lastMessageTime = millis();
|
|
|
}
|
|
|
|
|
|
void loop(){
|
|
|
- _receiver.loop();
|
|
|
_led.loop();
|
|
|
timeout();
|
|
|
+ delay(10);
|
|
|
}
|