~aleteoryx/muditaos

bd7a49c25e8f21f7a00711282fc45bbdf60d6017 — Marek Niepieklo 4 years ago a08a2d5
[EGD-7529] Wrong Battery status after discharging and running again

Added saving of battery state every 5% level change
M module-bsp/board/rt1051/puretx/bsp/battery_charger/battery_charger.cpp => module-bsp/board/rt1051/puretx/bsp/battery_charger/battery_charger.cpp +16 -0
@@ 35,6 35,7 @@ namespace bsp::battery_charger
        constexpr std::uint16_t nominalCapacitymAh = 1600;

        constexpr std::uint16_t fullyChargedSOC = 100;
        constexpr std::uint16_t percentLevelDelta = 5;

        constexpr std::uint16_t maxVoltagemV = 4400;
        constexpr std::uint16_t minVoltagemV = 3600;


@@ 603,6 604,17 @@ namespace bsp::battery_charger
        gpio.reset();
    }

    void evaluateBatteryLevelChange(const std::uint16_t currentLevel, const std::uint16_t updatedLevel)
    {
        if (currentLevel == updatedLevel) {
            return;
        }

        if ((updatedLevel % percentLevelDelta) == 0) {
            storeConfiguration();
        }
    }

    StateOfCharge getBatteryLevel()
    {
        auto readout = fuelGaugeRead(Registers::RepSOC_REG);


@@ 610,7 622,11 @@ namespace bsp::battery_charger
            LOG_ERROR("failed to get battery percent");
        }
        StateOfCharge levelPercent     = (readout.second & 0xff00) >> 8;
        const auto currentPercent      = Store::Battery::get().level;
        Store::Battery::modify().level = levelPercent;

        evaluateBatteryLevelChange(currentPercent, levelPercent);

        return levelPercent;
    }


M module-bsp/board/rt1051/puretx/bsp/battery_charger/battery_charger.hpp => module-bsp/board/rt1051/puretx/bsp/battery_charger/battery_charger.hpp +2 -0
@@ 72,6 72,8 @@ namespace bsp::battery_charger

    StateOfCharge getBatteryLevel();

    void evaluateBatteryLevelChange(const std::uint16_t currentLevel, const std::uint16_t updatedLevel);

    bool getChargeStatus();

    void clearAllChargerIRQs();