From f346eabb91d2bf5ecb4032199342ba2103f945e3 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Sat, 1 Feb 2025 16:14:45 +0200 Subject: [PATCH] bg color for alerts in neighboring region --- firmware/src/JaamFirmware.cpp | 39 ++++++++++++++++++++++------------- firmware/src/JaamSettings.cpp | 1 + firmware/src/JaamSettings.h | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 1db3b66f..3c0b27e1 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -652,25 +652,29 @@ void initBroadcast() { LOG.println(); } +bool isAlertInNeighboringDistricts() { + int regionId = settings.getInt(HOME_DISTRICT); + auto neighborsPair = NEIGHBORING_DISTRICS[regionId]; + int count = neighborsPair.first; + int* neighbors = neighborsPair.second; + for (int i = 0; i < count; i++) { + if (id_to_alerts[neighbors[i]].first != 0) { + return true; + } + } + return false; +} + int getCurrentMapMode() { if (minuteOfSilence || uaAnthemPlaying) return 3; // ua flag int homeRegionId = settings.getInt(HOME_DISTRICT); int alarmMode = settings.getInt(ALARMS_AUTO_SWITCH); - if (alarmMode == 1) { - auto neighborsPair = NEIGHBORING_DISTRICS[homeRegionId]; - int count = neighborsPair.first; - int* neighbors = neighborsPair.second; - for (int i = 0; i < count; i++) { - if (id_to_alerts[neighbors[i]].first != 0) { - return 1; // alerts mode - } - } + if (alarmMode == 1 && isAlertInNeighboringDistricts()) { + return 1; // alerts mode } - if (alarmMode >= 1) { - if (id_to_alerts[homeRegionId].first != 0) { - return 1; // alerts mode - } + if (alarmMode >= 1 && id_to_alerts[homeRegionId].first != 0) { + return 1; // alerts mode } return isMapOff ? 0 : settings.getInt(MAP_MODE); } @@ -2141,6 +2145,9 @@ void handleColors(AsyncWebServerRequest* request) { addSlider(response, "color_missiles", "Ракетна небезпека", settings.getInt(COLOR_MISSILES), 0, 360, 1, "", false, true); addSlider(response, "color_drones", "Загроза БПЛА", settings.getInt(COLOR_DRONES), 0, 360, 1, "", false, true); addSlider(response, "color_home_district", "Домашній регіон", settings.getInt(COLOR_HOME_DISTRICT), 0, 360, 1, "", false, true); + if (isBgStripEnabled()) { + addSlider(response, "color_bg_neighbor_alert", "Колір фонової LED-стрічки при тривозі у сусідніх регіонах", settings.getInt(COLOR_BG_NEIGHBOR_ALERT), 0, 360, 1, "", false, true); + } response->println(""); response->println(""); response->println(""); @@ -2604,6 +2611,7 @@ void handleSaveColors(AsyncWebServerRequest* request) { saved = saveInt(request->getParam("color_missiles", true), COLOR_MISSILES) || saved; saved = saveInt(request->getParam("color_drones", true), COLOR_DRONES) || saved; saved = saveInt(request->getParam("color_home_district", true), COLOR_HOME_DISTRICT) || saved; + saved = saveInt(request->getParam("color_bg_neighbor_alert", true), COLOR_BG_NEIGHBOR_ALERT) || saved; request->send(redirectResponce(request, "/colors", saved)); } @@ -3130,7 +3138,10 @@ CRGB processAlarms(int led, long time, int expTime, int missilesTime, int drones hue = fromHue(colorSwitch, alertBrightness * settings.getInt(BRIGHTNESS_ALERT_OVER)); } else { float localBrightness; - if (isInArray(position, localDistrictLed, localDistrictLedsCount)) { + if (isBgStrip && isAlertInNeighboringDistricts()) { + colorSwitch = settings.getInt(COLOR_BG_NEIGHBOR_ALERT); + localBrightness = localBrightnessAlert; + } else if (isInArray(position, localDistrictLed, localDistrictLedsCount)) { colorSwitch = settings.getInt(COLOR_HOME_DISTRICT); localBrightness = localBrightnessHomeDistrict; } else { diff --git a/firmware/src/JaamSettings.cpp b/firmware/src/JaamSettings.cpp index 8c4190f6..54bdd76b 100644 --- a/firmware/src/JaamSettings.cpp +++ b/firmware/src/JaamSettings.cpp @@ -62,6 +62,7 @@ std::map intSettings = { {COLOR_MISSILES, {"colormi", 275}}, {COLOR_DRONES, {"colordr", 330}}, {COLOR_HOME_DISTRICT, {"colorhd", 120}}, + {COLOR_BG_NEIGHBOR_ALERT, {"colorbna", 30}}, {ENABLE_EXPLOSIONS, {"eex", 1}}, {ENABLE_MISSILES, {"emi", 1}}, {ENABLE_DRONES, {"edr", 1}}, diff --git a/firmware/src/JaamSettings.h b/firmware/src/JaamSettings.h index 644154d4..b320b0d7 100644 --- a/firmware/src/JaamSettings.h +++ b/firmware/src/JaamSettings.h @@ -45,6 +45,7 @@ enum Type { COLOR_MISSILES, COLOR_DRONES, COLOR_HOME_DISTRICT, + COLOR_BG_NEIGHBOR_ALERT, ENABLE_EXPLOSIONS, ENABLE_MISSILES, ENABLE_DRONES,