Position view for flipped mode:
the position view was not displayed correct in flipped mode. This problem has been fixed in the new version by adaptation of the window parameters
line source
///////////////////////////////////////////////////////////////////////////////+ −
/// -*- coding: UTF-8 -*-+ −
///+ −
/// \file Discovery/Src/tMenuEditSystem.c+ −
/// \brief Main Template file for Menu Edit 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 "tMenuEditSystem.h"+ −
+ −
#include "data_exchange_main.h"+ −
#include "externLogbookFlash.h"+ −
#include "gfx_fonts.h"+ −
#include "ostc.h"+ −
#include "settings.h" // for getLicence()+ −
#include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass()+ −
#include "tMenu.h"+ −
#include "tMenuEdit.h"+ −
#include "tMenuSystem.h"+ −
#include "tMenuEditCustom.h"+ −
#include "motion.h"+ −
#include "t7.h"+ −
#include "math.h"+ −
+ −
+ −
/*#define HAVE_DEBUG_VIEW */+ −
static uint8_t infoPage = 0;+ −
+ −
/* Private function prototypes -----------------------------------------------*/+ −
void openEdit_DateTime(void);+ −
void openEdit_DateFormat(void);+ −
void openEdit_Language(void);+ −
void openEdit_Design(void);+ −
void openEdit_Information(void);+ −
void openEdit_Reset(void);+ −
void openEdit_Maintenance(void);+ −
//void openEdit_ShowDebugInfo(void);+ −
//void openEdit_Salinity(void);+ −
+ −
/* Announced function prototypes -----------------------------------------------*/+ −
uint8_t OnAction_Date (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Time (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_12HR (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Format (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_DDMMYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_MMDDYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_YYMMDD (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_DST (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_UTC (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_SetGnss (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_English (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_German (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_French (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Italian (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Espanol (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
//uint8_t OnAction_Design_t7 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
//uint8_t OnAction_Design_t7ft (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
//uint8_t OnAction_Design_t3 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
+ −
uint8_t OnAction_Units (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Colorscheme (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_DebugInfo (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
+ −
uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Maintenance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_AdjustSurfacePressure (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
#ifdef ENABLE_ANALYSE_SAMPLES+ −
uint8_t OnAction_RecoverSampleIdx(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
#endif+ −
#ifdef SCREENTEST+ −
uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
#endif+ −
uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
/*+ −
uint8_t OnAction_Salinity (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
uint8_t OnAction_TestCLog (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);+ −
*/+ −
+ −
/* Exported functions --------------------------------------------------------*/+ −
+ −
static uint8_t OnAction_Timer(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *settings = settingsGetPointer();+ −
uint8_t digitContentNew;+ −
switch (action) {+ −
case ACTION_BUTTON_ENTER:+ −
+ −
return digitContent;+ −
case ACTION_BUTTON_ENTER_FINAL:+ −
{+ −
uint32_t timerM;+ −
uint32_t timerS;+ −
evaluateNewString(editId, &timerM, &timerS, 0, 0);+ −
if (timerM > 9) {+ −
timerM = 9;+ −
}+ −
if (timerS > 59) {+ −
timerS = 59;+ −
}+ −
+ −
uint16_t timerDurationS = 60 * timerM + timerS;+ −
+ −
if (timerDurationS < 1) {+ −
timerDurationS = 1;+ −
}+ −
+ −
if (timerDurationS != settings->timerDurationS) {+ −
settings->timerDurationS = timerDurationS;+ −
+ −
disableTimer();+ −
+ −
tMenuEdit_newInput(editId, settings->timerDurationS / 60, settings->timerDurationS % 60, 0, 0);+ −
}+ −
+ −
return EXIT_TO_MENU;+ −
}+ −
case ACTION_BUTTON_NEXT:+ −
digitContentNew = digitContent + 1;+ −
if ((blockNumber == 1 && digitNumber == 0 && digitContentNew > '5') || digitContentNew > '9') {+ −
digitContentNew = '0';+ −
}+ −
+ −
return digitContentNew;+ −
case ACTION_BUTTON_BACK:+ −
digitContentNew = digitContent - 1;+ −
if (digitContentNew < '0') {+ −
if (blockNumber == 1 && digitNumber == 0) {+ −
digitContentNew = '5';+ −
} else {+ −
digitContentNew = '9';+ −
}+ −
}+ −
+ −
return digitContentNew;+ −
}+ −
+ −
return EXIT_TO_MENU;+ −
}+ −
+ −
+ −
static void openEdit_Timer(void)+ −
{+ −
SSettings *settings = settingsGetPointer();+ −
+ −
char text[32];+ −
snprintf(text, 32, "\001%c%c", TXT_2BYTE, TXT2BYTE_Timer);+ −
write_topline(text);+ −
+ −
uint16_t yPos = ME_Y_LINE_BASE + get_globalState_Menu_Line() * ME_Y_LINE_STEP;+ −
snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_Timer);+ −
write_label_var(30, 299, yPos, &FontT48, text);+ −
write_field_udigit(StMSYS_Timer, 300, 392, yPos, &FontT48, "#:##", settings->timerDurationS / 60, settings->timerDurationS % 60, 0, 0);+ −
write_label_var(393, 800, yPos, &FontT48, "\016\016 [m:ss]\017");+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonMinus, TXT2BYTE_ButtonEnter, TXT2BYTE_ButtonPlus);+ −
+ −
setEvent(StMSYS_Timer, (uint32_t)OnAction_Timer);+ −
startEdit();+ −
}+ −
+ −
+ −
void openEdit_System(uint8_t line)+ −
{+ −
set_globalState_Menu_Line(line);+ −
resetMenuEdit(CLUT_MenuPageSystem);+ −
+ −
if(actual_menu_content == MENU_SURFACE)+ −
{+ −
switch(line)+ −
{+ −
case 1:+ −
default:+ −
openEdit_DateTime();+ −
break;+ −
case 2:+ −
openEdit_Timer();+ −
break;+ −
case 3:+ −
openEdit_Language();+ −
break;+ −
case 4:+ −
openEdit_Design();+ −
break;+ −
case 5:+ −
openEdit_Information();+ −
break;+ −
case 6:+ −
openEdit_Reset();+ −
break;+ −
/*+ −
case 3:+ −
openEdit_DecoFutureTTS();+ −
break;+ −
case 4:+ −
openEdit_DecoLastStop();+ −
break;+ −
*/+ −
}+ −
}+ −
else+ −
{+ −
openEdit_CustomviewDivemodeMenu(line);+ −
}+ −
+ −
}+ −
+ −
/* Private functions ---------------------------------------------------------*/+ −
+ −
+ −
void refresh_DateTime()+ −
{+ −
RTC_DateTypeDef Sdate;+ −
RTC_TimeTypeDef Stime;+ −
uint8_t day,month,year,hour,minute;+ −
char text[32];+ −
char formatStr[20];+ −
SSettings *pSettings;+ −
const SFirmwareData *pFirmwareInfo;+ −
#if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2+ −
uint8_t localHours = 0;+ −
uint8_t localMinutes = 0;+ −
#endif+ −
pFirmwareInfo = firmwareDataGetPointer();+ −
const SDiveState * pStateReal = stateRealGetPointer();+ −
+ −
pSettings = settingsGetPointer();+ −
+ −
translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate);+ −
translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime);+ −
year = Sdate.Year;+ −
month = Sdate.Month;+ −
day = Sdate.Date;+ −
hour = Stime.Hours;+ −
minute= Stime.Minutes;+ −
+ −
if(year < pFirmwareInfo->release_year)+ −
year = pFirmwareInfo->release_year;+ −
+ −
if(month < 1)+ −
month = 1;+ −
+ −
if(day < 1)+ −
day = 1;+ −
+ −
getStringOfFormat_DDMMYY(formatStr, 20);+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_DateAndTime;+ −
text[2] = 0;+ −
+ −
write_topline(text);+ −
+ −
write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig);+ −
write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format);+ −
write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig);+ −
write_label_fix( 20, 790, ME_Y_LINE4, &FontT42, TXT_Format);+ −
#if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2+ −
write_label_var( 20, 340, ME_Y_LINE5, &FontT42, "GNSS");+ −
snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_TIMEZONE);+ −
write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text);+ −
#endif+ −
+ −
+ −
tMenuEdit_newInput(StMSYS1_Time, hour, minute, 0, 0);+ −
tMenuEdit_set_on_off(StMSYS1_12HR, pSettings->amPMTime);+ −
+ −
switch(pSettings->date_format)+ −
{+ −
default:+ −
case DDMMYY: tMenuEdit_newInput(StMSYS1_Date, day, month, year, 0);+ −
break;+ −
case MMDDYY: tMenuEdit_newInput(StMSYS1_Date, month, day, year, 0);+ −
break;+ −
case YYMMDD: tMenuEdit_newInput(StMSYS1_Date, year, month, day, 0);+ −
break;+ −
}+ −
tMenuEdit_newButtonText(StMSYS1_FORMAT, formatStr);+ −
+ −
#if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2+ −
if(pStateReal->lifeData.gnssData.alive & GNSS_ALIVE_STATE_TIME)+ −
{+ −
convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes);+ −
convertStringOfDate_DDMMYY(formatStr, 20, pStateReal->lifeData.gnssData.DateTime.day+ −
, pStateReal->lifeData.gnssData.DateTime.month+ −
, pStateReal->lifeData.gnssData.DateTime.year);+ −
snprintf(text, 32, "%02d:%02d - %s", localHours, localMinutes, formatStr);+ −
tMenuEdit_newButtonText(StMSYS1_GNSSDT, text);+ −
}+ −
else+ −
{+ −
snprintf(text, 32, "--:--");+ −
write_label_var( 320, 790, ME_Y_LINE5, &FontT42, text);+ −
}+ −
tMenuEdit_newInput(StMSYS1_ZONE, pSettings->timeZone.hours, pSettings->timeZone.minutes, 0, 0);+ −
#endif+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
void openEdit_DateTime(void)+ −
{+ −
RTC_DateTypeDef Sdate;+ −
RTC_TimeTypeDef Stime;+ −
uint8_t day,month,year,hour,minute;+ −
char text[32];+ −
char formatStr[20];+ −
SSettings *pSettings;+ −
const SFirmwareData *pFirmwareInfo;+ −
+ −
pFirmwareInfo = firmwareDataGetPointer();+ −
const SDiveState * pStateReal = stateRealGetPointer();+ −
+ −
pSettings = settingsGetPointer();+ −
+ −
set_globalState(StMSYS1_DateTime);+ −
resetMenuEdit(CLUT_MenuPageSystem);+ −
+ −
translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate);+ −
translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime);+ −
year = Sdate.Year;+ −
month = Sdate.Month;+ −
day = Sdate.Date;+ −
hour = Stime.Hours;+ −
minute= Stime.Minutes;+ −
+ −
if(year < pFirmwareInfo->release_year)+ −
year = pFirmwareInfo->release_year;+ −
+ −
if(month < 1)+ −
month = 1;+ −
+ −
if(day < 1)+ −
day = 1;+ −
+ −
getStringOfFormat_DDMMYY(formatStr, 20);+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_DateAndTime;+ −
text[2] = 0;+ −
+ −
write_topline(text);+ −
+ −
write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig);+ −
write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format);+ −
write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig);+ −
write_label_fix( 20, 790, ME_Y_LINE4, &FontT42, TXT_Format);+ −
#if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2+ −
write_label_var( 20, 340, ME_Y_LINE5, &FontT42, "GNSS");+ −
snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_TIMEZONE);+ −
write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text);+ −
#endif+ −
+ −
write_field_2digit(StMSYS1_Time, 320, 780, ME_Y_LINE1, &FontT48, "##:##", (uint32_t)hour, (uint32_t)minute, 0, 0);+ −
write_field_on_off(StMSYS1_12HR, 320, 790, ME_Y_LINE2, &FontT48, "12 HR", pSettings->amPMTime);+ −
+ −
switch(pSettings->date_format)+ −
{+ −
default:+ −
case DDMMYY: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)day, (uint32_t)month, (uint32_t)year, 0);+ −
break;+ −
case MMDDYY: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)month, (uint32_t)day, (uint32_t)year, 0);+ −
break;+ −
case YYMMDD: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "20##-##-##", (uint32_t)year, (uint32_t)month, (uint32_t)day, 0);+ −
break;+ −
}+ −
+ −
write_field_button(StMSYS1_FORMAT, 320, 790, ME_Y_LINE4, &FontT48, formatStr);+ −
+ −
#if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2+ −
snprintf(text, 32, "--:--");+ −
write_field_button(StMSYS1_GNSSDT, 320, 790, ME_Y_LINE5, &FontT48, text);+ −
write_field_sdigit(StMSYS1_ZONE, 320, 780, ME_Y_LINE6, &FontT48, "UTC: ###:###", pSettings->timeZone.hours, pSettings->timeZone.minutes,0,0);+ −
#endif+ −
+ −
setEvent(StMSYS1_Date, (uint32_t)OnAction_Date);+ −
setEvent(StMSYS1_Time, (uint32_t)OnAction_Time);+ −
setEvent(StMSYS1_12HR, (uint32_t)OnAction_12HR);+ −
setEvent(StMSYS1_FORMAT, (uint32_t)OnAction_Format);+ −
#if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2+ −
setEvent(StMSYS1_GNSSDT, (uint32_t)OnAction_SetGnss);+ −
setEvent(StMSYS1_ZONE, (uint32_t)OnAction_UTC);+ −
#endif+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
+ −
+ −
uint8_t OnAction_Date(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
uint8_t digitContentNew;+ −
uint32_t newDay, newMonth, newYear;+ −
RTC_DateTypeDef sdatestructure;+ −
+ −
const SFirmwareData *pFirmwareInfo;+ −
pFirmwareInfo = firmwareDataGetPointer();+ −
+ −
uint8_t mapDMY[3];+ −
switch(settingsGetPointer()->date_format)+ −
{+ −
default:+ −
case DDMMYY: mapDMY[0] = 0;+ −
mapDMY[1] = 1;+ −
mapDMY[2] = 2;+ −
break;+ −
case MMDDYY: mapDMY[0] = 1;+ −
mapDMY[1] = 0;+ −
mapDMY[2] = 2;+ −
break;+ −
case YYMMDD: mapDMY[0] = 2;+ −
mapDMY[1] = 1;+ −
mapDMY[2] = 0;+ −
break;+ −
}+ −
+ −
if(action == ACTION_BUTTON_ENTER)+ −
{+ −
return digitContent;+ −
}+ −
if(action == ACTION_BUTTON_ENTER_FINAL)+ −
{+ −
switch(settingsGetPointer()->date_format)+ −
{+ −
default:+ −
case DDMMYY: evaluateNewString(editId, &newDay, &newMonth, &newYear, 0);+ −
break;+ −
case MMDDYY: evaluateNewString(editId, &newMonth, &newDay, &newYear, 0);+ −
break;+ −
case YYMMDD: evaluateNewString(editId, &newYear, &newMonth, &newDay, 0);+ −
break;+ −
}+ −
+ −
if(newDay == 0)+ −
newDay = 1;+ −
if(newDay > 31)+ −
newDay = 31;+ −
if(newMonth == 0)+ −
newMonth = 1;+ −
if(newMonth > 12)+ −
newMonth = 12;+ −
if((newMonth == 2) && (newDay > 29))+ −
newDay = 29;+ −
if((newDay > 30) && ((newMonth == 4) ||(newMonth == 6) ||(newMonth == 9) ||(newMonth == 11)))+ −
newDay = 30;+ −
if(newYear < 17)+ −
newYear = 17;+ −
if(newYear > 99)+ −
newYear = 99;+ −
+ −
sdatestructure.Date = newDay;+ −
sdatestructure.Month = newMonth;+ −
sdatestructure.Year = newYear;+ −
setWeekday(&sdatestructure);+ −
+ −
setDate(sdatestructure);+ −
+ −
switch(settingsGetPointer()->date_format)+ −
{+ −
default:+ −
case DDMMYY: tMenuEdit_newInput(editId, newDay, newMonth, newYear, 0);+ −
break;+ −
case MMDDYY: tMenuEdit_newInput(editId, newMonth, newDay, newYear, 0);+ −
break;+ −
case YYMMDD: tMenuEdit_newInput(editId, newYear, newMonth, newDay, 0);+ −
break;+ −
}+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
if(action == ACTION_BUTTON_NEXT) /* clip values to a specific range e.g. 12 months */+ −
{+ −
digitContentNew = digitContent + 1;+ −
+ −
if((blockNumber == mapDMY[0]) && (digitContentNew > '0' + 31))+ −
{+ −
digitContentNew = '1';+ −
}+ −
if((blockNumber == mapDMY[1]) && (digitContentNew > '0' + 12))+ −
{+ −
digitContentNew = '1';+ −
}+ −
if((blockNumber == mapDMY[2]) && (digitContentNew > '0' + pFirmwareInfo->release_year + 10))+ −
{+ −
digitContentNew = '0' + pFirmwareInfo->release_year;+ −
}+ −
return digitContentNew;+ −
}+ −
if(action == ACTION_BUTTON_BACK) /* clip values to a specific range e.g. 12 months */+ −
{+ −
digitContentNew = digitContent - 1;+ −
if((blockNumber == mapDMY[0]) && (digitContentNew < '1'))+ −
{+ −
digitContentNew = '0' + 31;+ −
}+ −
if((blockNumber == mapDMY[1]) && (digitContentNew < '1'))+ −
{+ −
digitContentNew = '0' + 12;+ −
}+ −
if((blockNumber == mapDMY[2]) && (digitContentNew < '0' + pFirmwareInfo->release_year))+ −
{+ −
digitContentNew = '0' + pFirmwareInfo->release_year + 10;+ −
}+ −
return digitContentNew;+ −
}+ −
/*+ −
if(action == ACTION_BUTTON_NEXT)+ −
{+ −
digitContentNew = digitContent + 1;+ −
if((blockNumber == 2) && (digitNumber == 0) && (digitContentNew > '2'))+ −
digitContentNew = '1';+ −
if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew > '3'))+ −
digitContentNew = '0';+ −
if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew > '1'))+ −
digitContentNew = '0';+ −
if(digitContentNew > '9')+ −
digitContentNew = '0';+ −
return digitContentNew;+ −
}+ −
if(action == ACTION_BUTTON_BACK)+ −
{+ −
digitContentNew = digitContent - 1;+ −
if((blockNumber == 2) && (digitNumber == 0) && (digitContentNew < '1'))+ −
digitContentNew = '2';+ −
if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew < '0'))+ −
digitContentNew = '3';+ −
if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew < '0'))+ −
digitContentNew = '1';+ −
if(digitContentNew < '0')+ −
digitContentNew = '9';+ −
return digitContentNew;+ −
}+ −
*/+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
uint8_t OnAction_Time(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
uint8_t digitContentNew;+ −
uint32_t newHour, newMinute;+ −
RTC_TimeTypeDef stimestructure;+ −
+ −
if(action == ACTION_BUTTON_ENTER)+ −
{+ −
return digitContent;+ −
}+ −
if(action == ACTION_BUTTON_ENTER_FINAL)+ −
{+ −
evaluateNewString(editId, &newHour, &newMinute, 0, 0);+ −
if(newHour > 23)+ −
newHour = 23;+ −
if(newMinute > 59)+ −
newMinute = 59;+ −
+ −
stimestructure.Hours = newHour;+ −
stimestructure.Minutes = newMinute;+ −
stimestructure.Seconds = 0;+ −
+ −
setTime(stimestructure);+ −
+ −
tMenuEdit_newInput(editId, newHour, newMinute, 0, 0);+ −
return UNSPECIFIC_RETURN;+ −
}+ −
if(action == ACTION_BUTTON_NEXT)+ −
{+ −
digitContentNew = digitContent + 1;+ −
if((blockNumber == 0) && (digitContentNew > '0' + 23))+ −
digitContentNew = '0';+ −
if((blockNumber == 1) && (digitContentNew > '0' + 59))+ −
digitContentNew = '0';+ −
return digitContentNew;+ −
}+ −
if(action == ACTION_BUTTON_BACK)+ −
{+ −
digitContentNew = digitContent - 1;+ −
if((blockNumber == 0) && (digitContentNew < '0'))+ −
digitContentNew = '0' + 23;+ −
if((blockNumber == 1) && (digitContentNew < '0'))+ −
digitContentNew = '0' + 59;+ −
return digitContentNew;+ −
}+ −
/*+ −
if(action == ACTION_BUTTON_NEXT)+ −
{+ −
digitContentNew = digitContent + 1;+ −
if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew > '2'))+ −
digitContentNew = '0';+ −
if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew > '5'))+ −
digitContentNew = '0';+ −
if(digitContentNew > '9')+ −
digitContentNew = '0';+ −
return digitContentNew;+ −
}+ −
if(action == ACTION_BUTTON_BACK)+ −
{+ −
digitContentNew = digitContent - 1;+ −
if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew < '0'))+ −
digitContentNew = '2';+ −
if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew < '0'))+ −
digitContentNew = '5';+ −
if(digitContentNew < '0')+ −
digitContentNew = '9';+ −
return digitContentNew;+ −
}+ −
*/+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_12HR(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings;+ −
+ −
pSettings = settingsGetPointer();+ −
pSettings->amPMTime = !(pSettings->amPMTime);+ −
+ −
tMenuEdit_set_on_off(editId, pSettings->amPMTime);+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_SetGnss(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
RTC_DateTypeDef sdatestructure;+ −
RTC_TimeTypeDef stimestructure;+ −
uint8_t localHours = 0;+ −
uint8_t localMinutes = 0;+ −
+ −
const SDiveState * pStateReal = stateRealGetPointer();+ −
+ −
if(pStateReal->lifeData.gnssData.alive & GNSS_ALIVE_STATE_TIME)+ −
{+ −
convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes);+ −
stimestructure.Hours = localHours;+ −
stimestructure.Minutes = localMinutes;+ −
stimestructure.Seconds = 0;+ −
setTime(stimestructure);+ −
+ −
sdatestructure.Date = pStateReal->lifeData.gnssData.DateTime.day;+ −
sdatestructure.Month = pStateReal->lifeData.gnssData.DateTime.month;+ −
sdatestructure.Year = pStateReal->lifeData.gnssData.DateTime.year;+ −
setWeekday(&sdatestructure);+ −
setDate(sdatestructure);+ −
}+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
void openEdit_DateFormat(void)+ −
{+ −
char text[32];+ −
SSettings *pSettings;+ −
+ −
uint8_t ddmmyy = 0;+ −
uint8_t mmddyy= 0;+ −
uint8_t yymmdd = 0;+ −
+ −
pSettings = settingsGetPointer();+ −
+ −
+ −
set_globalState(StMSYS1_FORMAT);+ −
resetMenuEdit(CLUT_MenuPageSystem);+ −
setBackMenu((uint32_t)openEdit_DateTime,0,4);+ −
+ −
switch(pSettings->date_format)+ −
{+ −
default:+ −
case DDMMYY: ddmmyy = 1;+ −
break;+ −
case MMDDYY: mmddyy = 1;+ −
break;+ −
case YYMMDD: yymmdd = 1;+ −
break;+ −
};+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_Format;+ −
text[2] = 0;+ −
+ −
write_topline(text);+ −
+ −
write_label_fix( 20, 790, ME_Y_LINE2, &FontT42, TXT_Format);+ −
+ −
write_field_on_off(StMSYS1_DDMMYY, 320, 790, ME_Y_LINE1, &FontT48, "DDMMYY", ddmmyy);+ −
write_field_on_off(StMSYS1_MMDDYY, 320, 790, ME_Y_LINE2, &FontT48, "MMDDYY", mmddyy);+ −
write_field_on_off(StMSYS1_YYMMDD, 320, 790, ME_Y_LINE3, &FontT48, "YYMMDD", yymmdd);+ −
+ −
setEvent(StMSYS1_DDMMYY, (uint32_t)OnAction_DDMMYY);+ −
setEvent(StMSYS1_MMDDYY, (uint32_t)OnAction_MMDDYY);+ −
setEvent(StMSYS1_YYMMDD, (uint32_t)OnAction_YYMMDD);+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
+ −
uint8_t OnAction_Format(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
openEdit_DateFormat();+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_DDMMYY(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings;+ −
+ −
pSettings = settingsGetPointer();+ −
pSettings->date_format = DDMMYY;+ −
+ −
tMenuEdit_set_on_off(editId, 1);+ −
tMenuEdit_set_on_off(StMSYS1_MMDDYY, 0);+ −
tMenuEdit_set_on_off(StMSYS1_YYMMDD, 0);+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
uint8_t OnAction_MMDDYY(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings;+ −
+ −
pSettings = settingsGetPointer();+ −
pSettings->date_format = MMDDYY;+ −
+ −
tMenuEdit_set_on_off(editId, 1);+ −
tMenuEdit_set_on_off(StMSYS1_DDMMYY, 0);+ −
tMenuEdit_set_on_off(StMSYS1_YYMMDD, 0);+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
uint8_t OnAction_YYMMDD(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings;+ −
+ −
pSettings = settingsGetPointer();+ −
pSettings->date_format = YYMMDD;+ −
+ −
tMenuEdit_set_on_off(editId, 1);+ −
tMenuEdit_set_on_off(StMSYS1_MMDDYY, 0);+ −
tMenuEdit_set_on_off(StMSYS1_DDMMYY, 0);+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_UTC(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *settings = settingsGetPointer();+ −
const SDiveState * pStateReal = stateRealGetPointer();+ −
int32_t utcHour;+ −
uint32_t utcMinutes;+ −
uint8_t digitContentNew;+ −
uint8_t localHours = 0;+ −
uint8_t localMinutes = 0;+ −
char text[32];+ −
char timeStr[20];+ −
+ −
switch (action) {+ −
case ACTION_BUTTON_ENTER:+ −
+ −
return digitContent;+ −
case ACTION_BUTTON_ENTER_FINAL:+ −
{+ −
+ −
evaluateNewString(editId, (uint32_t *)&utcHour, &utcMinutes, NULL, NULL);+ −
+ −
if (utcHour > 14) {+ −
utcHour = 14;+ −
} else if (utcHour < -12) {+ −
utcHour = -12;+ −
}+ −
+ −
if (utcMinutes % 15 != 0)+ −
{+ −
utcMinutes = (utcMinutes / 15) * 15;+ −
}+ −
if(utcMinutes > 45)+ −
{+ −
utcMinutes = 45;+ −
} else if (utcMinutes < 0) {+ −
utcMinutes = 0;+ −
}+ −
settings->timeZone.hours = utcHour;+ −
settings->timeZone.minutes = utcMinutes;+ −
+ −
tMenuEdit_newInput(editId, ((input_u)utcHour).uint32, utcMinutes, 0, 0);+ −
convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes);+ −
convertStringOfDate_DDMMYY(timeStr, 20, pStateReal->lifeData.gnssData.DateTime.day+ −
, pStateReal->lifeData.gnssData.DateTime.month+ −
, pStateReal->lifeData.gnssData.DateTime.year);+ −
snprintf(text, 32, "%2d:%2d - %s", localHours, localMinutes, timeStr);+ −
tMenuEdit_newButtonText(StMSYS1_GNSSDT, text);+ −
}+ −
+ −
break;+ −
case ACTION_BUTTON_NEXT:+ −
if ((blockNumber == 0) && (digitNumber == 0)) {+ −
digitContentNew = togglePlusMinus(digitContent);+ −
} else {+ −
digitContentNew = digitContent + 1;+ −
if (digitContentNew > '9') {+ −
digitContentNew = '0';+ −
}+ −
}+ −
+ −
return digitContentNew;+ −
case ACTION_BUTTON_BACK:+ −
if ((blockNumber == 0) && (digitNumber == 0)) {+ −
digitContentNew = togglePlusMinus(digitContent);+ −
} else {+ −
digitContentNew = digitContent - 1;+ −
if (digitContentNew < '0') {+ −
digitContentNew = '9';+ −
}+ −
}+ −
return digitContentNew;+ −
}+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
uint8_t OnAction_DST(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
RTC_TimeTypeDef stimestructure;+ −
uint8_t newDST;+ −
+ −
get_RTC_DateTime(0, &stimestructure);+ −
newDST = stimestructure.DayLightSaving;+ −
if(newDST)+ −
newDST = 0;+ −
else+ −
newDST = 1;+ −
stimestructure.DayLightSaving = newDST;+ −
set_RTC_DateTime(0, &stimestructure);+ −
+ −
tMenuEdit_set_on_off(editId, newDST);+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
void openEdit_Language(void)+ −
{+ −
char text[32];+ −
uint8_t actualLanguage, active;+ −
SSettings *pSettings;+ −
+ −
pSettings = settingsGetPointer();+ −
actualLanguage = pSettings->selected_language;+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_Language;+ −
text[2] = 0;+ −
write_topline(text);+ −
+ −
text[0] = TXT_LanguageName;+ −
text[1] = 0;+ −
+ −
pSettings->selected_language = LANGUAGE_English;+ −
if( actualLanguage == pSettings->selected_language)+ −
active = 1;+ −
else+ −
active = 0;+ −
write_field_on_off(StMSYS2_English, 30, 500, ME_Y_LINE1, &FontT48, text, active);+ −
+ −
pSettings->selected_language = LANGUAGE_German;+ −
if( actualLanguage == pSettings->selected_language)+ −
active = 1;+ −
else+ −
active = 0;+ −
write_field_on_off(StMSYS2_German, 30, 800, ME_Y_LINE2, &FontT48, text, active);+ −
+ −
pSettings->selected_language = LANGUAGE_French;+ −
if( actualLanguage == pSettings->selected_language)+ −
active = 1;+ −
else+ −
active = 0;+ −
write_field_on_off(StMSYS2_French, 30, 800, ME_Y_LINE3, &FontT48, text, active);+ −
+ −
+ −
pSettings->selected_language = LANGUAGE_Italian;+ −
if( actualLanguage == pSettings->selected_language)+ −
active = 1;+ −
else+ −
active = 0;+ −
write_field_on_off(StMSYS2_Italian, 30, 800, ME_Y_LINE4, &FontT48, text, active);+ −
+ −
+ −
pSettings->selected_language = LANGUAGE_Espanol;+ −
if( actualLanguage == pSettings->selected_language)+ −
active = 1;+ −
else+ −
active = 0;+ −
write_field_on_off(StMSYS2_Espanol, 30, 800, ME_Y_LINE5, &FontT48, text, active);+ −
+ −
pSettings->selected_language = actualLanguage;+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
+ −
setEvent(StMSYS2_English, (uint32_t)OnAction_English);+ −
setEvent(StMSYS2_German, (uint32_t)OnAction_German);+ −
setEvent(StMSYS2_French, (uint32_t)OnAction_French);+ −
setEvent(StMSYS2_Italian, (uint32_t)OnAction_Italian);+ −
setEvent(StMSYS2_Espanol, (uint32_t)OnAction_Espanol);+ −
}+ −
+ −
+ −
uint8_t OnAction_English (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
pSettings->selected_language = LANGUAGE_English;+ −
return EXIT_TO_MENU_WITH_LOGO;+ −
}+ −
+ −
+ −
uint8_t OnAction_German (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
pSettings->selected_language = LANGUAGE_German;+ −
return EXIT_TO_MENU_WITH_LOGO;+ −
}+ −
+ −
+ −
uint8_t OnAction_French (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
pSettings->selected_language = LANGUAGE_French;+ −
return EXIT_TO_MENU_WITH_LOGO;+ −
}+ −
+ −
+ −
uint8_t OnAction_Italian (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
pSettings->selected_language = LANGUAGE_Italian;+ −
return EXIT_TO_MENU_WITH_LOGO;+ −
}+ −
+ −
+ −
uint8_t OnAction_Espanol (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
pSettings->selected_language = LANGUAGE_Espanol;+ −
return EXIT_TO_MENU_WITH_LOGO;+ −
}+ −
+ −
+ −
void openEdit_Design(void)+ −
{+ −
refresh_Design();+ −
+ −
write_field_button(StMSYS3_Units, 400, 700, ME_Y_LINE1, &FontT48, "");+ −
write_field_button(StMSYS3_Colors, 400, 700, ME_Y_LINE2, &FontT48, "");+ −
#ifdef HAVE_DEBUG_VIEW+ −
write_field_button(StMSYS3_Debug, 400, 700, ME_Y_LINE3, &FontT48, "");+ −
#endif+ −
setEvent(StMSYS3_Units, (uint32_t)OnAction_Units);+ −
setEvent(StMSYS3_Colors, (uint32_t)OnAction_Colorscheme);+ −
#ifdef HAVE_DEBUG_VIEW+ −
setEvent(StMSYS3_Debug, (uint32_t)OnAction_DebugInfo);+ −
#endif+ −
}+ −
+ −
+ −
void refresh_Design(void)+ −
{+ −
char text[32];+ −
+ −
// header+ −
text[0] = '\001';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_Layout;+ −
text[3] = 0;+ −
write_topline(text);+ −
+ −
// units+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_Units;+ −
text[2] = 0;+ −
write_label_var( 30, 200, ME_Y_LINE1, &FontT48, text);+ −
+ −
if(settingsGetPointer()->nonMetricalSystem)+ −
{+ −
text[1] = TXT2BYTE_Units_feet;+ −
}+ −
else+ −
{+ −
text[1] = TXT2BYTE_Units_metric;+ −
}+ −
write_label_var( 400, 700, ME_Y_LINE1, &FontT48, text);+ −
+ −
// colorscheme+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_Farbschema;+ −
text[2] = 0;+ −
write_label_var( 30, 300, ME_Y_LINE2, &FontT48, text);+ −
+ −
text[0] = '0' + settingsGetPointer()->tX_colorscheme;+ −
text[1] = 0;+ −
write_label_var( 400, 700, ME_Y_LINE2, &FontT48, text);+ −
+ −
#ifdef HAVE_DEBUG_VIEW+ −
// specials+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_ShowDebug;+ −
text[2] = 0;+ −
write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text);+ −
+ −
if(settingsGetPointer()->showDebugInfo)+ −
text[0] = '\005';+ −
else+ −
text[0] = '\006';+ −
text[1] = 0;+ −
write_label_var( 400, 700, ME_Y_LINE3, &FontT48, text);+ −
#endif+ −
+ −
// design+ −
text[0] = TXT_Depth;+ −
text[1] = 0;+ −
write_content( 30, 700, ME_Y_LINE4, &FontT24, text, CLUT_Font031);+ −
write_content( 30, 700, ME_Y_LINE4 + 30 + 70, &FontT48, "___________", CLUT_DIVE_FieldSeperatorLines);+ −
write_content(280, 700, ME_Y_LINE4 + 30 + 70 - 3, &FontT48, "|", CLUT_DIVE_pluginbox);+ −
write_content(290, 700, ME_Y_LINE4 + 30 + 70 - 37, &FontT48, "_______________", CLUT_DIVE_pluginbox);+ −
write_content( 30, 700, ME_Y_LINE4 + 42, &FontT144, "24.7", CLUT_Font027);+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
+ −
+ −
uint8_t OnAction_Units(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
settingsGetPointer()->nonMetricalSystem = !(settingsGetPointer()->nonMetricalSystem);+ −
return EXIT_TO_MENU_WITH_LOGO;//UPDATE_DIVESETTINGS;+ −
}+ −
+ −
+ −
uint8_t OnAction_Colorscheme(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
uint8_t newColorscheme;+ −
+ −
newColorscheme = settingsGetPointer()->tX_colorscheme + 1;+ −
+ −
if(newColorscheme > 3)+ −
newColorscheme = 0;+ −
+ −
settingsGetPointer()->tX_colorscheme = newColorscheme;+ −
GFX_use_colorscheme(newColorscheme);+ −
tHome_init_compass();+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
uint8_t OnAction_DebugInfo(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
settingsGetPointer()->showDebugInfo = !(settingsGetPointer()->showDebugInfo);+ −
return UPDATE_DIVESETTINGS;+ −
}+ −
+ −
+ −
+ −
+ −
/*+ −
uint8_t OnAction_Design_t7ft (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
if((pSettings->design == 7) && pSettings->nonMetricalSystem)+ −
return EXIT_TO_MENU;+ −
pSettings->design = 7;+ −
pSettings->nonMetricalSystem = 1;+ −
tMenuEdit_set_on_off(StMSYS3_t7, 0);+ −
tMenuEdit_set_on_off(StMSYS3_t7ft, 1);+ −
tMenuEdit_set_on_off(StMSYS3_t3, 0);+ −
return UPDATE_DIVESETTINGS;+ −
}+ −
+ −
+ −
uint8_t OnAction_Design_t7 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
if((pSettings->design == 7) && (pSettings->nonMetricalSystem == 0))+ −
return EXIT_TO_MENU;+ −
pSettings->design = 7;+ −
pSettings->nonMetricalSystem = 0;+ −
tMenuEdit_set_on_off(StMSYS3_t7, 1);+ −
tMenuEdit_set_on_off(StMSYS3_t7ft, 0);+ −
tMenuEdit_set_on_off(StMSYS3_t3, 0);+ −
return UPDATE_DIVESETTINGS;+ −
}+ −
+ −
+ −
uint8_t OnAction_Design_t3 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSettings *pSettings = settingsGetPointer();+ −
if(pSettings->design == 3)+ −
return EXIT_TO_MENU;+ −
pSettings->design = 3;+ −
pSettings->nonMetricalSystem = 0;+ −
tMenuEdit_set_on_off(StMSYS3_t7, 0);+ −
tMenuEdit_set_on_off(StMSYS3_t7ft,0);+ −
tMenuEdit_set_on_off(StMSYS3_t3, 1);+ −
return UPDATE_DIVESETTINGS;+ −
}+ −
*/+ −
+ −
+ −
+ −
void openEdit_Information(void)+ −
{+ −
char text[70];+ −
+ −
infoPage = 0;+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_Information;+ −
text[2] = 0;+ −
write_topline(text);+ −
+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_ButtonNext;+ −
text[2] = 0;+ −
+ −
write_field_button(StMSYS4_Info, 30, 800, ME_Y_LINE6, &FontT48, text);+ −
+ −
setEvent(StMSYS4_Info, (uint32_t)OnAction_Information);+ −
tMenuEdit_select(StMSYS4_Info);+ −
}+ −
+ −
+ −
uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
resetEnterPressedToStateBeforeButtonAction();+ −
+ −
infoPage++;+ −
if(infoPage > 3)+ −
return EXIT_TO_MENU;+ −
else+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
void refresh_InformationPage(void)+ −
{+ −
char text_header[5];+ −
char text_button[5];+ −
char text_content[256];+ −
uint8_t date[3], year,month,day;+ −
+ −
RTC_DateTypeDef Sdate, Sdate2;+ −
float temperature1, temperature2, voltage, offsetTemperature;+ −
+ −
//RTC_TimeTypeDef Stime;+ −
+ −
/*+ −
SDeviceLine batteryChargeCycles;+ −
SDeviceLine batteryChargeCompleteCycles;+ −
SDeviceLine temperatureMinimum;+ −
SDeviceLine temperatureMaximum;+ −
SDeviceLine depthMaximum;+ −
SDeviceLine diveCycles;+ −
SDeviceLine voltageMinimum;+ −
*/+ −
+ −
switch(infoPage)+ −
{+ −
case 0:+ −
text_header[0] = '\001';+ −
text_header[1] = TXT_Information;+ −
text_header[2] = 0;+ −
+ −
write_label_var( 20, 800, ME_Y_LINE1, &FontT42, "Dive Computer OSTC4");+ −
write_label_var( 20, 800, ME_Y_LINE2, &FontT42, "Design heinrichs/weikamp");+ −
+ −
Sdate.Year = firmwareDataGetPointer()->release_year;+ −
Sdate.Month = firmwareDataGetPointer()->release_month;+ −
Sdate.Date = firmwareDataGetPointer()->release_day;+ −
+ −
if(settingsGetPointer()->date_format == DDMMYY)+ −
{+ −
day = 0;+ −
month = 1;+ −
year = 2;+ −
}+ −
else+ −
if(settingsGetPointer()->date_format == MMDDYY)+ −
{+ −
day = 1;+ −
month = 0;+ −
year = 2;+ −
}+ −
else+ −
{+ −
day = 2;+ −
month = 1;+ −
year = 0;+ −
}+ −
date[day] = Sdate.Date;+ −
date[month] = Sdate.Month;+ −
date[year] = Sdate.Year;+ −
snprintf(text_content,40,"Firmware release date: %02d.%02d.%02d",date[0],date[1],date[2]);+ −
write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content);+ −
write_label_var( 20, 800, ME_Y_LINE4, &FontT42, "for more information");+ −
write_label_var( 20, 800, ME_Y_LINE5, &FontT42, "info@heinrichsweikamp.com");+ −
+ −
text_button[0] = TXT_2BYTE;+ −
text_button[1] = TXT2BYTE_ButtonNext;+ −
text_button[2] = 0;+ −
break;+ −
+ −
case 1:+ −
text_header[0] = '\001';+ −
text_header[1] = TXT_2BYTE;+ −
text_header[2] = TXT2BYTE_Usage_Battery;+ −
text_header[3] = 0;+ −
+ −
text_content[0] = TXT_2BYTE;+ −
text_content[1] = TXT2BYTE_ChargeCycles;+ −
text_content[2] = 0;+ −
write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content);+ −
/* snprintf(text_content,80,"%ld (%ld)",stateDeviceGetPointer()->batteryChargeCycles.value_int32,stateDeviceGetPointer()->batteryChargeCompleteCycles.value_int32);+ −
write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); */+ −
+ −
translateDate(stateDeviceGetPointer()->batteryChargeCycles.date_rtc_dr, &Sdate);+ −
translateDate(stateDeviceGetPointer()->batteryChargeCompleteCycles.date_rtc_dr, &Sdate2);+ −
snprintf(text_content,80,"%u.%u.20%02u (%u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year);+ −
write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content);+ −
+ −
text_content[0] = TXT_2BYTE;+ −
text_content[1] = TXT2BYTE_LowestVoltage;+ −
text_content[2] = 0;+ −
write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content);+ −
+ −
translateDate(stateDeviceGetPointer()->voltageMinimum.date_rtc_dr, &Sdate);+ −
voltage = ((float)stateDeviceGetPointer()->voltageMinimum.value_int32) / 1000;+ −
snprintf(text_content,80,"%0.3fV (%u.%u.20%02u)",voltage, Sdate.Date,Sdate.Month,Sdate.Year);+ −
write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content);+ −
+ −
text_button[0] = TXT_2BYTE;+ −
text_button[1] = TXT2BYTE_ButtonNext;+ −
text_button[2] = 0;+ −
break;+ −
+ −
case 2:+ −
text_header[0] = '\001';+ −
text_header[1] = TXT_2BYTE;+ −
text_header[2] = TXT2BYTE_Usage_Dives;+ −
text_header[3] = 0;+ −
+ −
text_content[0] = TXT_2BYTE;+ −
text_content[1] = TXT2BYTE_NumberOfDives;+ −
text_content[2] = 0;+ −
write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content);+ −
+ −
snprintf(text_content,80,"%ld (%ld)",stateDeviceGetPointer()->diveCycles.value_int32,(stateDeviceGetPointer()->depthMaximum.value_int32 - 1000) / 100);+ −
write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content);+ −
+ −
translateDate(stateDeviceGetPointer()->diveCycles.date_rtc_dr, &Sdate);+ −
translateDate(stateDeviceGetPointer()->depthMaximum.date_rtc_dr, &Sdate2);+ −
snprintf(text_content,80,"%u.%u.20%02u (%u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year);+ −
write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content);+ −
+ −
text_content[0] = TXT_2BYTE;+ −
text_content[1] = TXT2BYTE_HoursOfOperation;+ −
text_content[2] = 0;+ −
write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content);+ −
+ −
snprintf(text_content,80,"%ld",(stateDeviceGetPointer()->hoursOfOperation.value_int32)/3600);+ −
write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content);+ −
+ −
text_button[0] = TXT_2BYTE;+ −
text_button[1] = TXT2BYTE_ButtonNext;+ −
text_button[2] = 0;+ −
break;+ −
+ −
case 3:+ −
text_header[0] = '\001';+ −
text_header[1] = TXT_2BYTE;+ −
text_header[2] = TXT2BYTE_Usage_Environment;+ −
text_header[3] = 0;+ −
+ −
text_content[0] = TXT_2BYTE;+ −
text_content[1] = TXT2BYTE_AmbientTemperature;+ −
text_content[2] = 0;+ −
write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content);+ −
+ −
temperature1 = ((float)stateDeviceGetPointer()->temperatureMinimum.value_int32) / 100;+ −
temperature2 = ((float)stateDeviceGetPointer()->temperatureMaximum.value_int32) / 100;+ −
snprintf(text_content,80,"%0.2f\140C / %0.2f\140C",temperature1,temperature2);+ −
write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content);+ −
+ −
translateDate(stateDeviceGetPointer()->temperatureMinimum.date_rtc_dr, &Sdate);+ −
translateDate(stateDeviceGetPointer()->temperatureMaximum.date_rtc_dr, &Sdate2);+ −
snprintf(text_content,80,"(%u.%u.20%02u / %u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year);+ −
write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content);+ −
+ −
text_content[0] = TXT_2BYTE;+ −
text_content[1] = TXT2BYTE_Korrekturwerte;+ −
text_content[2] = 0;+ −
write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content);+ −
+ −
offsetTemperature = ((float)settingsGetPointer()->offsetTemperature_centigrad) / 10;+ −
snprintf(text_content,80,"%i %s / %0.2f\140C",settingsGetPointer()->offsetPressure_mbar, TEXT_PRESSURE_UNIT, offsetTemperature);+ −
write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content);+ −
+ −
text_button[0] = TXT_2BYTE;+ −
text_button[1] = TXT2BYTE_Exit;+ −
text_button[2] = 0;+ −
break;+ −
}+ −
+ −
write_topline(text_header);+ −
tMenuEdit_newButtonText(StMSYS4_Info, text_button);+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonNext,0);+ −
}+ −
+ −
+ −
void openEdit_Reset(void)+ −
{+ −
char text[32];+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_ResetMenu;+ −
text[3] = 0;+ −
write_topline(text);+ −
+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_LogbookOffset;+ −
text[7] = 0;+ −
+ −
write_label_var( 30, 400, ME_Y_LINE1, &FontT48, text);+ −
+ −
write_field_udigit(StMSYS5_LogbookOffset,420, 800, ME_Y_LINE1, &FontT48, "####", settingsGetPointer()->logbookOffset,0,0,0);+ −
+ −
text[0] = TXT_2BYTE;+ −
text[2] = 0;+ −
+ −
text[1] = TXT2BYTE_ResetAll;+ −
write_field_button(StMSYS5_ResetAll, 30, 800, ME_Y_LINE2, &FontT48, text);+ −
+ −
text[1] = TXT2BYTE_ResetDeco;+ −
write_field_button(StMSYS5_ResetDeco, 30, 800, ME_Y_LINE3, &FontT48, text);+ −
+ −
text[1] = TXT2BYTE_Reboot;+ −
write_field_button(StMSYS5_Reboot, 30, 800, ME_Y_LINE4, &FontT48, text);+ −
+ −
text[1] = TXT2BYTE_Maintenance;+ −
write_field_button(StMSYS5_Maintenance, 30, 800, ME_Y_LINE5, &FontT48, text);+ −
+ −
#ifndef RESETLOGBLOCK+ −
text[1] = TXT2BYTE_ResetLogbook;+ −
write_field_button(StMSYS5_ResetLogbook,30, 800, ME_Y_LINE6, &FontT48, text);+ −
#else+ −
text[0] = '\031';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_ResetLogbook;+ −
text[3] = 0;+ −
write_field_button(StMSYS5_ResetLogbook,30, 800, ME_Y_LINE6, &FontT48, text);+ −
text[0] = TXT_2BYTE;+ −
text[2] = 0;+ −
#endif+ −
+ −
setEvent(StMSYS5_LogbookOffset, (uint32_t)OnAction_LogbookOffset);+ −
setEvent(StMSYS5_ResetAll, (uint32_t)OnAction_Confirm);+ −
setEvent(StMSYS5_ResetDeco, (uint32_t)OnAction_Confirm);+ −
setEvent(StMSYS5_Reboot, (uint32_t)OnAction_Confirm);+ −
setEvent(StMSYS5_Maintenance, (uint32_t)OnAction_Maintenance);+ −
#ifndef RESETLOGBLOCK+ −
setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_Confirm);+ −
#else+ −
setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_Nothing);+ −
#endif+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
+ −
+ −
void openEdit_ResetConfirmation(uint32_t editIdOfCaller)+ −
{+ −
char text[32];+ −
+ −
resetMenuEdit(CLUT_MenuPageSystem);+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_AreYouSure;+ −
text[3] = 0;+ −
write_topline(text);+ −
+ −
text[0] = TXT_2BYTE;+ −
text[2] = 0;+ −
text[1] = TXT2BYTE_Abort;+ −
+ −
write_field_button(StMSYS5_Exit, 30, 800, ME_Y_LINE1, &FontT48, text);+ −
+ −
text[2] = 0;+ −
text[3] = 0;+ −
switch(editIdOfCaller)+ −
{+ −
case StMSYS5_Reboot:+ −
case StMSYS5_RebootRTE:+ −
case StMSYS5_RebootMainCPU:+ −
text[1] = TXT2BYTE_RebootMainCPU;+ −
write_field_button(StMSYS5_RebootMainCPU, 30, 800, ME_Y_LINE2, &FontT48, text);+ −
text[1] = TXT2BYTE_RebootRTE;+ −
write_field_button(StMSYS5_RebootRTE, 30, 800, ME_Y_LINE3, &FontT48, text);+ −
setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit);+ −
setEvent(StMSYS5_RebootMainCPU, (uint32_t)OnAction_RebootMainCPU);+ −
setEvent(StMSYS5_RebootRTE, (uint32_t)OnAction_RebootRTE);+ −
text[0] = '\025';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_DecoDataLost;+ −
text[3] = 0;+ −
write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text);+ −
break;+ −
+ −
case StMSYS5_ResetDeco:+ −
text[1] = TXT2BYTE_ResetDeco;+ −
write_field_button(editIdOfCaller, 30, 800, ME_Y_LINE2, &FontT48, text);+ −
setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit);+ −
setEvent(editIdOfCaller, (uint32_t)OnAction_ResetDeco);+ −
text[0] = '\025';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_DecoDataLost;+ −
text[3] = 0;+ −
write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text);+ −
break;+ −
+ −
case StMSYS5_ResetAll:+ −
text[1] = TXT2BYTE_ResetAll;+ −
write_field_button(editIdOfCaller, 30, 800, ME_Y_LINE2, &FontT48, text);+ −
setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit);+ −
setEvent(editIdOfCaller, (uint32_t)OnAction_ResetAll);+ −
break;+ −
+ −
case StMSYS5_ResetLogbook:+ −
text[1] = TXT2BYTE_ResetLogbook;+ −
write_field_button(editIdOfCaller, 30, 800, ME_Y_LINE2, &FontT48, text);+ −
setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit);+ −
setEvent(editIdOfCaller, (uint32_t)OnAction_ResetLogbook);+ −
break;+ −
}+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
+ −
void openEdit_Maintenance(void)+ −
{+ −
char text[32];+ −
unsigned char index = 0;+ −
SSettings *pSettings = settingsGetPointer();+ −
SSensorDataDiveO2* pDiveO2Data = NULL;+ −
+ −
resetMenuEdit(CLUT_MenuPageSystem);+ −
+ −
text[0] = '\001';+ −
text[1] = TXT_2BYTE;+ −
text[2] = TXT2BYTE_Maintenance;+ −
text[3] = 0;+ −
write_topline(text);+ −
+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_SetFactoryDefaults;+ −
text[2] = 0;+ −
write_field_button(StMSYS5_SetFactoryBC, 30, 800, ME_Y_LINE1, &FontT48, text);+ −
+ −
+ −
if(stateRealGetPointer()->lifeData.battery_charge <= 0)+ −
{+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_SetBatteryCharge;+ −
text[2] = 0;+ −
snprintf(&text[2],10,": %u%%",pSettings->lastKnownBatteryPercentage);+ −
write_field_button(StMSYS5_SetBattCharge, 30, 800, ME_Y_LINE2, &FontT48, text);+ −
}+ −
+ −
if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL))+ −
{+ −
for (index = 0; index < 3; index++)+ −
{+ −
if(pSettings->ext_sensor_map[index] == SENSOR_DIGO2M)+ −
{+ −
pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index];+ −
if(pDiveO2Data->pressure != 0)+ −
{+ −
snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0),+ −
stateRealGetPointer()->lifeData.pressure_surface_bar);+ −
+ −
write_field_button(StMSYS5_AdjustSurfPres, 30, 800, ME_Y_LINE4, &FontT48, text);+ −
}+ −
break;+ −
}+ −
}+ −
}+ −
+ −
#ifdef ENABLE_ANALYSE_SAMPLES+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_SetSampleIndex;+ −
text[2] = 0;+ −
write_field_button(StMSYS5_SetSampleIndx, 30, 800, ME_Y_LINE4, &FontT48, text);+ −
#endif+ −
+ −
setEvent(StMSYS5_SetFactoryBC, (uint32_t)OnAction_SetFactoryDefaults);+ −
if(stateRealGetPointer()->lifeData.battery_charge <= 0)+ −
{+ −
setEvent(StMSYS5_SetBattCharge, (uint32_t)OnAction_SetBatteryCharge);+ −
}+ −
if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL))+ −
{+ −
if(pDiveO2Data != NULL)+ −
{+ −
setEvent(StMSYS5_AdjustSurfPres, (uint32_t)OnAction_AdjustSurfacePressure);+ −
}+ −
}+ −
#ifdef ENABLE_ANALYSE_SAMPLES+ −
setEvent(StMSYS5_SetSampleIndx, (uint32_t)OnAction_RecoverSampleIdx);+ −
#endif+ −
+ −
+ −
text[0] = TXT_2BYTE;+ −
text[1] = TXT2BYTE_WarnBatteryLow;+ −
text[2] = 0;+ −
snprintf(&text[2],10,": %01.2fV",stateRealGetPointer()->lifeData.battery_voltage);+ −
write_label_var( 30, 800, ME_Y_LINE5, &FontT42, text);+ −
+ −
snprintf(&text[0],30,"Code: %X",getLicence());+ −
write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text);+ −
+ −
write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext);+ −
}+ −
+ −
uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
uint8_t digitContentNew;+ −
uint32_t newOffset;+ −
+ −
if(action == ACTION_BUTTON_ENTER)+ −
return digitContent;+ −
+ −
if(action == ACTION_BUTTON_ENTER_FINAL)+ −
{+ −
evaluateNewString(editId, &newOffset, 0, 0, 0);+ −
if(newOffset > 9000)+ −
newOffset = 0;+ −
tMenuEdit_newInput(editId, newOffset, 0, 0, 0);+ −
settingsGetPointer()->logbookOffset = (uint16_t)newOffset;+ −
return UPDATE_DIVESETTINGS;+ −
}+ −
+ −
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 UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
return EXIT_TO_MENU;+ −
}+ −
uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
openEdit_ResetConfirmation(editId);+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_Maintenance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
openEdit_Maintenance();+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
MX_SmallCPU_Reset_To_Standard();+ −
return EXIT_TO_MENU;+ −
}+ −
+ −
uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
clearDeco();+ −
return EXIT_TO_MENU;+ −
}+ −
+ −
uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
set_settings_to_Standard();+ −
check_and_correct_settings();+ −
+ −
return UPDATE_AND_EXIT_TO_HOME;+ −
}+ −
+ −
uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
write_label_var( 430, 740, 350, &FontT42, "Wait");+ −
ext_flash_erase_logbook();+ −
+ −
SSettings * pSettings = settingsGetPointer();+ −
pSettings->lastDiveLogId = 255;+ −
pSettings->logFlashNextSampleStartAddress = 0;+ −
+ −
return EXIT_TO_MENU;+ −
}+ −
+ −
uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
settingsGetPointer()->showDebugInfo = 0;+ −
extern uint8_t bootToBootloader;+ −
bootToBootloader = 1;+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
settingsWriteFactoryDefaults(settingsGetPointer()->ButtonResponsiveness[3], settingsGetPointer()->buttonBalance);+ −
return EXIT_TO_MENU;+ −
}+ −
+ −
#ifdef ENABLE_ANALYSE_SAMPLES+ −
uint8_t OnAction_RecoverSampleIdx(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
char text[32];+ −
uint8_t openSec;+ −
uint8_t retval = UNSPECIFIC_RETURN;+ −
openSec = ext_flash_AnalyseSampleBuffer();+ −
snprintf(&text[0],30,"OpenSec: %d",openSec);+ −
write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text);+ −
+ −
if(openSec == 2)+ −
{+ −
retval = UPDATE_DIVESETTINGS;+ −
}+ −
return retval;+ −
}+ −
#endif+ −
+ −
uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
setBatteryPercentage(settingsGetPointer()->lastKnownBatteryPercentage);+ −
// setBatteryPercentage(100);+ −
return EXIT_TO_MENU;+ −
}+ −
+ −
uint8_t OnAction_AdjustSurfacePressure (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
SSensorDataDiveO2* pDiveO2Data;+ −
const SDiveState* pDiveState = stateRealGetPointer();+ −
SSettings* pSettings = settingsGetPointer();+ −
uint8_t index = 0;+ −
float orgpressure_surface_mbar;+ −
float DiveO2_mbar;+ −
int8_t newOffset_mbar = 0;+ −
+ −
+ −
char text[32];+ −
+ −
+ −
+ −
for (index = 0; index < 3; index++)+ −
{+ −
if(settingsGetPointer()->ext_sensor_map[index] == SENSOR_DIGO2M)+ −
{+ −
pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index];+ −
DiveO2_mbar = (pDiveO2Data->pressure/1000.0);+ −
+ −
orgpressure_surface_mbar = (pDiveState->lifeData.pressure_surface_bar * 1000) - (settingsGetPointer()->offsetPressure_mbar);+ −
newOffset_mbar = DiveO2_mbar - orgpressure_surface_mbar;+ −
+ −
if(fabs(orgpressure_surface_mbar + ((float)newOffset_mbar) - DiveO2_mbar) > 0.5) /* there might be a rounding difference => compensate */+ −
{+ −
if((orgpressure_surface_mbar + ((float)newOffset_mbar)) - (pDiveO2Data->pressure/1000.0) > 0.0)+ −
{+ −
newOffset_mbar -=1;+ −
}+ −
else+ −
{+ −
newOffset_mbar +=1;+ −
}+ −
}+ −
+ −
pSettings->offsetPressure_mbar = newOffset_mbar;+ −
snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0), (orgpressure_surface_mbar + pSettings->offsetPressure_mbar) / 1000.0);+ −
tMenuEdit_newButtonText(StMSYS5_AdjustSurfPres,text);+ −
break;+ −
}+ −
}+ −
+ −
return UNSPECIFIC_RETURN;+ −
}+ −
+ −
+ −
#ifdef SCREENTEST+ −
uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
static uint8_t FrameCount = 1; // 0 is invisible frame+ −
char text[5];+ −
GFX_DrawCfgScreen tTestScreen;+ −
tTestScreen.FBStartAdress = 0;+ −
tTestScreen.ImageHeight = 480;+ −
tTestScreen.ImageWidth = 800;+ −
tTestScreen.LayerIndex = 1;+ −
+ −
set_globalState(StMSYS5_ScreenTest);+ −
tTestScreen.FBStartAdress = getFrameByNumber(FrameCount);+ −
if(tTestScreen.FBStartAdress == 0)+ −
{+ −
extern uint8_t bootToBootloader;+ −
bootToBootloader = 1;+ −
}+ −
GFX_fill_buffer(tTestScreen.FBStartAdress, 0xFF, FrameCount);+ −
snprintf(text,5,"%u",FrameCount);+ −
Gfx_write_label_var(&tTestScreen, 10,100,10,&FontT48,CLUT_Font027,text);+ −
GFX_SetFramesTopBottom(tTestScreen.FBStartAdress, NULL,480);+ −
FrameCount++;+ −
}+ −
#endif+ −
/*+ −
uint8_t OnAction_TestCLog (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)+ −
{+ −
write_label_var( 430, 740, 350, &FontT42, "Wait");+ −
+ −
test_log_only(20, 5);+ −
test_log_only(30, 10);+ −
ext_flash_write_settings();+ −
return EXIT_TO_MENU;+ −
}+ −
*/+ −
+ −