examples: add discover example that shows services/characteristics
Signed-off-by: Ron Evans <ron@hybridgroup.com>
This commit is contained in:
parent
d570aa58a6
commit
ada9076886
1 changed files with 66 additions and 0 deletions
66
examples/discover/main.go
Normal file
66
examples/discover/main.go
Normal file
|
@ -0,0 +1,66 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/tinygo-org/bluetooth"
|
||||
)
|
||||
|
||||
var adapter = bluetooth.DefaultAdapter
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
println("usage: discover [local name]")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// look for device with specific name
|
||||
name := os.Args[1]
|
||||
|
||||
// Enable BLE interface.
|
||||
must("enable BLE stack", adapter.Enable())
|
||||
|
||||
ch := make(chan bluetooth.ScanResult, 1)
|
||||
|
||||
// Start scanning.
|
||||
println("scanning...")
|
||||
err := adapter.Scan(func(adapter *bluetooth.Adapter, result bluetooth.ScanResult) {
|
||||
println("found device:", result.Address.String(), result.RSSI, result.LocalName())
|
||||
if result.LocalName() == name {
|
||||
adapter.StopScan()
|
||||
ch <- result
|
||||
}
|
||||
})
|
||||
|
||||
var device *bluetooth.Device
|
||||
select {
|
||||
case result := <-ch:
|
||||
device, err = adapter.Connect(result.Address, bluetooth.ConnectionParams{})
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
println("connected to ", result.LocalName())
|
||||
}
|
||||
|
||||
// get services
|
||||
println("discovering services/characteristics")
|
||||
srvcs, err := device.DiscoverServices(nil)
|
||||
for _, srvc := range srvcs {
|
||||
println("- service", srvc.UUID.String())
|
||||
|
||||
chars, _ := srvc.DiscoverCharacteristics(nil)
|
||||
for _, char := range chars {
|
||||
println("-- characteristic", char.UUID.String())
|
||||
}
|
||||
}
|
||||
|
||||
must("start scan", err)
|
||||
}
|
||||
|
||||
func must(action string, err error) {
|
||||
if err != nil {
|
||||
panic("failed to " + action + ": " + err.Error())
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue