func onPeriphConnected(p gatt.Peripheral, err error) { log.Println("Connected") peripheral = p err = p.SetMTU(500) if err != nil { log.Printf("Failed to set MTU, err: %s\n", err) } uuid, err := gatt.ParseUUID("f000aa00-0451-4000-b000-000000000000") if err != nil { log.Printf("Failed to create UUID, err: %s\n", err) return } ss, err := p.DiscoverServices(nil) if err != nil { log.Printf("Failed to discover IR sensor service, err: %s\n", err) return } var s *gatt.Service for _, s = range ss { if s.UUID().Equal(uuid) { break } } cs, err := p.DiscoverCharacteristics(nil, s) if err != nil { log.Printf("Failed to discover characteristics, err: %s\n", err) return } for _, c := range cs { _, err = p.DiscoverDescriptors(nil, c) if err != nil { log.Printf("Failed to discover descriptors, err: %s\n", err) return } } data := cs[0] config := cs[1] samplerate := cs[2] // Turn on notifications err = p.SetNotifyValue(data, handleTempNotification) if err != nil { log.Printf("Failed to write config characteristics, err: %s\n", err) return } // Set sample rate err = p.WriteCharacteristic(samplerate, []byte{0xFF}, false) if err != nil { log.Printf("Failed to write samplerate characteristics, err: %s\n", err) return } // Start sensors err = p.WriteCharacteristic(config, []byte{0x01}, false) if err != nil { log.Printf("Failed to write config characteristics, err: %s\n", err) return } }