- Cache invalidation: drop ~/.config/claude-usage-monitor/ble-address and remove the dead MAC from bluez on connect failure, so swapping ESP boards no longer pins the daemon to a stale factory MAC - Scan robustness: pick first matching candidate (head -1), sanity-check cached content for valid MAC format, handle multiple Claude Controllers in bluez - 5s tick + 60s poll: inner loop wakes every 5s for fast disconnect detection while keeping Anthropic API cadence at one minute - Refresh-request channel: new GATT characteristic ...0004 NOTIFY, firmware fires once in onSubscribe when has_received_data is false; daemon subscribes via setsid'd dbus-monitor pipeline (process group cleanup avoids the bash-wait-on-job hang we hit on disconnect) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
28 lines
618 B
C
28 lines
618 B
C
#pragma once
|
|
#include <stdint.h>
|
|
|
|
enum ble_state_t {
|
|
BLE_STATE_INIT,
|
|
BLE_STATE_ADVERTISING,
|
|
BLE_STATE_CONNECTED,
|
|
BLE_STATE_DISCONNECTED,
|
|
};
|
|
|
|
void ble_init(void);
|
|
void ble_tick(void);
|
|
ble_state_t ble_get_state(void);
|
|
const char* ble_get_device_name(void);
|
|
const char* ble_get_mac_address(void);
|
|
void ble_clear_bonds(void);
|
|
bool ble_has_data(void);
|
|
const char* ble_get_data(void);
|
|
void ble_send_ack(void);
|
|
void ble_send_nack(void);
|
|
void ble_request_refresh(void);
|
|
|
|
// BLE HID keyboard
|
|
void ble_keyboard_press(uint8_t key, uint8_t modifier);
|
|
void ble_keyboard_release(void);
|
|
bool ble_is_connected(void);
|
|
|