feat: low-battery LED indicator (ENABLE_BATT_LED, default ON)
Blink the Pico onboard LED at 1 Hz when the connected DualSense reports PowerPercent <= 1 (i.e. <= 10%) and PowerState == Discharging. Source data is byte 52 of the BT 0x31 input report, already copied into interrupt_in_data; no new BT parsing required. The new module owns the LED only while it is actively blinking; it detects controller disconnection via stale-report timeout and steps out, so bt.cpp's existing connect/disconnect LED handling stays in charge in all other states. Honors disable_pico_led. Gated by -DENABLE_BATT_LED=ON (default). With the option off, the source file is not compiled and behavior is identical to upstream. CI gains a compile-only check for the OFF flavor. (cherry picked from commit 2f8ea73c9fb695e24e7cc3329db7cb925e82e1c9)
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Low-battery LED indicator for the Pico onboard LED.
|
||||
// Reads PowerPercent / PowerState from interrupt_in_data[52]
|
||||
// (DualSense BT 0x31 report, see USBGetStateData in utils.h).
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
void battery_led_init(void);
|
||||
|
||||
// Call once per main-loop iteration. Drives the LED blink while the
|
||||
// battery is low and the controller is connected; otherwise no-op.
|
||||
void battery_led_tick(void);
|
||||
|
||||
// Call from the BT input-report callback whenever a fresh 0x31 report
|
||||
// has been copied into interrupt_in_data. Used to detect disconnection
|
||||
// via stale-report timeout.
|
||||
void battery_led_note_report(void);
|
||||
Reference in New Issue
Block a user