aboutsummaryrefslogtreecommitdiff
path: root/confui/mesh_connector.h
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-12-02 14:52:55 +0100
committerlonkaars <loek@pipeframe.xyz>2022-12-02 14:56:06 +0100
commitbb7ec2144fecd1c7a41d14cc42f144c9923d70dc (patch)
treefb54a2dd582be7c0b84fcb1d9e88a2e405de7f9c /confui/mesh_connector.h
parent2f5d58c7eae101c3803a63ca11315aec5cd6e1f0 (diff)
dummy mesh_connector implemented
Diffstat (limited to 'confui/mesh_connector.h')
-rw-r--r--confui/mesh_connector.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/confui/mesh_connector.h b/confui/mesh_connector.h
new file mode 100644
index 0000000..070a83c
--- /dev/null
+++ b/confui/mesh_connector.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include <stdint.h>
+#include <vector>
+#include <map>
+
+typedef uint32_t cd_link_t;
+typedef uint8_t cd_mac_addr_t[6];
+
+using std::size_t;
+using std::vector;
+using std::map;
+
+enum cd_e_automation_type {
+ CD_AUTOMATION_TYPE_TOGGLE,
+ CD_AUTOMATION_TYPE_TURN_ON,
+ CD_AUTOMATION_TYPE_TURN_OFF,
+};
+
+typedef struct {
+ cd_mac_addr_t address;
+ size_t name_len;
+ char* name;
+ bool light_on;
+ bool provisioned;
+} cd_s_node;
+
+typedef struct {
+ cd_e_automation_type type;
+ cd_s_node button;
+ cd_s_node light;
+} cd_s_automation;
+
+class CDMeshConnector {
+private:
+ vector<cd_s_node> _nodes;
+ map<cd_link_t, cd_s_automation> _links;
+public:
+ CDMeshConnector();
+ virtual ~CDMeshConnector();
+ virtual void refresh_nodes_sync();
+ virtual void refresh_config_sync();
+ virtual vector<cd_s_node> get_nodes();
+ virtual vector<cd_s_automation> get_config();
+ virtual cd_link_t set_link(cd_mac_addr_t button, cd_mac_addr_t light);
+ virtual void remove_link(cd_link_t link_handle);
+ virtual cd_s_node* get_node_by_id(cd_mac_addr_t address);
+ virtual void set_node(cd_s_node* node_ptr, bool light_status);
+ virtual void node_join_network(cd_s_node* node_ptr);
+ virtual void node_remove_network(cd_s_node* node_ptr);
+};