view Discovery/Src/unit.c @ 211:85bd5fea5e08
cv-persistent
New feature: do not show sensor customviews when no sensors attached
There are mCCR divers, that use a DC just for deco and time purposes
and not for O2 tracking and logging. These divers typically use the
existing Fixed SP mode, and have 0 active 02 sensors.
This commit simply suppresses display of the 2 customviews in case
there are no active sensors defined.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
author
Jan Mulder <jlmulder@xs4all.nl>
date
Tue, 26 Mar 2019 16:02:22 +0100 (2019-03-26)
parents
5f11787b4f42
children
1c95f811967c
line source
///////////////////////////////////////////////////////////////////////////////+ −
/// -*- coding: UTF-8 -*-+ −
///+ −
/// \file Discovery/Src/unit.c+ −
/// \brief input to meter/celsius or feet/farenheit+ −
/// \author heinrichs weikamp gmbh+ −
/// \date 24-Feb-2015+ −
///+ −
/// \details+ −
///+ −
/// $Id$+ −
///////////////////////////////////////////////////////////////////////////////+ −
/// \par Copyright (c) 2014-2018 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 <http://www.gnu.org/licenses/>.+ −
//////////////////////////////////////////////////////////////////////////////+ −
+ −
/* Includes ------------------------------------------------------------------*/+ −
#include "unit.h"+ −
#include "settings.h"+ −
+ −
/* Exported variables --------------------------------------------------------*/+ −
+ −
/* Private types -------------------------------------------------------------*/+ −
uint8_t test;+ −
+ −
/* Private variables ---------------------------------------------------------*/+ −
+ −
/* Private variables with external access via get_xxx() function -------------*/+ −
+ −
/* Private function prototypes -----------------------------------------------*/+ −
+ −
/* Announced function prototypes -----------------------------------------------*/+ −
+ −
/* Exported functions --------------------------------------------------------*/+ −
+ −
char unit_depth_char1_T105(void)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem)+ −
return '\'';+ −
else+ −
return 'm';+ −
}+ −
+ −
char unit_depth_char2_T105(void)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem)+ −
return ' ';+ −
else+ −
return '\004'; // 004 is nop+ −
}+ −
+ −
char unit_depth_char1(void)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem)+ −
return 'f';+ −
else+ −
return 'm';+ −
}+ −
+ −
char unit_depth_char2(void)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem)+ −
return 't';+ −
else+ −
return '\004'; // 004 is nop+ −
}+ −
+ −
float unit_depth_float(float input_meter)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem == 0)+ −
return input_meter;+ −
else+ −
{+ −
return 3.2808f * input_meter;+ −
}+ −
}+ −
+ −
uint16_t unit_depth_integer(uint16_t input_meter)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem == 0)+ −
return input_meter;+ −
else+ −
{+ −
return (input_meter * 10) / 3;+ −
}+ −
}+ −
+ −
float unit_temperature_float(float input_celsius)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem == 0)+ −
return input_celsius;+ −
else+ −
{+ −
return input_celsius * (9.0f/5.0f) + 32;+ −
}+ −
}+ −
+ −
uint16_t unit_speed_integer(uint16_t input_meterPerMinute)+ −
{+ −
if(settingsGetPointer()->nonMetricalSystem == 0)+ −
return input_meterPerMinute;+ −
else+ −
{+ −
return (input_meterPerMinute * 10) / 3;+ −
}+ −
}+ −
+ −
/* Quelle: https://de.wikipedia.org/wiki/Luftdruck */+ −
/*+ −
const float luftdruckStartMinus300[15] =+ −
{+ −
1.0530f,+ −
1.0396f,+ −
1.0263f,+ −
1.01325f, // 0 m+ −
1.0003f,+ −
0.9876f,+ −
0.9750f,+ −
0.9625f,+ −
0.9503f,+ −
0.9381f,+ −
0.9262f,+ −
0.9144f,+ −
0.9027f,+ −
0.8912f, // 1000 m+ −
0.8358f+ −
};+ −
*/+ −
+ −
const int luftdruckStartMinus300[15] =+ −
{+ −
1053,+ −
1040,+ −
1026,+ −
1013, // 0 m+ −
1000,+ −
988,+ −
975,+ −
962,+ −
950,+ −
938,+ −
926,+ −
914,+ −
903,+ −
891, // 1000 m+ −
836+ −
};+ −
+ −
+ −
int unit_SeaLevelRelation_integer(int input_atmospheric_mbar)+ −
{+ −
int i = 0;+ −
int distance1, distance2;+ −
for(i=0;i<15;i++)+ −
{+ −
if(input_atmospheric_mbar >= luftdruckStartMinus300[i])+ −
break;+ −
}+ −
+ −
if(i >= 14)+ −
return 1500;+ −
else if(i == 0)+ −
return -300;+ −
else+ −
{+ −
distance1 = input_atmospheric_mbar - luftdruckStartMinus300[i];+ −
distance2 = luftdruckStartMinus300[i-1] - input_atmospheric_mbar;+ −
if(distance2 < distance1)+ −
i -= 1;+ −
return (i*100) - 300;+ −
}+ −
}+ −