aboutsummaryrefslogtreecommitdiff
path: root/cmd/experimental/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/experimental/main.go')
-rw-r--r--cmd/experimental/main.go41
1 files changed, 31 insertions, 10 deletions
diff --git a/cmd/experimental/main.go b/cmd/experimental/main.go
index 4e93d23..506cd2e 100644
--- a/cmd/experimental/main.go
+++ b/cmd/experimental/main.go
@@ -2,6 +2,7 @@ package main
import (
"log"
+ "time"
"dim13.org/anki"
"github.com/currantlabs/gatt"
@@ -65,14 +66,18 @@ func onConnect(p gatt.Peripheral, err error) {
}
}
if (c.Properties() & gatt.CharWrite) != 0 {
- //c.HandleReadFunc(onRead)
- //log.Println("Send")
- //c.SetValue([]byte{0x01, 0x18})
- //p.WriteCharacteristic(c, []byte{0x01, 0x90}, false) // sdk
- p.WriteCharacteristic(c, []byte{0x01, 0x16}, false) // ping
- p.WriteCharacteristic(c, []byte{0x01, 0x18}, false) // version
- p.WriteCharacteristic(c, []byte{0x01, 0x1a}, false) // battery
- p.WriteCharacteristic(c, []byte{0x02, 0x1d, 0xff}, true) // lights
+ //p.WriteCharacteristic(c, []byte{0x01, 0x90}, true) // sdk
+ go func(c *gatt.Characteristic) {
+ t := time.NewTicker(time.Second * 10)
+ defer t.Stop()
+ for range t.C {
+ log.Println("Ping")
+ p.WriteCharacteristic(c, []byte{0x01, 0x16}, true) // ping
+ time.Sleep(10 * time.Second)
+ }
+ }(c)
+ //p.WriteCharacteristic(c, []byte{0x01, 0x18}, true) // version
+ //p.WriteCharacteristic(c, []byte{0x01, 0x1a}, true) // battery
lc := &anki.VehicleLightConfig{}
lm := &anki.VehicleMsgLightsPattern{}
@@ -85,8 +90,9 @@ func onConnect(p gatt.Peripheral, err error) {
lb := anki.Encode(lm)
p.WriteCharacteristic(c, lb, true)
+ time.Sleep(time.Second)
ss := &anki.VehicleMsgSetSpeed{}
- ss.Set(25000, 25000)
+ ss.Set(500, 2500)
b := anki.Encode(ss)
p.WriteCharacteristic(c, b, true)
}
@@ -99,7 +105,22 @@ func onNotify(c *gatt.Characteristic, b []byte, err error) {
log.Println(c.UUID(), err)
}
id, payload := anki.SplitMsg(b)
- log.Printf("ID: %v | % X\n", id, payload)
+ switch id {
+ case anki.VehicleMsgV2CStatusUpdate:
+ su := anki.VehicleMsgStatusUpdate{}
+ anki.Decode(b, &su)
+ log.Printf("%+v\n", su)
+ case anki.VehicleMsgV2CLocalizationTransitionUpdate:
+ tu := anki.VehicleMsgLocalizationTransitionUpdate{}
+ anki.Decode(b, &tu)
+ log.Printf("%+v\n", tu)
+ case anki.VehicleMsgV2CLocalizationPositionUpdate:
+ pu := anki.VehicleLocalizationPositionUpdate{}
+ anki.Decode(b, &pu)
+ log.Printf("%+v\n", pu)
+ default:
+ log.Printf("ID: %v | % X\n", id, payload)
+ }
}
func onDisconnect(p gatt.Peripheral, err error) {