# HG changeset patch
# User Ideenmodellierer
# Date 1729015237 -7200
# Node ID a2523e19f59a1d94ba23cb5bc550ac3d14d2e7d1
# Parent  7bd347bdaa8115c21d2fa862c063a4da485f038d
VPMTable deco stop visualization:
The current deco stop will change from white to green to indicate that the diver is in the region where the stop time is counted down.

diff -r 7bd347bdaa81 -r a2523e19f59a Discovery/Src/data_exchange_main.c
--- a/Discovery/Src/data_exchange_main.c	Tue Oct 15 19:12:05 2024 +0200
+++ b/Discovery/Src/data_exchange_main.c	Tue Oct 15 20:00:37 2024 +0200
@@ -72,6 +72,7 @@
 #include "timer.h"
 #include "buehlmann.h"
 #include "externLogbookFlash.h"
+#include "vpm.h"
 
 /* #define TESTBENCH */
 
diff -r 7bd347bdaa81 -r a2523e19f59a Discovery/Src/t7.c
--- a/Discovery/Src/t7.c	Tue Oct 15 19:12:05 2024 +0200
+++ b/Discovery/Src/t7.c	Tue Oct 15 20:00:37 2024 +0200
@@ -2184,7 +2184,6 @@
 	SSettings* pSettings;
 	pSettings = settingsGetPointer();
 	uint8_t decoPlanEntries = 6;
-	uint8_t color = 0;
 
 	uint8_t local_ppo2sensors_deactivated = 0;
 
@@ -2639,27 +2638,29 @@
         break;
 
     case CVIEW_Decolist:
-        snprintf(text,100,"\032\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist);
+
 
         if(settingsGetPointer()->VPM_conservatism.ub.alternative == 0)
         {
-        	GFX_write_string(&FontT42,&t7cH,text,0);
+        	text[0] = '\032';
         }
         else
         {
         	switch(vpm_get_TableState())
         	{
-        		case VPM_TABLE_MISSED: color = CLUT_WarningRed;
+        		case VPM_TABLE_MISSED: text[0] = '\025';
         			break;
-        		case VPM_TABLE_WARNING: color = CLUT_WarningYellow;
+        		case VPM_TABLE_WARNING: text[0] = '\024';
         			break;
         		case VPM_TABLE_ACTIVE:
         		case VPM_TABLE_INIT:
-        		default:	color = 0;
+        		default:	text[0] = '\032';
         			break;
         	}
-			GFX_write_string_color(&FontT42,&t7cH,text,0,color);
         }
+        snprintf(&text[1],100,"\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist);
+        GFX_write_string(&FontT42,&t7cH,text,0);
+
         uint8_t depthNext, depthLast, depthSecond, depthInc;
 
         depthLast 		= (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10);
@@ -2699,7 +2700,7 @@
         }
         if(decoPlanEntries == 5) /* add VPM deco zone */
         {
-        	textpointer += snprintf(&text[textpointer],20,"\031\034   Zone %2u\016\016%c%c\017\n\r",vpm_get_decozone(), unit_depth_char1(), unit_depth_char2());
+        	textpointer += snprintf(&text[textpointer],30,"\031\034   Zone %2u\016\016%c%c\017\n\r",vpm_get_decozone(), unit_depth_char1(), unit_depth_char2());
         }
         if(!pSettings->FlipDisplay)
         {
@@ -2878,9 +2879,21 @@
     /* next deco stop */
     if(nextstopDepthMeter)
     {
-        snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop);
-        GFX_write_string(&FontT42,&t7r2,TextR2,0);
-        textlength = snprintf(TextR2,TEXTSIZE,"\020\002%u%c%c %u'"
+    	snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop);
+    	GFX_write_string(&FontT42,&t7r2,TextR2,0);
+
+    	if((pSettings->VPM_conservatism.ub.alternative) && (fabs(stateUsed->lifeData.depth_meter - nextstopDepthMeter)) < 1.5)
+    	{
+    		TextR2[0] = '\026';
+    		textlength = 1;
+    	}
+    	else
+    	{
+       		TextR2[0] = '\020';
+       		textlength = 1;
+    	}
+
+        textlength += snprintf(&TextR2[textlength],TEXTSIZE,"\002%u%c%c %u'"
             , unit_depth_integer(nextstopDepthMeter)
             , unit_depth_char1_T105()
             , unit_depth_char2_T105()