Add power state initialisation
This commit is contained in:
@@ -17,6 +17,34 @@ enum TaskResumptionReason { POWER_AVAILABLE, TIMEOUT };
|
||||
|
||||
class Power {
|
||||
|
||||
protected:
|
||||
/// @brief PowerScheduler instance to manage power consumption
|
||||
static PowerScheduler *powerScheduler;
|
||||
|
||||
/*
|
||||
* Power State
|
||||
*/
|
||||
|
||||
/// @brief last time of power state update
|
||||
static TickType_t lastPowerStateUpdate;
|
||||
|
||||
/// @brief remaining Charge in coulombs
|
||||
static float coloumbsRemaining;
|
||||
|
||||
/// @brief remaining Charge in percent
|
||||
static float percentRemaining;
|
||||
|
||||
/// @brief Circular array of last calculated values for current state of
|
||||
/// charge
|
||||
static float lastSOC[PowerParameters::Battery::AVERAGING_SAMPLES];
|
||||
static int latestSoCIndex;
|
||||
|
||||
/// @brief Add calculated value to circular array, pushing out oldest value
|
||||
static void addSoCSample(float soc);
|
||||
|
||||
/// @brief initialize the power state
|
||||
static void initPowerState(void);
|
||||
|
||||
public:
|
||||
static void begin(void);
|
||||
Power();
|
||||
@@ -30,10 +58,11 @@ public:
|
||||
/// @brief Request an allowance of a certain number of milliamperes from the
|
||||
/// power scheduler without waiting for it (meaning it will not be scheduled
|
||||
/// for future allocation). Only one can be active per consumer.
|
||||
/// @param neededCurrent the amount of current we want to be accounted for (in
|
||||
/// mA)
|
||||
/// @param neededCurrent the amount of current we want to be accounted for
|
||||
/// (in mA)
|
||||
/// @return whether the current could be successfully allocated
|
||||
static bool tryAccquireCurrentAllowance(PowerParameters::PowerConsumers consumer,
|
||||
static bool
|
||||
tryAccquireCurrentAllowance(PowerParameters::PowerConsumers consumer,
|
||||
uint16_t neededcurrent,
|
||||
uint16_t requestedDurationMs = 0);
|
||||
/// @brief "Return" the current currently allocated to a consumer
|
||||
@@ -65,19 +94,18 @@ public:
|
||||
// @brief Get current consumption of a consumer
|
||||
static float getConsumerCurrent(PowerParameters::PowerConsumers consumer);
|
||||
|
||||
|
||||
/// @brief Get battery voltage measurement.
|
||||
/// @return Battery Terminal Voltage in Volts
|
||||
static float getBatteryVoltage();
|
||||
|
||||
/// @brief Get estimated battery charge state as percentage
|
||||
/// @return Battery charge state in percent
|
||||
static int getBatteryChargePercent();
|
||||
static float getBatteryChargePercent();
|
||||
|
||||
/// @brief Get estimated battery charge state as percentage based on
|
||||
// voltage directly
|
||||
/// @return Battery charge state in percent
|
||||
static int getBatteryVoltageChargePercent();
|
||||
static float getBatteryVoltageChargePercent();
|
||||
|
||||
/// @brief Get estimated battery charge state as coulombs
|
||||
/// @return Battery charge state in coulombs
|
||||
@@ -92,34 +120,11 @@ public:
|
||||
/// @note needs to be public for task creation
|
||||
static void updatePowerStateHandler();
|
||||
|
||||
protected:
|
||||
/// @brief PowerScheduler instance to manage power consumption
|
||||
static PowerScheduler *powerScheduler;
|
||||
/// @brief dump power statistics to serial
|
||||
static void dumpPowerStatistics();
|
||||
|
||||
|
||||
/*
|
||||
* Power State
|
||||
*/
|
||||
|
||||
/// @brief last time of power state update
|
||||
static TickType_t lastPowerStateUpdate;
|
||||
|
||||
/// @brief remaining Charge in coulombs
|
||||
static float coloumbsRemaining;
|
||||
|
||||
/// @brief remaining Charge in percent
|
||||
static int percentRemaining;
|
||||
|
||||
/// @brief Circular array of last calculated values for current state of
|
||||
/// charge
|
||||
static float lastSOC[PowerParameters::Battery::AVERAGING_SAMPLES];
|
||||
static int latestSoCIndex;
|
||||
|
||||
/// @brief Add calculated value to circular array, pushing out oldest value
|
||||
static void addSoCSample(float soc);
|
||||
|
||||
/// @brief initialize the power state
|
||||
static void initPowerState(void);
|
||||
/// @brief dump consumer statistics to serial
|
||||
static void dumpConsumerStatistics();
|
||||
};
|
||||
|
||||
extern Power power;
|
||||
|
||||
Reference in New Issue
Block a user