aboutsummaryrefslogtreecommitdiff
path: root/cmd/anki/anki.go
blob: 33799e742463aa0dc72823be1b061668b42661d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main

import (
	"log"

	"github.com/dim13/goble"
)

func main() {
	ble := goble.New()
	ble.SetVerbose(true)
	ble.On(goble.ALL, func(ev goble.Event) (done bool) {
		log.Printf("ALL: %+v", ev)
		return
	})
	ble.On("stateChange", func(ev goble.Event) (done bool) {
		log.Println("State:", ev.State)
		switch ev.State {
		case "poweredOn":
			ble.StartScanning(nil, false)
		default:
			ble.StopScanning()
			done = true
		}
		return
	})
	ble.On("discover", func(ev goble.Event) (done bool) {
		log.Printf("Discover: %+v", ev)
		for _, sid := range ev.Peripheral.Advertisement.ServiceUuids {
			if sid == "be15beef6186407e83810bd89c4d8df4" {
				ble.Connect(ev.DeviceUUID)
			}
		}
		return
	})
	ble.On("connect", func(ev goble.Event) (done bool) {
		log.Println("Connect:", ev.DeviceUUID)
		log.Println("SUIDs:", ev.Peripheral.Advertisement.ServiceUuids)
		ble.DiscoverServices(ev.DeviceUUID, nil)
		return
	})
	ble.On("servicesDiscover", func(ev goble.Event) (done bool) {
		for sid, service := range ev.Peripheral.Services {
			log.Printf("SID: %+v", sid)
			ble.DiscoverCharacterstics(ev.DeviceUUID, service.Uuid, nil)
		}
		return
	})
	ble.Init()

	done := make(chan bool)
	<-done
}