add flatbuffer definitions

This commit is contained in:
superkor
2026-01-14 23:43:10 -05:00
parent ace2c5a544
commit f7a9e487b6
10 changed files with 667 additions and 96 deletions

View File

@@ -1,4 +1,4 @@
idf_component_register(SRCS "MovementManager.cpp" "MovementManager.cpp" "TopologyManager.cpp"
PRIV_REQUIRES esp_event nvs_flash
PRIV_REQUIRES esp_event nvs_flash rmt dataLink flatbuffers
# REQUIRES esp_timer
INCLUDE_DIRS "include")

View File

@@ -1,4 +1,4 @@
#include "MovementBlobs.h"
#include "MovementSetManager.h"
#include "esp_log.h"
#ifdef MOVEMENTS
@@ -15,4 +15,32 @@ MovementSetManager::~MovementSetManager(){
nvs_close(handle);
}
// esp_err_t MovementSetManager::add_movement(struct MovementEntry& entry, uint8_t& index){
// return ESP_OK;
// }
// esp_err_t MovementSetManager::remove_movement(uint8_t index){
// return ESP_OK;
// }
// esp_err_t MovementSetManager::update_movement(struct MovementEntry& entry, uint8_t index){
// return ESP_OK;
// }
// esp_err_t MovementSetManager::get_curr_movement_set(struct MovementSet& set){
// return ESP_OK;
// }
// esp_err_t MovementSetManager::verify_movement_set(){
// return ESP_OK;
// }
// esp_err_t MovementSetManager::get_nvs_movement_set(struct MovementSet& set){
// return ESP_OK;
// }
// esp_err_t MovementSetManager::write_nvs_movement_set(){
// return ESP_OK;
// }
#endif //MOVEMENTS

View File

@@ -1,4 +1,4 @@
#include "TopologyBlobs.h"
#include "TopologyManager.h"
#include "esp_log.h"
#ifdef MOVEMENTS
@@ -9,10 +9,91 @@ TopologyManager::TopologyManager(){
ESP_LOGE(MOVEMENTS_DEBUG_TAG, "Failed to open nvs for %s", MOVEMENTS_NVS_NAMESPACE);
return;
}
ready = true;
};
TopologyManager::~TopologyManager(){
nvs_close(handle);
}
// esp_err_t TopologyManager::add_board_to_topology(struct NeighbourBlob& blob){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// if (blob.num_connections > MAX_CHANNELS || blob.curr_board_id == PC_ADDR || blob.curr_board_id == BROADCAST_ADDR){
// return ESP_ERR_INVALID_ARG;
// }
// for (uint8_t i = 0; i < blob.num_connections; i++){
// ChannelBoardConn connection = blob.neighbour_connections[i];
// if (connection.channel > MAX_CHANNELS || connection.board_id == PC_ADDR
// || connection == BROADCAST_ADDR || connection.board_id == blob.curr_board_id){
// return ESP_ERR_INVALID_ARG;
// }
// }
// topology[blob.curr_board_id] = blob;
// return ESP_OK;
// }
// esp_err_t TopologyManager::remove_board_from_topology(uint16_t board_id){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// if (topology.find(board_id) == topology.end()){
// return ESP_ERR_NOT_FOUND;
// }
// topology.erase(board_id);
// return ESP_OK;
// }
// esp_err_t TopologyManager::get_board_in_topology(struct NeighbourBlob& blob){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// if (topology.find(board_id) == topology.end()){
// return ESP_ERR_NOT_FOUND;
// }
// blob = topology.find(board_id);
// return ESP_OK;
// }
// esp_err_t TopologyManager::verify_topology(){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// return ESP_OK;
// }
// esp_err_t TopologyManager::get_curr_topology(struct Topology& topology){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// return ESP_OK;
// }
// esp_err_t TopologyManager::write_nvs_topology(){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// return ESP_OK;
// }
// esp_err_t TopologyManager::get_nvs_topology(struct Topology& topology){
// if (!ready){
// return ESP_ERR_INVALID_STATE;
// }
// return ESP_OK;
// }
#endif //MOVEMENTS

View File

