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  }