From 0430ddcd305a59be868320446528cb4deb42479f Mon Sep 17 00:00:00 2001 From: Arsen Musayelyan Date: Tue, 24 Aug 2021 21:55:03 -0700 Subject: [PATCH] Add watch function for battery level --- infinitime.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/infinitime.go b/infinitime.go index 3b18605..38a593a 100644 --- a/infinitime.go +++ b/infinitime.go @@ -351,6 +351,34 @@ func (i *Device) WatchHeartRate() (<-chan uint8, error) { return out, nil } +func (i *Device) WatchBatteryLevel() (<-chan uint8, error) { + if !i.device.Properties.Connected { + return make(<-chan uint8), nil + } + // Start notifications on heart rate characteristic + err := i.battLevelChar.StartNotify() + if err != nil { + return nil, err + } + // Watch characteristics of heart rate characteristic + ch, err := i.battLevelChar.WatchProperties() + if err != nil { + return nil, err + } + out := make(chan uint8, 2) + go func() { + // For every event + for event := range ch { + // If value changed + if event.Name == "Value" { + // Send heart rate to channel + out <- uint8(event.Value.([]byte)[0]) + } + } + }() + return out, nil +} + // SetTime sets the watch's time using the Current Time Service func (i *Device) SetTime(t time.Time) error { if !i.device.Properties.Connected {