mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-30 06:31:01 +00:00
Compare commits
5 Commits
develop
...
baseui_tem
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a557e4f39 | ||
|
|
c7844410ac | ||
|
|
4c27c84b5f | ||
|
|
fbd866fda3 | ||
|
|
ae770e9c6c |
21
.github/workflows/main_matrix.yml
vendored
21
.github/workflows/main_matrix.yml
vendored
@@ -263,17 +263,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
base: ${{ github.base_ref }}
|
base: ${{ github.base_ref }}
|
||||||
head: ${{ github.sha }}
|
head: ${{ github.sha }}
|
||||||
# Currently broken (for-loop through EVERY artifact -- rate limiting)
|
- name: Download the old manifests
|
||||||
# - name: Download the old manifests
|
if: github.event_name == 'pull_request_target'
|
||||||
# if: github.event_name == 'pull_request_target'
|
run: gh run download -R "$repo" --name "manifests-$merge_base" --dir manifest-old/
|
||||||
# run: gh run download -R "$repo" --name "manifests-$merge_base" --dir manifest-old/
|
env:
|
||||||
# env:
|
GH_TOKEN: ${{ github.token }}
|
||||||
# GH_TOKEN: ${{ github.token }}
|
merge_base: ${{ env.MERGE_BASE }}
|
||||||
# merge_base: ${{ env.MERGE_BASE }}
|
repo: ${{ github.repository }}
|
||||||
# repo: ${{ github.repository }}
|
- name: Do scan and post comment
|
||||||
# - name: Do scan and post comment
|
if: github.event_name == 'pull_request_target'
|
||||||
# if: github.event_name == 'pull_request_target'
|
run: python3 bin/shame.py ${{ github.event.pull_request.number }} manifests-old/ manifests-new/
|
||||||
# run: python3 bin/shame.py ${{ github.event.pull_request.number }} manifests-old/ manifests-new/
|
|
||||||
|
|
||||||
release-artifacts:
|
release-artifacts:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
Submodule protobufs updated: f78b3f0dcc...c474fd3f49
@@ -8,6 +8,7 @@
|
|||||||
#include "graphics/draw/UIRenderer.h"
|
#include "graphics/draw/UIRenderer.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "meshtastic/config.pb.h"
|
#include "meshtastic/config.pb.h"
|
||||||
|
#include "modules/ExternalNotificationModule.h"
|
||||||
#include "power.h"
|
#include "power.h"
|
||||||
#include <OLEDDisplay.h>
|
#include <OLEDDisplay.h>
|
||||||
#include <graphics/images.h>
|
#include <graphics/images.h>
|
||||||
@@ -56,7 +57,6 @@ void decomposeTime(uint32_t rtc_sec, int &hour, int &minute, int &second)
|
|||||||
|
|
||||||
// === Shared External State ===
|
// === Shared External State ===
|
||||||
bool hasUnreadMessage = false;
|
bool hasUnreadMessage = false;
|
||||||
bool isMuted = false;
|
|
||||||
ScreenResolution currentResolution = ScreenResolution::Low;
|
ScreenResolution currentResolution = ScreenResolution::Low;
|
||||||
|
|
||||||
// === Internal State ===
|
// === Internal State ===
|
||||||
@@ -306,7 +306,7 @@ void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const char *ti
|
|||||||
}
|
}
|
||||||
display->drawXbm(iconX, iconY, mail_width, mail_height, mail);
|
display->drawXbm(iconX, iconY, mail_width, mail_height, mail);
|
||||||
}
|
}
|
||||||
} else if (isMuted) {
|
} else if (externalNotificationModule->getMute()) {
|
||||||
if (currentResolution == ScreenResolution::High) {
|
if (currentResolution == ScreenResolution::High) {
|
||||||
int iconX = iconRightEdge - mute_symbol_big_width;
|
int iconX = iconRightEdge - mute_symbol_big_width;
|
||||||
int iconY = textY + (FONT_HEIGHT_SMALL - mute_symbol_big_height) / 2;
|
int iconY = textY + (FONT_HEIGHT_SMALL - mute_symbol_big_height) / 2;
|
||||||
@@ -325,7 +325,7 @@ void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const char *ti
|
|||||||
int iconX = iconRightEdge - mute_symbol_width;
|
int iconX = iconRightEdge - mute_symbol_width;
|
||||||
int iconY = textY + (FONT_HEIGHT_SMALL - mail_height) / 2;
|
int iconY = textY + (FONT_HEIGHT_SMALL - mail_height) / 2;
|
||||||
|
|
||||||
if (isInverted) {
|
if (isInverted && !force_no_invert) {
|
||||||
display->setColor(WHITE);
|
display->setColor(WHITE);
|
||||||
display->fillRect(iconX - 1, iconY - 1, mute_symbol_width + 2, mute_symbol_height + 2);
|
display->fillRect(iconX - 1, iconY - 1, mute_symbol_width + 2, mute_symbol_height + 2);
|
||||||
display->setColor(BLACK);
|
display->setColor(BLACK);
|
||||||
@@ -383,7 +383,7 @@ void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const char *ti
|
|||||||
int iconY = textY + (FONT_HEIGHT_SMALL - mail_height) / 2;
|
int iconY = textY + (FONT_HEIGHT_SMALL - mail_height) / 2;
|
||||||
display->drawXbm(iconX, iconY, mail_width, mail_height, mail);
|
display->drawXbm(iconX, iconY, mail_width, mail_height, mail);
|
||||||
}
|
}
|
||||||
} else if (isMuted) {
|
} else if (externalNotificationModule->getMute()) {
|
||||||
if (currentResolution == ScreenResolution::High) {
|
if (currentResolution == ScreenResolution::High) {
|
||||||
int iconX = iconRightEdge - mute_symbol_big_width;
|
int iconX = iconRightEdge - mute_symbol_big_width;
|
||||||
int iconY = textY + (FONT_HEIGHT_SMALL - mute_symbol_big_height) / 2;
|
int iconY = textY + (FONT_HEIGHT_SMALL - mute_symbol_big_height) / 2;
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ namespace graphics
|
|||||||
|
|
||||||
// Shared state (declare inside namespace)
|
// Shared state (declare inside namespace)
|
||||||
extern bool hasUnreadMessage;
|
extern bool hasUnreadMessage;
|
||||||
extern bool isMuted;
|
|
||||||
enum class ScreenResolution : uint8_t { UltraLow = 0, Low = 1, High = 2 };
|
enum class ScreenResolution : uint8_t { UltraLow = 0, Low = 1, High = 2 };
|
||||||
extern ScreenResolution currentResolution;
|
extern ScreenResolution currentResolution;
|
||||||
ScreenResolution determineScreenResolution(int16_t screenheight, int16_t screenwidth);
|
ScreenResolution determineScreenResolution(int16_t screenheight, int16_t screenwidth);
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
#include "mesh/MeshTypes.h"
|
#include "mesh/MeshTypes.h"
|
||||||
#include "modules/AdminModule.h"
|
#include "modules/AdminModule.h"
|
||||||
#include "modules/CannedMessageModule.h"
|
#include "modules/CannedMessageModule.h"
|
||||||
|
#include "modules/ExternalNotificationModule.h"
|
||||||
#include "modules/KeyVerificationModule.h"
|
#include "modules/KeyVerificationModule.h"
|
||||||
|
|
||||||
#include "modules/TraceRouteModule.h"
|
#include "modules/TraceRouteModule.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <array>
|
#include <array>
|
||||||
@@ -843,12 +843,21 @@ void menuHandler::messageViewModeMenu()
|
|||||||
|
|
||||||
void menuHandler::homeBaseMenu()
|
void menuHandler::homeBaseMenu()
|
||||||
{
|
{
|
||||||
enum optionsNumbers { Back, Backlight, Position, Preset, Freetext, Sleep, enumEnd };
|
enum optionsNumbers { Back, Mute, Backlight, Position, Preset, Freetext, Sleep, enumEnd };
|
||||||
|
|
||||||
static const char *optionsArray[enumEnd] = {"Back"};
|
static const char *optionsArray[enumEnd] = {"Back"};
|
||||||
static int optionsEnumArray[enumEnd] = {Back};
|
static int optionsEnumArray[enumEnd] = {Back};
|
||||||
int options = 1;
|
int options = 1;
|
||||||
|
|
||||||
|
if (moduleConfig.external_notification.enabled && externalNotificationModule &&
|
||||||
|
config.device.buzzer_mode != meshtastic_Config_DeviceConfig_BuzzerMode_DISABLED) {
|
||||||
|
if (!externalNotificationModule->getMute()) {
|
||||||
|
optionsArray[options] = "Temporarily Mute";
|
||||||
|
} else {
|
||||||
|
optionsArray[options] = "Unmute";
|
||||||
|
}
|
||||||
|
optionsEnumArray[options++] = Mute;
|
||||||
|
}
|
||||||
#if defined(PIN_EINK_EN) || defined(PCA_PIN_EINK_EN)
|
#if defined(PIN_EINK_EN) || defined(PCA_PIN_EINK_EN)
|
||||||
optionsArray[options] = "Toggle Backlight";
|
optionsArray[options] = "Toggle Backlight";
|
||||||
optionsEnumArray[options++] = Backlight;
|
optionsEnumArray[options++] = Backlight;
|
||||||
@@ -872,7 +881,13 @@ void menuHandler::homeBaseMenu()
|
|||||||
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
||||||
bannerOptions.optionsCount = options;
|
bannerOptions.optionsCount = options;
|
||||||
bannerOptions.bannerCallback = [](int selected) -> void {
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
if (selected == Backlight) {
|
if (selected == Mute) {
|
||||||
|
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
||||||
|
externalNotificationModule->setMute(!externalNotificationModule->getMute());
|
||||||
|
IF_SCREEN(if (!externalNotificationModule->getMute()) externalNotificationModule->stopNow();)
|
||||||
|
}
|
||||||
|
} else if (selected == Backlight) {
|
||||||
|
screen->setOn(false);
|
||||||
#if defined(PIN_EINK_EN)
|
#if defined(PIN_EINK_EN)
|
||||||
if (uiconfig.screen_brightness == 1) {
|
if (uiconfig.screen_brightness == 1) {
|
||||||
uiconfig.screen_brightness = 0;
|
uiconfig.screen_brightness = 0;
|
||||||
@@ -949,6 +964,7 @@ void menuHandler::systemBaseMenu()
|
|||||||
|
|
||||||
optionsArray[options] = "Notifications";
|
optionsArray[options] = "Notifications";
|
||||||
optionsEnumArray[options++] = Notifications;
|
optionsEnumArray[options++] = Notifications;
|
||||||
|
|
||||||
optionsArray[options] = "Display Options";
|
optionsArray[options] = "Display Options";
|
||||||
optionsEnumArray[options++] = ScreenOptions;
|
optionsEnumArray[options++] = ScreenOptions;
|
||||||
|
|
||||||
@@ -985,7 +1001,7 @@ void menuHandler::systemBaseMenu()
|
|||||||
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
||||||
bannerOptions.bannerCallback = [](int selected) -> void {
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
if (selected == Notifications) {
|
if (selected == Notifications) {
|
||||||
menuHandler::menuQueue = menuHandler::notifications_menu;
|
menuHandler::menuQueue = menuHandler::buzzermodemenupicker;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
} else if (selected == ScreenOptions) {
|
} else if (selected == ScreenOptions) {
|
||||||
menuHandler::menuQueue = menuHandler::screen_options_menu;
|
menuHandler::menuQueue = menuHandler::screen_options_menu;
|
||||||
@@ -1604,9 +1620,9 @@ void menuHandler::BluetoothToggleMenu()
|
|||||||
|
|
||||||
void menuHandler::BuzzerModeMenu()
|
void menuHandler::BuzzerModeMenu()
|
||||||
{
|
{
|
||||||
static const char *optionsArray[] = {"All Enabled", "Disabled", "Notifications", "System Only", "DMs Only"};
|
static const char *optionsArray[] = {"All Enabled", "All Disabled", "Notifications", "System Only", "DMs Only"};
|
||||||
BannerOverlayOptions bannerOptions;
|
BannerOverlayOptions bannerOptions;
|
||||||
bannerOptions.message = "Buzzer Mode";
|
bannerOptions.message = "Notification Sounds";
|
||||||
bannerOptions.optionsArrayPtr = optionsArray;
|
bannerOptions.optionsArrayPtr = optionsArray;
|
||||||
bannerOptions.optionsCount = 5;
|
bannerOptions.optionsCount = 5;
|
||||||
bannerOptions.bannerCallback = [](int selected) -> void {
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
@@ -1981,30 +1997,6 @@ void menuHandler::wifiToggleMenu()
|
|||||||
screen->showOverlayBanner(bannerOptions);
|
screen->showOverlayBanner(bannerOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
void menuHandler::notificationsMenu()
|
|
||||||
{
|
|
||||||
enum optionsNumbers { Back, BuzzerActions };
|
|
||||||
static const char *optionsArray[] = {"Back", "Buzzer Actions"};
|
|
||||||
static int optionsEnumArray[] = {Back, BuzzerActions};
|
|
||||||
int options = 2;
|
|
||||||
|
|
||||||
BannerOverlayOptions bannerOptions;
|
|
||||||
bannerOptions.message = "Notifications";
|
|
||||||
bannerOptions.optionsArrayPtr = optionsArray;
|
|
||||||
bannerOptions.optionsCount = options;
|
|
||||||
bannerOptions.optionsEnumPtr = optionsEnumArray;
|
|
||||||
bannerOptions.bannerCallback = [](int selected) -> void {
|
|
||||||
if (selected == BuzzerActions) {
|
|
||||||
menuHandler::menuQueue = menuHandler::buzzermodemenupicker;
|
|
||||||
screen->runNow();
|
|
||||||
} else {
|
|
||||||
menuQueue = system_base_menu;
|
|
||||||
screen->runNow();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
screen->showOverlayBanner(bannerOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
void menuHandler::screenOptionsMenu()
|
void menuHandler::screenOptionsMenu()
|
||||||
{
|
{
|
||||||
// Check if brightness is supported
|
// Check if brightness is supported
|
||||||
@@ -2422,9 +2414,6 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
|
|||||||
case bluetooth_toggle_menu:
|
case bluetooth_toggle_menu:
|
||||||
BluetoothToggleMenu();
|
BluetoothToggleMenu();
|
||||||
break;
|
break;
|
||||||
case notifications_menu:
|
|
||||||
notificationsMenu();
|
|
||||||
break;
|
|
||||||
case screen_options_menu:
|
case screen_options_menu:
|
||||||
screenOptionsMenu();
|
screenOptionsMenu();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ class menuHandler
|
|||||||
number_test,
|
number_test,
|
||||||
wifi_toggle_menu,
|
wifi_toggle_menu,
|
||||||
bluetooth_toggle_menu,
|
bluetooth_toggle_menu,
|
||||||
notifications_menu,
|
|
||||||
screen_options_menu,
|
screen_options_menu,
|
||||||
power_menu,
|
power_menu,
|
||||||
system_base_menu,
|
system_base_menu,
|
||||||
@@ -98,7 +97,6 @@ class menuHandler
|
|||||||
static void numberTest();
|
static void numberTest();
|
||||||
static void wifiBaseMenu();
|
static void wifiBaseMenu();
|
||||||
static void wifiToggleMenu();
|
static void wifiToggleMenu();
|
||||||
static void notificationsMenu();
|
|
||||||
static void screenOptionsMenu();
|
static void screenOptionsMenu();
|
||||||
static void powerMenu();
|
static void powerMenu();
|
||||||
static void nodeNameLengthMenu();
|
static void nodeNameLengthMenu();
|
||||||
|
|||||||
@@ -822,8 +822,6 @@ typedef struct _meshtastic_StoreForwardPlusPlus {
|
|||||||
uint32_t encapsulated_from;
|
uint32_t encapsulated_from;
|
||||||
/* The receive time of the message in question */
|
/* The receive time of the message in question */
|
||||||
uint32_t encapsulated_rxtime;
|
uint32_t encapsulated_rxtime;
|
||||||
/* Used in a LINK_REQUEST to specify the message X spots back from head */
|
|
||||||
uint32_t chain_count;
|
|
||||||
} meshtastic_StoreForwardPlusPlus;
|
} meshtastic_StoreForwardPlusPlus;
|
||||||
|
|
||||||
/* Waypoint message, used to share arbitrary locations across the mesh */
|
/* Waypoint message, used to share arbitrary locations across the mesh */
|
||||||
@@ -1430,7 +1428,7 @@ extern "C" {
|
|||||||
#define meshtastic_Routing_init_default {0, {meshtastic_RouteDiscovery_init_default}}
|
#define meshtastic_Routing_init_default {0, {meshtastic_RouteDiscovery_init_default}}
|
||||||
#define meshtastic_Data_init_default {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0}
|
#define meshtastic_Data_init_default {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0}
|
||||||
#define meshtastic_KeyVerification_init_default {0, {0, {0}}, {0, {0}}}
|
#define meshtastic_KeyVerification_init_default {0, {0, {0}}, {0, {0}}}
|
||||||
#define meshtastic_StoreForwardPlusPlus_init_default {_meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, 0, 0, 0, 0, 0}
|
#define meshtastic_StoreForwardPlusPlus_init_default {_meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, 0, 0, 0, 0}
|
||||||
#define meshtastic_Waypoint_init_default {0, false, 0, false, 0, 0, 0, "", "", 0}
|
#define meshtastic_Waypoint_init_default {0, false, 0, false, 0, 0, 0, "", "", 0}
|
||||||
#define meshtastic_MqttClientProxyMessage_init_default {"", 0, {{0, {0}}}, 0}
|
#define meshtastic_MqttClientProxyMessage_init_default {"", 0, {{0, {0}}}, 0}
|
||||||
#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN}
|
#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN}
|
||||||
@@ -1462,7 +1460,7 @@ extern "C" {
|
|||||||
#define meshtastic_Routing_init_zero {0, {meshtastic_RouteDiscovery_init_zero}}
|
#define meshtastic_Routing_init_zero {0, {meshtastic_RouteDiscovery_init_zero}}
|
||||||
#define meshtastic_Data_init_zero {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0}
|
#define meshtastic_Data_init_zero {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0, false, 0}
|
||||||
#define meshtastic_KeyVerification_init_zero {0, {0, {0}}, {0, {0}}}
|
#define meshtastic_KeyVerification_init_zero {0, {0, {0}}, {0, {0}}}
|
||||||
#define meshtastic_StoreForwardPlusPlus_init_zero {_meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, 0, 0, 0, 0, 0}
|
#define meshtastic_StoreForwardPlusPlus_init_zero {_meshtastic_StoreForwardPlusPlus_SFPP_message_type_MIN, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, 0, 0, 0, 0}
|
||||||
#define meshtastic_Waypoint_init_zero {0, false, 0, false, 0, 0, 0, "", "", 0}
|
#define meshtastic_Waypoint_init_zero {0, false, 0, false, 0, 0, 0, "", "", 0}
|
||||||
#define meshtastic_MqttClientProxyMessage_init_zero {"", 0, {{0, {0}}}, 0}
|
#define meshtastic_MqttClientProxyMessage_init_zero {"", 0, {{0, {0}}}, 0}
|
||||||
#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN}
|
#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN, 0, 0, {0, {0}}, 0, 0, 0, 0, _meshtastic_MeshPacket_TransportMechanism_MIN}
|
||||||
@@ -1550,7 +1548,6 @@ extern "C" {
|
|||||||
#define meshtastic_StoreForwardPlusPlus_encapsulated_to_tag 7
|
#define meshtastic_StoreForwardPlusPlus_encapsulated_to_tag 7
|
||||||
#define meshtastic_StoreForwardPlusPlus_encapsulated_from_tag 8
|
#define meshtastic_StoreForwardPlusPlus_encapsulated_from_tag 8
|
||||||
#define meshtastic_StoreForwardPlusPlus_encapsulated_rxtime_tag 9
|
#define meshtastic_StoreForwardPlusPlus_encapsulated_rxtime_tag 9
|
||||||
#define meshtastic_StoreForwardPlusPlus_chain_count_tag 10
|
|
||||||
#define meshtastic_Waypoint_id_tag 1
|
#define meshtastic_Waypoint_id_tag 1
|
||||||
#define meshtastic_Waypoint_latitude_i_tag 2
|
#define meshtastic_Waypoint_latitude_i_tag 2
|
||||||
#define meshtastic_Waypoint_longitude_i_tag 3
|
#define meshtastic_Waypoint_longitude_i_tag 3
|
||||||
@@ -1776,8 +1773,7 @@ X(a, STATIC, SINGULAR, BYTES, message, 5) \
|
|||||||
X(a, STATIC, SINGULAR, UINT32, encapsulated_id, 6) \
|
X(a, STATIC, SINGULAR, UINT32, encapsulated_id, 6) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, encapsulated_to, 7) \
|
X(a, STATIC, SINGULAR, UINT32, encapsulated_to, 7) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, encapsulated_from, 8) \
|
X(a, STATIC, SINGULAR, UINT32, encapsulated_from, 8) \
|
||||||
X(a, STATIC, SINGULAR, UINT32, encapsulated_rxtime, 9) \
|
X(a, STATIC, SINGULAR, UINT32, encapsulated_rxtime, 9)
|
||||||
X(a, STATIC, SINGULAR, UINT32, chain_count, 10)
|
|
||||||
#define meshtastic_StoreForwardPlusPlus_CALLBACK NULL
|
#define meshtastic_StoreForwardPlusPlus_CALLBACK NULL
|
||||||
#define meshtastic_StoreForwardPlusPlus_DEFAULT NULL
|
#define meshtastic_StoreForwardPlusPlus_DEFAULT NULL
|
||||||
|
|
||||||
@@ -2147,7 +2143,7 @@ extern const pb_msgdesc_t meshtastic_ChunkedPayloadResponse_msg;
|
|||||||
#define meshtastic_QueueStatus_size 23
|
#define meshtastic_QueueStatus_size 23
|
||||||
#define meshtastic_RouteDiscovery_size 256
|
#define meshtastic_RouteDiscovery_size 256
|
||||||
#define meshtastic_Routing_size 259
|
#define meshtastic_Routing_size 259
|
||||||
#define meshtastic_StoreForwardPlusPlus_size 377
|
#define meshtastic_StoreForwardPlusPlus_size 371
|
||||||
#define meshtastic_ToRadio_size 504
|
#define meshtastic_ToRadio_size 504
|
||||||
#define meshtastic_User_size 115
|
#define meshtastic_User_size 115
|
||||||
#define meshtastic_Waypoint_size 165
|
#define meshtastic_Waypoint_size 165
|
||||||
|
|||||||
@@ -115,7 +115,6 @@ namespace graphics
|
|||||||
extern int bannerSignalBars;
|
extern int bannerSignalBars;
|
||||||
}
|
}
|
||||||
extern ScanI2C::DeviceAddress cardkb_found;
|
extern ScanI2C::DeviceAddress cardkb_found;
|
||||||
extern bool graphics::isMuted;
|
|
||||||
extern bool osk_found;
|
extern bool osk_found;
|
||||||
|
|
||||||
static const char *cannedMessagesConfigFile = "/prefs/cannedConf.proto";
|
static const char *cannedMessagesConfigFile = "/prefs/cannedConf.proto";
|
||||||
|
|||||||
@@ -45,10 +45,9 @@ int SystemCommandsModule::handleInputEvent(const InputEvent *event)
|
|||||||
// Mute
|
// Mute
|
||||||
case INPUT_BROKER_MSG_MUTE_TOGGLE:
|
case INPUT_BROKER_MSG_MUTE_TOGGLE:
|
||||||
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
if (moduleConfig.external_notification.enabled && externalNotificationModule) {
|
||||||
bool isMuted = externalNotificationModule->getMute();
|
externalNotificationModule->setMute(externalNotificationModule->getMute());
|
||||||
externalNotificationModule->setMute(!isMuted);
|
IF_SCREEN(if (!externalNotificationModule->getMute()) externalNotificationModule->stopNow(); screen->showSimpleBanner(
|
||||||
IF_SCREEN(graphics::isMuted = !isMuted; if (!isMuted) externalNotificationModule->stopNow();
|
externalNotificationModule->getMute() ? "Notifications\nEnabled" : "Notifications\nDisabled", 3000);)
|
||||||
screen->showSimpleBanner(isMuted ? "Notifications\nEnabled" : "Notifications\nDisabled", 3000);)
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
// Bluetooth
|
// Bluetooth
|
||||||
|
|||||||
Reference in New Issue
Block a user