@@ -1,50 +0,0 @@
#include "MovementManager.h"
#include "nvs_flash.h"
#include "TopologyBlobs.h"
#include <memory>
#include <vector>
#ifdef MOVEMENTS
#pragma once
typedef struct _condition_blob {
uint16_t value;
uint8_t cond;
uint8_t moduleType;
uint8_t in_use;
} ConditionBlob;
typedef struct _movement_entry {
uint16_t board_id;
uint8_t moduleType;
uint16_t value_action;
ConditionBlob condition;
uint8_t ack;
uint16_t ack_ttl_ms;
uint16_t post_delay_ms;
} MovementEntry;
typedef struct _movement {
uint8_t num_movements;
MovementEntry movements[];
} MovementSet;
class MovementSetManager {
public:
MovementSetManager();
~MovementSetManager();
esp_err_t add_movement(MovementEntry& entry, uint8_t& index);
esp_err_t remove_movement(uint8_t index);
esp_err_t update_movement(MovementEntry& entry, uint8_t index);
esp_err_t get_curr_movement_set(MovementSet& set);
esp_err_t verify_movement_set();
esp_err_t get_nvs_movement_set(MovementSet& set);
esp_err_t write_nvs_movement_set();
private:
std::unique_ptr<TopologyManager> topology_manager;
std::vector<MovementEntry> movements;
nvs_handle_t handle;
};
#endif //MOVEMENTS

View File

@@ -0,0 +1,28 @@
#include "MovementManager.h"
#include "nvs_flash.h"
#include "TopologyManager.h"
#include <memory>
#include <vector>
#ifdef MOVEMENTS
#pragma once
class MovementSetManager {
public:
MovementSetManager();
~MovementSetManager();
// esp_err_t add_movement(struct MovementEntry& entry, uint8_t& index);
// esp_err_t remove_movement(uint8_t index);
// esp_err_t update_movement(struct MovementEntry& entry, uint8_t index);
// esp_err_t get_curr_movement_set(struct MovementSet& set);
// esp_err_t verify_movement_set();
// esp_err_t get_nvs_movement_set(struct MovementSet& set);
// esp_err_t write_nvs_movement_set();
private:
std::unique_ptr<TopologyManager> topology_manager;
std::vector<struct MovementEntry> movements;
nvs_handle_t handle;
};
#endif //MOVEMENTS

View File

@@ -1,42 +0,0 @@
#include "MovementManager.h"
#include "nvs_flash.h"
#include <unordered_map>
#ifdef MOVEMENTS
#pragma once
typedef struct _channel_board_conn {
uint8_t channel;
uint16_t board_id;
} ChannelBoardConn;
typedef struct _neighbour_blob {
uint16_t curr_board_id;
uint8_t num_connections;
ChannelBoardConn neighbour_connections[];
} NeighbourBlob;
typedef struct _topology {
uint16_t num_boards;
NeighbourBlob boards[];
} Topology;
class TopologyManager {
public:
TopologyManager();
~TopologyManager();
esp_err_t add_board_to_topology(NeighbourBlob blob);
esp_err_t remove_board_from_topology(uint16_t board_id);
esp_err_t update_board_in_topology(NeighbourBlob blob);
esp_err_t get_board_in_topology(NeighbourBlob& blob);
esp_err_t verify_topology();
esp_err_t get_curr_topology(Topology& topology);
esp_err_t write_nvs_topology();
esp_err_t get_nvs_topology(Topology& topology);
private:
std::unordered_map<uint16_t, NeighbourBlob> topology;
nvs_handle_t handle;
};
#endif //MOVEMENTS

View File

@@ -0,0 +1,31 @@
#include "MovementManager.h"
#include "nvs_flash.h"
#include <unordered_map>
// move these to constants header file?
#include "RMTManager.h"
#include "DataLinkManager.h"
#include "Frames.h"
#ifdef MOVEMENTS
#pragma once
class TopologyManager {
public:
TopologyManager();
~TopologyManager();
// esp_err_t add_board_to_topology(struct NeighbourBlob& blob);
// esp_err_t remove_board_from_topology(uint16_t board_id);
// esp_err_t get_board_in_topology(struct NeighbourBlob& blob);
// esp_err_t verify_topology();
// esp_err_t get_curr_topology(struct Topology& topology);
// esp_err_t write_nvs_topology();
// esp_err_t get_nvs_topology(struct Topology& topology);
private:
// std::unordered_map<uint16_t, struct NeighbourBlob> topology;
nvs_handle_t handle;
bool ready = false;
};
#endif //MOVEMENTS