gobot.io/x/gobot/v2@v2.1.0/platforms/ble/battery_driver.go (about) 1 package ble 2 3 import ( 4 "bytes" 5 "log" 6 7 "gobot.io/x/gobot/v2" 8 ) 9 10 // BatteryDriver represents the Battery Service for a BLE Peripheral 11 type BatteryDriver struct { 12 name string 13 connection gobot.Connection 14 gobot.Eventer 15 } 16 17 // NewBatteryDriver creates a BatteryDriver 18 func NewBatteryDriver(a BLEConnector) *BatteryDriver { 19 n := &BatteryDriver{ 20 name: gobot.DefaultName("Battery"), 21 connection: a, 22 Eventer: gobot.NewEventer(), 23 } 24 25 return n 26 } 27 28 // Connection returns the Driver's Connection to the associated Adaptor 29 func (b *BatteryDriver) Connection() gobot.Connection { return b.connection } 30 31 // Name returns the Driver name 32 func (b *BatteryDriver) Name() string { return b.name } 33 34 // SetName sets the Driver name 35 func (b *BatteryDriver) SetName(n string) { b.name = n } 36 37 // adaptor returns BLE adaptor 38 func (b *BatteryDriver) adaptor() BLEConnector { 39 return b.Connection().(BLEConnector) 40 } 41 42 // Start tells driver to get ready to do work 43 func (b *BatteryDriver) Start() (err error) { 44 return 45 } 46 47 // Halt stops battery driver (void) 48 func (b *BatteryDriver) Halt() (err error) { return } 49 50 // GetBatteryLevel reads and returns the current battery level 51 func (b *BatteryDriver) GetBatteryLevel() (level uint8) { 52 var l uint8 53 c, err := b.adaptor().ReadCharacteristic("2a19") 54 if err != nil { 55 log.Println(err) 56 return 57 } 58 buf := bytes.NewBuffer(c) 59 val, _ := buf.ReadByte() 60 l = uint8(val) 61 return l 62 }