Greg
99bfee1cbd
Java dependencies. Bug fix in retrievePeripheral so that we do not zero out the reference to the Java Peripheral object. |
||
---|---|---|
depjars | ||
gatt | ||
ns | ||
.gitignore | ||
ble_android.go | ||
ble_darwin.go | ||
ble.go | ||
Ble.jar | ||
blessed-full.jar | ||
BlessedConnect.java | ||
go.mod | ||
go.sum | ||
jni_android.c | ||
jni_android.go | ||
jni_android.h | ||
LICENSE | ||
LICENSE-BLESSED | ||
LICENSE-TIMBER | ||
nswrap.yaml | ||
README.md | ||
timber.jar |
BLE
A modern, cross-platform Go library for Bluetooth Low Energy
This package is a working but incomplete interface for access to Bluetooth Low Energy devices. It is intended to support multiple operating systems with a uniform API. Currently, MacOS and Android are supported. Android support requires the use of Gio.
The API is asyncrhonous and event driven. To access Bluetooth hardware,
first create a BLE
variable with NewBLE()
. On Android, you must also
call Enable
with a pointer to your Gio Window.
import (
...
"git.wow.st/gmp/ble"
"gioui.org/app"
)
func runloop() {
b := ble.NewBle()
w := app.NewWindow()
b.Enable(w)
...
Once enabled, you can call the primary API functions, Scan
, StopScan
,
Connect
, and CancelConnection
. You can also query the state of the
Bluetooth hardware by calling State
.
Calling Events
on your BLE
object returns a channel on which API events
are delivered. These events notify your program when the state of the
BLE hardware changes (e.g. powered on or off), peripherals are connected,
services or characteristics are discovered, or values for characteristics
are updated.
Using Gio, your main event loop will look something like this:
for {
select {
case e := <-b.Events():
switch e := e.(type) {
// Handle BLE Events
}
}
case e := <-w.Events():
switch e := e.(type) {
// Handle Gio events
}
}
}
An example heart rate monitor app can be found at git.wow.st/gmp/hrm.