# 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: