Skip to content
This repository was archived by the owner on Jan 28, 2022. It is now read-only.

Commit 2e60817

Browse files
committed
fix: Battery fuelgauge standby handling
Standby-off signal wasn't correctly setup to update battery fuel status.
1 parent 8ca1216 commit 2e60817

File tree

5 files changed

+26
-20
lines changed

5 files changed

+26
-20
lines changed

sources/hardware/batteryfuelgauge.h

+18-15
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,30 @@ class BatteryFuelGauge : public Device {
3939
Q_PROPERTY(bool isCharging READ getIsCharging NOTIFY isChargingChanged)
4040

4141
public:
42-
virtual void begin() = 0;
43-
virtual int getVoltage() = 0;
44-
virtual int getFullChargeCapacity() = 0;
45-
virtual int getAverageCurrent() = 0;
46-
virtual int getAveragePower() = 0;
47-
virtual int getStateOfCharge() = 0;
48-
virtual int16_t getInternalTemperatureC() = 0; // Result in 0.1 Celsius
49-
virtual int getStateOfHealth() = 0;
50-
virtual int getFullAvailableCapacity() = 0;
51-
virtual int getRemainingCapacity() = 0;
52-
virtual int getDesignCapacity() = 0;
42+
virtual void begin() = 0;
43+
virtual int getVoltage() = 0;
44+
virtual int getFullChargeCapacity() = 0;
45+
virtual int getAverageCurrent() = 0;
46+
virtual int getAveragePower() = 0;
47+
virtual int getStateOfCharge() = 0;
48+
virtual int16_t getInternalTemperatureC() = 0; // Result in 0.1 Celsius
49+
virtual int getStateOfHealth() = 0;
50+
virtual int getFullAvailableCapacity() = 0;
51+
virtual int getRemainingCapacity() = 0;
52+
virtual int getDesignCapacity() = 0;
5353
virtual void changeCapacity(int newCapacity) = 0;
54-
virtual int getLevel() = 0;
55-
virtual int getHealth() = 0;
56-
virtual bool getIsCharging() = 0;
57-
virtual float remainingLife() = 0; // result in hours
54+
virtual int getLevel() = 0;
55+
virtual int getHealth() = 0;
56+
virtual bool getIsCharging() = 0;
57+
virtual float remainingLife() = 0; // result in hours
5858

5959
void setCapacity(int capacity) { m_capacity = capacity; }
6060

6161
int getCapacity() { return m_capacity; }
6262

63+
public slots: // NOLINT open issue: https://github.com/cpplint/cpplint/pull/99
64+
virtual void updateBatteryValues() = 0;
65+
6366
signals:
6467
void levelChanged();
6568
void healthChanged();

sources/hardware/linux/arm/bq27441.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
#include <QtDebug>
3030

3131
#include "../../../notifications.h"
32-
#include "../../../standbycontrol.h"
3332
#include "QFile"
3433

3534
static Q_LOGGING_CATEGORY(CLASS_LC, "hw.dev.BQ27441");
@@ -49,9 +48,6 @@ BQ27441::BQ27441(InterruptHandler *interruptHandler, int capacity, const QString
4948
updateBatteryValues();
5049
}
5150
});
52-
53-
StandbyControl *standbyControl = StandbyControl::getInstance();
54-
connect(standbyControl, &StandbyControl::standByOff, this, [=]() { updateBatteryValues(); });
5551
}
5652

5753
BQ27441::~BQ27441() { close(); }

sources/hardware/linux/arm/bq27441.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ class BQ27441 : public BatteryFuelGauge {
117117
// Extended Data Commands
118118
uint16_t getOpConfig();
119119

120+
public slots:
121+
void updateBatteryValues() override;
122+
120123
// Device interface
121124
public:
122125
bool open() override;
@@ -146,5 +149,4 @@ class BQ27441 : public BatteryFuelGauge {
146149
bool m_isCharging = false;
147150
bool m_wasLowBatteryWarning = false;
148151
float m_remainingLife = 0;
149-
void updateBatteryValues();
150152
};

sources/hardware/mock/batteryfuelgauge_mock.h

+3
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,7 @@ class BatteryFuelGaugeMock : public BatteryFuelGauge {
5050
int getHealth() override { return 100; }
5151
bool getIsCharging() override { return false; } // to test charging screen: return true
5252
float remainingLife() override { return 2; }
53+
54+
public slots: // NOLINT open issue: https://github.com/cpplint/cpplint/pull/99
55+
void updateBatteryValues() override {};
5356
};

sources/main.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@ int main(int argc, char* argv[]) {
227227
hwFactory->getBatteryFuelGauge(), config, yioapi, integrations);
228228
Q_UNUSED(standbyControl);
229229
qmlRegisterSingletonType<StandbyControl>("StandbyControl", 1, 0, "StandbyControl", &StandbyControl::getQMLInstance);
230+
QObject::connect(standbyControl, &StandbyControl::standByOff, hwFactory->getBatteryFuelGauge(),
231+
&BatteryFuelGauge::updateBatteryValues);
230232

231233
// SOFTWARE UPDATE
232234
QVariantMap appUpdCfg = config->getSettings().value("softwareupdate").toMap();

0 commit comments

Comments
 (0)