# HG changeset patch # User ideenmodellierer # Date 1583443910 -3600 # Node ID f1257a32f2d492411a1e3487c8c85c039a0adf77 # Parent ee1434824c3f49e7b60dfb7aae5e72a176e9fdd0 Introduced configuration header for variant managment: At the moment several defines are distributed across the code allowing special SW builds (e.g. logging simulated dives). To make these options more transparent and easier to configurate a separate header has been added. With this header an new option for an optical pressure sensor was introduced. diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Inc/configuration.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Inc/configuration.h Thu Mar 05 22:31:50 2020 +0100 @@ -0,0 +1,37 @@ +/////////////////////////////////////////////////////////////////////////////// +/// -*- coding: UTF-8 -*- +/// +/// \file Discovery/Inc/configuration.h +/// \brief Header file for variant specific firmware adaptations at compile time +/// \author heinrichs weikamp gmbh +/// \date 29-February-2020 +/// +/// $Id$ +/////////////////////////////////////////////////////////////////////////////// +/// \par Copyright (c) 2014-2020 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 . +////////////////////////////////////////////////////////////////////////////// + + +#ifndef CONFIGURATION_HEADER +#define CONFIGURATION_HEADER + +/* Enable this to make the simulator write a logbook entry */ +/* #define SIM_WRITES_LOGBOOK 1 */ + +/* Enable this for support of optical bottle pressure interface */ +#define ENABLE_BOTTLE_SENSOR + +#endif diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Inc/t7.h --- a/Discovery/Inc/t7.h Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Inc/t7.h Thu Mar 05 22:31:50 2020 +0100 @@ -31,6 +31,7 @@ /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_hal.h" #include "gfx_engine.h" +#include "configuration.h" typedef enum @@ -44,7 +45,9 @@ LLC_FutureTTS, LLC_CNS, LLC_GF, +#ifdef ENABLE_BOTTLE_SENSOR LCC_BottleBar, +#endif LLC_END } customview_llc_t; diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Src/base.c --- a/Discovery/Src/base.c Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Src/base.c Thu Mar 05 22:31:50 2020 +0100 @@ -199,6 +199,7 @@ /* Includes ------------------------------------------------------------------*/ #include "stdio.h" #include // for memcopy +#include "configuration.h" #include "stm32f4xx_hal.h" #include "ostc.h" @@ -327,12 +328,6 @@ return(ch); } */ -/* #define DEBUG_RUNTIME TRUE */ -#ifdef DEBUG_RUNTIME -#define MEASURECNT 60 /* number of measuremets to be stored */ -static uint32_t loopcnt[MEASURECNT]; -#endif - static uint8_t ButtonAction = ACTION_END; static void StoreButtonAction(uint8_t action) @@ -350,11 +345,6 @@ { uint32_t pLayerInvisible; uint16_t totalDiveCounterFound; -#ifdef DEBUG_RUNTIME - RTC_TimeTypeDef Stime; - uint8_t measurementindex = 0; - uint8_t lastsecond = 0xFF; -#endif SStateList status; detectionState_t pitchstate; @@ -527,9 +517,6 @@ } -// Enable this to make the simulator write a logbook entry -// #define SIM_WRITES_LOGBOOK 1 - #ifdef SIM_WRITES_LOGBOOK if(stateUsed == stateSimGetPointer()) logbook_InitAndWrite(stateUsed); @@ -537,27 +524,6 @@ if(stateUsed == stateRealGetPointer()) /* Handle log entries while in dive mode*/ logbook_InitAndWrite(stateUsed); } - -#ifdef DEBUG_RUNTIME - translateTime(stateUsed->lifeData.timeBinaryFormat, &Stime); - if(lastsecond == 0xFF) - { - measurementindex = 0; - loopcnt[measurementindex] = 0; - lastsecond = Stime.Seconds; - } - loopcnt[measurementindex]++; - - if(lastsecond != Stime.Seconds) - { - measurementindex++; - if (measurementindex == MEASURECNT) measurementindex = 0; - loopcnt[measurementindex] = 0; - lastsecond = Stime.Seconds; - if(measurementindex +1 < MEASURECNT) loopcnt[measurementindex +1] = 0xffff; /* helps to identify the latest value */ - } -#endif - } } diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Src/data_exchange_main.c --- a/Discovery/Src/data_exchange_main.c Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Src/data_exchange_main.c Thu Mar 05 22:31:50 2020 +0100 @@ -764,6 +764,7 @@ // wireless - �ltere daten aufr�umen +#if 0 for(int i=0;i<(2*NUM_GASES+1);i++) { if(pStateReal->lifeData.bottle_bar[i]) @@ -777,7 +778,12 @@ pStateReal->lifeData.bottle_bar_age_MilliSeconds[i] += 100; } } - +#else + if(stateRealGetPointer()->lifeData.bottle_bar_age_MilliSeconds[1] < 6000) /* max age after ten minutes */ + { + stateRealGetPointerWrite()->lifeData.bottle_bar_age_MilliSeconds[1]++; + } +#endif if(!DataEX_check_header_and_footer_ok()) { if(DataEX_check_header_and_footer_devicedata()) diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Src/simulation.c --- a/Discovery/Src/simulation.c Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Src/simulation.c Thu Mar 05 22:31:50 2020 +0100 @@ -128,7 +128,10 @@ pDiveState->lifeData.temperature_celsius = stateRealGetPointer()->lifeData.temperature_celsius; pDiveState->lifeData.compass_heading = stateRealGetPointer()->lifeData.compass_heading; pDiveState->lifeData.battery_charge = stateRealGetPointer()->lifeData.battery_charge; - +#ifdef ENABLE_BOTTLE_SENSOR + pDiveState->lifeData.bottle_bar[pDiveState->lifeData.actualGas.GasIdInSettings] = stateRealGetPointer()->lifeData.bottle_bar[stateRealGetPointer()->lifeData.actualGas.GasIdInSettings]; + pDiveState->lifeData.bottle_bar_age_MilliSeconds[pDiveState->lifeData.actualGas.GasIdInSettings] = stateRealGetPointer()->lifeData.bottle_bar_age_MilliSeconds[stateRealGetPointer()->lifeData.actualGas.GasIdInSettings]; +#endif int now = current_second(); if( last_second == now) return; diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Src/t7.c --- a/Discovery/Src/t7.c Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Src/t7.c Thu Mar 05 22:31:50 2020 +0100 @@ -2652,11 +2652,13 @@ headerText[2] = TXT_ActualGradient; snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); break; +#ifdef ENABLE_BOTTLE_SENSOR case LCC_BottleBar: headerText[2] = TXT_AtemGasVorrat; tinyHeaderFont = 1; snprintf(text,TEXTSIZE,"%d\016\016\017", stateUsed->lifeData.bottle_bar[1]); break; +#endif } headerText[3] = 0; @@ -2666,7 +2668,10 @@ GFX_write_string(&FontT42,&t7l3,headerText,0); t7_colorscheme_mod(text); - if(selection_custom_field != LCC_BottleBar) +#ifndef ENABLE_BOTTLE_SENSOR + GFX_write_string(&FontT105,&t7l3,text,line); +#else + if(selection_custom_field != LCC_BottleBar) /* a changing color set is used for bar display */ { GFX_write_string(&FontT105,&t7l3,text,line); } @@ -2689,6 +2694,7 @@ GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); } +#endif } /* Private functions ---------------------------------------------------------*/ diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Src/tCCR.c --- a/Discovery/Src/tCCR.c Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Src/tCCR.c Thu Mar 05 22:31:50 2020 +0100 @@ -33,6 +33,7 @@ #include "data_central.h" #include "data_exchange.h" #include "check_warning.h" +#include "configuration.h" /* Private types -------------------------------------------------------------*/ typedef struct @@ -350,6 +351,9 @@ void tCCR_control(void) { + uint16_t checksum = 0; + SDiveState *pLivedata = stateRealGetPointerWrite(); + if((UartReadyHUD == RESET) && StartListeningToUART_HUD && (time_elapsed_ms(LastReceivedTick_HUD, HAL_GetTick()) > HUD_RX_START_DELAY_MS)) { @@ -362,31 +366,41 @@ UartReadyHUD = RESET; StartListeningToUART_HUD = 1; - memcpy(&receiveHUD[!boolHUDdata], receiveHUDraw, 11); - receiveHUD[!boolHUDdata].battery_voltage_mV = receiveHUDraw[11] + (256 * receiveHUDraw[12]); - receiveHUD[!boolHUDdata].checksum = receiveHUDraw[13] + (256 * receiveHUDraw[14]); - - uint16_t checksum = 0; + /* check if received package is valid */ + for(int i=0;i<13;i++) + { + checksum += receiveHUDraw[i]; + } + receiveHUD[!boolHUDdata].checksum = receiveHUDraw[13] + (256 * receiveHUDraw[14]); + if(checksum == receiveHUD[!boolHUDdata].checksum) + { +#ifdef ENABLE_BOTTLE_SENSOR + if(receiveHUDraw[0] == 0xA5) /* code for pressure sensor */ + { + pLivedata->lifeData.bottle_bar[pLivedata->lifeData.actualGas.GasIdInSettings] = receiveHUDraw[10]; + pLivedata->lifeData.bottle_bar_age_MilliSeconds[pLivedata->lifeData.actualGas.GasIdInSettings] = 0; + } + else +#endif + /* handle O2 sensor data */ + { + memcpy(&receiveHUD[!boolHUDdata], receiveHUDraw, 11); + receiveHUD[!boolHUDdata].battery_voltage_mV = receiveHUDraw[11] + (256 * receiveHUDraw[12]); + } - for(int i=0;i<13;i++) - { - checksum += receiveHUDraw[i]; - } - if(checksum == receiveHUD[!boolHUDdata].checksum) - { - boolHUDdata = !boolHUDdata; - HUDTimeoutCount = 0; - data_old__lost_connection_to_HUD = 0; - } - else - { - if(data_old__lost_connection_to_HUD) /* we lost connection, maybe due to RX shift => start single byte read to resynchronize */ - { - HAL_UART_Receive_IT(&UartIR_HUD_Handle, receiveHUDraw, 1); - StartListeningToUART_HUD = 0; - } - } - memset(receiveHUDraw,0,sizeof(receiveHUDraw)); + boolHUDdata = !boolHUDdata; + HUDTimeoutCount = 0; + data_old__lost_connection_to_HUD = 0; + } + else + { + if(data_old__lost_connection_to_HUD) /* we lost connection, maybe due to RX shift => start single byte read to resynchronize */ + { + HAL_UART_Receive_IT(&UartIR_HUD_Handle, receiveHUDraw, 1); + StartListeningToUART_HUD = 0; + } + } + memset(receiveHUDraw,0,sizeof(receiveHUDraw)); } } diff -r ee1434824c3f -r f1257a32f2d4 Discovery/Src/tMenuEditSystem.c --- a/Discovery/Src/tMenuEditSystem.c Thu Mar 05 22:27:55 2020 +0100 +++ b/Discovery/Src/tMenuEditSystem.c Thu Mar 05 22:31:50 2020 +0100 @@ -906,11 +906,13 @@ case LLC_GF: text[4] = TXT_ActualGradient; break; +#ifdef ENABLE_BOTTLE_SENSOR case LCC_BottleBar: text[4] = TXT_AtemGasVorrat; break; +#endif /* none */ - case 0: + case LLC_Empty: text[4] = '-'; break; default: