Mercurial > public > ostc4
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; +}