PoC query manager for better flasher logging

This commit is contained in:
Lorow 2024-06-02 15:36:39 +02:00
parent 47b52417d0
commit 635c6b04de
5 changed files with 74 additions and 3 deletions

View File

@ -0,0 +1,8 @@
#include "QueryManager.hpp"
std::string QueryManager::formatMessage(QueryPayload* messagePayload) {
return Helpers::format_string(
"{\"action\": \"%s\", \"status\": %d, \"additional_info\": \"%s\"}",
queryActionMap.at(messagePayload->action).c_str(), messagePayload->status,
messagePayload->additionalInfo.c_str());
}

View File

@ -0,0 +1,46 @@
#pragma once
#ifndef QUERY_MANAGER_HPP
#define QUERY_MANAGER_HPP
#include <string>
#include <unordered_map>
#include "data/utilities/helpers.hpp"
enum QueryAction {
READY_TO_RECEIVE,
PARSE_COMMANDS,
CONNECT_TO_WIFI,
};
enum QueryStatus {
NONE,
SUCCESS,
ERROR,
};
struct QueryPayload {
QueryAction action;
QueryStatus status;
std::string additionalInfo;
QueryPayload(QueryAction action,
QueryStatus status,
std::string additionalInfo) {
this->action = action;
this->status = status;
this->additionalInfo = additionalInfo;
}
};
class QueryManager {
private:
const std::unordered_map<QueryAction, std::string> queryActionMap = {
{QueryAction::READY_TO_RECEIVE, "ready_to_receive"},
{QueryAction::PARSE_COMMANDS, "parse_commands"},
{QueryAction::CONNECT_TO_WIFI, "connect_to_wifi"},
};
public:
std::string formatMessage(QueryPayload* messagePayload);
};
#endif

View File

@ -1,7 +1,9 @@
#include "SerialManager.hpp"
SerialManager::SerialManager(CommandManager* commandManager)
: commandManager(commandManager) {}
: commandManager(commandManager) {
this->queryManager = new QueryManager();
}
#ifdef ETVR_EYE_TRACKER_USB_API
void SerialManager::send_frame() {
@ -56,6 +58,14 @@ void SerialManager::init() {
if (SERIAL_FLUSH_ENABLED) {
Serial.flush();
}
QueryPayload* setupFinishedMessage =
new QueryPayload(QueryAction::READY_TO_RECEIVE, QueryStatus::NONE, "");
this->snedQuery(setupFinishedMessage);
}
void SerialManager::snedQuery(QueryPayload* messagePayload) {
Serial.println(this->queryManager->formatMessage(messagePayload).c_str());
}
void SerialManager::run() {

View File

@ -7,6 +7,7 @@
#include <USBCDC.h>
#include <esp_camera.h>
#include "data/CommandManager/CommandManager.hpp"
#include "data/QueryManager/QueryManager.hpp"
#include "data/config/project_config.hpp"
const char* const ETVR_HEADER = "\xff\xa0";
@ -16,6 +17,7 @@ class SerialManager {
private:
esp_err_t err = ESP_OK;
CommandManager* commandManager;
QueryManager* queryManager;
#ifdef ETVR_EYE_TRACKER_USB_API
int64_t last_frame = 0;
@ -26,6 +28,7 @@ class SerialManager {
public:
SerialManager(CommandManager* commandManager);
void snedQuery(QueryPayload* messagePayload);
void init();
void run();
};

View File

@ -20,7 +20,11 @@ CameraHandler cameraHandler(deviceConfig);
#endif // SIM_ENABLED
#ifndef ETVR_EYE_TRACKER_USB_API
WiFiHandler wifiHandler(deviceConfig, WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL, ENABLE_ADHOC);
WiFiHandler wifiHandler(deviceConfig,
WIFI_SSID,
WIFI_PASSWORD,
WIFI_CHANNEL,
ENABLE_ADHOC);
MDNSHandler mdnsHandler(deviceConfig);
#ifdef SIM_ENABLED
APIServer apiServer(deviceConfig, wifiStateManager, "/control");
@ -83,7 +87,7 @@ void setup() {
#endif // SIM_ENABLED
deviceConfig.load();
serialManager.init();
serialManager.init();
#ifndef ETVR_EYE_TRACKER_USB_API
etvr_eye_tracker_web_init();