# HG changeset patch
# User Ideenmodellierer
# Date 1609963260 -3600
# Node ID fb5bb04ad914d558a1bd8fc343f3706b3f5ea934
# Parent  c56ed16dbd39cf063aa3353f485f6957b703b895
Merged menu items of viewport and motion control:
viewport and motion control are depending on each other and were listed at the to level of custom view tab. Because motion control is just a one line item it has been moved into the viewport page. As result there is one free line for future custom view options available again.

diff -r c56ed16dbd39 -r fb5bb04ad914 Discovery/Inc/tStructure.h
--- a/Discovery/Inc/tStructure.h	Wed Jan 06 19:41:43 2021 +0100
+++ b/Discovery/Inc/tStructure.h	Wed Jan 06 21:01:00 2021 +0100
@@ -324,11 +324,11 @@
 #define StMCustom3_CViewSelection6	_MB(2,9,3,6,0)
 
 #define StMCustom4_CViewSelection1	_MB(2,9,4,1,0)
-#define StMCustom5_CViewMotion		_MB(2,9,5,1,0)
 
-#define StMCustom6_CViewPortCalib	_MB(2,9,6,1,0)
-#define StMCustom6_CViewPortLayout	_MB(2,9,6,2,0)
-#define StMCustom6_CViewPortAmbient	_MB(2,9,6,3,0)
+#define StMCustom5_CViewPortCalib	_MB(2,9,5,1,0)
+#define StMCustom5_CViewPortLayout	_MB(2,9,5,2,0)
+#define StMCustom5_CViewPortAmbient	_MB(2,9,5,3,0)
+#define StMCustom5_CViewPortControl	_MB(2,9,5,4,0)
 
 /* PAGE 10 */
 #define StMPLAN		_MB(2,10,0,0,0)
@@ -337,7 +337,7 @@
 #define StMPLAN2_Interval			_MB(2,10,2,1,0)
 #define StMPLAN3_DiveTime			_MB(2,10,3,1,0)
 #define StMPLAN4_MaxDepth			_MB(2,10,4,1,0)
-#define StMPLAN5_ExitResult		_MB(2,10,5,1,0)
+#define StMPLAN5_ExitResult			_MB(2,10,5,1,0)
 #define StMPLAN4_Settings			_MB(2,10,6,1,0)
 
 
diff -r c56ed16dbd39 -r fb5bb04ad914 Discovery/Src/tMenuCustom.c
--- a/Discovery/Src/tMenuCustom.c	Wed Jan 06 19:41:43 2021 +0100
+++ b/Discovery/Src/tMenuCustom.c	Wed Jan 06 21:01:00 2021 +0100
@@ -113,42 +113,11 @@
     /* MotionCtrl */
 		text[textPointer++] = TXT_2BYTE;
 		text[textPointer++] = TXT2BYTE_MotionCtrl;
-		text[textPointer++] = ' ';
-		text[textPointer++] = ' ';
-		text[textPointer++] = TXT_2BYTE;
-		switch(settingsGetPointer()->MotionDetection)
-		{
-			case MOTION_DETECT_OFF:
-				text[textPointer++] = TXT2BYTE_MoCtrlNone;
-				break;
-			case MOTION_DETECT_MOVE:
-				text[textPointer++] = TXT2BYTE_MoCtrlPitch;
-				break;
-			case MOTION_DETECT_SECTOR:
-				text[textPointer++] = TXT2BYTE_MoCtrlSector;
-				break;
-			case MOTION_DETECT_SCROLL:
-				text[textPointer++] = TXT2BYTE_MoCtrlScroll;
-						break;
-			default:
-				snprintf(&text[4],2,"%u",settingsGetPointer()->MotionDetection);
-				textPointer++;
-			break;
-		}
     }
 
 	strcpy(&text[textPointer],"\n\r");
 	textPointer += 2;
-
-    if((line == 0) || (line == 6))
-    {
-		text[textPointer++] = TXT_2BYTE;
-		text[textPointer++] = TXT2BYTE_CalibView;
-		strcpy(&text[textPointer],"\n\r");
-		textPointer += 2;
-    }
 #endif
-
     return StMCustom;
 }
 
diff -r c56ed16dbd39 -r fb5bb04ad914 Discovery/Src/tMenuEdit.c
--- a/Discovery/Src/tMenuEdit.c	Wed Jan 06 19:41:43 2021 +0100
+++ b/Discovery/Src/tMenuEdit.c	Wed Jan 06 21:01:00 2021 +0100
@@ -232,9 +232,9 @@
 	 	 case StMCustom3_CViewSelection5:
 	 	 case StMCustom3_CViewSelection6: refreshFct = CustomviewDivemode_refresh;
 	 	 	 break;
