mirror of
https://github.com/markqvist/Sideband.git
synced 2025-11-29 11:46:51 -05:00
Use local version of able
This commit is contained in:
parent
2e44d49d6b
commit
9b6a51a03e
67 changed files with 5305 additions and 0 deletions
95
libs/able/testapps/bletest/server.go
Normal file
95
libs/able/testapps/bletest/server.go
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
// +build
|
||||
|
||||
// based on https://github.com/paypal/gatt/blob/master/examples/server.go
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
"github.com/paypal/gatt"
|
||||
"github.com/paypal/gatt/linux/cmd"
|
||||
)
|
||||
|
||||
|
||||
var DefaultServerOptions = []gatt.Option{
|
||||
gatt.LnxMaxConnections(1),
|
||||
gatt.LnxDeviceID(-1, false),
|
||||
gatt.LnxSetAdvertisingParameters(&cmd.LESetAdvertisingParameters{
|
||||
AdvertisingIntervalMin: 0x04ff,
|
||||
AdvertisingIntervalMax: 0x04ff,
|
||||
AdvertisingChannelMap: 0x7,
|
||||
}),
|
||||
}
|
||||
|
||||
|
||||
func NewTestPythonService() *gatt.Service {
|
||||
n := 0
|
||||
s := gatt.NewService(gatt.MustParseUUID("16fe0d00-c111-11e3-b8c8-0002a5d5c51b"))
|
||||
|
||||
s.AddCharacteristic(gatt.MustParseUUID("16fe0d01-c111-11e3-b8c8-0002a5d5c51b")).HandleReadFunc(
|
||||
func(rsp gatt.ResponseWriter, req *gatt.ReadRequest) {
|
||||
n = 0
|
||||
log.Println("Echo")
|
||||
fmt.Fprintf(rsp, "test")
|
||||
})
|
||||
s.AddCharacteristic(gatt.MustParseUUID("16fe0d02-c111-11e3-b8c8-0002a5d5c51b")).HandleWriteFunc(
|
||||
func(r gatt.Request, data []byte) (status byte) {
|
||||
n = 0
|
||||
log.Println("Reset counter")
|
||||
return gatt.StatusSuccess
|
||||
})
|
||||
s.AddCharacteristic(gatt.MustParseUUID("16fe0d03-c111-11e3-b8c8-0002a5d5c51b")).HandleWriteFunc(
|
||||
func(r gatt.Request, data []byte) (status byte) {
|
||||
n++
|
||||
log.Println("Increment counter")
|
||||
return gatt.StatusSuccess
|
||||
})
|
||||
s.AddCharacteristic(gatt.MustParseUUID("16fe0d04-c111-11e3-b8c8-0002a5d5c51b")).HandleReadFunc(
|
||||
func(rsp gatt.ResponseWriter, req *gatt.ReadRequest) {
|
||||
log.Println("Response counter: ", n)
|
||||
fmt.Fprintf(rsp, "%d", n)
|
||||
})
|
||||
|
||||
s.AddCharacteristic(gatt.MustParseUUID("16fe0d05-c111-11e3-b8c8-0002a5d5c51b")).HandleNotifyFunc(
|
||||
func(r gatt.Request, n gatt.Notifier) {
|
||||
log.Println("Notifications enabled")
|
||||
cnt := 1
|
||||
for !n.Done() {
|
||||
fmt.Fprintf(n, "%d", cnt)
|
||||
cnt++
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
}
|
||||
log.Println("Notifications disabled")
|
||||
})
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
|
||||
func main() {
|
||||
d, err := gatt.NewDevice(DefaultServerOptions...)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open device, err: %s", err)
|
||||
}
|
||||
|
||||
d.Handle(
|
||||
gatt.CentralConnected(func(c gatt.Central) { fmt.Println("Connect: ", c.ID()) }),
|
||||
gatt.CentralDisconnected(func(c gatt.Central) { fmt.Println("Disconnect: ", c.ID()) }),
|
||||
)
|
||||
|
||||
onStateChanged := func(d gatt.Device, s gatt.State) {
|
||||
fmt.Printf("State: %s\n", s)
|
||||
switch s {
|
||||
case gatt.StatePoweredOn:
|
||||
s1 := NewTestPythonService()
|
||||
d.AddService(s1)
|
||||
d.AdvertiseNameAndServices("KivyBLETest", []gatt.UUID{s1.UUID()})
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
d.Init(onStateChanged)
|
||||
select {}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue