annotate Discovery/Src/tMenuSetpoint.c @ 752:4f19336a3f21

Dev Bugfix: Alignment problem in lifedata structure: Since the introduction of the 64 bit DigO2 sensor ID the potential risk of a misalignment is present in the lifedata structure. E.g. If a new 8bit variable is added in front of the data structure containing the 64bit value. To avoid this in future the sensor data structure which may contain the 64bit value has been moved to the top of the structure (first element)
author Ideenmodellierer
date Tue, 07 Mar 2023 19:51:30 +0100
parents 1b995079c045
children 4abfb8a2a435
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 /// \file Discovery/Src/tMenuSetpoint.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 /// \brief
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 /// \date 19-Dec-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 /// \details
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 /// $Id$
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ///////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 /// This program is free software: you can redistribute it and/or modify
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 /// it under the terms of the GNU General Public License as published by
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 /// the Free Software Foundation, either version 3 of the License, or
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 /// (at your option) any later version.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 /// This program is distributed in the hope that it will be useful,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23 /// GNU General Public License for more details.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 /// You should have received a copy of the GNU General Public License
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 //////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30 #include "tMenu.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 #include "tMenuSetpoint.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32 #include "unit.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34 /* Private function prototypes -----------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38 uint32_t tMSP_refresh(uint8_t line,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39 char *text,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40 uint16_t *tab,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41 char *subtext)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43 const SSetpointLine * pSetpointLine;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
44
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
45 uint8_t textPointer, setpoint_cbar, sp_high, depthUp, first; // active
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
46
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
47 if(actual_menu_content == MENU_SURFACE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
48 pSetpointLine = settingsGetPointer()->setpoint;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
49 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 pSetpointLine = stateUsed->diveSettings.setpoint;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
51
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52 textPointer = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 *tab = 130;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54 *subtext = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
56 if((actual_menu_content == MENU_SURFACE) || (stateUsed->diveSettings.diveMode != DIVEMODE_PSCR)) /* do not show setpoints in PSCR mode */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
57 {
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
58 for(int spId=1;spId<=NUM_GASES;spId++)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
59 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
60 if(line && (line != spId))
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
61 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
62 first = pSetpointLine[spId].note.ub.first;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
63 if(first == 0)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
64 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
65 strcpy(&text[textPointer],
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
66 "\t"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
67 "\177"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
68 "*"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
69 "\n\r"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
70 );
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
71 textPointer += 5;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
72 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
73 else
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
74 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
75 strcpy(&text[textPointer],"\n\r");
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
76 textPointer += 2;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
77 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
78 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
79 else
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
80 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
81 setpoint_cbar = pSetpointLine[spId].setpoint_cbar;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
82 depthUp = pSetpointLine[spId].depth_meter;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
83 //active = pSetpointLine[spId].note.ub.active;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
84 first = pSetpointLine[spId].note.ub.first;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
86 strcpy(&text[textPointer],"\020"); // if(active) always active
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
87 textPointer += 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
89 sp_high = setpoint_cbar / 100;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
91 text[textPointer++] = 'S';
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
92 text[textPointer++] = 'P';
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
93 text[textPointer++] = '0' + spId;
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
94 text[textPointer++] = '\t';
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
96 if((first == 0) || (actual_menu_content != MENU_SURFACE))
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
97 strcpy(&text[textPointer++],"\177");
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
98
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
99 char color = '\031';
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
100 if(depthUp)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
101 color = '\020';
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
102
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
103 textPointer += snprintf(&text[textPointer], 57,
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
104 "* "
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
105 "%u.%02u"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
106 "\016\016"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
107 " bar"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
108 "\017"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
109 "\034"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
110 " "
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
111 "\016\016"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
112 " "
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
113 "\017"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
114 "%c"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
115 "%3u"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
116 "\016\016"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
117 " %c%c"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
118 "\017"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
119 "\035"
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
120 "\n\r",
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
121 sp_high, setpoint_cbar - (100 * sp_high),
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
122 color,
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
123 unit_depth_integer(depthUp),
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
124 unit_depth_char1(),
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
125 unit_depth_char2()
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
126 );
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
127 }
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
128 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
129 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
130 if((actual_menu_content != MENU_SURFACE) /*&& (line == 0)*/)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
131 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
132 text[textPointer++] = '\020';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
133 text[textPointer++] = TXT_2BYTE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
134 text[textPointer++] = TXT2BYTE_UseSensor;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
135 text[textPointer++] = '\n';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
136 text[textPointer++] = '\r';
662
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
137
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
138
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
139 if(stateUsed->diveSettings.diveMode == DIVEMODE_PSCR)
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
140 {
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
141 textPointer += snprintf(&text[textPointer], 20,"\020%c", TXT_SimPpo2);
1b995079c045 PSCR Mode
heinrichs weikamp
parents: 650
diff changeset
142 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143 text[textPointer++] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 }
650
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
145 else
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
146 {
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
147 text[textPointer++] = '\020';
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
148 text[textPointer++] = TXT_2BYTE;
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
149 text[textPointer++] = TXT2BYTE_AutomaticSP;
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
150 text[textPointer++] = '\002';
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
151 if(settingsGetPointer()->autoSetpoint)
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
152 text[textPointer++] = '\005';
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
153 else
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
154 text[textPointer++] = '\006';
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
155 text[textPointer++] = 0;
5f0d3dce5ef4 Automatik setpoint change:
Ideenmodellierer
parents: 525
diff changeset
156 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157 return StMSP;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
158 }