mirror of
https://github.com/google/pebble.git
synced 2025-12-02 12:12:23 -05:00
78 lines
2.5 KiB
C
78 lines
2.5 KiB
C
/*
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#pragma once
|
|
#include "services/common/new_timer/new_timer.h"
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
// Handles all battery-related driver communication, filters out events
|
|
|
|
//! @addtogroup Foundation
|
|
//! @{
|
|
//! @addtogroup Battery Battery
|
|
//! \brief Functions related to getting the battery status
|
|
//!
|
|
//! This module contains the functions necessary to find the current charge status.
|
|
//! @note Battery charge state is a complex topic; our modelling of the charge
|
|
//! that is exposed by these functions represents a very simplified model based
|
|
//! mostly on empirically derived charge and discharge voltage curves. As
|
|
//! such, you should expect that the output will not have a high degree of
|
|
//! accuracy.
|
|
//! @{
|
|
|
|
//! Structure for retrieval of the battery charge state
|
|
typedef struct {
|
|
//! A percentage (0-100) of how full the battery is
|
|
uint8_t charge_percent;
|
|
//! True if the battery is currently being charged. False if not.
|
|
bool is_charging;
|
|
//! True if the charger cable is connected. False if not.
|
|
bool is_plugged;
|
|
} BatteryChargeState;
|
|
|
|
//! @internal
|
|
//! Structure for retrieval of the exact battery charge state
|
|
typedef struct {
|
|
//! The battery's percentage as a ratio32
|
|
uint32_t charge_percent;
|
|
//! WARNING: This maps to @see battery_charge_controller_thinks_we_are_charging as opposed to
|
|
//! the user-facing defintion of whether we're charging (100% battery).
|
|
bool is_charging;
|
|
bool is_plugged;
|
|
} PreciseBatteryChargeState;
|
|
|
|
//! Function to get the current battery charge state
|
|
//! @returns a \ref BatteryChargeState struct with the current charge state
|
|
BatteryChargeState battery_get_charge_state(void);
|
|
|
|
//! @}
|
|
//! @}
|
|
|
|
void battery_state_force_update(void);
|
|
|
|
void battery_state_init(void);
|
|
|
|
void battery_state_handle_connection_event(bool is_connected);
|
|
|
|
void battery_state_reset_filter(void);
|
|
|
|
// Get the last recorded voltage
|
|
uint16_t battery_state_get_voltage(void);
|
|
|
|
// For unit tests
|
|
TimerID battery_state_get_periodic_timer_id(void);
|