-	 	 case (StMCustom6_CViewPortCalib& MaskFieldDigit):
-	 	 case StMCustom6_CViewPortLayout:
-	 	 case StMCustom6_CViewPortAmbient: refreshFct = refresh_ViewPort;
+	 	 case (StMCustom5_CViewPortCalib & MaskFieldDigit):
+	 	 case StMCustom5_CViewPortLayout:
+	 	 case StMCustom5_CViewPortAmbient: refreshFct = refresh_ViewPort;
 	 		 break;
 	 	 default:	 /* no menu has been updated */
 	 		 break;
diff -r c56ed16dbd39 -r fb5bb04ad914 Discovery/Src/tMenuEditCustom.c
--- a/Discovery/Src/tMenuEditCustom.c	Wed Jan 06 19:41:43 2021 +0100
+++ b/Discovery/Src/tMenuEditCustom.c	Wed Jan 06 21:01:00 2021 +0100
@@ -43,8 +43,9 @@
 #include <math.h>
 
 
-#define CV_PER_PAGE  (5u)			/* number of cv selections shown at one page */
+#define CV_PER_PAGE  		(5u)	/* number of cv selections shown at one page */
 #define CV_SUBPAGE_MAX		(2u)	/* max number of customer view selection pages */
+#define MAX_BACKLIGHT_BOOST (2u)	/* max number of backlight levels which may be increased during focus state */
 
 static uint8_t customviewsSubpage = 0;
 static uint8_t customviewsSubpageMax = 0;	/* number of pages needed to display all selectable views */
