mirror of
https://github.com/meshtastic/firmware.git
synced 2025-10-28 23:34:03 +00:00
Merge branch 'develop' into develop
This commit is contained in:
commit
0d32fc6389
@ -120,7 +120,7 @@ lib_deps =
|
|||||||
[device-ui_base]
|
[device-ui_base]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
|
||||||
https://github.com/meshtastic/device-ui/archive/6d8cc228298a1ecd9913aed757187e9527c1facc.zip
|
https://github.com/meshtastic/device-ui/archive/3fb7c0e28e8e51fc0a7d56facacf3411f1d29fe0.zip
|
||||||
|
|
||||||
; Common libs for environmental measurements in telemetry module
|
; Common libs for environmental measurements in telemetry module
|
||||||
[environmental_base]
|
[environmental_base]
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit a1b8c3d171445b2eebfd4b5bd1e4876f3bbed605
|
Subproject commit 38638f19f84ad886222b484d6bf5a8459aed8c7e
|
||||||
@ -1490,7 +1490,7 @@ int Screen::handleTextMessage(const meshtastic_MeshPacket *packet)
|
|||||||
strcpy(banner, "Alert Received");
|
strcpy(banner, "Alert Received");
|
||||||
}
|
}
|
||||||
screen->showSimpleBanner(banner, 3000);
|
screen->showSimpleBanner(banner, 3000);
|
||||||
} else if (!channel.settings.mute) {
|
} else if (!channel.settings.has_module_settings || !channel.settings.module_settings.is_muted) {
|
||||||
if (longName && longName[0]) {
|
if (longName && longName[0]) {
|
||||||
#if defined(M5STACK_UNITC6L)
|
#if defined(M5STACK_UNITC6L)
|
||||||
strcpy(banner, "New Message");
|
strcpy(banner, "New Message");
|
||||||
|
|||||||
@ -762,6 +762,31 @@ void menuHandler::nodeListMenu()
|
|||||||
screen->showOverlayBanner(bannerOptions);
|
screen->showOverlayBanner(bannerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void menuHandler::nodeNameLengthMenu()
|
||||||
|
{
|
||||||
|
enum OptionsNumbers { Back, Long, Short };
|
||||||
|
static const char *optionsArray[] = {"Back", "Long", "Short"};
|
||||||
|
BannerOverlayOptions bannerOptions;
|
||||||
|
bannerOptions.message = "Node Name Length";
|
||||||
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
|
bannerOptions.optionsCount = 3;
|
||||||
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
|
if (selected == Long) {
|
||||||
|
// Set names to long
|
||||||
|
LOG_INFO("Setting names to long");
|
||||||
|
config.display.use_long_node_name = true;
|
||||||
|
} else if (selected == Short) {
|
||||||
|
// Set names to short
|
||||||
|
LOG_INFO("Setting names to short");
|
||||||
|
config.display.use_long_node_name = false;
|
||||||
|
} else if (selected == Back) {
|
||||||
|
menuQueue = screen_options_menu;
|
||||||
|
screen->runNow();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
screen->showOverlayBanner(bannerOptions);
|
||||||
|
}
|
||||||
|
|
||||||
void menuHandler::resetNodeDBMenu()
|
void menuHandler::resetNodeDBMenu()
|
||||||
{
|
{
|
||||||
static const char *optionsArray[] = {"Back", "Confirm"};
|
static const char *optionsArray[] = {"Back", "Confirm"};
|
||||||
@ -1304,11 +1329,16 @@ void menuHandler::screenOptionsMenu()
|
|||||||
hasSupportBrightness = false;
|
hasSupportBrightness = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum optionsNumbers { Back, Brightness, ScreenColor };
|
enum optionsNumbers { Back, NodeNameLength, Brightness, ScreenColor };
|
||||||
static const char *optionsArray[4] = {"Back"};
|
static const char *optionsArray[5] = {"Back"};
|
||||||
static int optionsEnumArray[4] = {Back};
|
static int optionsEnumArray[5] = {Back};
|
||||||
int options = 1;
|
int options = 1;
|
||||||
|
|
||||||
|
#if defined(T_DECK) || defined(T_LORA_PAGER)
|
||||||
|
optionsArray[options] = "Show Long/Short Name";
|
||||||
|
optionsEnumArray[options++] = NodeNameLength;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Only show brightness for B&W displays
|
// Only show brightness for B&W displays
|
||||||
if (hasSupportBrightness) {
|
if (hasSupportBrightness) {
|
||||||
optionsArray[options] = "Brightness";
|
optionsArray[options] = "Brightness";
|
||||||
@ -1333,6 +1363,9 @@ void menuHandler::screenOptionsMenu()
|
|||||||
} else if (selected == ScreenColor) {
|
} else if (selected == ScreenColor) {
|
||||||
menuHandler::menuQueue = menuHandler::tftcolormenupicker;
|
menuHandler::menuQueue = menuHandler::tftcolormenupicker;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
|
} else if (selected == NodeNameLength) {
|
||||||
|
menuHandler::menuQueue = menuHandler::node_name_length_menu;
|
||||||
|
screen->runNow();
|
||||||
} else {
|
} else {
|
||||||
menuQueue = system_base_menu;
|
menuQueue = system_base_menu;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
@ -1431,6 +1464,8 @@ void menuHandler::FrameToggles_menu()
|
|||||||
lora,
|
lora,
|
||||||
clock,
|
clock,
|
||||||
show_favorites,
|
show_favorites,
|
||||||
|
show_telemetry,
|
||||||
|
show_power,
|
||||||
enumEnd
|
enumEnd
|
||||||
};
|
};
|
||||||
static const char *optionsArray[enumEnd] = {"Finish"};
|
static const char *optionsArray[enumEnd] = {"Finish"};
|
||||||
@ -1469,6 +1504,12 @@ void menuHandler::FrameToggles_menu()
|
|||||||
optionsArray[options] = screen->isFrameHidden("show_favorites") ? "Show Favorites" : "Hide Favorites";
|
optionsArray[options] = screen->isFrameHidden("show_favorites") ? "Show Favorites" : "Hide Favorites";
|
||||||
optionsEnumArray[options++] = show_favorites;
|
optionsEnumArray[options++] = show_favorites;
|
||||||
|
|
||||||
|
optionsArray[options] = moduleConfig.telemetry.environment_screen_enabled ? "Hide Telemetry" : "Show Telemetry";
|
||||||
|
optionsEnumArray[options++] = show_telemetry;
|
||||||
|
|
||||||
|
optionsArray[options] = moduleConfig.telemetry.power_screen_enabled ? "Hide Power" : "Show Power";
|
||||||
|
optionsEnumArray[options++] = show_power;
|
||||||
|
|
||||||
BannerOverlayOptions bannerOptions;
|
BannerOverlayOptions bannerOptions;
|
||||||
bannerOptions.message = "Show/Hide Frames";
|
bannerOptions.message = "Show/Hide Frames";
|
||||||
bannerOptions.optionsArrayPtr = optionsArray;
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
@ -1523,6 +1564,14 @@ void menuHandler::FrameToggles_menu()
|
|||||||
screen->toggleFrameVisibility("show_favorites");
|
screen->toggleFrameVisibility("show_favorites");
|
||||||
menuHandler::menuQueue = menuHandler::FrameToggles;
|
menuHandler::menuQueue = menuHandler::FrameToggles;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
|
} else if (selected == show_telemetry) {
|
||||||
|
moduleConfig.telemetry.environment_screen_enabled = !moduleConfig.telemetry.environment_screen_enabled;
|
||||||
|
menuHandler::menuQueue = menuHandler::FrameToggles;
|
||||||
|
screen->runNow();
|
||||||
|
} else if (selected == show_power) {
|
||||||
|
moduleConfig.telemetry.power_screen_enabled = !moduleConfig.telemetry.power_screen_enabled;
|
||||||
|
menuHandler::menuQueue = menuHandler::FrameToggles;
|
||||||
|
screen->runNow();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
screen->showOverlayBanner(bannerOptions);
|
screen->showOverlayBanner(bannerOptions);
|
||||||
@ -1594,6 +1643,9 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
|
|||||||
case brightness_picker:
|
case brightness_picker:
|
||||||
BrightnessPickerMenu();
|
BrightnessPickerMenu();
|
||||||
break;
|
break;
|
||||||
|
case node_name_length_menu:
|
||||||
|
nodeNameLengthMenu();
|
||||||
|
break;
|
||||||
case reboot_menu:
|
case reboot_menu:
|
||||||
rebootMenu();
|
rebootMenu();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -43,6 +43,7 @@ class menuHandler
|
|||||||
key_verification_final_prompt,
|
key_verification_final_prompt,
|
||||||
trace_route_menu,
|
trace_route_menu,
|
||||||
throttle_message,
|
throttle_message,
|
||||||
|
node_name_length_menu,
|
||||||
FrameToggles
|
FrameToggles
|
||||||
};
|
};
|
||||||
static screenMenus menuQueue;
|
static screenMenus menuQueue;
|
||||||
@ -85,6 +86,7 @@ class menuHandler
|
|||||||
static void notificationsMenu();
|
static void notificationsMenu();
|
||||||
static void screenOptionsMenu();
|
static void screenOptionsMenu();
|
||||||
static void powerMenu();
|
static void powerMenu();
|
||||||
|
static void nodeNameLengthMenu();
|
||||||
static void FrameToggles_menu();
|
static void FrameToggles_menu();
|
||||||
static void textMessageMenu();
|
static void textMessageMenu();
|
||||||
|
|
||||||
|
|||||||
@ -55,26 +55,32 @@ static int scrollIndex = 0;
|
|||||||
|
|
||||||
const char *getSafeNodeName(meshtastic_NodeInfoLite *node)
|
const char *getSafeNodeName(meshtastic_NodeInfoLite *node)
|
||||||
{
|
{
|
||||||
|
const char *name = NULL;
|
||||||
static char nodeName[16] = "?";
|
static char nodeName[16] = "?";
|
||||||
if (node->has_user && strlen(node->user.short_name) > 0) {
|
if (config.display.use_long_node_name == true) {
|
||||||
bool valid = true;
|
if (node->has_user && strlen(node->user.long_name) > 0) {
|
||||||
const char *name = node->user.short_name;
|
name = node->user.long_name;
|
||||||
for (size_t i = 0; i < strlen(name); i++) {
|
|
||||||
uint8_t c = (uint8_t)name[i];
|
|
||||||
if (c < 32 || c > 126) {
|
|
||||||
valid = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (valid) {
|
|
||||||
strncpy(nodeName, name, sizeof(nodeName) - 1);
|
|
||||||
nodeName[sizeof(nodeName) - 1] = '\0';
|
|
||||||
} else {
|
} else {
|
||||||
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (node->has_user && strlen(node->user.short_name) > 0) {
|
||||||
|
name = node->user.short_name;
|
||||||
|
} else {
|
||||||
|
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use sanitizeString() function and copy directly into nodeName
|
||||||
|
std::string sanitized_name = sanitizeString(name ? name : "");
|
||||||
|
|
||||||
|
if (!sanitized_name.empty()) {
|
||||||
|
strncpy(nodeName, sanitized_name.c_str(), sizeof(nodeName) - 1);
|
||||||
|
nodeName[sizeof(nodeName) - 1] = '\0';
|
||||||
} else {
|
} else {
|
||||||
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
snprintf(nodeName, sizeof(nodeName), "(%04X)", (uint16_t)(node->num & 0xFFFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
return nodeName;
|
return nodeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -55,7 +55,7 @@ extern const pb_msgdesc_t meshtastic_ChannelSet_msg;
|
|||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define MESHTASTIC_MESHTASTIC_APPONLY_PB_H_MAX_SIZE meshtastic_ChannelSet_size
|
#define MESHTASTIC_MESHTASTIC_APPONLY_PB_H_MAX_SIZE meshtastic_ChannelSet_size
|
||||||
#define meshtastic_ChannelSet_size 695
|
#define meshtastic_ChannelSet_size 679
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
@ -34,9 +34,9 @@ typedef enum _meshtastic_Channel_Role {
|
|||||||
typedef struct _meshtastic_ModuleSettings {
|
typedef struct _meshtastic_ModuleSettings {
|
||||||
/* Bits of precision for the location sent in position packets. */
|
/* Bits of precision for the location sent in position packets. */
|
||||||
uint32_t position_precision;
|
uint32_t position_precision;
|
||||||
/* Controls whether or not the phone / clients should mute the current channel
|
/* Controls whether or not the client / device should mute the current channel
|
||||||
Useful for noisy public channels you don't necessarily want to disable */
|
Useful for noisy public channels you don't necessarily want to disable */
|
||||||
bool is_client_muted;
|
bool is_muted;
|
||||||
} meshtastic_ModuleSettings;
|
} meshtastic_ModuleSettings;
|
||||||
|
|
||||||
typedef PB_BYTES_ARRAY_T(32) meshtastic_ChannelSettings_psk_t;
|
typedef PB_BYTES_ARRAY_T(32) meshtastic_ChannelSettings_psk_t;
|
||||||
@ -97,8 +97,6 @@ typedef struct _meshtastic_ChannelSettings {
|
|||||||
/* Per-channel module settings. */
|
/* Per-channel module settings. */
|
||||||
bool has_module_settings;
|
bool has_module_settings;
|
||||||
meshtastic_ModuleSettings module_settings;
|
meshtastic_ModuleSettings module_settings;
|
||||||
/* Whether or not we should receive notifactions / alerts through this channel */
|
|
||||||
bool mute;
|
|
||||||
} meshtastic_ChannelSettings;
|
} meshtastic_ChannelSettings;
|
||||||
|
|
||||||
/* A pair of a channel number, mode and the (sharable) settings for that channel */
|
/* A pair of a channel number, mode and the (sharable) settings for that channel */
|
||||||
@ -130,16 +128,16 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
/* Initializer values for message structs */
|
/* Initializer values for message structs */
|
||||||
#define meshtastic_ChannelSettings_init_default {0, {0, {0}}, "", 0, 0, 0, false, meshtastic_ModuleSettings_init_default, 0}
|
#define meshtastic_ChannelSettings_init_default {0, {0, {0}}, "", 0, 0, 0, false, meshtastic_ModuleSettings_init_default}
|
||||||
#define meshtastic_ModuleSettings_init_default {0, 0}
|
#define meshtastic_ModuleSettings_init_default {0, 0}
|
||||||
#define meshtastic_Channel_init_default {0, false, meshtastic_ChannelSettings_init_default, _meshtastic_Channel_Role_MIN}
|
#define meshtastic_Channel_init_default {0, false, meshtastic_ChannelSettings_init_default, _meshtastic_Channel_Role_MIN}
|
||||||
#define meshtastic_ChannelSettings_init_zero {0, {0, {0}}, "", 0, 0, 0, false, meshtastic_ModuleSettings_init_zero, 0}
|
#define meshtastic_ChannelSettings_init_zero {0, {0, {0}}, "", 0, 0, 0, false, meshtastic_ModuleSettings_init_zero}
|
||||||
#define meshtastic_ModuleSettings_init_zero {0, 0}
|
#define meshtastic_ModuleSettings_init_zero {0, 0}
|
||||||
#define meshtastic_Channel_init_zero {0, false, meshtastic_ChannelSettings_init_zero, _meshtastic_Channel_Role_MIN}
|
#define meshtastic_Channel_init_zero {0, false, meshtastic_ChannelSettings_init_zero, _meshtastic_Channel_Role_MIN}
|
||||||
|
|
||||||
/* Field tags (for use in manual encoding/decoding) */
|
/* Field tags (for use in manual encoding/decoding) */
|
||||||
#define meshtastic_ModuleSettings_position_precision_tag 1
|
#define meshtastic_ModuleSettings_position_precision_tag 1
|
||||||
#define meshtastic_ModuleSettings_is_client_muted_tag 2
|
#define meshtastic_ModuleSettings_is_muted_tag 2
|
||||||
#define meshtastic_ChannelSettings_channel_num_tag 1
|
#define meshtastic_ChannelSettings_channel_num_tag 1
|
||||||
#define meshtastic_ChannelSettings_psk_tag 2
|
#define meshtastic_ChannelSettings_psk_tag 2
|
||||||
#define meshtastic_ChannelSettings_name_tag 3
|
#define meshtastic_ChannelSettings_name_tag 3
|
||||||
@ -147,7 +145,6 @@ extern "C" {
|
|||||||
#define meshtastic_ChannelSettings_uplink_enabled_tag 5
|
#define meshtastic_ChannelSettings_uplink_enabled_tag 5
|
||||||
#define meshtastic_ChannelSettings_downlink_enabled_tag 6
|
#define meshtastic_ChannelSettings_downlink_enabled_tag 6
|
||||||
#define meshtastic_ChannelSettings_module_settings_tag 7
|
#define meshtastic_ChannelSettings_module_settings_tag 7
|
||||||
#define meshtastic_ChannelSettings_mute_tag 8
|
|
||||||
#define meshtastic_Channel_index_tag 1
|
#define meshtastic_Channel_index_tag 1
|
||||||
#define meshtastic_Channel_settings_tag 2
|
#define meshtastic_Channel_settings_tag 2
|
||||||
#define meshtastic_Channel_role_tag 3
|
#define meshtastic_Channel_role_tag 3
|
||||||
@ -160,15 +157,14 @@ X(a, STATIC, SINGULAR, STRING, name, 3) \
|
|||||||
X(a, STATIC, SINGULAR, FIXED32, id, 4) \
|
X(a, STATIC, SINGULAR, FIXED32, id, 4) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, uplink_enabled, 5) \
|
X(a, STATIC, SINGULAR, BOOL, uplink_enabled, 5) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, downlink_enabled, 6) \
|
X(a, STATIC, SINGULAR, BOOL, downlink_enabled, 6) \
|
||||||
X(a, STATIC, OPTIONAL, MESSAGE, module_settings, 7) \
|
X(a, STATIC, OPTIONAL, MESSAGE, module_settings, 7)
|
||||||
X(a, STATIC, SINGULAR, BOOL, mute, 8)
|
|
||||||
#define meshtastic_ChannelSettings_CALLBACK NULL
|
#define meshtastic_ChannelSettings_CALLBACK NULL
|
||||||
#define meshtastic_ChannelSettings_DEFAULT NULL
|
#define meshtastic_ChannelSettings_DEFAULT NULL
|
||||||
#define meshtastic_ChannelSettings_module_settings_MSGTYPE meshtastic_ModuleSettings
|
#define meshtastic_ChannelSettings_module_settings_MSGTYPE meshtastic_ModuleSettings
|
||||||
|
|
||||||
#define meshtastic_ModuleSettings_FIELDLIST(X, a) \
|
#define meshtastic_ModuleSettings_FIELDLIST(X, a) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, position_precision, 1) \
|
X(a, STATIC, SINGULAR, UINT32, position_precision, 1) \
|
||||||
X(a, STATIC, SINGULAR, BOOL, is_client_muted, 2)
|
X(a, STATIC, SINGULAR, BOOL, is_muted, 2)
|
||||||
#define meshtastic_ModuleSettings_CALLBACK NULL
|
#define meshtastic_ModuleSettings_CALLBACK NULL
|
||||||
#define meshtastic_ModuleSettings_DEFAULT NULL
|
#define meshtastic_ModuleSettings_DEFAULT NULL
|
||||||
|
|
||||||
@ -191,8 +187,8 @@ extern const pb_msgdesc_t meshtastic_Channel_msg;
|
|||||||
|
|
||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
#define MESHTASTIC_MESHTASTIC_CHANNEL_PB_H_MAX_SIZE meshtastic_Channel_size
|
#define MESHTASTIC_MESHTASTIC_CHANNEL_PB_H_MAX_SIZE meshtastic_Channel_size
|
||||||
#define meshtastic_ChannelSettings_size 74
|
#define meshtastic_ChannelSettings_size 72
|
||||||
#define meshtastic_Channel_size 89
|
#define meshtastic_Channel_size 87
|
||||||
#define meshtastic_ModuleSettings_size 8
|
#define meshtastic_ModuleSettings_size 8
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -360,8 +360,8 @@ extern const pb_msgdesc_t meshtastic_BackupPreferences_msg;
|
|||||||
/* Maximum encoded size of messages (where known) */
|
/* Maximum encoded size of messages (where known) */
|
||||||
/* meshtastic_NodeDatabase_size depends on runtime parameters */
|
/* meshtastic_NodeDatabase_size depends on runtime parameters */
|
||||||
#define MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_MAX_SIZE meshtastic_BackupPreferences_size
|
#define MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_MAX_SIZE meshtastic_BackupPreferences_size
|
||||||
#define meshtastic_BackupPreferences_size 2293
|
#define meshtastic_BackupPreferences_size 2277
|
||||||
#define meshtastic_ChannelFile_size 734
|
#define meshtastic_ChannelFile_size 718
|
||||||
#define meshtastic_DeviceState_size 1737
|
#define meshtastic_DeviceState_size 1737
|
||||||
#define meshtastic_NodeInfoLite_size 196
|
#define meshtastic_NodeInfoLite_size 196
|
||||||
#define meshtastic_PositionLite_size 28
|
#define meshtastic_PositionLite_size 28
|
||||||
|
|||||||
@ -510,7 +510,8 @@ ProcessMessage ExternalNotificationModule::handleReceived(const meshtastic_MeshP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moduleConfig.external_notification.alert_message && !ch.settings.mute) {
|
if (moduleConfig.external_notification.alert_message &&
|
||||||
|
(!ch.settings.has_module_settings || !ch.settings.module_settings.is_muted)) {
|
||||||
LOG_INFO("externalNotificationModule - Notification Module");
|
LOG_INFO("externalNotificationModule - Notification Module");
|
||||||
isNagging = true;
|
isNagging = true;
|
||||||
setExternalState(0, true);
|
setExternalState(0, true);
|
||||||
@ -521,7 +522,8 @@ ProcessMessage ExternalNotificationModule::handleReceived(const meshtastic_MeshP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moduleConfig.external_notification.alert_message_vibra && !ch.settings.mute) {
|
if (moduleConfig.external_notification.alert_message_vibra &&
|
||||||
|
(!ch.settings.has_module_settings || !ch.settings.module_settings.is_muted)) {
|
||||||
LOG_INFO("externalNotificationModule - Notification Module (Vibra)");
|
LOG_INFO("externalNotificationModule - Notification Module (Vibra)");
|
||||||
isNagging = true;
|
isNagging = true;
|
||||||
setExternalState(1, true);
|
setExternalState(1, true);
|
||||||
@ -532,7 +534,8 @@ ProcessMessage ExternalNotificationModule::handleReceived(const meshtastic_MeshP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moduleConfig.external_notification.alert_message_buzzer && !ch.settings.mute) {
|
if (moduleConfig.external_notification.alert_message_buzzer &&
|
||||||
|
(!ch.settings.has_module_settings || !ch.settings.module_settings.is_muted)) {
|
||||||
LOG_INFO("externalNotificationModule - Notification Module (Buzzer)");
|
LOG_INFO("externalNotificationModule - Notification Module (Buzzer)");
|
||||||
if (config.device.buzzer_mode != meshtastic_Config_DeviceConfig_BuzzerMode_DIRECT_MSG_ONLY ||
|
if (config.device.buzzer_mode != meshtastic_Config_DeviceConfig_BuzzerMode_DIRECT_MSG_ONLY ||
|
||||||
(!isBroadcast(mp.to) && isToUs(&mp))) {
|
(!isBroadcast(mp.to) && isToUs(&mp))) {
|
||||||
|
|||||||
@ -26,7 +26,8 @@ int32_t DeviceTelemetryModule::runOnce()
|
|||||||
Default::getConfiguredOrDefaultMsScaled(moduleConfig.telemetry.device_update_interval,
|
Default::getConfiguredOrDefaultMsScaled(moduleConfig.telemetry.device_update_interval,
|
||||||
default_telemetry_broadcast_interval_secs, numOnlineNodes))) &&
|
default_telemetry_broadcast_interval_secs, numOnlineNodes))) &&
|
||||||
airTime->isTxAllowedChannelUtil(!isImpoliteRole) && airTime->isTxAllowedAirUtil() &&
|
airTime->isTxAllowedChannelUtil(!isImpoliteRole) && airTime->isTxAllowedAirUtil() &&
|
||||||
config.device.role != meshtastic_Config_DeviceConfig_Role_CLIENT_HIDDEN) {
|
config.device.role != meshtastic_Config_DeviceConfig_Role_CLIENT_HIDDEN &&
|
||||||
|
moduleConfig.telemetry.device_telemetry_enabled) {
|
||||||
sendTelemetry();
|
sendTelemetry();
|
||||||
lastSentToMesh = uptimeLastMs;
|
lastSentToMesh = uptimeLastMs;
|
||||||
} else if (service->isToPhoneQueueEmpty()) {
|
} else if (service->isToPhoneQueueEmpty()) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user