Original project changes: Add commonly used power consumption units to Metrics

This commit is contained in:
Carsten Schmiemann 2022-11-18 23:26:11 +01:00
parent c761ec774c
commit 901371a989
1 changed files with 55 additions and 4 deletions

View File

@ -1504,6 +1504,9 @@ const char* OvmsMetricUnitLabel(metric_unit_t units)
case Percentage: return "%";
case WattHoursPK: return "Wh/km";
case WattHoursPM: return "Wh/mi";
case kWhP100K: return "kWh/100km";
case KPkWh: return "km/kWh";
case MPkWh: return "mi/kWh";
case Nm: return "Nm";
default: return "";
}
@ -1573,15 +1576,48 @@ int UnitConvert(metric_unit_t from, metric_unit_t to, int value)
switch (to)
{
case WattHoursPM: return pkm_to_pmi(value);
case kWhP100K: return value / 10;
case KPkWh: return value ? static_cast<int>(1000.0 / value) : 0;
case MPkWh: return value ? static_cast<int>(km_to_mi(1000.0 / value)) : 0;
default: break;
}
case WattHoursPM:
switch (to)
{
case WattHoursPK: return pmi_to_pkm(value);
case kWhP100K: return pmi_to_pkm(value) / 10;
case KPkWh: return value ? static_cast<int>(mi_to_km(1000.0 / value)) : 0;
case MPkWh: return value ? static_cast<int>(1000.0 / value) : 0;
default: break;
}
break;
case kWhP100K:
switch (to)
{
case WattHoursPM: return pkm_to_pmi(value * 10);
case WattHoursPK: return value * 10;
case KPkWh: return value ? static_cast<int>(100.0 / value) : 0;
case MPkWh: return value ? static_cast<int>(km_to_mi(100.0 / value)) : 0;
default: break;
}
case KPkWh:
switch (to)
{
case WattHoursPM: return value ? static_cast<int>(1000.0 / km_to_mi(float(value))) : 0;
case WattHoursPK: return value ? static_cast<int>(1/(1000.0 * value)) : 0;
case kWhP100K: return value ? static_cast<int>(100.0/value) : 0;
case MPkWh: return km_to_mi(value);
default: break;
}
case MPkWh:
switch (to)
{
case WattHoursPM: return value ? 1000/value : 0;
case WattHoursPK: return value ? static_cast<int>(1000 / mi_to_km(float(value))) : 0;
case kWhP100K: return value ? static_cast<int>(100.0/mi_to_km(float(value))) : 0;
case KPkWh: return mi_to_km(value);
default: break;
}
case Celcius:
if (to == Fahrenheit) return ((value*9)/5) + 32;
break;
@ -1707,15 +1743,30 @@ float UnitConvert(metric_unit_t from, metric_unit_t to, float value)
switch (to)
{
case WattHoursPM: return pkm_to_pmi(value);
case kWhP100K: return value / 10;
case KPkWh: return value ? 1000.0 / value : 0;
case MPkWh: return value ? (km_to_mi(1000.0 / value)) : 0;
default: break;
}
case WattHoursPM:
switch (to)
{
case WattHoursPK: return pmi_to_pkm(value);
case kWhP100K: return pmi_to_pkm(value) / 10;
case KPkWh: return value ? (mi_to_km(1000.0 / value)) : 0;
case MPkWh: return value ? (1000.0 / value) : 0;
default: break;
}
break;
case kWhP100K:
switch (to)
{
case WattHoursPM: return pkm_to_pmi(value * 10);
case WattHoursPK: return value * 10;
case KPkWh: return value ? (100.0 / value) : 0;
case MPkWh: return value ? km_to_mi(100.0 / value) : 0;
default: break;
}
case Celcius:
if (to == Fahrenheit) return ((value*9)/5) + 32;
break;