38
+ − 1 ///////////////////////////////////////////////////////////////////////////////
+ − 2 /// -*- coding: UTF-8 -*-
+ − 3 ///
+ − 4 /// \file Discovery/Src/tMenuSystem.c
+ − 5 /// \brief Main Template file for Menu Page System settings
+ − 6 /// \author heinrichs weikamp gmbh
+ − 7 /// \date 05-Aug-2014
+ − 8 ///
+ − 9 /// \details
+ − 10 ///
+ − 11 /// $Id$
+ − 12 ///////////////////////////////////////////////////////////////////////////////
+ − 13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
+ − 14 ///
+ − 15 /// This program is free software: you can redistribute it and/or modify
+ − 16 /// it under the terms of the GNU General Public License as published by
+ − 17 /// the Free Software Foundation, either version 3 of the License, or
+ − 18 /// (at your option) any later version.
+ − 19 ///
+ − 20 /// This program is distributed in the hope that it will be useful,
+ − 21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
+ − 22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ − 23 /// GNU General Public License for more details.
+ − 24 ///
+ − 25 /// You should have received a copy of the GNU General Public License
+ − 26 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
+ − 27 //////////////////////////////////////////////////////////////////////////////
+ − 28
+ − 29 /* Includes ------------------------------------------------------------------*/
+ − 30 #include "tMenu.h"
+ − 31 #include "tMenuSystem.h"
+ − 32 #include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass()
+ − 33
379
+ − 34 static uint8_t customviewsSubpage = 0;
+ − 35
38
+ − 36 /* Private function prototypes -----------------------------------------------*/
+ − 37 char customview_TXT2BYTE_helper(uint8_t customViewId);
+ − 38
379
+ − 39 void set_CustomsviewsSubpage(uint8_t page)
+ − 40 {
+ − 41 customviewsSubpage = page;
+ − 42 }
+ − 43
38
+ − 44 /* Exported functions --------------------------------------------------------*/
+ − 45
+ − 46 uint32_t tMSystem_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext)
+ − 47 {
+ − 48 SSettings *data;
379
+ − 49 int i;
38
+ − 50 uint8_t textPointer;
+ − 51 uint8_t dateFormat;
+ − 52 uint8_t RTEhigh, RTElow;
+ − 53 RTC_DateTypeDef Sdate;
+ − 54 RTC_TimeTypeDef Stime;
+ − 55 const SDiveState * pStateReal = stateRealGetPointer();
+ − 56
+ − 57 data = settingsGetPointer();
+ − 58 textPointer = 0;
+ − 59 *tab = 300;
+ − 60 *subtext = 0;
+ − 61
+ − 62 // dive mode
+ − 63 if(actual_menu_content != MENU_SURFACE)
+ − 64 {
+ − 65 uint8_t id;
+ − 66
379
+ − 67 for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */
38
+ − 68 {
379
+ − 69 id = cv_changelist[customviewsSubpage * 5 + i];
+ − 70 if(id == CVIEW_END) /* last list item? */
+ − 71 {
+ − 72 break;
+ − 73 }
+ − 74 else
+ − 75 {
+ − 76 text[textPointer++] = '\006' - CHECK_BIT_THOME(data->cv_configuration,id);
+ − 77 text[textPointer++] = ' ';
+ − 78 textPointer += snprintf(&text[textPointer], 60,
+ − 79 "%c%c\n\r",
+ − 80 TXT_2BYTE, customview_TXT2BYTE_helper(id));
+ − 81 }
38
+ − 82 }
379
+ − 83 text[textPointer++] = TXT_2BYTE;
+ − 84 text[textPointer++] = TXT2BYTE_ButtonNext;
38
+ − 85 text[textPointer] = 0;
+ − 86
379
+ − 87 for(;i<5;i++) /* clear empty lines in case menu shows less than 5 entries */
+ − 88 {
+ − 89 text[textPointer++]='\n';
+ − 90 text[textPointer++]='\r';
+ − 91 text[textPointer] = 0;
+ − 92 }
+ − 93
38
+ − 94 return StMSYS;
+ − 95 }
+ − 96
+ − 97 // surface mode
139
+ − 98 getActualRTEandFONTversion(&RTEhigh,&RTElow,NULL,NULL);
38
+ − 99
+ − 100 if((RTEhigh == 0xFF) || (RTElow == 0xFF))
+ − 101 {
+ − 102 RTEhigh = 0;
+ − 103 RTElow = 0;
+ − 104 }
+ − 105
+ − 106 if((line == 0) || (line == 1))
+ − 107 {
+ − 108 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate);
+ − 109 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime);
+ − 110
+ − 111 dateFormat = data->date_format;
+ − 112
+ − 113 textPointer += snprintf(&text[textPointer], 40,
+ − 114 "Date"
+ − 115 "\016\016"
+ − 116 " "
+ − 117 );
+ − 118
+ − 119 if(dateFormat == DDMMYY)
+ − 120 {
+ − 121 textPointer += snprintf(&text[textPointer], 40,
+ − 122 "DDMMYY"
+ − 123 "\017"
+ − 124 "\t"
+ − 125 "%02d-%02d-%02d"
+ − 126 " "
+ − 127 , Sdate.Date, Sdate.Month, 2000 + Sdate.Year
+ − 128 );
+ − 129 }
+ − 130 else
+ − 131 if(dateFormat == MMDDYY)
+ − 132 {
+ − 133 textPointer += snprintf(&text[textPointer], 40,
+ − 134 "MMDDYY"
+ − 135 "\017"
+ − 136 "\t"
+ − 137 "%02d-%02d-%02d"
+ − 138 " "
+ − 139 ,Sdate.Month, Sdate.Date, 2000 + Sdate.Year
+ − 140 );
+ − 141 }
+ − 142 else
+ − 143 if(dateFormat == YYMMDD)
+ − 144 {
+ − 145 textPointer += snprintf(&text[textPointer], 40,
+ − 146 "YYMMDD"
+ − 147 "\017"
+ − 148 "\t"
+ − 149 "%02d-%02d-%02d"
+ − 150 " "
+ − 151 , 2000 + Sdate.Year, Sdate.Month, Sdate.Date
+ − 152 );
+ − 153 }
+ − 154
+ − 155 textPointer += snprintf(&text[textPointer], 60,
+ − 156 "%02d:%02d:%02d"
+ − 157 "\n\r"
+ − 158 ,Stime.Hours, Stime.Minutes, Stime.Seconds
+ − 159 );
+ − 160 }
+ − 161 else
+ − 162 {
+ − 163 strcpy(&text[textPointer],"\n\r");
+ − 164 textPointer += 2;
+ − 165 }
+ − 166
+ − 167 if((line == 0) || (line == 2))
+ − 168 {
+ − 169 text[textPointer++] = TXT_Language;
+ − 170 text[textPointer++] = '\t';
+ − 171 text[textPointer++] = TXT_LanguageName;
+ − 172 text[textPointer++] = '\n';
+ − 173 text[textPointer++] = '\r';
+ − 174 text[textPointer] = 0;
+ − 175 }
+ − 176 else
+ − 177 {
+ − 178 strcpy(&text[textPointer],"\n\r");
+ − 179 textPointer += 2;
+ − 180 }
+ − 181
+ − 182 if((line == 0) || (line == 3))
+ − 183 {
+ − 184 text[textPointer++] = TXT_2BYTE;
+ − 185 text[textPointer++] = TXT2BYTE_Layout;
+ − 186 text[textPointer++] = '\t';
+ − 187
+ − 188 if(!data->showDebugInfo)
+ − 189 {
+ − 190 text[textPointer++] = TXT_2BYTE;
+ − 191 if(data->nonMetricalSystem == 0)
+ − 192 text[textPointer++] = TXT2BYTE_Units_metric;
+ − 193 else
+ − 194 text[textPointer++] = TXT2BYTE_Units_feet;
+ − 195
+ − 196 if(data->tX_colorscheme != 0)
+ − 197 {
+ − 198 text[textPointer++] = ' ';
+ − 199 text[textPointer++] = ' ';
+ − 200 text[textPointer++] = ' ';
+ − 201 text[textPointer++] = ' ';
+ − 202 text[textPointer++] = '\027';
+ − 203 text[textPointer++] = '/';
+ − 204 text[textPointer++] = ' ';
+ − 205 text[textPointer++] = '0' + data->tX_colorscheme;
+ − 206 text[textPointer++] = '\020';
+ − 207 }
+ − 208 }
+ − 209 else
+ − 210 {
+ − 211 if(data->nonMetricalSystem == 0)
+ − 212 {
+ − 213 text[textPointer++] = 'm';
+ − 214 text[textPointer++] = '/';
+ − 215 text[textPointer++] = 'C';
+ − 216 }
+ − 217 else
+ − 218 {
+ − 219 text[textPointer++] = 'f';
+ − 220 text[textPointer++] = 't';
+ − 221 text[textPointer++] = '/';
+ − 222 text[textPointer++] = 'F';
+ − 223 }
+ − 224
+ − 225 text[textPointer++] = ' ';
+ − 226 text[textPointer++] = ' ';
+ − 227 text[textPointer++] = ' ';
+ − 228 text[textPointer++] = ' ';
+ − 229 text[textPointer++] = '\027';
+ − 230 text[textPointer++] = '/';
+ − 231 text[textPointer++] = ' ';
+ − 232 text[textPointer++] = '0' + data->tX_colorscheme;
+ − 233 text[textPointer++] = '\020';
+ − 234 text[textPointer++] = ' ';
+ − 235 text[textPointer++] = ' ';
+ − 236 text[textPointer++] = 'd';
+ − 237 text[textPointer++] = 'e';
+ − 238 text[textPointer++] = 'b';
+ − 239 text[textPointer++] = 'u';
+ − 240 text[textPointer++] = 'g';
+ − 241 }
+ − 242
+ − 243 text[textPointer++] = '\n';
+ − 244 text[textPointer++] = '\r';
+ − 245 text[textPointer] = 0;
+ − 246 }
+ − 247 else
+ − 248 {
+ − 249 strcpy(&text[textPointer],"\n\r");
+ − 250 textPointer += 2;
+ − 251 }
+ − 252
+ − 253 if((line == 0) || (line == 4))
+ − 254 {
+ − 255 text[textPointer++] = TXT_2BYTE;
+ − 256 text[textPointer++] = TXT2BYTE_Customviews;//TXT2BYTE_ShowDebug;
+ − 257 }
+ − 258 text[textPointer++] = '\n';
+ − 259 text[textPointer++] = '\r';
+ − 260 text[textPointer] = 0;
+ − 261
+ − 262 if((line == 0) || (line == 5))
+ − 263 {
+ − 264 text[textPointer++] = TXT_Information;
+ − 265 text[textPointer++] = '\t';
+ − 266 textPointer += snprintf(&text[textPointer],29,"RTE %u.%u OS %i.%i.%i"
+ − 267 ,RTEhigh
+ − 268 ,RTElow
+ − 269 ,firmwareDataGetPointer()->versionFirst
+ − 270 ,firmwareDataGetPointer()->versionSecond
+ − 271 ,firmwareDataGetPointer()->versionThird
+ − 272 );
+ − 273 }
+ − 274 strcpy(&text[textPointer],"\n\r");
+ − 275 textPointer += 2;
+ − 276
+ − 277 if((line == 0) || (line == 6))
+ − 278 {
+ − 279 text[textPointer++] = TXT_2BYTE;
+ − 280 text[textPointer++] = TXT2BYTE_ResetMenu;
+ − 281 text[textPointer] = 0;
+ − 282 }
+ − 283 strcpy(&text[textPointer],"\n\r");
+ − 284 textPointer += 2;
+ − 285
+ − 286 return StMSYS;
+ − 287 }
+ − 288
+ − 289
+ − 290 /* Private functions ---------------------------------------------------------*/
+ − 291
+ − 292 char customview_TXT2BYTE_helper(uint8_t customViewId)
+ − 293 {
+ − 294 char text = 0;
+ − 295
+ − 296 switch(customViewId)
+ − 297 {
+ − 298 case CVIEW_sensors:
+ − 299 text = TXT2BYTE_O2monitor;
+ − 300 break;
+ − 301 case CVIEW_sensors_mV:
+ − 302 text = TXT2BYTE_O2voltage;
+ − 303 break;
+ − 304 case CVIEW_Compass:
+ − 305 text = TXT2BYTE_Compass;
+ − 306 break;
+ − 307 case CVIEW_Decolist:
+ − 308 text = TXT2BYTE_Decolist;
+ − 309 break;
+ − 310 case CVIEW_Tissues:
+ − 311 text = TXT2BYTE_Tissues;
+ − 312 break;
+ − 313 case CVIEW_Profile:
+ − 314 text = TXT2BYTE_Profile;
+ − 315 break;
+ − 316 case CVIEW_Gaslist:
+ − 317 text = TXT2BYTE_Gaslist;
+ − 318 break;
+ − 319 case CVIEW_EADTime:
+ − 320 text = TXT2BYTE_Info;
+ − 321 break;
+ − 322 case CVIEW_SummaryOfLeftCorner:
+ − 323 text = TXT2BYTE_Summary;
+ − 324 break;
+ − 325 case CVIEW_noneOrDebug:
379
+ − 326 text = TXT2BYTE_DispNoneDbg;
38
+ − 327 break;
+ − 328 default:
+ − 329 break;
+ − 330 }
+ − 331 return text;
+ − 332 }