@@ -65,6 +66,7 @@
 uint8_t OnAction_CViewPortCalib(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
 uint8_t OnAction_CViewPortLayout(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
 uint8_t OnAction_CViewPortAmbient(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_CViewPortControl(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
 /* Exported functions --------------------------------------------------------*/
 
 
@@ -187,14 +189,14 @@
 
     text[0] = '\001';
     text[1] = TXT_2BYTE;
-    text[2] = TXT2BYTE_CalibView;
+    text[2] = TXT2BYTE_MotionCtrl;
     text[3] = 0;
     write_topline(text);
 
     text[0] = TXT_2BYTE;
     text[1] = TXT2BYTE_CalibView;
     text[2] = 0;
-    write_label_var(   30, 700, ME_Y_LINE3, &FontT48, text);
+    write_label_var(   30, 700, ME_Y_LINE2, &FontT48, text);
 
     textIndex = 0;
     text[textIndex++] = TXT_2BYTE;
@@ -202,13 +204,13 @@
     text[textIndex++] = ' ';
     text[textIndex++] = '\006' - (settingsGetPointer()->viewPortMode >> 4);
     text[textIndex++] = 0;
-    write_label_var(   30, 700, ME_Y_LINE5, &FontT48, text);
+    write_label_var(   30, 700, ME_Y_LINE3, &FontT48, text);
     textIndex = 0;
     text[textIndex++] = TXT_2BYTE;
     text[textIndex++] = TXT2BYTE_BoostBacklight;
     text[textIndex++] = ' ';
     snprintf(&text[textIndex],32," %d",(settingsGetPointer()->viewPortMode & 0x3));
-    write_label_var(   30, 700, ME_Y_LINE6, &FontT48, text);
+    write_label_var(   30, 700, ME_Y_LINE4, &FontT48, text);
 
     write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
 
@@ -217,13 +219,6 @@
     {
     	distance = checkViewport(stateUsed->lifeData.compass_roll, stateUsed->lifeData.compass_pitch, stateUsed->lifeData.compass_heading);
 
-    	if(pSettings->showDebugInfo)
-    	{
-			snprintf(text,32,"\001%03.3f",distance);
-			write_label_var(   30, 700, ME_Y_LINE2, &FontT48, text);
-    	}
-
-
     	/* show "bar graph" indicating the distance to the center point */
         textIndex = 0;
         text[textIndex++] = '\001';
@@ -249,6 +244,36 @@
     	text[textIndex] = 0;
     	write_label_var(   30, 700, ME_Y_LINE1, &FontT48, text);
 
+/* MotionCtrl */
+        textIndex = 0;
+
+    	text[textIndex++] = TXT_2BYTE;
+   		text[textIndex++] = TXT2BYTE_MotionCtrl;
+   		text[textIndex++] = ' ';
+   		text[textIndex++] = ' ';
+   		text[textIndex++] = TXT_2BYTE;
+   		switch(settingsGetPointer()->MotionDetection)
+   		{
+   			case MOTION_DETECT_OFF:
+   				text[textIndex++] = TXT2BYTE_MoCtrlNone;
+   				break;
+   			case MOTION_DETECT_MOVE:
+   				text[textIndex++] = TXT2BYTE_MoCtrlPitch;
+   				break;
+   			case MOTION_DETECT_SECTOR:
+   				text[textIndex++] = TXT2BYTE_MoCtrlSector;
+   				break;
+   			case MOTION_DETECT_SCROLL:
+   				text[textIndex++] = TXT2BYTE_MoCtrlScroll;
+   						break;
+   			default:
+   					snprintf(&text[4],2,"%u",settingsGetPointer()->MotionDetection);
+    				textIndex++;
+    			break;
+        }
+    	text[textIndex] = 0;
+    	write_label_var(   30, 700, ME_Y_LINE6, &FontT48, text);
+
 		if(distance < 0.5)
 		{
 			set_Backlight_Boost(settingsGetPointer()->viewPortMode & 0x03);
@@ -269,7 +294,6 @@
 		}
 		resetFocusState();	/* no other instance shall be impacted by the local detection */
     }
-
 }
 
 void openEdit_Custom(uint8_t line)
@@ -288,10 +312,8 @@
     		break;
     	case 4:		openEdit_CustomviewDivemode(cv_changelist_BS);
     		break;
-    	case 5:		openEdit_MotionCtrl();
+    	case 5:		openEdit_ViewPort();
     		break;
-    	case 6: 	openEdit_ViewPort();
-    	break;
     }
 }
 
@@ -369,13 +391,16 @@
 {
     refresh_ViewPort();
 
-    write_field_button(StMCustom6_CViewPortCalib,	400, 700, ME_Y_LINE3,  &FontT48, "");
-    write_field_button(StMCustom6_CViewPortLayout,	400, 700, ME_Y_LINE5,  &FontT48, "");
-    write_field_button(StMCustom6_CViewPortAmbient,	400, 700, ME_Y_LINE6,  &FontT48, "");
+    write_field_button(StMCustom5_CViewPortCalib,	400, 700, ME_Y_LINE2,  &FontT48, "");
+    write_field_button(StMCustom5_CViewPortLayout,	400, 700, ME_Y_LINE3,  &FontT48, "");
+    write_field_button(StMCustom5_CViewPortAmbient,	400, 700, ME_Y_LINE4,  &FontT48, "");
+    write_field_button(StMCustom5_CViewPortControl,	400, 700, ME_Y_LINE6,  &FontT48, "");
 
-    setEvent(StMCustom6_CViewPortCalib,		(uint32_t)OnAction_CViewPortCalib);
-    setEvent(StMCustom6_CViewPortLayout,	(uint32_t)OnAction_CViewPortLayout);
-    setEvent(StMCustom6_CViewPortAmbient,	(uint32_t)OnAction_CViewPortAmbient);
+
+    setEvent(StMCustom5_CViewPortCalib,		(uint32_t)OnAction_CViewPortCalib);
+    setEvent(StMCustom5_CViewPortLayout,	(uint32_t)OnAction_CViewPortLayout);
+    setEvent(StMCustom5_CViewPortAmbient,	(uint32_t)OnAction_CViewPortAmbient);
+    setEvent(StMCustom5_CViewPortControl,	(uint32_t)OnAction_CViewPortControl);
 }
 
 
@@ -670,12 +695,44 @@
 uint8_t OnAction_CViewPortAmbient(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
 {
 	SSettings* pSettings = settingsGetPointer();
-	pSettings->viewPortMode = (pSettings->viewPortMode + 1) & 0xF3;
+	if(((pSettings->viewPortMode +1) & 0x03) <= MAX_BACKLIGHT_BOOST)
+	{
+		pSettings->viewPortMode++;
+	}
+	else
+	{
+		pSettings->viewPortMode &= 0xFC;
+	}
 
 	return UPDATE_DIVESETTINGS;
 }
 
+uint8_t OnAction_CViewPortControl(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+	uint8_t newValue = 0;
+    SSettings *pSettings = settingsGetPointer();
 
+    switch(pSettings->MotionDetection)
+    {
+    	case MOTION_DETECT_OFF:
+    			newValue = MOTION_DETECT_MOVE;
+    		break;
+    	case MOTION_DETECT_MOVE:
+    			newValue = MOTION_DETECT_SECTOR;
+    		break;
+    	case MOTION_DETECT_SECTOR:
+    			newValue = MOTION_DETECT_SCROLL;
+    		break;
+    	case MOTION_DETECT_SCROLL:
+    			newValue = MOTION_DETECT_OFF;
+    		break;
+    	default:
+    			newValue = MOTION_DETECT_OFF;
+    		break;
+     }
+     pSettings->MotionDetection = newValue;
+     return UPDATE_DIVESETTINGS;
+}
 
 void openEdit_CustomviewDivemode(const uint8_t* pcv_changelist)
 {