# HG changeset patch
# User Ideenmodellierer
# Date 1598800763 -7200
# Node ID 998529b3e142da4596c4b90be665af3f1a43fbdb
# Parent 06b21f1e47a5f8e18ad53f1141b546d2b6d86122
Added new top level menu for customization of views
In the previous versions all menus were occupied by menu option. To indroduce the selection views for data visualization a new tab had to be added.
The menu "Customize views" has been moded to the new tab but not yet removed from the previous one. In addition a view for selection of big font options has been added (including multilanguage strings and other infrastructure)
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/gfx_colors.h
--- a/Discovery/Inc/gfx_colors.h Sun Aug 30 17:14:31 2020 +0200
+++ b/Discovery/Inc/gfx_colors.h Sun Aug 30 17:19:23 2020 +0200
@@ -86,8 +86,8 @@
CLUT_MenuPageDecoParameter,
CLUT_MenuPageHardware,
CLUT_MenuPageSystem,
+ CLUT_MenuPageCustomView,
CLUT_MenuPageDivePlanner,
- CLUT_MenuPage9,
CLUT_MenuPage10,
CLUT_ButtonSymbols,
CLUT_InfoSurface,
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/tMenuCustom.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Inc/tMenuCustom.h Sun Aug 30 17:19:23 2020 +0200
@@ -0,0 +1,55 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file Discovery/Inc/tMenuCustom.h
+/// \brief Menu Custom View - Provide access to custom view options
+/// \author heinrichs weikamp gmbh
+/// \date 25-Aug-2020
+///
+/// $Id$
+///////////////////////////////////////////////////////////////////////////////
+/// \par Copyright (c) 2014-2020 Heinrichs Weikamp gmbh
+///
+/// This program is free software: you can redistribute it and/or modify
+/// it under the terms of the GNU General Public License as published by
+/// the Free Software Foundation, either version 3 of the License, or
+/// (at your option) any later version.
+///
+/// This program is distributed in the hope that it will be useful,
+/// but WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+/// GNU General Public License for more details.
+///
+/// You should have received a copy of the GNU General Public License
+/// along with this program. If not, see .
+//////////////////////////////////////////////////////////////////////////////
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef TMENU_CUSTOM_H
+#define TMENU_CUSTOM_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include
+
+/** @addtogroup Template
+ * @{
+ */
+
+/* Exported variables --------------------------------------------------------*/
+
+
+/* Exported functions --------------------------------------------------------*/
+
+uint32_t tMCustom_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext);
+
+ #ifdef __cplusplus
+}
+#endif
+
+#endif /* TMENU_CUSTOM_H */
+
+/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/tMenuEditCustom.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Inc/tMenuEditCustom.h Sun Aug 30 17:19:23 2020 +0200
@@ -0,0 +1,41 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file Discovery/Inc/tMenuEditCustom.h
+/// \brief Header file for editing custom view Settings
+/// \author heinrichs weikamp gmbh
+/// \date 05-Aug-2014
+///
+/// $Id$
+///////////////////////////////////////////////////////////////////////////////
+/// \par Copyright (c) 2014-2020 Heinrichs Weikamp gmbh
+///
+/// This program is free software: you can redistribute it and/or modify
+/// it under the terms of the GNU General Public License as published by
+/// the Free Software Foundation, either version 3 of the License, or
+/// (at your option) any later version.
+///
+/// This program is distributed in the hope that it will be useful,
+/// but WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+/// GNU General Public License for more details.
+///
+/// You should have received a copy of the GNU General Public License
+/// along with this program. If not, see .
+//////////////////////////////////////////////////////////////////////////////
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef TMENU_EDIT_CUSTOM_H
+#define TMENU_EDIT_CUSTOM_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx_hal.h"
+#include "gfx_engine.h"
+#include "settings.h"
+#include "data_central.h"
+
+void openEdit_Custom(uint8_t line);
+void openEdit_CustomviewDivemode2(const uint8_t* pcv_changelist);
+void CustomviewDivemode2_refresh();
+
+#endif /* TMENU_EDIT_CUSTOM_H */
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/tStructure.h
--- a/Discovery/Inc/tStructure.h Sun Aug 30 17:14:31 2020 +0200
+++ b/Discovery/Inc/tStructure.h Sun Aug 30 17:19:23 2020 +0200
@@ -304,15 +304,41 @@
#define StMSYS6_SetFactoryBC _MB(2,8,6,11,0)
#define StMSYS6_SetSampleIndx _MB(2,8,6,12,0)
-/* PAGE 9 */
-#define StMPLAN _MB(2,9,0,0,0)
+ /* PAGE 9 */
+
+ # define StMCustom _MB(2,9,0,0,0)
+
+ /* PAGE 9 EDIT FIELD CONTENT */
+//
+
+#define StMCustom1_CViewTimeout _MB(2,9,1,1,0)
+#define StMCustom1_CViewStandard _MB(2,9,1,2,0)
+#define StMCustom1_CornerTimeout _MB(2,9,1,3,0)
+#define StMCustom1_CornerStandard _MB(2,9,1,4,0)
+
-/* PAGE 9 EDIT FIELD CONTENT */
-#define StMPLAN2_Interval _MB(2,9,2,1,0)
-#define StMPLAN3_DiveTime _MB(2,9,3,1,0)
-#define StMPLAN4_MaxDepth _MB(2,9,4,1,0)
-#define StMPLAN5_ExitResult _MB(2,9,5,1,0)
-#define StMPLAN4_Settings _MB(2,9,6,1,0)
+#define StMCustom2_CViewSelection1 _MB(2,9,2,1,0)
+#define StMCustom2_CViewSelection2 _MB(2,9,2,2,0)
+#define StMCustom2_CViewSelection3 _MB(2,9,2,3,0)
+#define StMCustom2_CViewSelection4 _MB(2,9,2,4,0)
+#define StMCustom2_CViewSelection5 _MB(2,9,2,5,0)
+#define StMCustom2_CViewSelection6 _MB(2,9,2,6,0)
+
+
+#define StMCustom2_BFSelection _MB(2,9,3,1,0)
+
+/* PAGE 10 */
+#define StMPLAN _MB(2,10,0,0,0)
+
+/* PAGE 10 EDIT FIELD CONTENT */
+#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 StMPLAN4_Settings _MB(2,10,6,1,0)
+
+
+
//#define StMDECO6_SALINITY _MB(2,5,6,1,0)
@@ -321,7 +347,7 @@
-//#define StMDECO7_AMV _MB(2,5,7,1,0)
+//#define StMDECO7_AMV _MB(2,5,7,1,0)
//#define StMDECO7_DefaultAMV _MB(2,5,7,2,0)
//#define StMDECO7_RESERVE _MB(2,5,7,3,0)
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/text_multilanguage.h
--- a/Discovery/Inc/text_multilanguage.h Sun Aug 30 17:14:31 2020 +0200
+++ b/Discovery/Inc/text_multilanguage.h Sun Aug 30 17:19:23 2020 +0200
@@ -302,6 +302,14 @@
TXT2BYTE_ApneaSurface,
/* */
TXT2BYTE_FLIPDISPLAY,
+ TXT2BYTE_SelectCustomviews,
+ TXT2BYTE_SelectBigFont,
+ TXT2BYTE_MaxDepth,
+ TXT2BYTE_Stopwatch,
+ TXT2BYTE_TTS,
+ TXT2BYTE_ppoNair,
+ TXT2BYTE_Navigation,
+ TXT2BYTE_DepthData,
TXT2BYTE_END
};
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/gfx_colors.c
--- a/Discovery/Src/gfx_colors.c Sun Aug 30 17:14:31 2020 +0200
+++ b/Discovery/Src/gfx_colors.c Sun Aug 30 17:19:23 2020 +0200
@@ -88,8 +88,8 @@
0x00FFC000,//0x00C4EACC, // CLUT_MenuPageDecoParameter
0x00AC00ff,//0x00E5AE18, // CLUT_MenuPageHardware
0x00ff00ff,//0x00E5AEFF, // CLUT_MenuPageSystem
- 0x00C4EACC,//0x00FFFF00, // CLUT_MenuPageDivePlanner
- 0x00000000, // CLUT_MenuPage9 - UNUSED
+ 0x00FF55FF,//0x00FFFF00, // CLUT_MenuPageCustomView
+ 0x00C4EACC, // CLUT_MenuPageDivePlanner
0x00000000, // CLUT_MenuPage10 - UNUSED
0x00FFFFFF, // CLUT_ButtonSymbols
0x000092D0, // CLUT_InfoSurface
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/tMenuCustom.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Src/tMenuCustom.c Sun Aug 30 17:19:23 2020 +0200
@@ -0,0 +1,76 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file Discovery/Src/tMenuCustom.c
+/// \brief Menu Custom - Provide access to custom view options
+/// \author heinrichs weikamp gmbh
+/// \date 25-Aug-2020
+///
+/// \details
+///
+/// $Id$
+///////////////////////////////////////////////////////////////////////////////
+/// \par Copyright (c) 2014-2020 Heinrichs Weikamp gmbh
+///
+/// This program is free software: you can redistribute it and/or modify
+/// it under the terms of the GNU General Public License as published by
+/// the Free Software Foundation, either version 3 of the License, or
+/// (at your option) any later version.
+///
+/// This program is distributed in the hope that it will be useful,
+/// but WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+/// GNU General Public License for more details.
+///
+/// You should have received a copy of the GNU General Public License
+/// along with this program. If not, see .
+//////////////////////////////////////////////////////////////////////////////
+
+/* Includes ------------------------------------------------------------------*/
+#include
+#include
+#include "tMenu.h"
+#include "tStructure.h"
+#include "tMenuCustom.h"
+#include "text_multilanguage.h"
+#include "data_central.h"
+
+
+/* Exported functions --------------------------------------------------------*/
+
+uint32_t tMCustom_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext)
+{
+ uint8_t textPointer;
+
+ textPointer = 0;
+ *tab = 550;
+ *subtext = 0;
+
+ if((line == 0) || (line == 1))
+ {
+ text[textPointer++] = TXT_2BYTE;
+ text[textPointer++] = TXT2BYTE_Customviews;
+ }
+ text[textPointer++] = '\n';
+ text[textPointer++] = '\r';
+ text[textPointer] = 0;
+
+ if((line == 0) || (line == 2))
+ {
+ text[textPointer++] = TXT_2BYTE;
+ text[textPointer++] = TXT2BYTE_SelectCustomviews;
+ }
+ strcpy(&text[textPointer],"\n\r");
+ textPointer += 2;
+
+ if((line == 0) || (line == 3))
+ {
+ text[textPointer++] = TXT_2BYTE;
+ text[textPointer++] = TXT2BYTE_SelectBigFont;
+ }
+ strcpy(&text[textPointer],"\n\r");
+ textPointer += 2;
+
+ return StMCustom;
+}
+
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/tMenuEditCustom.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Src/tMenuEditCustom.c Sun Aug 30 17:19:23 2020 +0200
@@ -0,0 +1,721 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file Discovery/Src/tMenuEditXtra.c
+/// \brief Menu Edit Xtra - Specials in Divemode like Reset Stopwatch
+/// \author heinrichs weikamp gmbh
+/// \date 02-Mar-2015
+///
+/// \details
+///
+/// $Id$
+///////////////////////////////////////////////////////////////////////////////
+/// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
+///
+/// This program is free software: you can redistribute it and/or modify
+/// it under the terms of the GNU General Public License as published by
+/// the Free Software Foundation, either version 3 of the License, or
+/// (at your option) any later version.
+///
+/// This program is distributed in the hope that it will be useful,
+/// but WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+/// GNU General Public License for more details.
+///
+/// You should have received a copy of the GNU General Public License
+/// along with this program. If not, see .
+//////////////////////////////////////////////////////////////////////////////
+
+/* Includes ------------------------------------------------------------------*/
+#include "tMenuEditCustom.h"
+
+#include "gfx_fonts.h"
+#include "simulation.h"
+#include "timer.h"
+#include "tMenuEdit.h"
+#include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass()
+#include "t3.h"
+#include "t7.h"
+#include "data_exchange_main.h"
+#include "motion.h"
+
+#define CV_PER_PAGE (5u) /* number of cv selections shown at one page */
+
+static uint8_t customviewsSubpage = 0;
+static uint8_t customviewsSubpageMax = 0; /* number of pages needed to display all selectable views */
+static const uint8_t* pcv_curchangelist;
+/* Private function prototypes -----------------------------------------------*/
+void openEdit_Customview2(void);
+void refresh_Customviews2(void);
+/* Announced function prototypes -----------------------------------------------*/
+uint8_t OnAction_CViewTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_CViewStandard (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_CornerTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_CornerStandard(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+
+
+/* Exported functions --------------------------------------------------------*/
+
+
+
+
+void refresh_Customviews2(void)
+{
+ char text[32];
+ uint8_t textpointer = 0;
+
+ // header
+ text[0] = '\001';
+ text[1] = TXT_2BYTE;
+ text[2] = TXT2BYTE_Customviews;
+ text[3] = 0;
+ write_topline(text);
+
+ // custom view center return
+ textpointer = 0;
+ text[textpointer++] = TXT_2BYTE;
+ text[textpointer++] = TXT2BYTE_CViewTimeout;
+ textpointer += snprintf(&text[textpointer],11," %02u\016\016 %c\017",settingsGetPointer()->tX_customViewTimeout,TXT_Seconds);
+ write_label_var( 30, 700, ME_Y_LINE1, &FontT48, text);
+
+ // custom view center primary
+ text[0] = TXT_2BYTE;
+ text[1] = TXT2BYTE_CViewStandard;
+ text[2] = ' ';
+ text[3] = ' ';
+ switch(settingsGetPointer()->tX_customViewPrimary)
+ {
+ case CVIEW_sensors:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_O2monitor;
+ break;
+ case CVIEW_sensors_mV:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_O2voltage;
+ break;
+ case CVIEW_Compass:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Compass;
+ break;
+ case CVIEW_Decolist:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Decolist;
+ break;
+ case CVIEW_Tissues:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Tissues;
+ break;
+ case CVIEW_Profile:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Profile;
+ break;
+ case CVIEW_Gaslist:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Gaslist;
+ break;
+ case CVIEW_EADTime:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Info;
+ break;
+ case CVIEW_SummaryOfLeftCorner:
+ text[4] = TXT_2BYTE;
+ text[5] = TXT2BYTE_Summary;
+ break;
+ case CVIEW_noneOrDebug:
+ text[4] = ' ';
+ text[5] = '-';
+ break;
+ default:
+ snprintf(&text[4],3,"%02u",settingsGetPointer()->tX_customViewPrimary);
+ break;
+ }
+ text[6] = 0;
+ write_label_var( 30, 700, ME_Y_LINE2, &FontT48, text);
+
+
+ // field corner return
+ textpointer = 0;
+ text[textpointer++] = TXT_2BYTE;
+ text[textpointer++] = TXT2BYTE_CornerTimeout;
+ textpointer += snprintf(&text[textpointer],11," %02u\016\016 %c\017",settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout,TXT_Seconds);
+ write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text);
+
+ // field corner primary
+ text[0] = TXT_2BYTE;
+ text[1] = TXT2BYTE_CornerStandard;
+ text[2] = ' ';
+ text[3] = ' ';
+ switch(settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary)
+ {
+ /* Temperature */
+ case LLC_Temperature:
+ text[4] = TXT_Temperature;
+ break;
+ /* Average Depth */
+ case LLC_AverageDepth:
+ text[4] = TXT_AvgDepth;
+ break;
+ /* ppO2 */
+ case LLC_ppO2:
+ text[4] = TXT_ppO2;
+ break;
+ /* Stop Uhr */
+ case LLC_Stopwatch:
+ text[4] = TXT_Stopwatch;
+ break;
+ /* Ceiling */
+ case LLC_Ceiling:
+ text[4] = TXT_Ceiling;
+ break;
+ /* Future TTS */
+ case LLC_FutureTTS:
+ text[4] = TXT_FutureTTS;
+ break;
+ /* CNS */
+ case LLC_CNS:
+ text[4] = TXT_CNS;
+ break;
+ case LLC_GF:
+ text[4] = TXT_ActualGradient;
+ break;
+#ifdef ENABLE_BOTTLE_SENSOR
+ case LCC_BottleBar:
+ text[4] = TXT_AtemGasVorrat;
+ break;
+#endif
+ /* none */
+ case LLC_Empty:
+ text[4] = '-';
+ break;
+ default:
+ snprintf(&text[4],2,"%u",settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary);
+ break;
+ }
+ text[5] = 0;
+ write_label_var( 30, 700, ME_Y_LINE4, &FontT48, text);
+
+
+ // extra display
+ text[0] = TXT_2BYTE;
+ text[1] = TXT2BYTE_ExtraDisplay;
+ text[2] = ' ';
+ text[3] = ' ';
+ text[4] = TXT_2BYTE;
+ switch(settingsGetPointer()->extraDisplay)
+ {
+ /* BigFont */
+ case EXTRADISPLAY_BIGFONT:
+ text[5] = TXT2BYTE_ExtraBigFont;
+ break;
+ /* DecoGame */
+ case EXTRADISPLAY_DECOGAME:
+ text[5] = TXT2BYTE_ExtraDecoGame;
+ break;
+ /* none */
+ case EXTRADISPLAY_none:
+ text[5] = TXT2BYTE_ExtraNone;
+ break;
+
+ default:
+ snprintf(&text[4],2,"%u",settingsGetPointer()->extraDisplay);
+ break;
+ }
+ text[6] = 0;
+ write_label_var( 30, 700, ME_Y_LINE5, &FontT48, text);
+
+ /* MotionCtrl */
+ text[0] = TXT_2BYTE;
+ text[1] = TXT2BYTE_MotionCtrl;
+ text[2] = ' ';
+ text[3] = ' ';
+ text[4] = TXT_2BYTE;
+ switch(settingsGetPointer()->MotionDetection)
+ {
+ case MOTION_DETECT_OFF:
+ text[5] = TXT2BYTE_MoCtrlNone;
+ break;
+ case MOTION_DETECT_MOVE:
+ text[5] = TXT2BYTE_MoCtrlPitch;
+ break;
+ case MOTION_DETECT_SECTOR:
+ text[5] = TXT2BYTE_MoCtrlSector;
+ break;
+ case MOTION_DETECT_SCROLL:
+ text[5] = TXT2BYTE_MoCtrlScroll;
+ break;
+ default:
+ snprintf(&text[4],2,"%u",settingsGetPointer()->MotionDetection);
+ break;
+ }
+ text[6] = 0;
+ write_label_var( 30, 700, ME_Y_LINE6, &FontT48, text);
+
+ write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
+}
+
+void openEdit_Custom(uint8_t line)
+{
+ set_globalState_Menu_Line(line);
+ resetMenuEdit(CLUT_MenuPageCustomView);
+
+ switch(line)
+ {
+ case 1:
+ default:
+ openEdit_Customview2();
+ break;
+ case 2:
+ openEdit_CustomviewDivemode2(cv_changelist);
+ break;
+ case 3:
+ openEdit_CustomviewDivemode2(cv_changelist_BS);
+ break;
+ }
+}
+
+/* Private functions ---------------------------------------------------------*/
+void openEdit_Customview2(void)
+{
+ refresh_Customviews2();
+
+ write_field_button(StMCustom1_CViewTimeout, 400, 700, ME_Y_LINE1, &FontT48, "");
+ write_field_button(StMCustom1_CViewStandard, 400, 700, ME_Y_LINE2, &FontT48, "");
+
+ write_field_button(StMCustom1_CornerTimeout, 400, 700, ME_Y_LINE3, &FontT48, "");
+ write_field_button(StMCustom1_CornerStandard, 400, 700, ME_Y_LINE4, &FontT48, "");
+
+// write_field_button(StMCustom1_ExtraDisplay, 400, 700, ME_Y_LINE5, &FontT48, "");
+// write_field_button(StMCustom1_MotionCtrl, 400, 700, ME_Y_LINE6, &FontT48, "");
+
+ setEvent(StMCustom1_CViewTimeout, (uint32_t)OnAction_CViewTimeout);
+ setEvent(StMCustom1_CViewStandard, (uint32_t)OnAction_CViewStandard);
+
+ setEvent(StMCustom1_CornerTimeout, (uint32_t)OnAction_CornerTimeout);
+ setEvent(StMCustom1_CornerStandard, (uint32_t)OnAction_CornerStandard);
+
+// setEvent(StMCustom1_ExtraDisplay, (uint32_t)OnAction_ExtraDisplay);
+// setEvent(StMCustom1_MotionCtrl, (uint32_t)OnAction_MotionCtrl);
+}
+
+char customview_TXT2BYTE_helper2(uint8_t customViewId)
+{
+ char text = 0;
+
+ switch(customViewId)
+ {
+ case CVIEW_sensors:
+ text = TXT2BYTE_O2monitor;
+ break;
+ case CVIEW_sensors_mV:
+ text = TXT2BYTE_O2voltage;
+ break;
+ case CVIEW_Compass:
+ text = TXT2BYTE_Compass;
+ break;
+ case CVIEW_Decolist:
+ case CVIEW_T3_Decostop:
+ text = TXT2BYTE_Decolist;
+ break;
+ case CVIEW_Tissues:
+ text = TXT2BYTE_Tissues;
+ break;
+ case CVIEW_Profile:
+ text = TXT2BYTE_Profile;
+ break;
+ case CVIEW_Gaslist:
+ text = TXT2BYTE_Gaslist;
+ break;
+ case CVIEW_EADTime:
+ text = TXT2BYTE_Info;
+ break;
+ case CVIEW_SummaryOfLeftCorner:
+ text = TXT2BYTE_Summary;
+ break;
+ case CVIEW_noneOrDebug:
+ text = TXT2BYTE_DispNoneDbg;
+ break;
+ case CVIEW_T3_MaxDepth:
+ text = TXT2BYTE_MaxDepth;
+ break;
+ case CVIEW_T3_StopWatch:
+ text = TXT2BYTE_Stopwatch;
+ break;
+ case CVIEW_T3_TTS:
+ text = TXT2BYTE_TTS;
+ break;
+ case CVIEW_T3_ppO2andGas:
+ text = TXT2BYTE_ppoNair;
+ break;
+ case CVIEW_T3_Navigation:
+ text = TXT2BYTE_Navigation;
+ break;
+ case CVIEW_T3_DepthData:
+ text = TXT2BYTE_DepthData;
+ break;
+ default:
+ break;
+ }
+ return text;
+}
+
+
+uint8_t OnAction_CViewTimeout2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+ uint8_t value;
+ value = settingsGetPointer()->tX_customViewTimeout;
+
+ if(value < 5)
+ value = 5;
+ else if(value < 10)
+ value = 10;
+ else if(value < 15)
+ value = 15;
+ else if(value < 20)
+ value = 20;
+ else if(value < 30)
+ value = 30;
+ else if(value < 45)
+ value = 45;
+ else if(value < 60)
+ value = 60;
+ else
+ value = 0;
+
+ settingsGetPointer()->tX_customViewTimeout = value;
+ return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_CViewStandard2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+ uint8_t newValue;
+ switch(settingsGetPointer()->tX_customViewPrimary)
+ {
+ case CVIEW_sensors:
+ newValue = CVIEW_sensors_mV;
+ break;
+ case CVIEW_sensors_mV:
+ newValue = CVIEW_Compass;
+ break;
+ case CVIEW_Compass:
+ newValue = CVIEW_Decolist;
+ break;
+ case CVIEW_Decolist:
+ newValue = CVIEW_Tissues;
+ break;
+ case CVIEW_Tissues:
+ newValue = CVIEW_Profile;
+ break;
+ case CVIEW_Profile:
+ newValue = CVIEW_Gaslist;
+ break;
+ case CVIEW_Gaslist:
+ newValue = CVIEW_EADTime;
+ break;
+ case CVIEW_EADTime:
+ newValue = CVIEW_SummaryOfLeftCorner;
+ break;
+ case CVIEW_SummaryOfLeftCorner:
+ newValue = CVIEW_noneOrDebug;
+ break;
+ case CVIEW_noneOrDebug:
+ default:
+ newValue = CVIEW_sensors;
+ break;
+ }
+ settingsGetPointer()->tX_customViewPrimary = newValue;
+ return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_CornerTimeout2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+ uint8_t value;
+ value = settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout;
+
+ if(value < 5)
+ value = 5;
+ else if(value < 10)
+ value = 10;
+ else if(value < 15)
+ value = 15;
+ else if(value < 20)
+ value = 20;
+ else if(value < 30)
+ value = 30;
+ else if(value < 45)
+ value = 45;
+ else if(value < 60)
+ value = 60;
+ else
+ value = 0;
+
+ settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout = value;
+ return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_CornerStandard2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+ uint8_t value;
+ value = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary;
+
+ value += 1;
+
+ if(value >= LLC_END)
+ value = 0;
+
+ settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary = value;
+ return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_Customview_Toggle(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+
+ uint8_t line = 0;
+ SSettings *pSettings = settingsGetPointer();
+
+ switch(editId)
+ {
+ case StMCustom2_CViewSelection1: line = 1;
+ break;
+ case StMCustom2_CViewSelection2: line = 2;
+ break;
+ case StMCustom2_CViewSelection3: line = 3;
+ break;
+ case StMCustom2_CViewSelection4: line = 4;
+ break;
+ case StMCustom2_CViewSelection5: line = 5;
+ break;
+
+ default:
+ break;
+ }
+ if(pcv_curchangelist == cv_changelist)
+ {
+ pSettings->cv_configuration ^= 1 << (pcv_curchangelist[customviewsSubpage * 5 + line-1]);
+ if(t7_GetEnabled_customviews() == 0)
+ {
+ pSettings->cv_configuration ^= (1 << CVIEW_noneOrDebug);
+ }
+ }
+ else
+ {
+ pSettings->cv_config_BigScreen ^= 1 << (pcv_curchangelist[customviewsSubpage * 5 + line-1]);
+ if(t3_GetEnabled_customviews() == 0)
+ {
+ pSettings->cv_config_BigScreen ^= (1 << CVIEW_noneOrDebug);
+ }
+ }
+ return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_Customview_NextPage(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+ uint8_t id_next = 0;
+ customviewsSubpage++;
+ if(customviewsSubpage == customviewsSubpageMax)
+ {
+ customviewsSubpage = 0;
+ }
+ resetMenuEdit(CLUT_MenuPageCustomView); /* rebuild page */
+ openEdit_CustomviewDivemode2(pcv_curchangelist);
+
+ tMenuEdit_select(StMCustom2_CViewSelection6);
+ return UPDATE_DIVESETTINGS;
+}
+
+void openEdit_CustomviewDivemode2(const uint8_t* pcv_changelist)
+{
+
+ SSettings *pSettings = settingsGetPointer();
+ char text[MAX_PAGE_TEXTSIZE];
+ uint8_t textPointer = 0;
+ uint32_t id;
+
+ uint8_t i;
+
+ customviewsSubpageMax = (tHome_getNumberOfAvailableCVs(pcv_changelist) / CV_PER_PAGE) + 1;
+ pcv_curchangelist = pcv_changelist;
+
+ CustomviewDivemode2_refresh(pcv_changelist);
+
+
+ text[0] = '\001';
+ text[1] = TXT_2BYTE;
+ text[2] = TXT2BYTE_SelectCustomviews;
+ text[3] = 0;
+ write_topline(text);
+
+ for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */
+ {
+ textPointer = 0;
+ id = pcv_changelist[customviewsSubpage * 5 + i];
+ if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */
+ {
+ break;
+ }
+ else
+ {
+ if(pcv_changelist == cv_changelist)
+ {
+ text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_configuration,id);
+ }
+ else
+ {
+ text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_config_BigScreen,id);
+ }
+ text[textPointer++] = ' ';
+ textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r", TXT_2BYTE, customview_TXT2BYTE_helper2(id));
+
+ switch(i)
+ {
+ case 0: write_field_button(StMCustom2_CViewSelection1, 30, 800, ME_Y_LINE1, &FontT48, "");
+ break;
+ case 1: write_field_button(StMCustom2_CViewSelection2, 30, 800, ME_Y_LINE2, &FontT48, "");
+ break;
+ case 2: write_field_button(StMCustom2_CViewSelection3, 30, 800, ME_Y_LINE3, &FontT48, "");
+ break;
+ case 3: write_field_button(StMCustom2_CViewSelection4, 30, 800, ME_Y_LINE4, &FontT48, "");
+ break;
+ case 4: write_field_button(StMCustom2_CViewSelection5, 30, 800, ME_Y_LINE5, &FontT48, "");
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ // setEvent(StMCustom2_CViewSelection1, (uint32_t)OnAction_Customview_Toggle);
+
+
+ if(customviewsSubpageMax != 1)
+ {
+ textPointer = 0;
+ text[textPointer++] = TXT_2BYTE;
+ text[textPointer++] = TXT2BYTE_ButtonNext;
+ text[textPointer] = 0;
+ write_field_button(StMCustom2_CViewSelection6, 30, 800, ME_Y_LINE6, &FontT48, text);
+ }
+
+ /* because of the ID handling inside of the functions, all buttons needs to be assigned before the events may be set => have the same loop twice */
+ for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */
+ {
+ id = pcv_changelist[customviewsSubpage * 5 + i];
+ if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */
+ {
+ break;
+ }
+ else
+ {
+ switch(i)
+ {
+ case 0: setEvent(StMCustom2_CViewSelection1, (uint32_t)OnAction_Customview_Toggle);
+ break;
+ case 1: setEvent(StMCustom2_CViewSelection2, (uint32_t)OnAction_Customview_Toggle);
+ break;
+ case 2: setEvent(StMCustom2_CViewSelection3, (uint32_t)OnAction_Customview_Toggle);
+ break;
+ case 3: setEvent(StMCustom2_CViewSelection4, (uint32_t)OnAction_Customview_Toggle);
+ break;
+ case 4: setEvent(StMCustom2_CViewSelection5, (uint32_t)OnAction_Customview_Toggle);
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ }
+ if(customviewsSubpageMax != 1)
+ {
+ setEvent(StMCustom2_CViewSelection6,(uint32_t)OnAction_Customview_NextPage);
+ }
+ for(;i<5;i++) /* clear empty lines in case menu shows less than 5 entries */
+ {
+ switch(i)
+ {
+ case 0: write_label_var( 30, 800, ME_Y_LINE1, &FontT48, "");
+ break;
+ case 1: write_label_var( 30, 800, ME_Y_LINE2, &FontT48, "");
+ break;
+ case 2: write_label_var( 30, 800, ME_Y_LINE3, &FontT48, "");
+ break;
+ case 3: write_label_var( 30, 800, ME_Y_LINE4, &FontT48, "");
+ break;
+ case 4: write_label_var( 30, 800, ME_Y_LINE5, &FontT48, "");
+ break;
+ default:
+ break;
+ };
+ }
+
+
+ write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);
+}
+
+
+void CustomviewDivemode2_refresh()
+{
+ SSettings *pSettings = settingsGetPointer();
+ char text[MAX_PAGE_TEXTSIZE];
+ uint8_t textPointer = 0;
+ uint32_t id;
+
+ uint8_t i;
+
+ text[0] = '\001';
+ text[1] = TXT_2BYTE;
+ text[2] = TXT2BYTE_SelectCustomviews;
+ text[3] = 0;
+ write_topline(text);
+
+
+ for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */
+ {
+ textPointer = 0;
+ id = pcv_curchangelist[customviewsSubpage * 5 + i];
+ if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */
+ {
+ break;
+ }
+ else
+ {
+ if(pcv_curchangelist == cv_changelist)
+ {
+ text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_configuration,id);
+ }
+ else
+ {
+ text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_config_BigScreen,id);
+ }
+ text[textPointer++] = ' ';
+ textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r", TXT_2BYTE, customview_TXT2BYTE_helper2(id));
+
+ switch(i)
+ {
+ case 0: write_label_var( 30, 800, ME_Y_LINE1, &FontT48, text);
+ break;
+ case 1: write_label_var( 30, 800, ME_Y_LINE2, &FontT48, text);
+ break;
+ case 2: write_label_var( 30, 800, ME_Y_LINE3, &FontT48, text);
+ break;
+ case 3: write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text);
+ break;
+ case 4: write_label_var( 30, 800, ME_Y_LINE5, &FontT48, text);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ if(customviewsSubpageMax != 1)
+ {
+ textPointer = 0;
+ text[textPointer++] = TXT_2BYTE;
+ text[textPointer++] = TXT2BYTE_ButtonNext;
+ text[textPointer] = 0;
+ write_label_var( 30, 800, ME_Y_LINE6, &FontT48, text);
+ }
+}
diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/text_multilanguage.c
--- a/Discovery/Src/text_multilanguage.c Sun Aug 30 17:14:31 2020 +0200
+++ b/Discovery/Src/text_multilanguage.c Sun Aug 30 17:19:23 2020 +0200
@@ -1258,26 +1258,11 @@
static uint8_t text_ES_ExtraDisplay[] = "Letras grandes";
// Menu SYS2
-#ifdef ENABLE_BIGFONT_VX
-static uint8_t text_EN_ExtraBigFont[] = "classic";
-static uint8_t text_DE_ExtraBigFont[] = "klassisch";
-static uint8_t text_FR_ExtraBigFont[] = "classic";
-static uint8_t text_IT_ExtraBigFont[] = "classic";
-static uint8_t text_ES_ExtraBigFont[] = "classic";
-
-static uint8_t text_EN_ExtraBigFontV2[] = "V2";
-static uint8_t text_DE_ExtraBigFontV2[] = "V2";
-static uint8_t text_FR_ExtraBigFontV2[] = "V2";
-static uint8_t text_IT_ExtraBigFontV2[] = "V2";
-static uint8_t text_ES_ExtraBigFontV2[] = "V2";
-
-#else
static uint8_t text_EN_ExtraBigFont[] = "yes";
static uint8_t text_DE_ExtraBigFont[] = "ja";
static uint8_t text_FR_ExtraBigFont[] = "si";
static uint8_t text_IT_ExtraBigFont[] = "si";
static uint8_t text_ES_ExtraBigFont[] = "si";
-#endif
// Menu SYS2 (future feature)
static uint8_t text_EN_ExtraDecoGame[] = "Deco game";
@@ -1579,6 +1564,36 @@
static uint8_t text_IT_FlipDisplay[] = "";
static uint8_t text_ES_FlipDisplay[] = "";
+static uint8_t text_EN_SelectCustom[] = "Data views";
+static uint8_t text_DE_SelectCustom[] = "Auswahl Datenanzeige";
+static uint8_t text_FR_SelectCustom[] = "";
+static uint8_t text_IT_SelectCustom[] = "";
+static uint8_t text_ES_SelectCustom[] = "";
+
+static uint8_t text_EN_SelectBigFont[] = "Bigfont data views";
+static uint8_t text_DE_SelectBigFont[] = "Grosschrift Daten";
+static uint8_t text_FR_SelectBigFont[] = "";
+static uint8_t text_IT_SelectBigFont[] = "";
+static uint8_t text_ES_SelectBigFont[] = "";
+
+static uint8_t text_EN_ppo2Air[] = "PPO2 and active gas";
+static uint8_t text_DE_ppo2Air[] = "PPO2 und aktives Atemgas";
+static uint8_t text_FR_ppo2Air[] = "";
+static uint8_t text_IT_ppo2Air[] = "";
+static uint8_t text_ES_ppo2Air[] = "";
+
+static uint8_t text_EN_Navigation[] = "Compass and stop watch";
+static uint8_t text_DE_Navigation[] = "Kompass und Stoppuhr";
+static uint8_t text_FR_Navigation[] = "";
+static uint8_t text_IT_Navigation[] = "";
+static uint8_t text_ES_Navigation[] = "";
+
+static uint8_t text_EN_DepthData[] = "Average and max depth";
+static uint8_t text_DE_DepthData[] = "Mittlere und maximale Tiefe";
+static uint8_t text_FR_DepthData[] = "";
+static uint8_t text_IT_DepthData[] = "";
+static uint8_t text_ES_DepthData[] = "";
+
/* Lookup Table -------------------------------------------------------------*/
const tText text_array[] =
@@ -1769,9 +1784,6 @@
{(uint8_t)TXT2BYTE_DiveResetAvgQ, {text_EN_DiveResetAvgQ, text_DE_DiveResetAvgQ, text_FR_DiveResetAvgQ, text_IT_DiveResetAvgQ, text_ES_DiveResetAvgQ}},
{(uint8_t)TXT2BYTE_ExtraDisplay, {text_EN_ExtraDisplay, text_DE_ExtraDisplay, text_FR_ExtraDisplay, text_IT_ExtraDisplay, text_ES_ExtraDisplay}},
{(uint8_t)TXT2BYTE_ExtraBigFont, {text_EN_ExtraBigFont, text_DE_ExtraBigFont, text_FR_ExtraBigFont, text_IT_ExtraBigFont, text_ES_ExtraBigFont}},
-#ifdef ENABLE_BIGFONT_VX
- {(uint8_t)TXT2BYTE_ExtraBigFontV2, {text_EN_ExtraBigFontV2, text_DE_ExtraBigFontV2, text_FR_ExtraBigFontV2, text_IT_ExtraBigFontV2, text_ES_ExtraBigFontV2}},
-#endif
{(uint8_t)TXT2BYTE_ExtraDecoGame, {text_EN_ExtraDecoGame, text_DE_ExtraDecoGame, text_FR_ExtraDecoGame, text_IT_ExtraDecoGame, text_ES_ExtraDecoGame}},
{(uint8_t)TXT2BYTE_ExtraNone, {text_EN_ExtraNone, text_DE_ExtraNone, text_FR_ExtraNone, text_IT_ExtraNone, text_ES_ExtraNone}},
{(uint8_t)TXT2BYTE_MotionCtrl, {text_EN_MotionCtrl, text_DE_MotionCtrl, text_FR_MotionCtrl, text_IT_MotionCtrl, text_ES_MotionCtrl}},
@@ -1802,4 +1814,14 @@
{(uint8_t)TXT2BYTE_FLIPDISPLAY, {text_EN_FlipDisplay, text_DE_FlipDisplay, text_FR_FlipDisplay, text_IT_FlipDisplay, text_ES_FlipDisplay}},
+ {(uint8_t)TXT2BYTE_SelectCustomviews,{text_EN_SelectCustom, text_DE_SelectCustom, text_FR_SelectCustom, text_IT_SelectCustom, text_ES_SelectCustom}},
+ {(uint8_t)TXT2BYTE_SelectBigFont, {text_EN_SelectBigFont, text_DE_SelectBigFont, text_FR_SelectBigFont, text_IT_SelectBigFont, text_ES_SelectBigFont}},
+ {(uint8_t)TXT2BYTE_MaxDepth, {text_EN_MaxDepth, text_DE_MaxDepth, text_FR_MaxDepth, text_IT_MaxDepth, text_ES_MaxDepth}},
+ {(uint8_t)TXT2BYTE_Stopwatch, {text_EN_Stopwatch, text_DE_Stopwatch, text_FR_Stopwatch, text_IT_Stopwatch, text_ES_Stopwatch}},
+ {(uint8_t)TXT2BYTE_TTS, {text_EN_TTS, text_DE_TTS, text_FR_TTS, text_IT_TTS, text_ES_TTS}},
+ {(uint8_t)TXT2BYTE_ppoNair, {text_EN_ppo2Air, text_DE_ppo2Air, text_FR_ppo2Air, text_IT_ppo2Air, text_ES_ppo2Air}},
+ {(uint8_t)TXT2BYTE_Navigation, {text_EN_Navigation, text_DE_Navigation, text_FR_Navigation, text_IT_Navigation, text_ES_Navigation}},
+ {(uint8_t)TXT2BYTE_DepthData, {text_EN_DepthData, text_DE_DepthData, text_FR_DepthData, text_IT_DepthData, text_ES_DepthData}},
+
+
};