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

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children cc9c18075e00
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Src/tMenuSystem.c	Sat Apr 28 11:52:34 2018 +0200
@@ -0,0 +1,313 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file   Discovery/Src/tMenuSystem.c
+/// \brief  Main Template file for Menu Page System settings
+/// \author heinrichs weikamp gmbh
+/// \date   05-Aug-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 "tMenu.h"
+#include "tMenuSystem.h"
+#include "tHome.h"  // for enum CUSTOMVIEWS and init_t7_compass()
+
+/* Private function prototypes -----------------------------------------------*/
+char customview_TXT2BYTE_helper(uint8_t customViewId);
+
+/* Exported functions --------------------------------------------------------*/
+
+uint32_t tMSystem_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext)
+{
+    SSettings *data;
+    uint8_t textPointer;
+    uint8_t dateFormat;
+    uint8_t RTEhigh, RTElow;
+    RTC_DateTypeDef Sdate;
+    RTC_TimeTypeDef Stime;
+    const SDiveState * pStateReal = stateRealGetPointer();
+    extern SDataExchangeSlaveToMaster dataIn;
+
+    data = settingsGetPointer();
+    textPointer = 0;
+    *tab = 300;
+    *subtext = 0;
+
+    // dive mode
+    if(actual_menu_content != MENU_SURFACE)
+    {
+        uint8_t id;
+
+        for(int i=0; i<6;i++)
+        {
+            id = cv_changelist[i];
+            text[textPointer++] = '\006' - CHECK_BIT_THOME(cv_configuration,id);
+            text[textPointer++] = ' ';
+            textPointer += snprintf(&text[textPointer], 60,
+                "%c%c\n\r",
+                TXT_2BYTE, customview_TXT2BYTE_helper(id)
+            );
+        }
+        text[textPointer] = 0;
+
+        return StMSYS;
+    }
+
+    // surface mode
+    RTEhigh = dataIn.RTE_VERSION_high;
+    RTElow = dataIn.RTE_VERSION_low;
+
+    if((RTEhigh == 0xFF) || (RTElow == 0xFF))
+    {
+        RTEhigh = 0;
+        RTElow = 0;
+    }
+
+    if((line == 0) || (line == 1))
+    {
+        translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate);
+        translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime);
+
+        dateFormat = data->date_format;
+
+        textPointer += snprintf(&text[textPointer], 40,
+            "Date"
+            "\016\016"
+            " "
+        );
+
+        if(dateFormat == DDMMYY)
+        {
+            textPointer += snprintf(&text[textPointer], 40,
+                "DDMMYY"
+                "\017"
+                "\t"
+                "%02d-%02d-%02d"
+                "  "
+                , Sdate.Date, Sdate.Month, 2000 + Sdate.Year
+            );
+        }
+        else
+        if(dateFormat == MMDDYY)
+        {
+            textPointer += snprintf(&text[textPointer], 40,
+                "MMDDYY"
+                "\017"
+                "\t"
+                "%02d-%02d-%02d"
+                "  "
+                ,Sdate.Month, Sdate.Date, 2000 + Sdate.Year
+            );
+        }
+        else
+        if(dateFormat == YYMMDD)
+        {
+            textPointer += snprintf(&text[textPointer], 40,
+                "YYMMDD"
+                "\017"
+                "\t"
+                "%02d-%02d-%02d"
+                "  "
+                , 2000 + Sdate.Year, Sdate.Month, Sdate.Date
+            );
+        }
+
+        textPointer += snprintf(&text[textPointer], 60,
+            "%02d:%02d:%02d"
+            "\n\r"
+            ,Stime.Hours, Stime.Minutes, Stime.Seconds
+        );
+    }
+    else
+    {
+        strcpy(&text[textPointer],"\n\r");
+        textPointer += 2;
+    }
+
+    if((line == 0) || (line == 2))
+    {
+        text[textPointer++] = TXT_Language;
+        text[textPointer++] = '\t';
+        text[textPointer++] = TXT_LanguageName;
+        text[textPointer++] = '\n';
+        text[textPointer++] = '\r';
+        text[textPointer] = 0;
+    }
+    else
+    {
+        strcpy(&text[textPointer],"\n\r");
+        textPointer += 2;
+    }
+
+    if((line == 0) || (line == 3))
+    {
+        text[textPointer++] = TXT_2BYTE;
+        text[textPointer++] = TXT2BYTE_Layout;
+        text[textPointer++] = '\t';
+
+        if(!data->showDebugInfo)
+        {
+            text[textPointer++] = TXT_2BYTE;
+            if(data->nonMetricalSystem == 0)
+                text[textPointer++] = TXT2BYTE_Units_metric;
+            else
+                text[textPointer++] = TXT2BYTE_Units_feet;
+
+            if(data->tX_colorscheme != 0)
+            {
+                text[textPointer++] = ' ';
+                text[textPointer++] = ' ';
+                text[textPointer++] = ' ';
+                text[textPointer++] = ' ';
+                text[textPointer++] = '\027';
+                text[textPointer++] = '/';
+                text[textPointer++] = ' ';
+                text[textPointer++] = '0' + data->tX_colorscheme;
+                text[textPointer++] = '\020';
+            }
+        }
+        else
+        {
+            if(data->nonMetricalSystem == 0)
+            {
+            text[textPointer++] = 'm';
+            text[textPointer++] = '/';
+            text[textPointer++] = 'C';
+            }
+            else
+            {
+            text[textPointer++] = 'f';
+            text[textPointer++] = 't';
+            text[textPointer++] = '/';
+            text[textPointer++] = 'F';
+            }
+
+            text[textPointer++] = ' ';
+            text[textPointer++] = ' ';
+            text[textPointer++] = ' ';
+            text[textPointer++] = ' ';
+            text[textPointer++] = '\027';
+            text[textPointer++] = '/';
+            text[textPointer++] = ' ';
+            text[textPointer++] = '0' + data->tX_colorscheme;
+            text[textPointer++] = '\020';
+            text[textPointer++] = ' ';
+            text[textPointer++] = ' ';
+            text[textPointer++] = 'd';
+            text[textPointer++] = 'e';
+            text[textPointer++] = 'b';
+            text[textPointer++] = 'u';
+            text[textPointer++] = 'g';
+        }
+
+        text[textPointer++] = '\n';
+        text[textPointer++] = '\r';
+        text[textPointer] = 0;
+    }
+    else
+    {
+        strcpy(&text[textPointer],"\n\r");
+        textPointer += 2;
+    }
+
+    if((line == 0) || (line == 4))
+    {
+        text[textPointer++] = TXT_2BYTE;
+        text[textPointer++] = TXT2BYTE_Customviews;//TXT2BYTE_ShowDebug;
+    }
+    text[textPointer++] = '\n';
+    text[textPointer++] = '\r';
+    text[textPointer] = 0;
+
+    if((line == 0) || (line == 5))
+    {
+        text[textPointer++] = TXT_Information;
+        text[textPointer++] = '\t';
+        textPointer += snprintf(&text[textPointer],29,"RTE %u.%u  OS %i.%i.%i"
+            ,RTEhigh
+            ,RTElow
+            ,firmwareDataGetPointer()->versionFirst
+            ,firmwareDataGetPointer()->versionSecond
+            ,firmwareDataGetPointer()->versionThird
+        );
+    }
+    strcpy(&text[textPointer],"\n\r");
+    textPointer += 2;
+
+    if((line == 0) || (line == 6))
+    {
+        text[textPointer++] = TXT_2BYTE;
+        text[textPointer++] = TXT2BYTE_ResetMenu;
+        text[textPointer] = 0;
+    }
+    strcpy(&text[textPointer],"\n\r");
+    textPointer += 2;
+
+    return StMSYS;
+}
+
+
+/* Private functions ---------------------------------------------------------*/
+
+char customview_TXT2BYTE_helper(uint8_t customViewId)
+{
+    char text = 0;
+
+    switch(customViewId)
+    {
+    case CVIEW_Scooter:
+        text = TXT2BYTE_ScooterMonitor;
+        break;
+    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:
+        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:
+        break;
+    default:
+        break;
+    }
+    return text;
+}