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

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children ba229a012ac7
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Src/tMenuEditDecoParameter.c	Sat Apr 28 11:52:34 2018 +0200
@@ -0,0 +1,735 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file   Discovery/Src/tMenuEditDecoParameter.c
+/// \brief  Main Template file for Menu Edit Deco Parameters
+/// \author heinrichs weikamp gmbh
+/// \date   31-July-2014
+///
+/// \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 "tMenuEditDecoParameter.h"
+
+#include "gfx_fonts.h"
+#include "tMenuEdit.h"
+#include "unit.h" // last stop in meter and feet
+
+#define MEDP_TAB (380)
+
+/* Private function prototypes -----------------------------------------------*/
+void openEdit_DecoAlgorithm(void);
+void openEdit_DecoGF(void);
+void openEdit_DecoAltGF(void);
+void openEdit_DecoVPM(void);
+void openEdit_DecoLastStop(void);
+void openEdit_DM_SwitchAlgorithm(uint8_t line);
+
+//void openEdit_DecoGasUsage(void);
+
+/* Announced function prototypes -----------------------------------------------*/
+uint8_t OnAction_GF				(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_VPM			(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_AltGF			(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_LastStop		(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+
+uint8_t OnAction_GasAMV			(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_DefaultAMV		(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_GasReserve		(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+
+uint8_t OnAction_DM_ActiveGF	(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_DM_ActiveVPM	(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+uint8_t OnAction_DM_AltActiveGF	(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
+/* Exported functions --------------------------------------------------------*/
+
+void openEdit_DecoParameter(uint8_t line)
+{
+    set_globalState_Menu_Line(line);
+    resetMenuEdit(CLUT_MenuPageDecoParameter);
+
+    if(actual_menu_content == MENU_SURFACE)
+    {
+        switch(line)
+        {
+        case 1:
+        default:
+            openEdit_DecoAlgorithm();
+            break;
+        case 2:
+            openEdit_DecoVPM();
+            break;
+        case 3:
+            openEdit_DecoGF();
+            break;
+        case 4:
+            openEdit_DecoAltGF();
+            break;
+        case 5:
+            openEdit_DecoLastStop();
+            break;
+        case 6:
+            break;
+        }
+    }
+    else
+        openEdit_DM_SwitchAlgorithm(line);
+}
+
+/* Private functions ---------------------------------------------------------*/
+
+void openEdit_DM_SwitchAlgorithm(uint8_t line)
+{
+    SDiveState * pState;
+
+    if(actual_menu_content == MENU_DIVE_REAL)
+    {
+        pState = stateRealGetPointerWrite();
+    }
+    else
+    {
+        pState = stateSimGetPointerWrite();
+    }
+
+    switch(line)
+    {
+    case 1:
+    default:
+        pState->diveSettings.deco_type.ub.standard = VPM_MODE;
+        break;
+    case 2:
+
+        pState->diveSettings.gf_high = settingsGetPointer()->GF_high;
+        pState->diveSettings.gf_low = settingsGetPointer()->GF_low;
+        pState->diveSettings.deco_type.ub.standard = GF_MODE;
+        break;
+    case 3:
+        pState->diveSettings.gf_high = settingsGetPointer()->aGF_high;
+        pState->diveSettings.gf_low = settingsGetPointer()->aGF_low;
+        pState->diveSettings.deco_type.ub.standard = GF_MODE;
+        break;
+    }
+    exitMenuEdit_to_Home_with_Menu_Update();
+}
+
+
+void openEdit_DecoAlgorithm(void)
+{
+    SSettings *pSettings = settingsGetPointer();
+
+    if(pSettings->deco_type.ub.standard == VPM_MODE)
+        pSettings->deco_type.ub.standard = GF_MODE;
+    else
+        pSettings->deco_type.ub.standard = VPM_MODE;
+
+    exitEditWithUpdate();
+}
+
+
+void openEdit_DecoVPM(void)
+{
+    uint8_t vpm;
+    char text[32];
+    SSettings *pSettings = settingsGetPointer();
+
+    vpm = pSettings->VPM_conservatism.ub.standard;
+
+    text[0] = '\001';
+    text[1] = TXT_Decoparameters;
+    text[2] = 0;
+    write_topline(text);
+
+    write_label_var(   20, 800, ME_Y_LINE2, &FontT48, "VPM");
+
+    write_field_udigit(StMDECOP2_VPM,	MEDP_TAB, 800, ME_Y_LINE2, &FontT48, "+#", (uint32_t)vpm, 0, 0, 0);
+
+    write_buttonTextline(TXT2BYTE_ButtonMinus,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonPlus);
+
+    setEvent(StMDECOP2_VPM, 					(uint32_t)OnAction_VPM);
+    startEdit();
+}
+
+
+void openEdit_DecoGF(void)
+{
+    uint8_t gfLow,gfHigh;
+    char text[32];
+    SSettings *pSettings = settingsGetPointer();
+
+    gfLow = pSettings->GF_low;
+    gfHigh = pSettings->GF_high;
+
+    text[0] = '\001';
+    text[1] = TXT_Decoparameters;
+    text[2] = 0;
+    write_topline(text);
+
+    write_label_var(   20, 800, ME_Y_LINE3, &FontT48, "GF\016\016low/high\017");
+
+    write_field_udigit(StMDECOP3_GF, MEDP_TAB, 800, ME_Y_LINE3, &FontT48, "##/##", (uint32_t)gfLow, (uint32_t)gfHigh, 0, 0);
+
+    write_buttonTextline(TXT2BYTE_ButtonMinus,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonPlus);
+
+    setEvent(StMDECOP3_GF, 					(uint32_t)OnAction_GF);
+    startEdit();
+}
+
+
+void openEdit_DecoAltGF(void)
+{
+    uint8_t aGfLow,aGfHigh;
+    char text[32];
+    SSettings *pSettings = settingsGetPointer();
+
+    aGfLow = pSettings->aGF_low;
+    aGfHigh = pSettings->aGF_high;
+
+    text[0] = '\001';
+    text[1] = TXT_Decoparameters;
+    text[2] = 0;
+    write_topline(text);
+
+    write_label_var(   20, 800, ME_Y_LINE4, &FontT48, "aGF\016\016low/high\017");
+    write_field_udigit(StMDECOP4_AltGF,		MEDP_TAB, 800, ME_Y_LINE4, &FontT48, "##/##", (uint32_t)aGfLow, (uint32_t)aGfHigh, 0, 0);
+
+    write_buttonTextline(TXT2BYTE_ButtonMinus,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonPlus);
+
+    setEvent(StMDECOP4_AltGF, 					(uint32_t)OnAction_AltGF);
+    startEdit();
+}
+
+
+void openEdit_DecoLastStop(void)
+{
+    uint8_t lastStop;
+    char text[32];
+    SSettings *pSettings = settingsGetPointer();
+
+    lastStop = pSettings->last_stop_depth_meter;
+
+    text[0] = '\001';
+    text[1] = TXT_LastDecostop;
+    text[2] = 0;
+    write_topline(text);
+
+    write_label_fix(   20, 800, ME_Y_LINE5, &FontT48, TXT_LastDecostop);
+
+    if(settingsGetPointer()->nonMetricalSystem)
+    {
+        write_label_var(  MEDP_TAB + 40, 800, ME_Y_LINE5, &FontT48, "\016\016  ft\017");
+        write_field_2digit(StMDECOP5_LASTSTOP,	MEDP_TAB, 800, ME_Y_LINE5, &FontT48, "##", (uint32_t)unit_depth_integer(lastStop), 0, 0, 0);
+    }
+    else
+    {
+        write_label_var(  MEDP_TAB + 20, 800, ME_Y_LINE5, &FontT48, "\016\016 meter\017");
+        write_field_udigit(StMDECOP5_LASTSTOP,	MEDP_TAB, 800, ME_Y_LINE5, &FontT48, "#", (uint32_t)lastStop, 0, 0, 0);
+    }
+    write_buttonTextline(TXT2BYTE_ButtonMinus,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonPlus);
+
+    setEvent(StMDECOP5_LASTSTOP, 	(uint32_t)OnAction_LastStop);
+    startEdit();
+}
+
+/*
+void openEdit_DecoGF_DM(void)
+    {
+      const SDiveSettings * pDiveSettings;
+        uint8_t activeGF, activeVPM, aActiveGF;
+        SSettings *pSettings = settingsGetPointer();
+
+        if(actual_menu_content == MENU_DIVE_REAL)
+        {
+            const SDiveState * pState = stateRealGetPointer();
+            pDiveSettings = &pState->diveSettings;
+        }
+        else
+        {
+            const SDiveState * pState = stateSimGetPointer();
+            pDiveSettings = &pState->diveSettings;
+        }
+        if(pDiveSettings->deco_type.ub.standard == VPM_MODE)
+        {
+            aActiveGF = 0;
+            activeGF = 0;
+            activeVPM = 1;
+        }
+        else
+        if((pDiveSettings->gf_high == pSettings->GF_high) && (pDiveSettings->gf_low == pSettings->GF_low))
+        {
+            aActiveGF = 0;
+            activeGF = 1;
+            activeVPM = 0;
+        }
+        else
+        {
+            aActiveGF = 1;
+            activeGF = 0;
+            activeVPM = 0;
+        }
+
+        write_label_fix(  30, 340,  90, &FontT42, TXT_ZHL16GF);
+        write_label_fix(  30, 340, 140, &FontT42, TXT_low_high);
+        write_label_fix( 400, 600,  90, &FontT42, TXT_VPM);
+        write_label_fix( 400, 600, 140, &FontT42, TXT_Conservatism);
+        write_label_fix( 660, 799,  90, &FontT42, TXT_aGF);
+
+        write_field_on_off(StMDECOP7_ActiveGF,		 30, 170, 405, &FontT48, "Active", activeGF);
+
+        write_field_on_off(StMDECOP8_ActiveVPM,	400, 600, 405, &FontT48, "Active", activeVPM);
+
+        write_field_on_off(StMDECOP9_ActiveAltGF,	660, 799, 405, &FontT48, "Active", aActiveGF);
+
+
+        setEvent(StMDECOP7_ActiveGF, 		(uint32_t)OnAction_DM_ActiveGF);
+        setEvent(StMDECOP8_ActiveVPM,		(uint32_t)OnAction_DM_ActiveVPM);
+        setEvent(StMDECOP9_ActiveAltGF, 		(uint32_t)OnAction_DM_AltActiveGF);
+}
+*/
+
+uint8_t OnAction_VPM(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings;
+    uint8_t digitContentNew;
+    uint32_t newConservatism;
+
+    if(action == ACTION_BUTTON_ENTER)
+    {
+        return digitContent;
+    }
+    if(action == ACTION_BUTTON_ENTER_FINAL)
+    {
+        evaluateNewString(editId, &newConservatism, 0, 0, 0);
+        if(newConservatism > 5)
+            newConservatism = 5;
+
+        pSettings = settingsGetPointer();
+        pSettings->VPM_conservatism.ub.standard = newConservatism;
+
+        tMenuEdit_newInput(editId, newConservatism, 0, 0, 0);
+        return UPDATE_AND_EXIT_TO_MENU;
+    }
+    if(action == ACTION_BUTTON_NEXT)
+    {
+        digitContentNew = digitContent + 1;
+        if(digitContentNew > '5')
+            digitContentNew = '0';
+        return digitContentNew;
+    }
+    if(action == ACTION_BUTTON_BACK)
+    {
+        digitContentNew = digitContent - 1;
+        if(digitContentNew < '0')
+            digitContentNew = '5';
+        return digitContentNew;
+    }
+
+    return EXIT_TO_MENU;
+}
+
+
+uint8_t OnAction_GF(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings;
+    uint8_t digitContentNew;
+    uint32_t newGFlow, newGFhigh;
+
+    if(action == ACTION_BUTTON_ENTER)
+    {
+        return digitContent;
+    }
+    if(action == ACTION_BUTTON_ENTER_FINAL)
+    {
+        evaluateNewString(editId, &newGFlow, &newGFhigh, 0, 0);
+        if(newGFlow < 10)
+            newGFlow = 10;
+        if(newGFhigh < 45)
+            newGFhigh = 45;
+        if(newGFlow > 99)
+            newGFlow = 99;
+        if(newGFhigh > 99)
+            newGFhigh = 99;
+
+        pSettings = settingsGetPointer();
+        pSettings->GF_low = newGFlow;
+        pSettings->GF_high= newGFhigh;
+
+        tMenuEdit_newInput(editId, newGFlow, newGFhigh, 0, 0);
+        return UPDATE_AND_EXIT_TO_MENU;
+    }
+    if(action == ACTION_BUTTON_NEXT)
+    {
+        digitContentNew = digitContent + 1;
+        if(digitContentNew > '9')
+            digitContentNew = '0';
+        return digitContentNew;
+    }
+    if(action == ACTION_BUTTON_BACK)
+    {
+        digitContentNew = digitContent - 1;
+        if(digitContentNew < '0')
+            digitContentNew = '9';
+        return digitContentNew;
+    }
+    return EXIT_TO_MENU;
+}
+
+uint8_t OnAction_AltGF(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings;
+    uint8_t digitContentNew;
+    uint32_t newGFlow, newGFhigh;
+
+    if(action == ACTION_BUTTON_ENTER)
+    {
+        return digitContent;
+    }
+    if(action == ACTION_BUTTON_ENTER_FINAL)
+    {
+        evaluateNewString(editId, &newGFlow, &newGFhigh, 0, 0);
+        if(newGFlow < 10)
+            newGFlow = 10;
+        if(newGFhigh < 45)
+            newGFhigh = 45;
+        if(newGFlow > 99)
+            newGFlow = 99;
+        if(newGFhigh > 99)
+            newGFhigh = 99;
+
+        pSettings = settingsGetPointer();
+        pSettings->aGF_low = newGFlow;
+        pSettings->aGF_high= newGFhigh;
+
+        tMenuEdit_newInput(editId, newGFlow, newGFhigh, 0, 0);
+        return UPDATE_AND_EXIT_TO_MENU;
+    }
+    if(action == ACTION_BUTTON_NEXT)
+    {
+        digitContentNew = digitContent + 1;
+        if(digitContentNew > '9')
+            digitContentNew = '0';
+        return digitContentNew;
+    }
+    if(action == ACTION_BUTTON_BACK)
+    {
+        digitContentNew = digitContent - 1;
+        if(digitContentNew < '0')
+            digitContentNew = '9';
+        return digitContentNew;
+    }
+
+    return EXIT_TO_MENU;
+}
+
+
+uint8_t OnAction_LastStop(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings;
+    uint8_t digitContentNew;
+    uint32_t lastStop;
+
+    if(action == ACTION_BUTTON_ENTER)
+    {
+        return digitContent;
+    }
+    if(action == ACTION_BUTTON_ENTER_FINAL)
+    {
+        evaluateNewString(editId, &lastStop, 0, 0, 0);
+
+        if(settingsGetPointer()->nonMetricalSystem != 0) // new hw 170718
+        {
+            lastStop += 2; // f�r rundung
+            lastStop = (lastStop * 3) / 10;
+        }
+
+        pSettings = settingsGetPointer();
+
+        pSettings->last_stop_depth_meter = lastStop;
+
+        tMenuEdit_newInput(editId, lastStop, 0, 0, 0);
+        return UPDATE_AND_EXIT_TO_MENU;
+    }
+
+    if(settingsGetPointer()->nonMetricalSystem)
+    {
+        // 10, 13, 17, 20
+        if(action == ACTION_BUTTON_NEXT)
+        {
+            if(digitContent < 13 + '0')
+                digitContentNew = 13 + '0';
+            else if(digitContent < 16 + '0')
+                digitContentNew = 16 + '0';
+            else if(digitContent < 20 + '0')
+                digitContentNew = 20 + '0';
+            else
+                digitContentNew = 10 + '0';
+
+
+            return digitContentNew;
+        }
+        if(action == ACTION_BUTTON_BACK)
+        {
+            if(digitContent >= 20 + '0')
+                digitContentNew = 16 + '0';
+            else if(digitContent >= 16 + '0')
+                digitContentNew = 13 + '0';
+            else if(digitContent >= 13 + '0')
+                digitContentNew = 10 + '0';
+            else
+                digitContentNew = 20 + '0';
+
+            return digitContentNew;
+        }
+    }
+    else
+    {
+        if(action == ACTION_BUTTON_NEXT)
+        {
+            digitContentNew = digitContent + 1;
+            if(digitContentNew > '6')
+                digitContentNew = '3';
+            return digitContentNew;
+        }
+        if(action == ACTION_BUTTON_BACK)
+        {
+            digitContentNew = digitContent - 1;
+            if(digitContentNew < '3')
+                digitContentNew = '6';
+            return digitContentNew;
+        }
+    }
+
+    return EXIT_TO_MENU;
+}
+
+
+uint8_t OnAction_ActiveGF(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings;
+    pSettings = settingsGetPointer();
+
+    if(pSettings->deco_type.ub.standard == GF_MODE)
+        return 255;
+
+    pSettings->deco_type.ub.standard = GF_MODE;
+    tMenuEdit_set_on_off(editId, 1);
+    tMenuEdit_set_on_off(StMDECOP8_ActiveVPM, 0);
+
+    return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_ActiveVPM(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings;
+    pSettings = settingsGetPointer();
+
+    if(pSettings->deco_type.ub.standard == VPM_MODE)
+        return 255;
+
+    pSettings->deco_type.ub.standard = VPM_MODE;
+    tMenuEdit_set_on_off(editId, 1);
+    tMenuEdit_set_on_off(StMDECOP7_ActiveGF, 0);
+
+    return UPDATE_DIVESETTINGS;
+}
+
+
+uint8_t OnAction_DM_ActiveVPM(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SDiveSettings * pDiveSettings;
+    if(actual_menu_content == MENU_DIVE_REAL)
+    {
+        SDiveState * pState = stateRealGetPointerWrite();
+        pDiveSettings = &pState->diveSettings;
+    }
+    else
+    {
+        SDiveState * pState = stateSimGetPointerWrite();
+        pDiveSettings = &pState->diveSettings;
+    }
+    pDiveSettings->deco_type.ub.standard = VPM_MODE;
+    return EXIT_TO_HOME;
+}
+
+
+uint8_t OnAction_DM_ActiveGF(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings = settingsGetPointer();
+    SDiveSettings * pDiveSettings;
+    if(actual_menu_content == MENU_DIVE_REAL)
+    {
+        SDiveState * pState = stateRealGetPointerWrite();
+        pDiveSettings = &pState->diveSettings;
+    }
+    else
+    {
+        SDiveState * pState = stateSimGetPointerWrite();
+        pDiveSettings = &pState->diveSettings;
+    }
+    pDiveSettings->gf_high = pSettings->GF_high;
+    pDiveSettings->gf_low = pSettings->GF_low;
+    pDiveSettings->deco_type.ub.standard = GF_MODE;
+    return EXIT_TO_HOME;
+}
+
+
+uint8_t OnAction_DM_AltActiveGF(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    SSettings *pSettings = settingsGetPointer();
+    SDiveSettings * pDiveSettings;
+    if(actual_menu_content == MENU_DIVE_REAL)
+    {
+        SDiveState * pState = stateRealGetPointerWrite();
+        pDiveSettings = &pState->diveSettings;
+    }
+    else
+    {
+        SDiveState * pState = stateSimGetPointerWrite();
+        pDiveSettings = &pState->diveSettings;
+    }
+    pDiveSettings->gf_high = pSettings->aGF_high;
+    pDiveSettings->gf_low = pSettings->aGF_low;
+    pDiveSettings->deco_type.ub.standard = GF_MODE;
+    return EXIT_TO_HOME;
+}
+
+
+/*
+void openEdit_DecoGasUsage(void)
+{
+    uint8_t amv, reserve;
+    char text[32];
+    SSettings *pSettings;
+
+    pSettings = settingsGetPointer();
+
+    amv = pSettings->AtemMinutenVolumenLiter;
+    reserve = pSettings->ReserveFractionDenominator;
+
+    text[0] = '\a';
+    text[1] = TXT_AtemGasVorrat;
+    text[2] = 0;
+
+    write_topline(text);
+
+    write_label_fix(  30, 340,  90, &FontT42, TXT_LiterproMinute);
+    write_label_fix(  30, 340, 250, &FontT42, TXT_Default);
+    write_label_fix( 430, 740,  90, &FontT42, TXT_Reserve);
+
+    strcpy(text, "1/0");
+    text[2] += reserve;
+    write_field_udigit(StMDECOP5_AMV,				 30, 320, 150, &FontT105, "###", (uint32_t)amv, 0, 0, 0);
+    write_field_button(StMDECOP5_DefaultAMV,	 30, 170, 290,  &FontT48, "25");
+    write_field_button(StMDECOP5_RESERVE,		430, 640, 150, &FontT105, text);
+
+    setEvent(StMDECOP5_AMV, 				(uint32_t)OnAction_GasAMV);
+    setEvent(StMDECOP5_DefaultAMV, (uint32_t)OnAction_DefaultAMV);
+    setEvent(StMDECOP5_RESERVE, 		(uint32_t)OnAction_GasReserve);
+}
+
+
+uint8_t OnAction_GasAMV				(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    uint8_t digitContentNew;
+    uint32_t newAMV;
+    SSettings *pSettings;
+
+    if(action == ACTION_BUTTON_ENTER)
+    {
+        return digitContent;
+    }
+    if(action == ACTION_BUTTON_ENTER_FINAL)
+    {
+        evaluateNewString(editId, &newAMV, 0, 0, 0);
+
+        if(newAMV < 5)
+            newAMV = 5;
+        if(newAMV > 190)
+            newAMV = 190;
+
+        pSettings = settingsGetPointer();
+        pSettings->AtemMinutenVolumenLiter = newAMV;
+
+        tMenuEdit_newInput(editId, newAMV, 0, 0, 0);
+
+        return 255;
+    }
+    if(action == ACTION_BUTTON_NEXT)
+    {
+        if((digitNumber == 0) && (digitContentNew >= '1'))
+            digitContentNew = '0';
+        else
+            digitContentNew = digitContent + 1;
+        if(digitContentNew > '9')
+            digitContentNew = '0';
+        return digitContentNew;
+    }
+    if(action == ACTION_BUTTON_BACK)
+    {
+        if((digitNumber == 0) && (digitContentNew == '0'))
+            digitContentNew = '1';
+        else
+            digitContentNew = digitContent - 1;
+        if(digitContentNew < '0')
+            digitContentNew = '9';
+        return digitContentNew;
+    }
+
+    return UNSPECIFIC_RETURN;
+}
+
+
+uint8_t OnAction_DefaultAMV		(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    uint32_t newAMV;
+    SSettings *pSettings;
+
+    newAMV = 25;
+
+    pSettings = settingsGetPointer();
+    pSettings->AtemMinutenVolumenLiter = newAMV;
+    tMenuEdit_newInput(StMDECOP5_AMV, newAMV, 0, 0, 0);
+
+    return UNSPECIFIC_RETURN;
+}
+
+
+uint8_t OnAction_GasReserve		(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
+{
+    uint32_t reserve;
+    SSettings *pSettings;
+    char text[32];
+
+    pSettings = settingsGetPointer();
+    reserve = pSettings->ReserveFractionDenominator;
+    if(reserve <= 3)
+        reserve = 4;
+    else
+        reserve = 3;
+
+    pSettings->ReserveFractionDenominator = reserve;
+
+    strcpy(text, "1/0");
+    text[2] += reserve;
+    tMenuEdit_newButtonText(editId, text);
+
+    return UNSPECIFIC_RETURN;
+}
+*/