changeset 379:0dbf550dc743 MotionDetection

Added missing customerview selection In the previous version only 6 out of 10 custom views could be configurated => Added a second page for the dive menu system tab In case all views are deactivated the none / debug page will be set as default
author ideenmodellierer
date Mon, 16 Sep 2019 22:49:34 +0200
parents 834e087505ec
children a7331e4a9ca6
files Discovery/Inc/tHome.h Discovery/Inc/tMenu.h Discovery/Inc/tMenuSystem.h Discovery/Src/t7.c Discovery/Src/tHome.c Discovery/Src/tMenu.c Discovery/Src/tMenuEditSystem.c Discovery/Src/tMenuSystem.c
diffstat 8 files changed, 94 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/Discovery/Inc/tHome.h	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Inc/tHome.h	Mon Sep 16 22:49:34 2019 +0200
@@ -83,7 +83,7 @@
 };
 
 // for custom view switch on/off 161122 hw
-extern const uint8_t cv_changelist[6];
+extern const uint8_t cv_changelist[];
 #define CHECK_BIT_THOME(var,pos) (((var)>>(pos)) & 1)
 
 typedef struct
--- a/Discovery/Inc/tMenu.h	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Inc/tMenu.h	Mon Sep 16 22:49:34 2019 +0200
@@ -78,6 +78,7 @@
 void tM_rebuild_menu_after_tComm(void);
 
 void tM_refresh(char *text, uint8_t *textPointer, uint8_t line, const char content[6]);
+void tM_build_page(uint32_t id, char *text, uint16_t tab, char *subtext);
 
 void block_diluent_page(void);
 void unblock_diluent_page(void);
