From fc3669937463b329a815f148106241883020388e Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 29 Dec 2016 21:08:59 +0100 Subject: Lights --- cmd/experimental/main.go | 49 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'cmd') diff --git a/cmd/experimental/main.go b/cmd/experimental/main.go index 7c9b72a..4e93d23 100644 --- a/cmd/experimental/main.go +++ b/cmd/experimental/main.go @@ -42,23 +42,22 @@ func onConnect(p gatt.Peripheral, err error) { return } for _, s := range ss { - log.Println("Service", s.UUID()) cs, err := p.DiscoverCharacteristics(nil, s) if err != nil { log.Println("Discover Service", err) return } for _, c := range cs { - log.Println("Characteristic", c.UUID()) - ds, err := p.DiscoverDescriptors(nil, c) - if err != nil { - log.Println("Discover Descriptors", err) - return - } - for _, d := range ds { - log.Println("Descriptor", d.UUID()) - } - log.Println("Properties", c.Properties()) + /* + ds, err := p.DiscoverDescriptors(nil, c) + if err != nil { + log.Println("Discover Descriptors", err) + return + } + for _, d := range ds { + log.Println("Descriptor", d.UUID()) + } + */ if (c.Properties() & (gatt.CharNotify | gatt.CharIndicate)) != 0 { if err := p.SetNotifyValue(c, onNotify); err != nil { log.Println("Set notify", err) @@ -69,18 +68,36 @@ func onConnect(p gatt.Peripheral, err error) { //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}, true) // ping - p.WriteCharacteristic(c, []byte{0x01, 0x18}, true) // version - p.WriteCharacteristic(c, []byte{0x01, 0x1a}, true) // battery + //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 + + lc := &anki.VehicleLightConfig{} + lm := &anki.VehicleMsgLightsPattern{} + lc.Set(anki.LightFrontL, anki.EffectSteady, 10, 0, 0) + lm.Set(*lc) + lc.Set(anki.LightFrontR, anki.EffectSteady, 10, 0, 0) + lm.Set(*lc) + lc.Set(anki.LightTail, anki.EffectSteady, 10, 0, 0) + lm.Set(*lc) + lb := anki.Encode(lm) + p.WriteCharacteristic(c, lb, true) + + ss := &anki.VehicleMsgSetSpeed{} + ss.Set(25000, 25000) + b := anki.Encode(ss) + p.WriteCharacteristic(c, b, true) } } } } func onNotify(c *gatt.Characteristic, b []byte, err error) { - log.Printf("notify: % X | %q\n", b, b) + if err != nil { + log.Println(c.UUID(), err) + } id, payload := anki.SplitMsg(b) log.Printf("ID: %v | % X\n", id, payload) } -- cgit v1.2.3