Save TPMS units in App Settings and tune frequency (#1598)

This commit is contained in:
Mark Thompson 2023-11-21 11:44:10 -06:00 committed by GitHub
parent df6003c08f
commit 1cbe5cb293
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 14 deletions

View File

@ -34,9 +34,6 @@ namespace tpms {
namespace format { namespace format {
static bool use_kpa = true;
static bool use_celsius = true;
std::string type(Reading::Type type) { std::string type(Reading::Type type) {
return to_string_dec_uint(toUType(type), 2); return to_string_dec_uint(toUType(type), 2);
} }
@ -46,11 +43,11 @@ std::string id(TransponderID id) {
} }
std::string pressure(Pressure pressure) { std::string pressure(Pressure pressure) {
return to_string_dec_int(use_kpa ? pressure.kilopascal() : pressure.psi(), 3); return to_string_dec_int(units_psi ? pressure.psi() : pressure.kilopascal(), 3);
} }
std::string temperature(Temperature temperature) { std::string temperature(Temperature temperature) {
return to_string_dec_int(use_celsius ? temperature.celsius() : temperature.fahrenheit(), 3); return to_string_dec_int(units_fahr ? temperature.fahrenheit() : temperature.celsius(), 3);
} }
std::string flags(Flags flags) { std::string flags(Flags flags) {
@ -165,18 +162,16 @@ TPMSAppView::TPMSAppView(NavigationView&) {
options_band.set_by_value(receiver_model.target_frequency()); options_band.set_by_value(receiver_model.target_frequency());
options_pressure.on_change = [this](size_t, int32_t i) { options_pressure.on_change = [this](size_t, int32_t i) {
tpms::format::use_kpa = !i; tpms::format::units_psi = (bool)i;
update_view(); update_view();
}; };
options_pressure.set_selected_index(tpms::format::units_psi, true);
options_pressure.set_selected_index(0, true);
options_temperature.on_change = [this](size_t, int32_t i) { options_temperature.on_change = [this](size_t, int32_t i) {
tpms::format::use_celsius = !i; tpms::format::units_fahr = (bool)i;
update_view(); update_view();
}; };
options_temperature.set_selected_index(tpms::format::units_fahr, true);
options_temperature.set_selected_index(0, true);
logger = std::make_unique<TPMSLogger>(); logger = std::make_unique<TPMSLogger>();
if (logger) { if (logger) {

View File

@ -37,6 +37,17 @@
#include "tpms_packet.hpp" #include "tpms_packet.hpp"
namespace tpms {
namespace format {
static bool units_psi{false};
static bool units_fahr{false};
} /* namespace format */
} /* namespace tpms */
namespace std { namespace std {
} /* namespace std */ } /* namespace std */
@ -103,11 +114,17 @@ class TPMSAppView : public View {
private: private:
RxRadioState radio_state_{ RxRadioState radio_state_{
315000000 /* frequency*/, 314950000 /* frequency*/,
1750000 /* bandwidth */, 1750000 /* bandwidth */,
2457600 /* sampling rate */}; 2457600 /* sampling rate */};
app_settings::SettingsManager settings_{ app_settings::SettingsManager settings_{
"rx_tpms", app_settings::Mode::RX}; "rx_tpms",
app_settings::Mode::RX,
{
{"units_psi"sv, &tpms::format::units_psi},
{"units_fahr"sv, &tpms::format::units_fahr},
}};
MessageHandlerRegistration message_handler_packet{ MessageHandlerRegistration message_handler_packet{
Message::ID::TPMSPacket, Message::ID::TPMSPacket,
@ -129,11 +146,12 @@ class TPMSAppView : public View {
{21 * 8, 5, 6 * 8, 4}, {21 * 8, 5, 6 * 8, 4},
}; };
// "315 MHz" TPMS sensors transmit at either 314.9 or 315 MHz but we should pick up either
OptionsField options_band{ OptionsField options_band{
{0 * 8, 0 * 16}, {0 * 8, 0 * 16},
3, 3,
{ {
{"315", 315000000}, {"315", 314950000},
{"434", 433920000}, {"434", 433920000},
}}; }};