mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-01 11:25:44 +00:00
Make the shouldWake function always available, and remove the bool (#7300)
This commit is contained in:
parent
be75f11156
commit
4bab148e3b
@ -83,29 +83,6 @@ extern uint16_t TFT_MESH;
|
|||||||
#include "platform/portduino/PortduinoGlue.h"
|
#include "platform/portduino/PortduinoGlue.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool shouldWakeOnReceivedMessage()
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
The goal here is to determine when we do NOT wake up the screen on message received:
|
|
||||||
- Any ext. notifications are turned on
|
|
||||||
- If role is not client / client_mute
|
|
||||||
- If the battery level is very low
|
|
||||||
*/
|
|
||||||
if (moduleConfig.external_notification.enabled) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (config.device.role != meshtastic_Config_DeviceConfig_Role_CLIENT &&
|
|
||||||
config.device.role != meshtastic_Config_DeviceConfig_Role_CLIENT_MUTE) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (powerStatus && powerStatus->getBatteryChargePercent() < 10) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool wake_on_received_message = shouldWakeOnReceivedMessage(); // Master Switch to enable here
|
|
||||||
|
|
||||||
using namespace meshtastic; /** @todo remove */
|
using namespace meshtastic; /** @todo remove */
|
||||||
|
|
||||||
namespace graphics
|
namespace graphics
|
||||||
@ -1282,8 +1259,7 @@ int Screen::handleTextMessage(const meshtastic_MeshPacket *packet)
|
|||||||
setFrames(FOCUS_PRESERVE); // Refresh frame list without switching view
|
setFrames(FOCUS_PRESERVE); // Refresh frame list without switching view
|
||||||
|
|
||||||
// Only wake/force display if the configuration allows it
|
// Only wake/force display if the configuration allows it
|
||||||
wake_on_received_message = shouldWakeOnReceivedMessage();
|
if (shouldWakeOnReceivedMessage()) {
|
||||||
if (wake_on_received_message) {
|
|
||||||
setOn(true); // Wake up the screen first
|
setOn(true); // Wake up the screen first
|
||||||
forceDisplay(); // Forces screen redraw
|
forceDisplay(); // Forces screen redraw
|
||||||
|
|
||||||
@ -1452,3 +1428,23 @@ bool Screen::isOverlayBannerShowing()
|
|||||||
#else
|
#else
|
||||||
graphics::Screen::Screen(ScanI2C::DeviceAddress, meshtastic_Config_DisplayConfig_OledType, OLEDDISPLAY_GEOMETRY) {}
|
graphics::Screen::Screen(ScanI2C::DeviceAddress, meshtastic_Config_DisplayConfig_OledType, OLEDDISPLAY_GEOMETRY) {}
|
||||||
#endif // HAS_SCREEN
|
#endif // HAS_SCREEN
|
||||||
|
|
||||||
|
bool shouldWakeOnReceivedMessage()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
The goal here is to determine when we do NOT wake up the screen on message received:
|
||||||
|
- Any ext. notifications are turned on
|
||||||
|
- If role is not client / client_mute
|
||||||
|
- If the battery level is very low
|
||||||
|
*/
|
||||||
|
if (moduleConfig.external_notification.enabled) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!meshtastic_Config_DeviceConfig_Role_CLIENT && !meshtastic_Config_DeviceConfig_Role_CLIENT_MUTE) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (powerStatus && powerStatus->getBatteryChargePercent() < 10) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
@ -125,8 +125,6 @@ class Screen
|
|||||||
#define SEGMENT_WIDTH 16
|
#define SEGMENT_WIDTH 16
|
||||||
#define SEGMENT_HEIGHT 4
|
#define SEGMENT_HEIGHT 4
|
||||||
|
|
||||||
extern bool wake_on_received_message;
|
|
||||||
|
|
||||||
/// Convert an integer GPS coords to a floating point
|
/// Convert an integer GPS coords to a floating point
|
||||||
#define DegD(i) (i * 1e-7)
|
#define DegD(i) (i * 1e-7)
|
||||||
extern bool hasUnreadMessage;
|
extern bool hasUnreadMessage;
|
||||||
|
@ -18,9 +18,8 @@ ProcessMessage TextMessageModule::handleReceived(const meshtastic_MeshPacket &mp
|
|||||||
devicestate.rx_text_message = mp;
|
devicestate.rx_text_message = mp;
|
||||||
devicestate.has_rx_text_message = true;
|
devicestate.has_rx_text_message = true;
|
||||||
|
|
||||||
wake_on_received_message = shouldWakeOnReceivedMessage();
|
|
||||||
// Only trigger screen wake if configuration allows it
|
// Only trigger screen wake if configuration allows it
|
||||||
if (wake_on_received_message) {
|
if (shouldWakeOnReceivedMessage()) {
|
||||||
powerFSM.trigger(EVENT_RECEIVED_MSG);
|
powerFSM.trigger(EVENT_RECEIVED_MSG);
|
||||||
}
|
}
|
||||||
notifyObservers(&mp);
|
notifyObservers(&mp);
|
||||||
|
Loading…
Reference in New Issue
Block a user