--- a/Discovery/Inc/tMenuSystem.h	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Inc/tMenuSystem.h	Mon Sep 16 22:49:34 2019 +0200
@@ -36,6 +36,8 @@
 	* @{
 	*/
 
+void set_CustomsviewsSubpage(uint8_t page);
+
 /* Exported variables --------------------------------------------------------*/
 
 
--- a/Discovery/Src/t7.c	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Src/t7.c	Mon Sep 16 22:49:34 2019 +0200
@@ -1501,6 +1501,7 @@
 
 uint8_t t7_GetEnabled_customviews()
 {
+	int8_t i;
     uint8_t *pViews;
     uint8_t increment = 1;
 
@@ -1516,14 +1517,23 @@
     {
     	increment = 1;
     /* check if view is enabled */
-        for(int i=0;i<6;i++)
+    	i=0;
+    	do
         {
-             if((*pViews == cv_changelist[i]) && !CHECK_BIT_THOME(cv_config, (1 << cv_changelist[i])))
+             if(*pViews == cv_changelist[i])
              {
-            	 increment = 0;
-                   break;
+            	 if(!CHECK_BIT_THOME(cv_config, cv_changelist[i]))
+             	 {
+            	 	 increment = 0;
+             	 }
+                 break;
              }
-        }
+             i++;
+        } while(cv_changelist[i] != CVIEW_END);
+    	if(cv_changelist[i] == CVIEW_END)
+    	{
+    		 increment = 0;
+    	}
         if (((*pViews == CVIEW_sensors) || (*pViews == CVIEW_sensors_mV)) &&
            	((stateUsed->diveSettings.ppo2sensors_deactivated) || (stateUsed->diveSettings.ccrOption == 0)))
         {
@@ -1538,6 +1548,7 @@
 
 void t7_change_customview(uint8_t action)
 {
+	int8_t i;
     uint8_t *pViews;
     uint8_t *pStartView,*pCurView, *pLastView;
     _Bool cv_disabled = 0;
@@ -1585,13 +1596,15 @@
     do
     {
         cv_disabled = 0;
-        for(int i=0;i<6;i++)
+        i=0;
+       	while(cv_changelist[i] != CVIEW_END)
         {
              if((*pViews == cv_changelist[i]) && !CHECK_BIT_THOME(settingsGetPointer()->cv_configuration, cv_changelist[i]))
              {
             	 cv_disabled = 1;
                    break;
              }
+             i++;
         }
 
         if (((*pViews == CVIEW_sensors) || (*pViews == CVIEW_sensors_mV)) &&
--- a/Discovery/Src/tHome.c	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Src/tHome.c	Mon Sep 16 22:49:34 2019 +0200
@@ -57,7 +57,7 @@
 static uint16_t tHome_tick_count_cview;
 static uint16_t tHome_tick_count_field;
 
-const uint8_t cv_changelist[6] = {CVIEW_Compass, CVIEW_SummaryOfLeftCorner, CVIEW_Tissues, CVIEW_Profile, CVIEW_EADTime, CVIEW_Gaslist};
+const uint8_t cv_changelist[] = {CVIEW_Compass, CVIEW_SummaryOfLeftCorner, CVIEW_Tissues, CVIEW_Profile, CVIEW_EADTime, CVIEW_Gaslist, CVIEW_noneOrDebug, CVIEW_Decolist,CVIEW_sensors,CVIEW_sensors_mV, CVIEW_END};
 
 /* Private function prototypes -----------------------------------------------*/
 
--- a/Discovery/Src/tMenu.c	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Src/tMenu.c	Mon Sep 16 22:49:34 2019 +0200
@@ -315,7 +315,7 @@
 }
 
 
-static void tM_build_page(uint32_t id, char *text, uint16_t tab, char *subtext)
+void tM_build_page(uint32_t id, char *text, uint16_t tab, char *subtext)
 {
     uint8_t linesFound;
     uint16_t i;
--- a/Discovery/Src/tMenuEditSystem.c	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Src/tMenuEditSystem.c	Mon Sep 16 22:49:34 2019 +0200
@@ -35,11 +35,18 @@
 #include "ostc.h"
 #include "settings.h" // for getLicence()
 #include "tHome.h"  // for enum CUSTOMVIEWS and init_t7_compass()
+#include "tMenu.h"
 #include "tMenuEdit.h"
+#include "tMenuSystem.h"
 #include "Motion.h"
+#include "t7.h"
 
+
+#define CV_SUBPAGE_MAX		(2u)	/* max number of customer view selection pages */
 /* Private variables ---------------------------------------------------------*/
-uint8_t infoPage = 0;
+static uint8_t infoPage = 0;
+
+
 
 /* Private function prototypes -----------------------------------------------*/
 void openEdit_DateTime(void);
@@ -150,13 +157,38 @@
 
 void openEdit_CustomviewDivemode(uint8_t line)
 {
+	static uint8_t customviewsSubpage = 0;
 	SSettings *pSettings = settingsGetPointer();
 	extern _Bool WriteSettings;
+	char text[MAX_PAGE_TEXTSIZE];
+	uint16_t tabPosition;
+	uint32_t id;
 
-    pSettings->cv_configuration ^= 1 << (cv_changelist[line-1]);
-    WriteSettings = 1;
-    InitMotionDetection(); /* consider new view setup for view selection by motion */
-    exitMenuEdit_to_Menu_with_Menu_Update();
+
+	if((line == 6) || (cv_changelist[customviewsSubpage * 5 + line-1] == CVIEW_END))		/* select next set of views */
+	{
+		customviewsSubpage++;
+		if(customviewsSubpage == CV_SUBPAGE_MAX)
+		{
+			customviewsSubpage = 0;
+		}
+		set_CustomsviewsSubpage(customviewsSubpage);
+		/* rebuild the selection page with the next set of customer views */
+		id = tMSystem_refresh(0, text, &tabPosition, NULL);
+		tM_build_page(id, text, tabPosition, NULL);
+		openMenu(0);
+	}
+	else
+	{
+		pSettings->cv_configuration ^= 1 << (cv_changelist[customviewsSubpage * 5 + line-1]);
+		if(t7_GetEnabled_customviews() == 0)
+		{
+			pSettings->cv_configuration ^= (1 << CVIEW_noneOrDebug);
+		}
+		WriteSettings = 1;
+		InitMotionDetection(); /* consider new view setup for view selection by motion */
+		exitMenuEdit_to_Menu_with_Menu_Update();
+	}
 }
 
 
--- a/Discovery/Src/tMenuSystem.c	Mon Sep 16 22:46:24 2019 +0200
+++ b/Discovery/Src/tMenuSystem.c	Mon Sep 16 22:49:34 2019 +0200
@@ -31,14 +31,22 @@
 #include "tMenuSystem.h"
 #include "tHome.h"  // for enum CUSTOMVIEWS and init_t7_compass()
 
+static uint8_t customviewsSubpage = 0;
+
 /* Private function prototypes -----------------------------------------------*/
 char customview_TXT2BYTE_helper(uint8_t customViewId);
 
+void set_CustomsviewsSubpage(uint8_t page)
+{
+	customviewsSubpage = page;
+}
+
 /* Exported functions --------------------------------------------------------*/
 
 uint32_t tMSystem_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext)
 {
     SSettings *data;
+    int i;
     uint8_t textPointer;
     uint8_t dateFormat;
     uint8_t RTEhigh, RTElow;
@@ -56,18 +64,33 @@
     {
         uint8_t id;
 
-        for(int i=0; i<6;i++)
+        for(i=0; i<5;i++)		/* fill maximum 5 items and leave last one for sub page selection */
         {
-            id = cv_changelist[i];
-            text[textPointer++] = '\006' - CHECK_BIT_THOME(data->cv_configuration,id);
-            text[textPointer++] = ' ';
-            textPointer += snprintf(&text[textPointer], 60,
-                "%c%c\n\r",
-                TXT_2BYTE, customview_TXT2BYTE_helper(id)
-            );
+        	id = cv_changelist[customviewsSubpage * 5 + i];
+        	if(id == CVIEW_END)		/* last list item? */
+        	{
+        		break;
+        	}
+        	else
+        	{
+				text[textPointer++] = '\006' - CHECK_BIT_THOME(data->cv_configuration,id);
+				text[textPointer++] = ' ';
+				textPointer += snprintf(&text[textPointer], 60,
+					"%c%c\n\r",
+					TXT_2BYTE, customview_TXT2BYTE_helper(id));
+        	}
         }
+        text[textPointer++] = TXT_2BYTE;
+        text[textPointer++] = TXT2BYTE_ButtonNext;
         text[textPointer] = 0;
 
+        for(;i<5;i++)	/* clear empty lines in case menu shows less than 5 entries */
+        {
+        	text[textPointer++]='\n';
+        	text[textPointer++]='\r';
+        	text[textPointer] = 0;
+        }
+
         return StMSYS;
     }
 
@@ -300,6 +323,7 @@
         text = TXT2BYTE_Summary;
         break;
     case CVIEW_noneOrDebug:
+    	text = TXT2BYTE_DispNoneDbg;
         break;
     default:
         break;