From 389a8f140103e635d0415bc3036cdcabb13574eb Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sun, 20 Feb 2022 00:04:32 -0800 Subject: [PATCH] Add ourGroupInfo to NodeDB --- src/mesh/NodeDB.cpp | 1 + src/mesh/NodeDB.h | 1 + src/mesh/generated/deviceonly.pb.h | 11 ++++++++--- src/plugins/GroupPlugin.cpp | 14 ++++++++++---- src/plugins/GroupPlugin.h | 2 +- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 0587b9457..9bdae9011 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -34,6 +34,7 @@ NodeDB nodeDB; // we have plenty of ram so statically alloc this tempbuf (for now) EXT_RAM_ATTR DeviceState devicestate; MyNodeInfo &myNodeInfo = devicestate.my_node; +GroupInfo &ourGroupInfo = devicestate.group_info; RadioConfig radioConfig; ChannelFile channelFile; diff --git a/src/mesh/NodeDB.h b/src/mesh/NodeDB.h index 86ab874e8..f5937b3fb 100644 --- a/src/mesh/NodeDB.h +++ b/src/mesh/NodeDB.h @@ -11,6 +11,7 @@ extern DeviceState devicestate; extern ChannelFile channelFile; extern MyNodeInfo &myNodeInfo; +extern GroupInfo &ourGroupInfo; extern RadioConfig radioConfig; extern User &owner; diff --git a/src/mesh/generated/deviceonly.pb.h b/src/mesh/generated/deviceonly.pb.h index 27c99c6e8..14453a9ad 100644 --- a/src/mesh/generated/deviceonly.pb.h +++ b/src/mesh/generated/deviceonly.pb.h @@ -27,6 +27,8 @@ typedef struct _DeviceState { NodeInfo node_db[32]; pb_size_t receive_queue_count; MeshPacket receive_queue[1]; + bool has_group_info; + GroupInfo group_info; bool has_rx_text_message; MeshPacket rx_text_message; uint32_t version; @@ -45,9 +47,9 @@ extern "C" { #endif /* Initializer values for message structs */ -#define DeviceState_init_default {false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, MeshPacket_init_default, 0, 0, 0, "", "", "", "", ""} +#define DeviceState_init_default {false, MyNodeInfo_init_default, false, User_init_default, 0, {NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default, NodeInfo_init_default}, 0, {MeshPacket_init_default}, false, GroupInfo_init_default, false, MeshPacket_init_default, 0, 0, 0, "", "", "", "", ""} #define ChannelFile_init_default {0, {Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default, Channel_init_default}} -#define DeviceState_init_zero {false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, MeshPacket_init_zero, 0, 0, 0, "", "", "", "", ""} +#define DeviceState_init_zero {false, MyNodeInfo_init_zero, false, User_init_zero, 0, {NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero, NodeInfo_init_zero}, 0, {MeshPacket_init_zero}, false, GroupInfo_init_zero, false, MeshPacket_init_zero, 0, 0, 0, "", "", "", "", ""} #define ChannelFile_init_zero {0, {Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero, Channel_init_zero}} /* Field tags (for use in manual encoding/decoding) */ @@ -56,6 +58,7 @@ extern "C" { #define DeviceState_owner_tag 3 #define DeviceState_node_db_tag 4 #define DeviceState_receive_queue_tag 5 +#define DeviceState_group_info_tag 6 #define DeviceState_rx_text_message_tag 7 #define DeviceState_version_tag 8 #define DeviceState_no_save_tag 9 @@ -72,6 +75,7 @@ X(a, STATIC, OPTIONAL, MESSAGE, my_node, 2) \ X(a, STATIC, OPTIONAL, MESSAGE, owner, 3) \ X(a, STATIC, REPEATED, MESSAGE, node_db, 4) \ X(a, STATIC, REPEATED, MESSAGE, receive_queue, 5) \ +X(a, STATIC, OPTIONAL, MESSAGE, group_info, 6) \ X(a, STATIC, OPTIONAL, MESSAGE, rx_text_message, 7) \ X(a, STATIC, SINGULAR, UINT32, version, 8) \ X(a, STATIC, SINGULAR, BOOL, no_save, 9) \ @@ -87,6 +91,7 @@ X(a, STATIC, SINGULAR, STRING, canned_message_plugin_message_part5, 17) #define DeviceState_owner_MSGTYPE User #define DeviceState_node_db_MSGTYPE NodeInfo #define DeviceState_receive_queue_MSGTYPE MeshPacket +#define DeviceState_group_info_MSGTYPE GroupInfo #define DeviceState_rx_text_message_MSGTYPE MeshPacket #define ChannelFile_FIELDLIST(X, a) \ @@ -103,7 +108,7 @@ extern const pb_msgdesc_t ChannelFile_msg; #define ChannelFile_fields &ChannelFile_msg /* Maximum encoded size of messages (where known) */ -#define DeviceState_size 10991 +#define DeviceState_size 11174 #define ChannelFile_size 832 #ifdef __cplusplus diff --git a/src/plugins/GroupPlugin.cpp b/src/plugins/GroupPlugin.cpp index 306d739a2..3e3f5df37 100644 --- a/src/plugins/GroupPlugin.cpp +++ b/src/plugins/GroupPlugin.cpp @@ -2,9 +2,13 @@ #include "MeshService.h" #include "Router.h" #include "configuration.h" +#include "NodeDB.h" + GroupPlugin *groupPlugin; + + GroupPlugin::GroupPlugin() : ProtobufPlugin("group", PortNum_GROUP_APP, GroupInfo_fields), concurrency::OSThread("GroupPlugin") { @@ -14,7 +18,7 @@ GroupPlugin::GroupPlugin() bool GroupPlugin::handleReceivedProtobuf(const MeshPacket &mp, GroupInfo *pptr) { - auto p = *pptr; + //auto p = *pptr; @@ -23,15 +27,17 @@ bool GroupPlugin::handleReceivedProtobuf(const MeshPacket &mp, GroupInfo *pptr) MeshPacket *GroupPlugin::allocReply() { - return allocDataProtobuf(p); + GroupInfo gi = GroupInfo_init_default; // Start with an empty structure + + return allocDataProtobuf(gi); } int32_t GroupPlugin::runOnce() { NodeInfo *node = nodeDB.getNode(nodeDB.getNodeNum()); - - + + //ourGroupInfo.group[0][1] = "a"; return 5000; // to save power only wake for our callback occasionally } diff --git a/src/plugins/GroupPlugin.h b/src/plugins/GroupPlugin.h index 6b73fede1..f456234b0 100644 --- a/src/plugins/GroupPlugin.h +++ b/src/plugins/GroupPlugin.h @@ -6,7 +6,7 @@ /** * Position plugin for sending/receiving positions into the mesh */ -class GroupPlugin : private concurrency::OSThread, public ProtobufPlugin +class GroupPlugin : public ProtobufPlugin, private concurrency::OSThread { public: GroupPlugin();