mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-08-19 14:14:04 +00:00
feat: add BAR unit support to TPMS RX app (#2988)
- Add bar() conversion method to Pressure class - Convert pressure units system from boolean to enum (kPa, PSI, BAR) - Add BAR option to pressure unit selector in UI - Update settings manager to persist pressure unit preference - Use ternary operators for compact pressure formatting
This commit is contained in:
+6
-3
@@ -47,7 +47,10 @@ std::string id(tpms::TransponderID id) {
|
||||
}
|
||||
|
||||
std::string pressure(Pressure pressure) {
|
||||
return to_string_dec_int(units_psi ? pressure.psi() : pressure.kilopascal(), 3);
|
||||
return to_string_dec_int(
|
||||
format::units_pressure == format::PressureUnit::PSI ? pressure.psi() : format::units_pressure == format::PressureUnit::BAR ? pressure.bar()
|
||||
: pressure.kilopascal(),
|
||||
3);
|
||||
}
|
||||
|
||||
std::string temperature(Temperature temperature) {
|
||||
@@ -122,10 +125,10 @@ TPMSAppView::TPMSAppView(NavigationView&) {
|
||||
options_band.set_by_value(receiver_model.target_frequency());
|
||||
|
||||
options_pressure.on_change = [this](size_t, int32_t i) {
|
||||
format::units_psi = (bool)i;
|
||||
format::units_pressure = static_cast<format::PressureUnit>(i);
|
||||
update_view();
|
||||
};
|
||||
options_pressure.set_selected_index(format::units_psi, true);
|
||||
options_pressure.set_selected_index(static_cast<int>(format::units_pressure), true);
|
||||
|
||||
options_temperature.on_change = [this](size_t, int32_t i) {
|
||||
format::units_fahr = (bool)i;
|
||||
|
||||
+12
-5
@@ -42,7 +42,13 @@ namespace ui::external_app::tpmsrx {
|
||||
|
||||
namespace format {
|
||||
|
||||
static bool units_psi{false};
|
||||
enum class PressureUnit : int {
|
||||
kPa = 0,
|
||||
PSI = 1,
|
||||
BAR = 2,
|
||||
};
|
||||
|
||||
static PressureUnit units_pressure{PressureUnit::kPa};
|
||||
static bool units_fahr{false};
|
||||
|
||||
} /* namespace format */
|
||||
@@ -117,7 +123,7 @@ class TPMSAppView : public View {
|
||||
"rx_tpms",
|
||||
app_settings::Mode::RX,
|
||||
{
|
||||
{"units_psi"sv, &format::units_psi},
|
||||
{"units_pressure"sv, &format::units_pressure},
|
||||
{"units_fahr"sv, &format::units_fahr},
|
||||
}};
|
||||
|
||||
@@ -154,9 +160,10 @@ class TPMSAppView : public View {
|
||||
|
||||
OptionsField options_pressure{
|
||||
{6 * 8, UI_POS_Y(0)},
|
||||
3,
|
||||
{{"kPa", 0},
|
||||
{"PSI", 1}}};
|
||||
4,
|
||||
{{"kPa", static_cast<int>(PressureUnit::kPa)},
|
||||
{"PSI", static_cast<int>(PressureUnit::PSI)},
|
||||
{"BAR", static_cast<int>(PressureUnit::BAR)}}};
|
||||
|
||||
OptionsField options_temperature{
|
||||
{10 * 8, UI_POS_Y(0)},
|
||||
|
||||
@@ -48,6 +48,10 @@ class Pressure {
|
||||
return kpa_ * 1000 / 6895;
|
||||
}
|
||||
|
||||
int bar() const {
|
||||
return kpa_ / 100;
|
||||
}
|
||||
|
||||
private:
|
||||
int16_t kpa_;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user