Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9face5ca authored by Todd Poynor's avatar Todd Poynor
Browse files

healthd: create healthd_board_init()

Subsume healthd_board_poll_intervals, make clear the call is for init-time
actions.

Change-Id: I9267e4ce7c62b78d2997a43822f20bfa13b54cd8
parent 10b235e7
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -37,10 +37,11 @@ using namespace android;
// Periodic chores intervals in seconds
#define DEFAULT_PERIODIC_CHORES_INTERVAL_FAST (60 * 1)
#define DEFAULT_PERIODIC_CHORES_INTERVAL_SLOW (60 * 10)
static int periodic_chores_interval_fast =
        DEFAULT_PERIODIC_CHORES_INTERVAL_FAST;
static int periodic_chores_interval_slow =
        DEFAULT_PERIODIC_CHORES_INTERVAL_SLOW;

static struct healthd_config healthd_config = {
    .periodic_chores_interval_fast = DEFAULT_PERIODIC_CHORES_INTERVAL_FAST,
    .periodic_chores_interval_slow = DEFAULT_PERIODIC_CHORES_INTERVAL_SLOW,
};

#define POWER_SUPPLY_SUBSYSTEM "power_supply"

@@ -84,7 +85,8 @@ static void battery_update(void) {
    // slow wake interval when on battery (watch for drained battery).

   int new_wake_interval = gBatteryMonitor->update() ?
        periodic_chores_interval_fast : periodic_chores_interval_slow;
       healthd_config.periodic_chores_interval_fast :
           healthd_config.periodic_chores_interval_slow;

    if (new_wake_interval != wakealarm_wake_interval)
            wakealarm_set_interval(new_wake_interval);
@@ -94,12 +96,12 @@ static void battery_update(void) {
    // poll at fast rate while awake and let alarm wake up at slow rate when
    // asleep.

    if (periodic_chores_interval_fast == -1)
    if (healthd_config.periodic_chores_interval_fast == -1)
        awake_poll_interval = -1;
    else
        awake_poll_interval =
            new_wake_interval == periodic_chores_interval_fast ?
                -1 : periodic_chores_interval_fast * 1000;
            new_wake_interval == healthd_config.periodic_chores_interval_fast ?
                -1 : healthd_config.periodic_chores_interval_fast * 1000;
}

static void periodic_chores() {
@@ -150,10 +152,7 @@ static void wakealarm_init(void) {
        return;
    }

    healthd_board_poll_intervals(&periodic_chores_interval_fast,
                                 &periodic_chores_interval_slow);

    wakealarm_set_interval(periodic_chores_interval_fast);
    wakealarm_set_interval(healthd_config.periodic_chores_interval_fast);
}

static void wakealarm_event(void) {
@@ -262,6 +261,7 @@ int main(int argc, char **argv) {
        }
    }

    healthd_board_init(&healthd_config);
    wakealarm_init();
    uevent_init();
    binder_init();
+20 −12
Original line number Diff line number Diff line
@@ -19,25 +19,33 @@

#include <batteryservice/BatteryService.h>

// The following are implemented in libhealthd_board to handle board-specific
// behavior.
// periodic_chores_interval_fast, periodic_chores_interval_slow: intervals at
// which healthd wakes up to poll health state and perform periodic chores,
// in units of seconds:
//
// Set periodic poll intervals in seconds.
//    periodic_chores_interval_fast is used while the device is not in
//    suspend, or in suspend and connected to a charger (to watch for battery
//    overheat due to charging).  The default value is 60 (1 minute).  Value
//    -1 turns off periodic chores (and wakeups) in these conditions.
//
// fast_interval is used while the device is not in suspend, or in suspend and
// connected to a charger (to watch for battery overheat due to charging).
// The default value is 60 (1 minute).  Value -1 turns off fast_interval
// polling.
//    periodic_chores_interval_slow is used when the device is in suspend and
//    not connected to a charger (to watch for a battery drained to zero
//    remaining capacity).  The default value is 600 (10 minutes).  Value -1
//    tuns off periodic chores (and wakeups) in these conditions.

struct healthd_config {
    int periodic_chores_interval_fast;
    int periodic_chores_interval_slow;
};

// The following are implemented in libhealthd_board to handle board-specific
// behavior.
//
// slow_interval is used when the device is in suspend and not connected to a
// charger (to watch for a battery drained to zero remaining capacity).  The
// default value is 600 (10 minutes).  Value -1 tuns off slow interval
// polling.
//
// To use the default values, this function can simply return without
// modifying the parameters.

void healthd_board_poll_intervals(int *fast_interval, int *slow_interval);
void healthd_board_init(struct healthd_config *config);

// Process updated battery property values.  This function is called when
// the kernel sends updated battery status via a uevent from the power_supply
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

#include <healthd.h>

void healthd_board_poll_intervals(int *fast_interval, int *slow_interval)
void healthd_board_init(struct healthd_config *config)
{
    // use defaults
}