comparison Discovery/Src/tMenuEditSystem.c @ 969:81049905d829 Evo_2_23

Zusammenf?hren
author heinrichsweikamp
date Sun, 19 Jan 2025 12:02:59 +0100
parents 5d5fa0a3b409
children d9290c76b840
comparison
equal deleted inserted replaced
968:b9a1710522b1 969:81049905d829
39 #include "tMenuEdit.h" 39 #include "tMenuEdit.h"
40 #include "tMenuSystem.h" 40 #include "tMenuSystem.h"
41 #include "tMenuEditCustom.h" 41 #include "tMenuEditCustom.h"
42 #include "motion.h" 42 #include "motion.h"
43 #include "t7.h" 43 #include "t7.h"
44 #include "math.h"
44 45
45 46
46 /*#define HAVE_DEBUG_VIEW */ 47 /*#define HAVE_DEBUG_VIEW */
47 static uint8_t infoPage = 0; 48 static uint8_t infoPage = 0;
48 49
1685 { 1686 {
1686 SSensorDataDiveO2* pDiveO2Data; 1687 SSensorDataDiveO2* pDiveO2Data;
1687 const SDiveState* pDiveState = stateRealGetPointer(); 1688 const SDiveState* pDiveState = stateRealGetPointer();
1688 SSettings* pSettings = settingsGetPointer(); 1689 SSettings* pSettings = settingsGetPointer();
1689 uint8_t index = 0; 1690 uint8_t index = 0;
1690 int8_t newOffset = 0; 1691 float orgpressure_surface_mbar;
1692 float DiveO2_mbar;
1693 int8_t newOffset_mbar = 0;
1694
1691 1695
1692 char text[32]; 1696 char text[32];
1693 1697
1694 float orgpressure_surface; 1698
1695 1699
1696 for (index = 0; index < 3; index++) 1700 for (index = 0; index < 3; index++)
1697 { 1701 {
1698 if(settingsGetPointer()->ext_sensor_map[index] == SENSOR_DIGO2M) 1702 if(settingsGetPointer()->ext_sensor_map[index] == SENSOR_DIGO2M)
1699 { 1703 {
1700 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; 1704 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index];
1701 orgpressure_surface = pDiveState->lifeData.pressure_surface_bar - (settingsGetPointer()->offsetPressure_mbar / 1000.0); 1705 DiveO2_mbar = (pDiveO2Data->pressure/1000.0);
1702 newOffset = ((pDiveO2Data->pressure/1000) - (orgpressure_surface * 1000)); 1706
1703 1707 orgpressure_surface_mbar = (pDiveState->lifeData.pressure_surface_bar * 1000) - (settingsGetPointer()->offsetPressure_mbar);
1704 if((pDiveState->lifeData.pressure_surface_bar * 1000 + newOffset) != (pDiveO2Data->pressure/1000)) /* there might be a rounding difference => compensate */ 1708 newOffset_mbar = DiveO2_mbar - orgpressure_surface_mbar;
1709
1710 if(fabs(orgpressure_surface_mbar + ((float)newOffset_mbar) - DiveO2_mbar) > 0.5) /* there might be a rounding difference => compensate */
1705 { 1711 {
1706 newOffset += (pDiveO2Data->pressure/1000) - (pDiveState->lifeData.pressure_surface_bar * 1000 + newOffset); 1712 if((orgpressure_surface_mbar + ((float)newOffset_mbar)) - (pDiveO2Data->pressure/1000.0) > 0.0)
1713 {
1714 newOffset_mbar -=1;
1715 }
1716 else
1717 {
1718 newOffset_mbar +=1;
1719 }
1707 } 1720 }
1708 1721
1709 pSettings->offsetPressure_mbar = newOffset; 1722 pSettings->offsetPressure_mbar = newOffset_mbar;
1710 snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0), 1723 snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0), (orgpressure_surface_mbar + pSettings->offsetPressure_mbar) / 1000.0);
1711 pDiveState->lifeData.pressure_surface_bar + pSettings->offsetPressure_mbar / 1000.0);
1712 tMenuEdit_newButtonText(StMSYS5_AdjustSurfPres,text); 1724 tMenuEdit_newButtonText(StMSYS5_AdjustSurfPres,text);
1713 break; 1725 break;
1714 } 1726 }
1715 } 1727 }
1716 1728