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 }