Skip to content

Commit

Permalink
chore: don't need double precision for fan power/tacho
Browse files Browse the repository at this point in the history
  • Loading branch information
SanaaHamel committed Mar 31, 2024
1 parent b516807 commit c4e8fda
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/gatt/fan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,12 @@ void fan_power_set(BLE::Percentage8 power, sensors::Sensors const& sensors = sen

} // namespace

double fan_rpm() {
float fan_rpm() {
return g_tachometer.revolutions_per_second() * 60;
}

double fan_power() {
float fan_power() {
// NOLINTNEXTLINE(bugprone-narrowing-conversions, cppcoreguidelines-narrowing-conversions)
return g_fan_power.value_or(0);
}

Expand Down
4 changes: 2 additions & 2 deletions src/gatt/fan.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ bool init();
void disconnected(hci_con_handle_t);

// Current fan power. [0, 100]
double fan_power();
double fan_rpm();
float fan_power();
float fan_rpm();

void fan_power_override(BLE::Percentage8 power); // `NOT_KNOWN` to clear override
BLE::Percentage8 fan_power_override();
Expand Down
9 changes: 5 additions & 4 deletions src/sensors/tachometer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ struct Tachometer final : SensorPeriodic {
this->pulses_per_revolution = pulses_per_revolution;
}

[[nodiscard]] double revolutions_per_second() const {
[[nodiscard]] auto revolutions_per_second() const {
return revolutions_per_second_;
}

Expand All @@ -67,7 +67,8 @@ struct Tachometer final : SensorPeriodic {
auto end = std::chrono::steady_clock::now();

auto duration_sec =
std::chrono::duration_cast<std::chrono::duration<double, std::ratio<1>>>(end - begin);
std::chrono::duration_cast<std::chrono::duration<float, std::ratio<1>>>(end - begin);
// NOLINTNEXTLINE(bugprone-narrowing-conversions, cppcoreguidelines-narrowing-conversions)
revolutions_per_second_ = pulses / duration_sec.count() / pulses_per_revolution;

// printf("tachometer_measure dur=%f s cnt=%u rev-per-sec=%f rpm=%f\n", duration_sec.count(),
Expand Down Expand Up @@ -145,8 +146,8 @@ struct Tachometer final : SensorPeriodic {

Pins::GPIOs pins;
std::bitset<Pins::ALTERNATIVES_MAX> state;
uint pulses_per_revolution = 1;
double revolutions_per_second_ = 0;
uint32_t pulses_per_revolution = 1;
float revolutions_per_second_ = 0;
};

} // namespace nevermore::sensors

0 comments on commit c4e8fda

Please sign in to comment.