From d6811b9e359218758e7338dc4e99afa4edd6a028 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 19 Aug 2022 14:48:24 -0500 Subject: [PATCH] Added waypoint module routing --- src/modules/Modules.cpp | 4 +++- src/modules/WaypointModule.cpp | 17 +++++++++++++++++ src/modules/WaypointModule.h | 25 +++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/modules/WaypointModule.cpp create mode 100644 src/modules/WaypointModule.h diff --git a/src/modules/Modules.cpp b/src/modules/Modules.cpp index 8fc7964ea..ee38bf6a0 100644 --- a/src/modules/Modules.cpp +++ b/src/modules/Modules.cpp @@ -13,8 +13,9 @@ #include "modules/ReplyModule.h" #include "modules/RoutingModule.h" #include "modules/TextMessageModule.h" -#include "modules/Telemetry/DeviceTelemetry.h" +#include "modules/WaypointModule.h" #if HAS_TELEMETRY +#include "modules/Telemetry/DeviceTelemetry.h" #include "modules/Telemetry/EnvironmentTelemetry.h" #endif #ifdef ARCH_ESP32 @@ -34,6 +35,7 @@ void setupModules() adminModule = new AdminModule(); nodeInfoModule = new NodeInfoModule(); positionModule = new PositionModule(); + waypointModule = new WaypointModule(); textMessageModule = new TextMessageModule(); // Note: if the rest of meshtastic doesn't need to explicitly use your module, you do not need to assign the instance diff --git a/src/modules/WaypointModule.cpp b/src/modules/WaypointModule.cpp new file mode 100644 index 000000000..fbc519d58 --- /dev/null +++ b/src/modules/WaypointModule.cpp @@ -0,0 +1,17 @@ +#include "configuration.h" +#include "WaypointModule.h" +#include "NodeDB.h" +#include "PowerFSM.h" + +WaypointModule *waypointModule; + +ProcessMessage WaypointModule::handleReceived(const MeshPacket &mp) +{ + auto &p = mp.decoded; + DEBUG_MSG("Received waypoint msg from=0x%0x, id=0x%x, msg=%.*s\n", mp.from, mp.id, p.payload.size, p.payload.bytes); + + + notifyObservers(&mp); + + return ProcessMessage::CONTINUE; // Let others look at this message also if they want +} diff --git a/src/modules/WaypointModule.h b/src/modules/WaypointModule.h new file mode 100644 index 000000000..1c940fd35 --- /dev/null +++ b/src/modules/WaypointModule.h @@ -0,0 +1,25 @@ +#pragma once +#include "SinglePortModule.h" +#include "Observer.h" + +/** + * Waypoint message handling for meshtastic + */ +class WaypointModule : public SinglePortModule, public Observable +{ + public: + /** Constructor + * name is for debugging output + */ + WaypointModule() : SinglePortModule("waypoint", PortNum_WAYPOINT_APP) {} + + protected: + + /** Called to handle a particular incoming message + + @return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered for it + */ + virtual ProcessMessage handleReceived(const MeshPacket &mp) override; +}; + +extern WaypointModule *waypointModule;