diff Discovery/Src/tMenuXtra.c @ 981:c6c781a2e85b default

Merge into default
author heinrichsweikamp
date Tue, 11 Feb 2025 18:12:00 +0100
parents 7755a476f164
children
line wrap: on
line diff
--- a/Discovery/Src/tMenuXtra.c	Tue Aug 13 13:24:54 2024 +0200
+++ b/Discovery/Src/tMenuXtra.c	Tue Feb 11 18:12:00 2025 +0100
@@ -38,6 +38,7 @@
 #include "simulation.h"
 #include "configuration.h"
 
+
 /* Exported functions --------------------------------------------------------*/
 
 uint32_t tMXtra_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext)
@@ -51,6 +52,8 @@
 
     SSettings *pSettings = settingsGetPointer();
 
+    resetLineMask(StMXTRA);
+
     /* DIVE MODE */
     if(actual_menu_content != MENU_SURFACE)
     {
@@ -168,10 +171,12 @@
            else
                text[textPointer++] = '\006';
 
-           if (!canDoFallback) {
+           if (!canDoFallback)
+           {
                text[textPointer++] = '\020';
                disableLine(StMXTRA_O2_Fallback);
-           } else {
+           } else
+           {
                enableLine(StMXTRA_O2_Fallback);
            }
            strcpy(&text[textPointer],"\n\r");
@@ -190,23 +195,68 @@
         }
 
 #ifdef ENABLE_PSCR_MODE
-        if(pSettings->dive_mode == DIVEMODE_PSCR)
-        {
-            if((line == 0) || (line == 4))
-             {
-                 textPointer += snprintf(&text[textPointer], 60,\
-                             "%c"
-                             ,TXT_PSClosedCircuit);
-             }
-        }
-#endif
-#ifdef ENABLE_CO2_SUPPORT
         if((line == 0) || (line == 4))
          {
-             textPointer += snprintf(&text[textPointer], 60, "%c", TXT_CO2Sensor);
+			if(pSettings->dive_mode == DIVEMODE_PSCR)
+			{
+				textPointer += snprintf(&text[textPointer], 60, "%c",TXT_PSClosedCircuit);
+				enableLine(StMXTRA_PSCR_O2_Drop);
+			}
+			else
+			{
+				text[textPointer++] = '\031';		/* change text color */
+				textPointer += snprintf(&text[textPointer], 60,"%c",TXT_PSClosedCircuit);
+				text[textPointer++] = '\020';		/* restore text color */
+				disableLine(StMXTRA_PSCR_O2_Drop);
+			}
+            strcpy(&text[textPointer],"\n\r");
+            textPointer += 2;
          }
 #endif
+#ifdef ENABLE_PREDIVE_CHECK
+        if((line == 0) || (line == 5))
+        {
+      		if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL))
+        	{
+        	    textPointer += snprintf(&text[textPointer], 60,"%c",TXT_PreDive);
+        	}
+      		else
+      		{
+      			text[textPointer++] = '\031';		/* change text color */
+      			textPointer += snprintf(&text[textPointer], 60,"%c",TXT_PreDive);
+      			text[textPointer++] = '\020';		/* restore text color */
+      			disableLine(StMXTRA_Predive_Check);
+      		}
+      		strcpy(&text[textPointer],"\n\r");
+      		textPointer += 2;
+        }
+#endif
     }
     return StMXTRA;
 }
 
+void tMXtra_checkLineStatus(void)
+{
+	uint8_t localLineMask = 0;
+	uint8_t lineMask = getLineMask(StMXTRA);
+    SSettings *pSettings = settingsGetPointer();
+
+	if(pSettings->CCR_Mode != CCRMODE_Sensors)
+	{
+		localLineMask |= 1 << 2;
+	}
+	if(pSettings->dive_mode != DIVEMODE_PSCR)
+	{
+		localLineMask |= 1 << 4;
+	}
+	if((pSettings->ppo2sensors_source != O2_SENSOR_SOURCE_ANADIG) && (pSettings->ppo2sensors_source != O2_SENSOR_SOURCE_DIGITAL))
+	{
+		localLineMask |= 1 << 5;
+	}
+
+	if(lineMask != localLineMask)
+	{
+			updateMenu();
+	}
+}
+