From 092c6cac66524af13ec2d5bf6a98d8b0aee63c76 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Wed, 11 Oct 2023 06:17:05 -0500 Subject: [PATCH] Convert from inline to static class methods (#2883) --- src/mesh/MeshService.cpp | 2 +- src/mesh/NodeDB.cpp | 4 +-- src/mesh/PhoneAPI.cpp | 2 +- src/mesh/TypeConversions.cpp | 55 +++++++++++++++++++++++++++++++ src/mesh/TypeConversions.h | 59 ++++++---------------------------- src/modules/PositionModule.cpp | 2 +- 6 files changed, 69 insertions(+), 55 deletions(-) create mode 100644 src/mesh/TypeConversions.cpp diff --git a/src/mesh/MeshService.cpp b/src/mesh/MeshService.cpp index 9d2ecdcee..038861937 100644 --- a/src/mesh/MeshService.cpp +++ b/src/mesh/MeshService.cpp @@ -335,7 +335,7 @@ int MeshService::onGPSChanged(const meshtastic::GPSStatus *newStatus) // Used fixed position if configured regalrdless of GPS lock if (config.position.fixed_position) { LOG_WARN("Using fixed position\n"); - pos = ConvertToPosition(node->position); + pos = TypeConversions::ConvertToPosition(node->position); } // Add a fresh timestamp diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 3b6168f27..09366facb 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -688,7 +688,7 @@ void NodeDB::updatePosition(uint32_t nodeId, const meshtastic_Position &p, RxSou p.longitude_i, p.altitude); setLocalPosition(p); - info->position = ConvertToPositionLite(p); + info->position = TypeConversions::ConvertToPositionLite(p); } else if ((p.time > 0) && !p.latitude_i && !p.longitude_i && !p.timestamp && !p.location_source) { // FIXME SPECIAL TIME SETTING PACKET FROM EUD TO RADIO // (stop-gap fix for issue #900) @@ -706,7 +706,7 @@ void NodeDB::updatePosition(uint32_t nodeId, const meshtastic_Position &p, RxSou uint32_t tmp_time = info->position.time; // Next, update atomically - info->position = ConvertToPositionLite(p); + info->position = TypeConversions::ConvertToPositionLite(p); // Last, restore any fields that may have been overwritten if (!info->position.time) diff --git a/src/mesh/PhoneAPI.cpp b/src/mesh/PhoneAPI.cpp index 672c6871e..5abcc8a31 100644 --- a/src/mesh/PhoneAPI.cpp +++ b/src/mesh/PhoneAPI.cpp @@ -405,7 +405,7 @@ bool PhoneAPI::available() if (nodeInfoForPhone.num == 0) { auto nextNode = nodeDB.readNextMeshNode(readIndex); if (nextNode) { - nodeInfoForPhone = ConvertToNodeInfo(nextNode); + nodeInfoForPhone = TypeConversions::ConvertToNodeInfo(nextNode); } } return true; // Always say we have something, because we might need to advance our state machine diff --git a/src/mesh/TypeConversions.cpp b/src/mesh/TypeConversions.cpp new file mode 100644 index 000000000..4e0fdd385 --- /dev/null +++ b/src/mesh/TypeConversions.cpp @@ -0,0 +1,55 @@ +#include "TypeConversions.h" +#include "mesh/generated/meshtastic/deviceonly.pb.h" +#include "mesh/generated/meshtastic/mesh.pb.h" + +meshtastic_NodeInfo TypeConversions::ConvertToNodeInfo(const meshtastic_NodeInfoLite *lite) +{ + meshtastic_NodeInfo info = meshtastic_NodeInfo_init_default; + + info.num = lite->num; + info.snr = lite->snr; + info.last_heard = lite->last_heard; + info.channel = lite->channel; + + if (lite->has_position) { + info.has_position = true; + info.position.latitude_i = lite->position.latitude_i; + info.position.longitude_i = lite->position.longitude_i; + info.position.altitude = lite->position.altitude; + info.position.location_source = lite->position.location_source; + info.position.time = lite->position.time; + } + if (lite->has_user) { + info.has_user = true; + info.user = lite->user; + } + if (lite->has_device_metrics) { + info.has_device_metrics = true; + info.device_metrics = lite->device_metrics; + } + return info; +} + +meshtastic_PositionLite TypeConversions::ConvertToPositionLite(meshtastic_Position position) +{ + meshtastic_PositionLite lite = meshtastic_PositionLite_init_default; + lite.latitude_i = position.latitude_i; + lite.longitude_i = position.longitude_i; + lite.altitude = position.altitude; + lite.location_source = position.location_source; + lite.time = position.time; + + return lite; +} + +meshtastic_Position TypeConversions::ConvertToPosition(meshtastic_PositionLite lite) +{ + meshtastic_Position position = meshtastic_Position_init_default; + position.latitude_i = lite.latitude_i; + position.longitude_i = lite.longitude_i; + position.altitude = lite.altitude; + position.location_source = lite.location_source; + position.time = lite.time; + + return position; +} \ No newline at end of file diff --git a/src/mesh/TypeConversions.h b/src/mesh/TypeConversions.h index bfc87102b..ffc3c12a7 100644 --- a/src/mesh/TypeConversions.h +++ b/src/mesh/TypeConversions.h @@ -1,54 +1,13 @@ #include "mesh/generated/meshtastic/deviceonly.pb.h" #include "mesh/generated/meshtastic/mesh.pb.h" -inline static meshtastic_NodeInfo ConvertToNodeInfo(const meshtastic_NodeInfoLite *lite) +#pragma once +#include "NodeDB.h" + +class TypeConversions { - meshtastic_NodeInfo info = meshtastic_NodeInfo_init_default; - - info.num = lite->num; - info.snr = lite->snr; - info.last_heard = lite->last_heard; - info.channel = lite->channel; - - if (lite->has_position) { - info.has_position = true; - info.position.latitude_i = lite->position.latitude_i; - info.position.longitude_i = lite->position.longitude_i; - info.position.altitude = lite->position.altitude; - info.position.location_source = lite->position.location_source; - info.position.time = lite->position.time; - } - if (lite->has_user) { - info.has_user = true; - info.user = lite->user; - } - if (lite->has_device_metrics) { - info.has_device_metrics = true; - info.device_metrics = lite->device_metrics; - } - return info; -} - -inline static meshtastic_PositionLite ConvertToPositionLite(meshtastic_Position position) -{ - meshtastic_PositionLite lite = meshtastic_PositionLite_init_default; - lite.latitude_i = position.latitude_i; - lite.longitude_i = position.longitude_i; - lite.altitude = position.altitude; - lite.location_source = position.location_source; - lite.time = position.time; - - return lite; -} - -inline static meshtastic_Position ConvertToPosition(meshtastic_PositionLite lite) -{ - meshtastic_Position position = meshtastic_Position_init_default; - position.latitude_i = lite.latitude_i; - position.longitude_i = lite.longitude_i; - position.altitude = lite.altitude; - position.location_source = lite.location_source; - position.time = lite.time; - - return position; -} \ No newline at end of file + public: + static meshtastic_NodeInfo ConvertToNodeInfo(const meshtastic_NodeInfoLite *lite); + static meshtastic_PositionLite ConvertToPositionLite(meshtastic_Position position); + static meshtastic_Position ConvertToPosition(meshtastic_PositionLite lite); +}; diff --git a/src/modules/PositionModule.cpp b/src/modules/PositionModule.cpp index b40c8ed02..69cd4848e 100644 --- a/src/modules/PositionModule.cpp +++ b/src/modules/PositionModule.cpp @@ -101,7 +101,7 @@ meshtastic_MeshPacket *PositionModule::allocReply() meshtastic_Position p = meshtastic_Position_init_default; // Start with an empty structure // if localPosition is totally empty, put our last saved position (lite) in there if (localPosition.latitude_i == 0 && localPosition.longitude_i == 0) { - nodeDB.setLocalPosition(ConvertToPosition(node->position)); + nodeDB.setLocalPosition(TypeConversions::ConvertToPosition(node->position)); } localPosition.seq_number++;