annotate Discovery/Src/tInfoSensor.c @ 781:01b3eb9d55c3

Update real multiplexer implementation: The final multiplexer provides 4 sensor connections instead of three supported by the prototype => A mupping functionality has been introduced to map the 4 possible mux addresses to the three visible O2 sensor slots. In addition the request cycle time is not depending on the number of sensors connected to make sure that all sensors are read within a defined time frame. The error reaction had to be updated to reset mux channels if one of the sensors fails to respond.
author Ideenmodellierer
date Mon, 29 May 2023 18:26:55 +0200
parents e33d661d1743
children c31237d20491
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
717
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
3 ///
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
4 /// \file Discovery/Src/tInfoCompass.c
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
5 /// \brief there is only compass_DX_f, compass_DY_f, compass_DZ_f output during this mode
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
7 /// \date 23-Feb-2015
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
8 ///
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
9 /// \details
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
10 ///
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
11 /// $Id$
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
12 ///////////////////////////////////////////////////////////////////////////////
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
14 ///
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
15 /// This program is free software: you can redistribute it and/or modify
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
16 /// it under the terms of the GNU General Public License as published by
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
17 /// the Free Software Foundation, either version 3 of the License, or
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
18 /// (at your option) any later version.
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
19 ///
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
20 /// This program is distributed in the hope that it will be useful,
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
23 /// GNU General Public License for more details.
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
24 ///
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
25 /// You should have received a copy of the GNU General Public License
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
27 //////////////////////////////////////////////////////////////////////////////
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
28
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
29 /* Includes ------------------------------------------------------------------*/
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
30
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
31 #include "gfx_engine.h"
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
32 #include "gfx_fonts.h"
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
33 #include "tHome.h"
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
34 #include "tInfo.h"
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
35 #include "tInfoSensor.h"
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
36 #include "tMenuEdit.h"
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
37
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
38 #include <string.h>
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
39 #include <inttypes.h>
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
40
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
41 extern void openEdit_O2Sensors(void);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
42
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
43 /* Private variables ---------------------------------------------------------*/
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
44
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
45 /* Exported functions --------------------------------------------------------*/
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
46 void openInfo_Sensor(void)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
47 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
48 set_globalState(StISENINFO);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
49 setBackMenu((uint32_t)openEdit_O2Sensors,0,6);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
50 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
51
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
52
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
53
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
54 uint64_t mod64(uint64_t a, uint64_t b)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
55 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
56 uint64_t div;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
57 div=(a/10);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
58 b=(10*div);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
59 return (a-b);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
60 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
61
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
62 void uint64ToString(uint64_t value, char* pbuf)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
63 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
64 char tmpBuf[32];
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
65 uint8_t index = 31;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
66
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
67 tmpBuf[index--] = 0; /* zero termination */
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
68 while((index != 0) && (value != 0))
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
69 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
70 tmpBuf[index--] = '0' + (value % 10);// mod64(worker64,10);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
71 value /= 10;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
72 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
73 strcpy(pbuf,&tmpBuf[index+1]);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
74 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
75
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
76 // ===============================================================================
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
77 // refreshInfo_Compass
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
78 /// @brief there is only compass_DX_f, compass_DY_f, compass_DZ_f output during this mode
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
79 /// the accel is not called during this process
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
80 // ===============================================================================
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
81 void refreshInfo_Sensor(GFX_DrawCfgScreen s)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
82 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
83 SSensorDataDiveO2* pDiveO2Data;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
84 char text[31];
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
85 uint8_t strIndex = 0;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
86
724
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
87 float pressure = 0.0;
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
88
717
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
89 text[0] = '\001';
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
90 text[1] = TXT_Sensor;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
91 text[2] = ' ';
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
92 text[3] = TXT_Information;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
93 text[4] = 0;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
94 tInfo_write_content_simple( 30, 340, ME_Y_LINE_BASE, &FontT48, text, CLUT_MenuPageHardware);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
95
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
96
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
97 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
98
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
99 strIndex = snprintf(text,32,"ID: ");
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
100 if(pDiveO2Data->sensorId != 0)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
101 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
102 uint64ToString(pDiveO2Data->sensorId,&text[strIndex]);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
103 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
104 tInfo_write_content_simple( 30, 340, ME_Y_LINE1, &FontT48, text, CLUT_Font020);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
105 snprintf(text,32,"%c: %02.1f",TXT_Temperature , (float)pDiveO2Data->temperature / 1000.0);
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
106 tInfo_write_content_simple( 30, 340, ME_Y_LINE2, &FontT48, text, CLUT_Font020);
724
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
107
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
108 #ifdef ENABLE_EXTERNAL_PRESSURE
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
109 pressure = (float)(stateRealGetPointer()->lifeData.ppO2Sensor_bar[2]);
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
110 #else
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
111 pressure = (float)pDiveO2Data->pressure / 1000.0;
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
112 #endif
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
113 snprintf(text,32,"Druck: %02.1f (%02.1f)", (float)pDiveO2Data->pressure / 1000.0, pressure *1000.0);
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
114
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
115 tInfo_write_content_simple( 30, 340, ME_Y_LINE3, &FontT48, text, CLUT_Font020);
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
116 snprintf(text,32,"Feuchtigkeit: %02.1f", (float)pDiveO2Data->humidity / 1000.0);
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
117 tInfo_write_content_simple( 30, 340, ME_Y_LINE4, &FontT48, text, CLUT_Font020);
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
118 snprintf(text,32,"Status: 0x%lx", pDiveO2Data->status);
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
119 tInfo_write_content_simple( 30, 340, ME_Y_LINE5, &FontT48, text, CLUT_Font020);
732
e33d661d1743 Fix compiler switch:
Ideenmodellierer
parents: 724
diff changeset
120 #ifdef ENABLE_EXTERNAL_PRESSURE
724
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
121 snprintf(text,32,"Norm ppO2: %02.3f (%02.1f)", (float)(stateRealGetPointer()->lifeData.ppO2Sensor_bar[0] / (pressure / 1000.0)),(float)(stateRealGetPointer()->lifeData.ppO2Sensor_bar[0]));
f285424f04d9 Development feature: external pressure sensor
Ideenmodellierer
parents: 717
diff changeset
122 tInfo_write_content_simple( 30, 340, ME_Y_LINE6, &FontT48, text, CLUT_Font020);
732
e33d661d1743 Fix compiler switch:
Ideenmodellierer
parents: 724
diff changeset
123 #endif
717
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
124 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
125
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
126 void sendActionToInfoSensor(uint8_t sendAction)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
127 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
128
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
129 switch(sendAction)
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
130 {
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
131
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
132 case ACTION_BUTTON_BACK:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
133 exitMenuEdit_to_BackMenu();
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
134 break;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
135
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
136 case ACTION_BUTTON_ENTER:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
137 case ACTION_BUTTON_NEXT:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
138 case ACTION_TIMEOUT:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
139 case ACTION_MODE_CHANGE:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
140 case ACTION_IDLE_TICK:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
141 case ACTION_IDLE_SECOND:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
142 default:
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
143 break;
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
144 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
145 }
88f73b05d45c Added new info page for extended sensor data:
Ideenmodellierer
parents:
diff changeset
146