basic stack debugging - we are okay for now

1.2-legacy
geeksville 2020-06-12 16:37:03 -07:00
rodzic a8d4b5479d
commit 03cb3c2145
3 zmienionych plików z 21 dodań i 2 usunięć

Wyświetl plik

@ -1,4 +1,5 @@
#include "WorkerThread.h" #include "WorkerThread.h"
#include "debug.h"
#include <assert.h> #include <assert.h>
void Thread::start(const char *name, size_t stackSize, uint32_t priority) void Thread::start(const char *name, size_t stackSize, uint32_t priority)
@ -16,6 +17,15 @@ void WorkerThread::doRun()
{ {
while (!wantExit) { while (!wantExit) {
block(); block();
#ifdef DEBUG_STACK
static uint32_t lastPrint = 0;
if (millis() - lastPrint > 10 * 1000L) {
lastPrint = millis();
meshtastic::printThreadInfo("net");
}
#endif
loop(); loop();
} }
} }
@ -28,8 +38,6 @@ void NotifiedWorkerThread::notify(uint32_t v, eNotifyAction action)
xTaskNotify(taskHandle, v, action); xTaskNotify(taskHandle, v, action);
} }
void NotifiedWorkerThread::block() void NotifiedWorkerThread::block()
{ {
xTaskNotifyWait(0, // don't clear notification on entry xTaskNotifyWait(0, // don't clear notification on entry

Wyświetl plik

@ -15,6 +15,8 @@ class Thread
virtual ~Thread() { vTaskDelete(taskHandle); } virtual ~Thread() { vTaskDelete(taskHandle); }
uint32_t getStackHighwaterMark() { return uxTaskGetStackHighWaterMark(taskHandle); }
protected: protected:
/** /**
* The method that will be called when start is called. * The method that will be called when start is called.

Wyświetl plik

@ -33,6 +33,7 @@
#include "power.h" #include "power.h"
// #include "rom/rtc.h" // #include "rom/rtc.h"
#include "DSRRouter.h" #include "DSRRouter.h"
#include "debug.h"
#include "main.h" #include "main.h"
#include "screen.h" #include "screen.h"
#include "sleep.h" #include "sleep.h"
@ -314,6 +315,14 @@ void loop()
showingBootScreen = false; showingBootScreen = false;
} }
#ifdef DEBUG_STACK
static uint32_t lastPrint = 0;
if (millis() - lastPrint > 10 * 1000L) {
lastPrint = millis();
meshtastic::printThreadInfo("main");
}
#endif
// Update the screen last, after we've figured out what to show. // Update the screen last, after we've figured out what to show.
screen.debug()->setNodeNumbersStatus(nodeDB.getNumOnlineNodes(), nodeDB.getNumNodes()); screen.debug()->setNodeNumbersStatus(nodeDB.getNumOnlineNodes(), nodeDB.getNumNodes());
screen.debug()->setChannelNameStatus(channelSettings.name); screen.debug()->setChannelNameStatus(channelSettings.name);