mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-31 19:05:44 +00:00
Trunk check.
This commit is contained in:
parent
dd5483c924
commit
fdd60b93b3
@ -497,7 +497,7 @@ void menuHandler::positionBaseMenu()
|
|||||||
void menuHandler::nodeListMenu()
|
void menuHandler::nodeListMenu()
|
||||||
{
|
{
|
||||||
enum optionsNumbers { Back, Favorite, TraceRoute, Verify, Reset, enumEnd };
|
enum optionsNumbers { Back, Favorite, TraceRoute, Verify, Reset, enumEnd };
|
||||||
static const char *optionsArray[] = {"Back", "Add Favorite", "Trace Route", "Key Verification","Reset NodeDB"};
|
static const char *optionsArray[] = {"Back", "Add Favorite", "Trace Route", "Key Verification", "Reset NodeDB"};
|
||||||
BannerOverlayOptions bannerOptions;
|
BannerOverlayOptions bannerOptions;
|
||||||
bannerOptions.message = "Node Action";
|
bannerOptions.message = "Node Action";
|
||||||
bannerOptions.optionsArrayPtr = optionsArray;
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#include "TraceRouteModule.h"
|
#include "TraceRouteModule.h"
|
||||||
#include "MeshService.h"
|
#include "MeshService.h"
|
||||||
#include "meshUtils.h"
|
|
||||||
#include "mesh/Router.h"
|
|
||||||
#include "graphics/Screen.h"
|
#include "graphics/Screen.h"
|
||||||
#include "graphics/SharedUIDisplay.h"
|
|
||||||
#include "graphics/ScreenFonts.h"
|
#include "graphics/ScreenFonts.h"
|
||||||
|
#include "graphics/SharedUIDisplay.h"
|
||||||
|
#include "mesh/Router.h"
|
||||||
|
#include "meshUtils.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
extern graphics::Screen *screen;
|
extern graphics::Screen *screen;
|
||||||
@ -59,8 +59,8 @@ void TraceRouteModule::alterReceivedProtobuf(meshtastic_MeshPacket &p, meshtasti
|
|||||||
bool hasCompleteRoute = (r->route_count > 0 && r->route_back_count > 0) ||
|
bool hasCompleteRoute = (r->route_count > 0 && r->route_back_count > 0) ||
|
||||||
(containsTargetNode && (r->route_count > 0 || r->route_back_count > 0));
|
(containsTargetNode && (r->route_count > 0 || r->route_back_count > 0));
|
||||||
|
|
||||||
LOG_INFO("TracRoute packet analysis: tracingNode=0x%08x, p.from=0x%08x, p.to=0x%08x, request_id=0x%08x",
|
LOG_INFO("TracRoute packet analysis: tracingNode=0x%08x, p.from=0x%08x, p.to=0x%08x, request_id=0x%08x", tracingNode,
|
||||||
tracingNode, p.from, p.to, incoming.request_id);
|
p.from, p.to, incoming.request_id);
|
||||||
LOG_INFO("TracRoute conditions: isResponseFromTarget=%d, isRequestToUs=%d, containsTargetNode=%d, hasCompleteRoute=%d",
|
LOG_INFO("TracRoute conditions: isResponseFromTarget=%d, isRequestToUs=%d, containsTargetNode=%d, hasCompleteRoute=%d",
|
||||||
isResponseFromTarget, isRequestToUs, containsTargetNode, hasCompleteRoute);
|
isResponseFromTarget, isRequestToUs, containsTargetNode, hasCompleteRoute);
|
||||||
|
|
||||||
@ -83,7 +83,8 @@ void TraceRouteModule::alterReceivedProtobuf(meshtastic_MeshPacket &p, meshtasti
|
|||||||
for (uint8_t i = 0; i < r->route_count; i++) {
|
for (uint8_t i = 0; i < r->route_count; i++) {
|
||||||
result += " > ";
|
result += " > ";
|
||||||
const char *name = getNodeName(r->route[i]);
|
const char *name = getNodeName(r->route[i]);
|
||||||
float snr = (i < r->snr_towards_count && r->snr_towards[i] != INT8_MIN) ? ((float)r->snr_towards[i] / 4.0f) : 0.0f;
|
float snr =
|
||||||
|
(i < r->snr_towards_count && r->snr_towards[i] != INT8_MIN) ? ((float)r->snr_towards[i] / 4.0f) : 0.0f;
|
||||||
result += name;
|
result += name;
|
||||||
if (snr != 0.0f) {
|
if (snr != 0.0f) {
|
||||||
result += "(";
|
result += "(";
|
||||||
@ -296,8 +297,7 @@ meshtastic_MeshPacket *TraceRouteModule::allocReply()
|
|||||||
}
|
}
|
||||||
|
|
||||||
TraceRouteModule::TraceRouteModule()
|
TraceRouteModule::TraceRouteModule()
|
||||||
: ProtobufModule("traceroute", meshtastic_PortNum_TRACEROUTE_APP, &meshtastic_RouteDiscovery_msg),
|
: ProtobufModule("traceroute", meshtastic_PortNum_TRACEROUTE_APP, &meshtastic_RouteDiscovery_msg), OSThread("TraceRoute")
|
||||||
OSThread("TraceRoute")
|
|
||||||
{
|
{
|
||||||
ourPortNum = meshtastic_PortNum_TRACEROUTE_APP;
|
ourPortNum = meshtastic_PortNum_TRACEROUTE_APP;
|
||||||
isPromiscuous = true; // We need to update the route even if it is not destined to us
|
isPromiscuous = true; // We need to update the route even if it is not destined to us
|
||||||
@ -320,7 +320,8 @@ const char *TraceRouteModule::getNodeName(NodeNum node)
|
|||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TraceRouteModule::startTraceRoute(NodeNum node) {
|
bool TraceRouteModule::startTraceRoute(NodeNum node)
|
||||||
|
{
|
||||||
LOG_INFO("=== TraceRoute startTraceRoute CALLED: node=0x%08x ===", node);
|
LOG_INFO("=== TraceRoute startTraceRoute CALLED: node=0x%08x ===", node);
|
||||||
unsigned long now = millis();
|
unsigned long now = millis();
|
||||||
|
|
||||||
@ -405,11 +406,11 @@ bool TraceRouteModule::startTraceRoute(NodeNum node) {
|
|||||||
p->decoded.want_response = true;
|
p->decoded.want_response = true;
|
||||||
|
|
||||||
// Manually encode the RouteDiscovery payload
|
// Manually encode the RouteDiscovery payload
|
||||||
p->decoded.payload.size = pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes),
|
p->decoded.payload.size =
|
||||||
&meshtastic_RouteDiscovery_msg, &req);
|
pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes), &meshtastic_RouteDiscovery_msg, &req);
|
||||||
|
|
||||||
LOG_INFO("Packet allocated successfully: to=0x%08x, portnum=%d, want_response=%d, payload_size=%d",
|
LOG_INFO("Packet allocated successfully: to=0x%08x, portnum=%d, want_response=%d, payload_size=%d", p->to,
|
||||||
p->to, p->decoded.portnum, p->decoded.want_response, p->decoded.payload.size);
|
p->decoded.portnum, p->decoded.want_response, p->decoded.payload.size);
|
||||||
LOG_INFO("About to call service->sendToMesh...");
|
LOG_INFO("About to call service->sendToMesh...");
|
||||||
|
|
||||||
if (service) {
|
if (service) {
|
||||||
@ -445,7 +446,8 @@ bool TraceRouteModule::startTraceRoute(NodeNum node) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TraceRouteModule::launch(NodeNum node) {
|
void TraceRouteModule::launch(NodeNum node)
|
||||||
|
{
|
||||||
if (node == 0 || node == NODENUM_BROADCAST) {
|
if (node == 0 || node == NODENUM_BROADCAST) {
|
||||||
LOG_ERROR("Invalid node number for trace route: 0x%08x", node);
|
LOG_ERROR("Invalid node number for trace route: 0x%08x", node);
|
||||||
runState = TRACEROUTE_STATE_RESULT;
|
runState = TRACEROUTE_STATE_RESULT;
|
||||||
@ -516,11 +518,11 @@ void TraceRouteModule::launch(NodeNum node) {
|
|||||||
p->decoded.portnum = meshtastic_PortNum_TRACEROUTE_APP;
|
p->decoded.portnum = meshtastic_PortNum_TRACEROUTE_APP;
|
||||||
p->decoded.want_response = true;
|
p->decoded.want_response = true;
|
||||||
|
|
||||||
p->decoded.payload.size = pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes),
|
p->decoded.payload.size =
|
||||||
&meshtastic_RouteDiscovery_msg, &req);
|
pb_encode_to_bytes(p->decoded.payload.bytes, sizeof(p->decoded.payload.bytes), &meshtastic_RouteDiscovery_msg, &req);
|
||||||
|
|
||||||
LOG_INFO("Packet allocated successfully: to=0x%08x, portnum=%d, want_response=%d, payload_size=%d",
|
LOG_INFO("Packet allocated successfully: to=0x%08x, portnum=%d, want_response=%d, payload_size=%d", p->to,
|
||||||
p->to, p->decoded.portnum, p->decoded.want_response, p->decoded.payload.size);
|
p->decoded.portnum, p->decoded.want_response, p->decoded.payload.size);
|
||||||
|
|
||||||
if (service) {
|
if (service) {
|
||||||
service->sendToMesh(p, RX_SRC_USER);
|
service->sendToMesh(p, RX_SRC_USER);
|
||||||
@ -541,7 +543,8 @@ void TraceRouteModule::launch(NodeNum node) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TraceRouteModule::handleTraceRouteResult(const String &result) {
|
void TraceRouteModule::handleTraceRouteResult(const String &result)
|
||||||
|
{
|
||||||
resultText = result;
|
resultText = result;
|
||||||
runState = TRACEROUTE_STATE_RESULT;
|
runState = TRACEROUTE_STATE_RESULT;
|
||||||
resultShowTime = millis();
|
resultShowTime = millis();
|
||||||
@ -559,7 +562,8 @@ void TraceRouteModule::handleTraceRouteResult(const String &result) {
|
|||||||
LOG_INFO("=== TraceRoute handleTraceRouteResult END ===");
|
LOG_INFO("=== TraceRoute handleTraceRouteResult END ===");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TraceRouteModule::shouldDraw() {
|
bool TraceRouteModule::shouldDraw()
|
||||||
|
{
|
||||||
bool draw = (runState != TRACEROUTE_STATE_IDLE);
|
bool draw = (runState != TRACEROUTE_STATE_IDLE);
|
||||||
static TraceRouteRunState lastLoggedState = TRACEROUTE_STATE_IDLE;
|
static TraceRouteRunState lastLoggedState = TRACEROUTE_STATE_IDLE;
|
||||||
if (runState != lastLoggedState) {
|
if (runState != lastLoggedState) {
|
||||||
@ -569,7 +573,8 @@ bool TraceRouteModule::shouldDraw() {
|
|||||||
return draw;
|
return draw;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TraceRouteModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y) {
|
void TraceRouteModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y)
|
||||||
|
{
|
||||||
LOG_DEBUG("TraceRoute drawFrame called: runState=%d", runState);
|
LOG_DEBUG("TraceRoute drawFrame called: runState=%d", runState);
|
||||||
|
|
||||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||||
@ -648,7 +653,8 @@ void TraceRouteModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t TraceRouteModule::runOnce() {
|
int32_t TraceRouteModule::runOnce()
|
||||||
|
{
|
||||||
unsigned long now = millis();
|
unsigned long now = millis();
|
||||||
|
|
||||||
if (runState == TRACEROUTE_STATE_IDLE) {
|
if (runState == TRACEROUTE_STATE_IDLE) {
|
||||||
|
@ -1,23 +1,20 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "ProtobufModule.h"
|
#include "ProtobufModule.h"
|
||||||
#include "input/InputBroker.h"
|
#include "concurrency/OSThread.h"
|
||||||
#include "graphics/Screen.h"
|
#include "graphics/Screen.h"
|
||||||
#include "graphics/SharedUIDisplay.h"
|
#include "graphics/SharedUIDisplay.h"
|
||||||
#include "concurrency/OSThread.h"
|
#include "input/InputBroker.h"
|
||||||
|
|
||||||
#define ROUTE_SIZE sizeof(((meshtastic_RouteDiscovery *)0)->route) / sizeof(((meshtastic_RouteDiscovery *)0)->route[0])
|
#define ROUTE_SIZE sizeof(((meshtastic_RouteDiscovery *)0)->route) / sizeof(((meshtastic_RouteDiscovery *)0)->route[0])
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A module that traces the route to a certain destination node
|
* A module that traces the route to a certain destination node
|
||||||
*/
|
*/
|
||||||
enum TraceRouteRunState {
|
enum TraceRouteRunState { TRACEROUTE_STATE_IDLE, TRACEROUTE_STATE_TRACKING, TRACEROUTE_STATE_RESULT, TRACEROUTE_STATE_COOLDOWN };
|
||||||
TRACEROUTE_STATE_IDLE,
|
|
||||||
TRACEROUTE_STATE_TRACKING,
|
|
||||||
TRACEROUTE_STATE_RESULT,
|
|
||||||
TRACEROUTE_STATE_COOLDOWN
|
|
||||||
};
|
|
||||||
|
|
||||||
class TraceRouteModule : public ProtobufModule<meshtastic_RouteDiscovery>, public Observable<const UIFrameEvent *>, private concurrency::OSThread
|
class TraceRouteModule : public ProtobufModule<meshtastic_RouteDiscovery>,
|
||||||
|
public Observable<const UIFrameEvent *>,
|
||||||
|
private concurrency::OSThread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TraceRouteModule();
|
TraceRouteModule();
|
||||||
|
Loading…
Reference in New Issue
Block a user