a09bcfaf06
The one-shot scan kept only the top six devices by RSSI and dropped the advertisement payload, so a distant beacon lost its slot to nearby phones and its data was unreachable -- wrong on every axis for reading sensors that broadcast in their adverts. Replace it with a continuous observer: observe(filter)/observed()/ unobserve()/isObserving(). BleObservation carries the raw advertisement bytes for Lua to parse, and BleFilter keeps only adverts matching a service-data UUID or manufacturer id.
85 lines
2.2 KiB
Lua
85 lines
2.2 KiB
Lua
---@meta
|
|
|
|
-- Generated from native/src/bindings/core/ble.cpp. Do not edit.
|
|
|
|
---@class BleObservation
|
|
---@field address string
|
|
---@field name string
|
|
---@field rssi integer
|
|
---@field payload string Raw advertisement bytes.
|
|
---@field lastSeenMs integer sys.getMillis() at last sighting.
|
|
|
|
---@class BleFilter
|
|
---@field services? string[] Service-data UUIDs to keep.
|
|
---@field manufacturers? integer[] Manufacturer ids to keep.
|
|
|
|
---@class BleLib
|
|
ble = {}
|
|
|
|
---Starts the BLE stack.
|
|
---@param name? string Local device name.
|
|
---@return true? ok
|
|
---@return string? error
|
|
function ble.init(name) end
|
|
|
|
---Stops the BLE stack and releases its memory.
|
|
function ble.deinit() end
|
|
|
|
---Whether the BLE stack is running.
|
|
---@return boolean
|
|
function ble.isInitialized() end
|
|
|
|
---Starts passively observing advertisements, coalesced per device.
|
|
---@param filter? BleFilter Keep only matching adverts; nil keeps all.
|
|
---@return true? ok
|
|
---@return string? error
|
|
function ble.observe(filter) end
|
|
|
|
---Stops observing and clears the snapshot.
|
|
function ble.unobserve() end
|
|
|
|
---Whether advertisement observation is running.
|
|
---@return boolean
|
|
function ble.isObserving() end
|
|
|
|
---The current snapshot of observed devices.
|
|
---@return BleObservation[] devices
|
|
function ble.observed() end
|
|
|
|
---Connects to a peripheral.
|
|
---@param address string
|
|
---@return true? ok
|
|
---@return string? error
|
|
function ble.connect(address) end
|
|
|
|
---Disconnects from the connected peripheral.
|
|
function ble.disconnect() end
|
|
|
|
---Whether a peripheral is connected.
|
|
---@return boolean
|
|
function ble.isConnected() end
|
|
|
|
---Reads a characteristic value.
|
|
---@param serviceUuid string
|
|
---@param characteristicUuid string
|
|
---@return string? value
|
|
---@return string? error
|
|
function ble.read(serviceUuid, characteristicUuid) end
|
|
|
|
---Writes a characteristic value.
|
|
---@param serviceUuid string
|
|
---@param characteristicUuid string
|
|
---@param value string
|
|
---@return true? ok
|
|
---@return string? error
|
|
function ble.write(serviceUuid, characteristicUuid, value) end
|
|
|
|
---Starts advertising.
|
|
---@param name? string Advertised device name.
|
|
---@return true? ok
|
|
---@return string? error
|
|
function ble.startAdvertising(name) end
|
|
|
|
---Stops advertising.
|
|
function ble.stopAdvertising() end
|