From 31995151dd3e3d3068ae7b8d24715c75b187536f Mon Sep 17 00:00:00 2001
From: Moritz Perschke <moritz.perschke@uibk.ac.at>
Date: Thu, 8 Sep 2022 14:04:01 +0200
Subject: [PATCH] moved message sending from Message class to espnow

---
 client/client/lib/espnow/src/ESPNow.cpp  | 26 ++++++++++++++++++++++++
 client/client/lib/espnow/src/ESPNow.hpp  |  1 +
 client/client/lib/espnow/src/Message.cpp | 23 ++-------------------
 client/client/lib/espnow/src/Message.hpp |  4 +---
 4 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/client/client/lib/espnow/src/ESPNow.cpp b/client/client/lib/espnow/src/ESPNow.cpp
index 7c411f5..8bfd7bf 100644
--- a/client/client/lib/espnow/src/ESPNow.cpp
+++ b/client/client/lib/espnow/src/ESPNow.cpp
@@ -63,3 +63,29 @@ esp_err_t espnow_setup()
 
 	return ESP_OK;
 }
+
+esp_err_t espnow_send_message(Message message){
+	Serial.println("sending Message");
+	esp_err_t success;
+	ClientDataPackage* dataP = message.get_client_data_package();
+	uint8_t recipient;
+	get_host_mac(&recipient);
+
+	success = esp_now_send(&recipient, (uint8_t *) dataP, sizeof(ClientDataPackage));
+	// if(success != ESP_OK){
+	//     if(!ram_cache_is_full()){
+	//         ram_cache_push(*data);
+	//     }
+	// }
+
+	for (int i = 0; i < dataP->amountData; i++) {
+		Serial.println(dataP->values[i]);
+	}
+	
+	Serial.println((String) "time sent: " + dataP->timestamp);
+	Serial.println((String) "Send status: " + success);
+	Serial.println();
+	Serial.println("done");
+	Serial.flush();
+	return success;
+}
diff --git a/client/client/lib/espnow/src/ESPNow.hpp b/client/client/lib/espnow/src/ESPNow.hpp
index 1230290..0d0d72c 100644
--- a/client/client/lib/espnow/src/ESPNow.hpp
+++ b/client/client/lib/espnow/src/ESPNow.hpp
@@ -16,6 +16,7 @@ typedef struct config {
 } config;
 
 esp_err_t espnow_setup();
+esp_err_t espnow_send_message(Message message);
 bool is_host_defined();
 void get_host_mac(uint8_t *destination);
 void on_data_sent(const uint8_t *mac_addr, esp_now_send_status_t status);
diff --git a/client/client/lib/espnow/src/Message.cpp b/client/client/lib/espnow/src/Message.cpp
index ce9dd25..22edc8f 100644
--- a/client/client/lib/espnow/src/Message.cpp
+++ b/client/client/lib/espnow/src/Message.cpp
@@ -9,31 +9,13 @@ void Message::add_data(float value, int identifier)
 	}
 }
 
-esp_err_t Message::send()
-{
-	Serial.println("sending Message");
-	esp_err_t success;
-	success = esp_now_send(recipient, (uint8_t *)&data, sizeof(data));
-	// if(success != ESP_OK){
-	//     if(!ram_cache_is_full()){
-	//         ram_cache_push(*data);
-	//     }
-	// }
-	for (int i = 0; i < data.amountData; i++) {
-		Serial.println(data.values[i]);
-	}
-	Serial.println((String) "time sent: " + data.timestamp);
-	Serial.println((String) "Send status: " + success);
-	Serial.println();
-	Serial.println("done");
-	Serial.flush();
-	return success;
+ClientDataPackage* Message ::get_client_data_package(){
+	return &data;
 }
 
 Message ::Message()
 {
 	// check for existing host mac address, use broadcast otherwise
-	get_host_mac(recipient);
 
 	data.amountData = 0;
 	data.timestamp = esptime::rtc.getMillis(); // I am assuming we are not sending data from Unix Epoch
@@ -43,5 +25,4 @@ Message ::Message(ClientDataPackage old_data)
 {
 	data = old_data;
 	// memcpy(&data, &old_data, sizeof(data));
-	get_host_mac(recipient);
 }
\ No newline at end of file
diff --git a/client/client/lib/espnow/src/Message.hpp b/client/client/lib/espnow/src/Message.hpp
index ee00f7f..fe0a8f5 100644
--- a/client/client/lib/espnow/src/Message.hpp
+++ b/client/client/lib/espnow/src/Message.hpp
@@ -1,7 +1,6 @@
 #pragma once
 
 #include "ClientDataPackage.hpp"
-#include "ESPNow.hpp"
 #include "Time.hpp"
 #include <Arduino.h>
 #include <ESP32Time.h>
@@ -14,9 +13,8 @@ class Message {
 	Message();
 	Message(ClientDataPackage old_data);
 	void add_data(float value, int identifier);
-	esp_err_t send();
+	ClientDataPackage* get_client_data_package();
 
   private:
 	ClientDataPackage data;
-	uint8_t recipient[6];
 };
\ No newline at end of file
-- 
GitLab