Mercurial > public > ostc4
comparison Discovery/Src/tInfoSensor.c @ 717:88f73b05d45c
Added new info page for extended sensor data:
The new source file may be used to create a information page individual for every smart sensor type. The DiveO2 sensor is the first supported sensor
| author | Ideenmodellierer |
|---|---|
| date | Sun, 20 Nov 2022 20:46:10 +0100 |
| parents | |
| children | f285424f04d9 |
comparison
equal
deleted
inserted
replaced
| 716:74cfd91199bd | 717:88f73b05d45c |
|---|---|
| 1 /////////////////////////////////////////////////////////////////////////////// | |
| 2 /// -*- coding: UTF-8 -*- | |
| 3 /// | |
| 4 /// \file Discovery/Src/tInfoCompass.c | |
| 5 /// \brief there is only compass_DX_f, compass_DY_f, compass_DZ_f output during this mode | |
| 6 /// \author heinrichs weikamp gmbh | |
| 7 /// \date 23-Feb-2015 | |
| 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 | |
| 31 #include "gfx_engine.h" | |
| 32 #include "gfx_fonts.h" | |
| 33 #include "tHome.h" | |
| 34 #include "tInfo.h" | |
| 35 #include "tInfoSensor.h" | |
| 36 #include "tMenuEdit.h" | |
| 37 | |
| 38 #include <string.h> | |
| 39 #include <inttypes.h> | |
| 40 | |
| 41 extern void openEdit_O2Sensors(void); | |
| 42 | |
| 43 /* Private variables ---------------------------------------------------------*/ | |
| 44 | |
| 45 /* Exported functions --------------------------------------------------------*/ | |
| 46 void openInfo_Sensor(void) | |
| 47 { | |
| 48 set_globalState(StISENINFO); | |
| 49 setBackMenu((uint32_t)openEdit_O2Sensors,0,6); | |
| 50 } | |
| 51 | |
| 52 | |
| 53 | |
| 54 uint64_t mod64(uint64_t a, uint64_t b) | |
| 55 { | |
| 56 uint64_t div; | |
| 57 div=(a/10); | |
| 58 b=(10*div); | |
| 59 return (a-b); | |
| 60 } | |
| 61 | |
| 62 void uint64ToString(uint64_t value, char* pbuf) | |
| 63 { | |
| 64 char tmpBuf[32]; | |
| 65 uint8_t index = 31; | |
| 66 | |
| 67 tmpBuf[index--] = 0; /* zero termination */ | |
| 68 while((index != 0) && (value != 0)) | |
| 69 { | |
| 70 tmpBuf[index--] = '0' + (value % 10);// mod64(worker64,10); | |
| 71 value /= 10; | |
| 72 } | |
| 73 strcpy(pbuf,&tmpBuf[index+1]); | |
| 74 } | |
| 75 | |
| 76 // =============================================================================== | |
| 77 // refreshInfo_Compass | |
| 78 /// @brief there is only compass_DX_f, compass_DY_f, compass_DZ_f output during this mode | |
| 79 /// the accel is not called during this process | |
| 80 // =============================================================================== | |
| 81 void refreshInfo_Sensor(GFX_DrawCfgScreen s) | |
| 82 { | |
| 83 SSensorDataDiveO2* pDiveO2Data; | |
| 84 char text[31]; | |
| 85 uint8_t strIndex = 0; | |
| 86 | |
| 87 text[0] = '\001'; | |
| 88 text[1] = TXT_Sensor; | |
| 89 text[2] = ' '; | |
| 90 text[3] = TXT_Information; | |
| 91 text[4] = 0; | |
| 92 tInfo_write_content_simple( 30, 340, ME_Y_LINE_BASE, &FontT48, text, CLUT_MenuPageHardware); | |
| 93 | |
| 94 | |
| 95 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data; | |
| 96 | |
| 97 strIndex = snprintf(text,32,"ID: "); | |
| 98 if(pDiveO2Data->sensorId != 0) | |
| 99 { | |
| 100 uint64ToString(pDiveO2Data->sensorId,&text[strIndex]); | |
| 101 } | |
| 102 tInfo_write_content_simple( 30, 340, ME_Y_LINE1, &FontT48, text, CLUT_Font020); | |
| 103 snprintf(text,32,"%c: %02.1f",TXT_Temperature , (float)pDiveO2Data->temperature / 1000.0); | |
| 104 tInfo_write_content_simple( 30, 340, ME_Y_LINE2, &FontT48, text, CLUT_Font020); | |
| 105 } | |
| 106 | |
| 107 void sendActionToInfoSensor(uint8_t sendAction) | |
| 108 { | |
| 109 | |
| 110 switch(sendAction) | |
| 111 { | |
| 112 | |
| 113 case ACTION_BUTTON_BACK: | |
| 114 exitMenuEdit_to_BackMenu(); | |
| 115 break; | |
| 116 | |
| 117 case ACTION_BUTTON_ENTER: | |
| 118 case ACTION_BUTTON_NEXT: | |
| 119 case ACTION_TIMEOUT: | |
| 120 case ACTION_MODE_CHANGE: | |
| 121 case ACTION_IDLE_TICK: | |
| 122 case ACTION_IDLE_SECOND: | |
| 123 default: | |
| 124 break; | |
| 125 } | |
| 126 } | |
| 127 |
