mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-04 20:54:42 +00:00
Dismiss Memory and wifi screen
This commit is contained in:
parent
3596ea20bc
commit
7bc473ed99
@ -3537,8 +3537,11 @@ void Screen::setFrames(FrameFocus focus)
|
||||
normalFrames[numframes++] = drawLoRaFocused;
|
||||
indicatorIcons.push_back(icon_radio);
|
||||
|
||||
normalFrames[numframes++] = drawMemoryScreen;
|
||||
indicatorIcons.push_back(icon_memory);
|
||||
if (!dismissedFrames.memory) {
|
||||
fsi.positions.memory = numframes;
|
||||
normalFrames[numframes++] = drawMemoryScreen;
|
||||
indicatorIcons.push_back(icon_memory);
|
||||
}
|
||||
|
||||
// then all the nodes
|
||||
// We only show a few nodes in our scrolling list - because meshes with many nodes would have too many screens
|
||||
@ -3557,13 +3560,13 @@ void Screen::setFrames(FrameFocus focus)
|
||||
// fsi.positions.settings = numframes;
|
||||
// normalFrames[numframes++] = &Screen::drawDebugInfoSettingsTrampoline;
|
||||
|
||||
fsi.positions.wifi = numframes;
|
||||
#if HAS_WIFI && !defined(ARCH_PORTDUINO)
|
||||
if (isWifiAvailable()) {
|
||||
#if HAS_WIFI && !defined(ARCH_PORTDUINO)
|
||||
if (!dismissedFrames.wifi && isWifiAvailable()) {
|
||||
fsi.positions.wifi = numframes;
|
||||
normalFrames[numframes++] = &Screen::drawDebugInfoWiFiTrampoline;
|
||||
indicatorIcons.push_back(icon_wifi);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
fsi.frameCount = numframes; // Total framecount is used to apply FOCUS_PRESERVE
|
||||
this->frameCount = numframes; // ✅ Save frame count for use in custom overlay
|
||||
@ -3627,26 +3630,36 @@ void Screen::dismissCurrentFrame()
|
||||
uint8_t currentFrame = ui->getUiState()->currentFrame;
|
||||
bool dismissed = false;
|
||||
|
||||
// Only dismiss if the text message frame is currently valid and visible
|
||||
if (framesetInfo.positions.textMessage != 255 && currentFrame == framesetInfo.positions.textMessage &&
|
||||
devicestate.has_rx_text_message) {
|
||||
if (currentFrame == framesetInfo.positions.textMessage && devicestate.has_rx_text_message) {
|
||||
LOG_INFO("Dismiss Text Message");
|
||||
devicestate.has_rx_text_message = false;
|
||||
memset(&devicestate.rx_text_message, 0, sizeof(devicestate.rx_text_message)); // ✅ clear message
|
||||
memset(&devicestate.rx_text_message, 0, sizeof(devicestate.rx_text_message));
|
||||
dismissedFrames.textMessage = true;
|
||||
dismissed = true;
|
||||
}
|
||||
|
||||
else if (currentFrame == framesetInfo.positions.waypoint && devicestate.has_rx_waypoint) {
|
||||
LOG_DEBUG("Dismiss Waypoint");
|
||||
devicestate.has_rx_waypoint = false;
|
||||
dismissedFrames.waypoint = true;
|
||||
dismissed = true;
|
||||
}
|
||||
else if (currentFrame == framesetInfo.positions.wifi) {
|
||||
LOG_DEBUG("Dismiss WiFi Screen");
|
||||
dismissedFrames.wifi = true;
|
||||
dismissed = true;
|
||||
}
|
||||
else if (currentFrame == framesetInfo.positions.memory) {
|
||||
LOG_INFO("Dismiss Memory");
|
||||
dismissedFrames.memory = true;
|
||||
dismissed = true;
|
||||
}
|
||||
|
||||
// If we did make changes to dismiss, we now need to regenerate the frameset
|
||||
if (dismissed)
|
||||
setFrames();
|
||||
if (dismissed) {
|
||||
setFrames(FOCUS_DEFAULT); // You could also use FOCUS_PRESERVE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Screen::handleStartFirmwareUpdateScreen()
|
||||
{
|
||||
LOG_DEBUG("Show firmware screen");
|
||||
|
@ -601,19 +601,27 @@ class Screen : public concurrency::OSThread
|
||||
// - Used to dismiss the currently shown frame (txt; waypoint) by CardKB combo
|
||||
struct FramesetInfo {
|
||||
struct FramePositions {
|
||||
uint8_t fault = 0;
|
||||
uint8_t textMessage = 0;
|
||||
uint8_t waypoint = 0;
|
||||
uint8_t focusedModule = 0;
|
||||
uint8_t log = 0;
|
||||
uint8_t settings = 0;
|
||||
uint8_t wifi = 0;
|
||||
uint8_t deviceFocused = 0;
|
||||
uint8_t fault = 255;
|
||||
uint8_t textMessage = 255;
|
||||
uint8_t waypoint = 255;
|
||||
uint8_t focusedModule = 255;
|
||||
uint8_t log = 255;
|
||||
uint8_t settings = 255;
|
||||
uint8_t wifi = 255;
|
||||
uint8_t deviceFocused = 255;
|
||||
uint8_t memory = 255;
|
||||
} positions;
|
||||
|
||||
uint8_t frameCount = 0;
|
||||
} framesetInfo;
|
||||
|
||||
struct DismissedFrames {
|
||||
bool textMessage = false;
|
||||
bool waypoint = false;
|
||||
bool wifi = false;
|
||||
bool memory = false;
|
||||
} dismissedFrames;
|
||||
|
||||
// Which frame we want to be displayed, after we regen the frameset by calling setFrames
|
||||
enum FrameFocus : uint8_t {
|
||||
FOCUS_DEFAULT, // No specific frame
|
||||
|
Loading…
Reference in New Issue
Block a user