Skip to content
Snippets Groups Projects
Commit e42a15df authored by Zoe Pfister's avatar Zoe Pfister :speech_balloon:
Browse files

WIP: Move more functions out of main

parent 0fe20b2b
No related branches found
No related tags found
3 merge requests!39Merge Develop into Main,!25Minor additions to host,!24Refactor of Host ESP32
......@@ -179,4 +179,51 @@ String getMacAddressAsString(const uint8_t *mac) {
}
esp_log_write(ESP_LOG_DEBUG, TAG_ESPNOW, "MAC: %s\n", macAddress.c_str());
return macAddress;
}
String documentToLineProtocolString(const DynamicJsonDocument &doc) {
String measurementType = doc["measurementType"].as<String>();
String sensorName = doc["sensorName"].as<String>();
String timestamp = doc["timestamp"].as<String>();
String protocol = doc["protocol"].as<String>();
String value = doc["value"].as<String>();
String channel = doc["channel"].as<String>();
String clientMac = doc["clientMac"].as<String>();
String lineData = sensorName + ",clientMac=" + clientMac + ",protocol=" + protocol + ",channel=" + channel + " "
+ measurementType + "=" + value + " " + timestamp;
return lineData;
}
DynamicJsonDocument parseReceivedJsonData(char *data) {
DynamicJsonDocument doc(250);
auto error = deserializeJson(doc, data);
if (error) {
esp_log_write(ESP_LOG_ERROR, TAG_ESPNOW, "Error while parsing json: %s\n", error.c_str());
// TODO error handling
}
return doc;
}
String documentToServerReadableString(const DynamicJsonDocument &doc) {
StaticJsonDocument<1024> serverDoc;
String hostMacAddressString = WiFi.macAddress();
hostMacAddressString.replace(":", "");
hostMacAddressString.toLowerCase();
serverDoc["host"] = hostMacAddressString;
serverDoc["client"] = doc["clientMac"].as<String>();
serverDoc["sensorProtocol"] = doc["protocol"].as<String>();
serverDoc["protocolAddress"] = doc["channel"].as<String>();
serverDoc["hardwareName"] = doc["sensorName"].as<String>();
// each value is a element in the readigs array
JsonArray readings = serverDoc.createNestedArray("readings");
JsonObject reading = readings.createNestedObject();
reading["name"] = doc["measurementType"].as<String>();
reading["value"] = doc["value"].as<float>();
serverDoc["time"] = doc["timestamp"].as<uint32_t>();
String serverString;
serializeJson(serverDoc, serverString);
esp_log_write(ESP_LOG_DEBUG, TAG_ESPNOW, "Server readable data: %s\n", serverString.c_str());
return serverString;
}
\ No newline at end of file
......@@ -5,6 +5,7 @@
#ifndef HOST_CENTRAL_MAST_UTILITIES_H
#define HOST_CENTRAL_MAST_UTILITIES_H
#include "ArduinoJson.h"
#include "SD.h"
#include "SDCardException.h"
#include "SDSetupException.h"
......@@ -12,6 +13,7 @@
#include <Definitions.h>
#include <WString.h>
#include <list>
#include "WiFi.h"
File openDirectory(const String &dirname);
std::list<String> getFilesInDirectory(const String &dirname);
......@@ -24,4 +26,8 @@ void setupSDCard(int MISO, int MOSI, int SCLK, int CS);
void saveStringToSDCard(const std::string &dataString);
void turnOffLEDs();
String getMacAddressAsString(const uint8_t *mac);
String documentToLineProtocolString(const DynamicJsonDocument &doc);
DynamicJsonDocument parseReceivedJsonData(char *data);
String documentToServerReadableString(const DynamicJsonDocument &doc);
#endif // HOST_CENTRAL_MAST_UTILITIES_H
......@@ -9,6 +9,7 @@
#include "MessageType.h"
#include "SDCardLogger.h"
#include "SPI.h"
#include "Utilities.h"
#include <ArduinoJson.h>
#include <Definitions.h>
#include <ESP32Time.h>
......@@ -20,6 +21,7 @@
#include <queue>
#include <sys/unistd.h>
// TODO: TimeManager should handle this or rename TimeManager to NTPManager
ESP32Time rtc;
#define TINY_GSM_RX_BUFFER 1024 // Set RX buffer to 1Kb
......@@ -54,42 +56,6 @@ void on_data_sent(const uint8_t *mac_addr, esp_now_send_status_t status) {
// go to sleep
}
String getMacAddressAsString(const uint8_t *mac);
DynamicJsonDocument parseReceivedJsonData(char *data);
void saveStringToSDCard(const std::string &dataString);
String documentToLineProtocolString(const DynamicJsonDocument &doc);
void turnOffLEDs();
void setupSDCard();
String documentToServerReadableString(const DynamicJsonDocument &doc) {
StaticJsonDocument<1024> serverDoc;
String hostMacAddressString = WiFi.macAddress();
hostMacAddressString.replace(":", "");
hostMacAddressString.toLowerCase();
serverDoc["host"] = hostMacAddressString;
serverDoc["client"] = doc["clientMac"].as<String>();
serverDoc["sensorProtocol"] = doc["protocol"].as<String>();
serverDoc["protocolAddress"] = doc["channel"].as<String>();
serverDoc["hardwareName"] = doc["sensorName"].as<String>();
// each value is a element in the readigs array
JsonArray readings = serverDoc.createNestedArray("readings");
JsonObject reading = readings.createNestedObject();
reading["name"] = doc["measurementType"].as<String>();
reading["value"] = doc["value"].as<float>();
serverDoc["time"] = doc["timestamp"].as<uint32_t>();
String serverString;
serializeJson(serverDoc, serverString);
esp_log_write(ESP_LOG_DEBUG, TAG_ESPNOW, "Server readable data: %s\n", serverString.c_str());
return serverString;
}
void on_data_recv(const uint8_t *mac, const uint8_t *incomingData, int len) {
esp_log_write(ESP_LOG_INFO, TAG_ESPNOW, "Message recieved\n");
// copy received data to a char array
......@@ -141,28 +107,8 @@ void on_data_recv(const uint8_t *mac, const uint8_t *incomingData, int len) {
esp_log_write(ESP_LOG_DEBUG, TAG_ESPNOW, (success == ESP_OK) ? "Response sent\n" : "Failed to respond\n");
}
String documentToLineProtocolString(const DynamicJsonDocument &doc) {
String measurementType = doc["measurementType"].as<String>();
String sensorName = doc["sensorName"].as<String>();
String timestamp = doc["timestamp"].as<String>();
String protocol = doc["protocol"].as<String>();
String value = doc["value"].as<String>();
String channel = doc["channel"].as<String>();
String clientMac = doc["clientMac"].as<String>();
String lineData = sensorName + ",clientMac=" + clientMac + ",protocol=" + protocol + ",channel=" + channel + " "
+ measurementType + "=" + value + " " + timestamp;
return lineData;
}
DynamicJsonDocument parseReceivedJsonData(char *data) {
DynamicJsonDocument doc(250);
auto error = deserializeJson(doc, data);
if (error) {
esp_log_write(ESP_LOG_ERROR, TAG_ESPNOW, "Error while parsing json: %s\n", error.f_str());
// TODO error handling
}
return doc;
[[noreturn]] void esp_loop(){
while (true){}
}
[[noreturn]] void ESPNOWReceiveTask(void *parameter) {
......@@ -198,15 +144,14 @@ DynamicJsonDocument parseReceivedJsonData(char *data) {
esp_log_write(ESP_LOG_DEBUG, TAG_ESPNOW, "Mac announced!");
}
while (true) {
}
esp_loop();
}
void setup() {
// Set console baud rate
Serial.begin(115200);
delay(10);
setupSDCard();
setupSDCard(SD_MISO, SD_MOSI, SD_SCLK, SD_CS);
SDCardLogger::printDebugToSerial(true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment