diff Discovery/Src/tMenuEditXtra.c @ 38:5f11787b4f42

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children 74a8296a2318
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Src/tMenuEditXtra.c	Sat Apr 28 11:52:34 2018 +0200
@@ -0,0 +1,176 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- 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 <http://www.gnu.org/licenses/>.
+//////////////////////////////////////////////////////////////////////////////
+
+/* Includes ------------------------------------------------------------------*/
+#include "tMenuEditXtra.h"
+
+#include "gfx_fonts.h"
+#include "simulation.h"
+#include "timer.h"
+#include "tMenuEdit.h"
+
+/* Private function prototypes -----------------------------------------------*/
+void openEdit_CompassHeading(void);
+void openEdit_ResetStopwatch(void);
+void openEdit_SimFollowDecostops(void);
+void openEdit_SetManualMarker(void);
+
+/* Announced function prototypes -----------------------------------------------*/
+uint8_t OnAction_CompassHeading	(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+
+/* Exported functions --------------------------------------------------------*/
+
+void openEdit_Xtra(uint8_t line)
+{
+    set_globalState_Menu_Line(line);
+    resetMenuEdit(CLUT_MenuPageXtra);
+
+    switch(line)
+    {
+    case 1:
+    default:
+        openEdit_ResetStopwatch();
+        break;
+    case 2:
+        openEdit_CompassHeading();
+        break;
+    case 3:
+        openEdit_SetManualMarker();
+        break;
+    case 4:
+        openEdit_SimFollowDecostops();
+        break;
+    }
+}
+
+/* Private functions ---------------------------------------------------------*/
+void openEdit_ResetStopwatch(void)
+{
+    timer_Stopwatch_Restart();
+    exitMenuEdit_to_Home();
+}
+
+void openEdit_SetManualMarker(void)
+{
+    if(stateUsed == stateRealGetPointer())
+        stateRealGetPointerWrite()->events.manualMarker = 1;
+    else
+        stateSimGetPointerWrite()->events.manualMarker = 1;
+
+    exitMenuEdit_to_Home();
+}
+
+void openEdit_SimFollowDecostops(void)
+{
+    simulation_set_heed_decostops(!simulation_get_heed_decostops());
+    exitMenuEdit_to_Menu_with_Menu_Update();
+}
+
+void refresh_CompassHeading(void)
+{
+    uint16_t heading;
+    char text[32];
+
+    text[0] = '\001';
+    text[1] = TXT_2BYTE;
+    text[2] = TXT2BYTE_CompassHeading;
+    text[3] = 0;
+    write_topline(text);
+
+    heading = (uint16_t)stateUsed->lifeData.compass_heading;
+    snprintf(text,32,"\001%03i`",heading);
+    write_label_var(   0, 800, ME_Y_LINE1, &FontT54, text);
+
+    tMenuEdit_refresh_field(StMXTRA_CompassHeading);
+}
+
+void openEdit_CompassHeading(void)
+{
+
+    write_field_button(StMXTRA_CompassHeading,20, 800, ME_Y_LINE4, &FontT48, "Set");
+
+    setEvent(StMXTRA_CompassHeading,  (uint32_t)OnAction_CompassHeading);
+//	startEdit();
+}
+
+
+uint8_t OnAction_CompassHeading	(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    if(is_stateUsedSetToSim())
+        stateSimGetPointerWrite()->diveSettings.compassHeading = (uint16_t)stateUsed->lifeData.compass_heading;
+    else
+        stateRealGetPointerWrite()->diveSettings.compassHeading = (uint16_t)stateUsed->lifeData.compass_heading;
+    exitMenuEdit_to_Home_with_Menu_Update();
+    return EXIT_TO_HOME;
+}
+
+
+/*
+    uint8_t digitContentNew;
+    uint32_t newHeading;
+
+    if(action == ACTION_BUTTON_ENTER)
+    {
+        return digitContent;
+    }
+    if(action == ACTION_BUTTON_ENTER_FINAL)
+    {
+        evaluateNewString(editId, &newHeading, 0, 0, 0);
+        if(newHeading > 359)
+            newHeading = 0;
+
+        if(is_stateUsedSetToSim())
+            stateSimGetPointerWrite()->diveSettings.compassHeading = newHeading;
+        else
+            stateRealGetPointerWrite()->diveSettings.compassHeading = newHeading;
+        exitMenuEdit_to_Home_with_Menu_Update();
+        return EXIT_TO_HOME;
+    }
+    if(action == ACTION_BUTTON_NEXT)
+    {
+        digitContentNew = digitContent + 1;
+        if((digitNumber == 0) && (digitContentNew > '3'))
+            digitContentNew = '0';
+        else
+        if(digitContentNew > '9')
+            digitContentNew = '0';
+        return digitContentNew;
+    }
+    if(action == ACTION_BUTTON_BACK)
+    {
+        digitContentNew = digitContent - 1;
+        if((digitNumber == 0) && (digitContentNew < '0'))
+            digitContentNew = '3';
+        else
+        if(digitContentNew < '0')
+            digitContentNew = '9';
+        return digitContentNew;
+    }
+
+    return EXIT_TO_MENU;
+*/