feathersdk.robot.battery_system Module

class feathersdk.robot.battery_system.BatteryState(monitor_start_time: float, last_estop_pressed_time: float, last_estop_released_time: float, last_reliable_seen_voltage: float, state_update_time: float)

Bases: object

last_estop_pressed_time: float
last_estop_released_time: float
last_reliable_seen_voltage: float
monitor_start_time: float
state_update_time: float
class feathersdk.robot.battery_system.BatterySystem(config: dict = {})

Bases: SteppableSystem

Base class for battery monitoring and power event management.

add_power_event_listener(listener)

Add a power event listener.

Parameters:

listener (PowerEventListener) – Listener to receive power event notifications

get_estimated_battery_percentage()

Get estimated battery percentage based on the last reliable seen voltage.

is_estop_pressed()

Check if emergency stop is pressed based on battery voltage.

Returns:

True if battery voltage is below ESTOP threshold, False otherwise

Return type:

bool

last_powered_up_time()

Get the last time the system was powered up.

Returns the maximum of current boot time and last estop release time.

Returns:

Timestamp of last power-up event

Return type:

float

notify_power_event_listeners(event: PowerEvent)

Notify all registered listeners of a power event.

Parameters:

event (PowerEvent) – The power event to notify listeners about

remove_power_event_listener(listener)

Remove a power event listener.

Parameters:

listener (PowerEventListener) – Listener to remove

class feathersdk.robot.battery_system.PowerEvent(*values)

Bases: Enum

Power system events.

POWER_OFF = 1
POWER_RESTORED = 2
POWER_UNHEALTHY = 3
class feathersdk.robot.battery_system.PowerEventListener

Bases: ABC

Abstract base class for power event listeners.

abstractmethod on_power_event(event: PowerEvent)

Handle power event notification.

Parameters:

event (PowerEvent) – The power event that occurred

class feathersdk.robot.battery_system.PowerMonitor

Bases: object

Class used by feather deamon to monitor battery voltage

set_new_state(new_voltage: float)
step()
feathersdk.robot.battery_system.get_battery_voltage(read_method: str)

Shouldn’t call from feathersdk. Only used by battery daemon.

feathersdk.robot.battery_system.i2c_read(bus, addr, reg, length)

Read data from I2C device register.

Parameters:
  • bus – SMBus instance

  • addr – I2C device address

  • reg – Register address to read from

  • length – Number of bytes to read

Returns:

List of bytes read from the register

Return type:

list

feathersdk.robot.battery_system.i2c_write(bus, addr, data)

Write data to I2C device.

Parameters:
  • bus – SMBus instance

  • addr – I2C device address

  • data – Data bytes to write

feathersdk.robot.battery_system.read_last_battery_state() BatteryState