Browse Source

Abstract receiver for later refactoring

Robert Marshall 5 years ago
parent
commit
7b8498c7ee
2 changed files with 37 additions and 12 deletions
  1. 24 0
      Receiver/src/Receiver.cpp
  2. 13 12
      Receiver/src/main.cpp

+ 24 - 0
Receiver/src/Receiver.cpp

@@ -0,0 +1,24 @@
+#include <RH_ASK.h>
+
+class Receiver{
+	void (*_messageCallback)(char *);
+	RH_ASK _driver;
+	unsigned int _bufferSize;
+
+public:
+	Receiver(void(*messageCallback)(char*), unsigned int bufferSize){
+		_messageCallback = messageCallback;
+		_bufferSize = bufferSize;
+	}
+
+	bool setup(){
+		return _driver.init();
+	}
+
+	void loop() {
+		uint8_t message[_bufferSize];
+		uint8_t length = sizeof(message);
+		if (_driver.recv(message, &length))
+			_messageCallback((char *)message);
+	}
+};

+ 13 - 12
Receiver/src/main.cpp

@@ -1,8 +1,9 @@
 #include <Arduino.h>
-#include <RH_ASK.h>
+#include <Receiver.cpp>
 
-RH_ASK _driver;
 unsigned int _output = 12;
+void messageCallback(char *message);
+Receiver _receiver(&messageCallback, 9);
 
 bool validateMessage(char* message){
 	return strncmp("LED On: ", message, 8) == 0; //returns 0 on match
@@ -12,23 +13,23 @@ bool parseMessage(char* message){
 	return validateMessage(message) && message[8] == '1';
 }
 
+void messageCallback(char* message){
+	Serial.print("Message: ");
+	Serial.println(message);
+
+	Serial.println(validateMessage(message));
+	Serial.println(parseMessage(message));
+}
+
 void setup(){
 	pinMode(_output, OUTPUT);
 	Serial.begin(9600);
 	Serial.println("Starting...");
-	if (!_driver.init())
+	if (!_receiver.setup())
 		Serial.println("init failed");
 	Serial.println("Started");
 }
 
 void loop(){
-	uint8_t buf[9];
-	uint8_t buflen = sizeof(buf);
-	if (_driver.recv(buf, &buflen)) {// Non-blocking
-		Serial.print("Message: ");
-		Serial.println((char *)buf);
-
-		Serial.println(validateMessage((char *)buf));
-		Serial.println(parseMessage((char *)buf));
-	}
+	_receiver.loop();
 }