diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index 53405e757..601b83f9c 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -97,7 +97,7 @@ static uint16_t displayWidth, displayHeight; #define SCREEN_WIDTH displayWidth #define SCREEN_HEIGHT displayHeight -#if defined(USE_EINK) || defined(ILI9341_DRIVER) +#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) // The screen is bigger so use bigger fonts #define FONT_SMALL ArialMT_Plain_16 #define FONT_MEDIUM ArialMT_Plain_24 diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index fca3af305..92115d127 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -699,11 +699,23 @@ NodeInfo *NodeDB::getOrCreateNode(NodeNum n) if (!info) { if (*numNodes >= MAX_NUM_NODES) { - screen->print("error: node_db full!\n"); - DEBUG_MSG("ERROR! could not create new node, node_db is full! (%d nodes)", *numNodes); - return NULL; + screen->print("warning: node_db full! erasing oldest entry\n"); + // look for oldest node and erase it + uint32_t oldest = UINT32_MAX; + int oldestIndex = -1; + for (int i = 0; i < *numNodes; i++) { + if (nodes[i].last_heard < oldest) { + oldest = nodes[i].last_heard; + oldestIndex = i; + } + } + // Shove the remaining nodes down the chain + for (int i = oldestIndex; i < *numNodes - 1; i++) { + nodes[i] = nodes[i + 1]; + } + (*numNodes)--; } - // add the node + // add the node at the end info = &nodes[(*numNodes)++]; // everything is missing except the nodenum diff --git a/src/modules/CannedMessageModule.cpp b/src/modules/CannedMessageModule.cpp index 54804859b..a21b63779 100644 --- a/src/modules/CannedMessageModule.cpp +++ b/src/modules/CannedMessageModule.cpp @@ -11,7 +11,7 @@ #include "graphics/fonts/OLEDDisplayFontsRU.h" #endif -#if defined(USE_EINK) || defined(ILI9341_DRIVER) +#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) // The screen is bigger so use bigger fonts #define FONT_SMALL ArialMT_Plain_16 #define FONT_MEDIUM ArialMT_Plain_24