changeset 682:8775d3dc6325 Betatest

Bugfix low ppO2 warning in bailout mode: the code has different sources for divesettings (real and simulated). The ppo2 calculation code used the pointer to the real structure. As result in simulation mode an error occured caused by the ppo2 calculation which was not aware that a bailout happened (because the real structure was references instead of the simulator ones). The problem has been fixed by using the "stateUsed" pointer which is refering to the structure currenty in use.
author Ideenmodellierer
date Mon, 25 Apr 2022 21:15:01 +0200
parents 7fa5ef6ae419
children 6f5a18bb25be
files Discovery/Src/data_central.c Discovery/Src/tMenuEditGasOC.c
diffstat 2 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/Discovery/Src/data_central.c	Mon Apr 25 21:10:10 2022 +0200
+++ b/Discovery/Src/data_central.c	Mon Apr 25 21:15:01 2022 +0200
@@ -412,7 +412,7 @@
 
 void updateSetpointStateUsed(void)
 {
-	if(!isLoopMode(stateReal.diveSettings.diveMode))
+	if(!isLoopMode(stateUsed->diveSettings.diveMode))
 	{
 		stateUsedWrite->lifeData.actualGas.setPoint_cbar = 0;
 		stateUsedWrite->lifeData.ppO2 = decom_calc_ppO2(stateUsed->lifeData.pressure_ambient_bar, &stateUsed->lifeData.actualGas);
@@ -498,7 +498,7 @@
 	lifeData->actualGas.helium_percentage = pSettings->gas[gasId].helium_percentage;
 	lifeData->actualGas.setPoint_cbar = setpoint_cbar;
 	lifeData->actualGas.change_during_ascent_depth_meter_otherwise_zero = 0;
-	lifeData->actualGas.AppliedDiveMode = pSettings->dive_mode;
+	lifeData->actualGas.AppliedDiveMode = stateUsed->diveSettings.diveMode;
 	lifeData->actualGas.pscr_factor = 1.0 / pSettings->pscr_lung_ratio * pSettings->pscr_o2_drop;
 	if(isLoopMode(pSettings->dive_mode) && (gasId > NUM_OFFSET_DILUENT))
 		lifeData->lastDiluent_GasIdInSettings = gasId;
--- a/Discovery/Src/tMenuEditGasOC.c	Mon Apr 25 21:10:10 2022 +0200
+++ b/Discovery/Src/tMenuEditGasOC.c	Mon Apr 25 21:15:01 2022 +0200
@@ -167,9 +167,12 @@
 /* select gas in divemode */
 void openEdit_DiveGasSelect(uint8_t line, uint8_t ccr)
 {
-    openEdit_DiveGasSelect_Subroutine(line, ccr);
-    if(!ccr)
-        tMEGas_check_switch_to_bailout();
+	if(!ccr)
+	{
+		tMEGas_check_switch_to_bailout();
+	}
+	openEdit_DiveGasSelect_Subroutine(line, ccr);
+
     exitMenuEdit_to_Home_with_Menu_Update();
 }