Files
hapz2m/s_battery.go
Darell Tan d4daef7bce Introduce constructors for ExposeMapping
This should allow the ExposeMapping struct to be changed without
constantly impacting its callers.
2024-11-24 15:25:17 +08:00

35 lines
814 B
Go

package hapz2m
import (
"github.com/brutella/hap/accessory"
"github.com/brutella/hap/characteristic"
"github.com/brutella/hap/service"
)
func createBatteryServices(dev *Device) (byte, []*service.S, []*ExposeMapping, error) {
var svcs []*service.S
var exposes []*ExposeMapping
for _, exp := range dev.Definition.Exposes {
if exp.Ignored() {
continue
}
switch {
case exp.Type == "numeric" && exp.Name == "battery":
exp := exp // create a copy
batt := service.NewBatteryService()
batt.ChargingState.SetValue(characteristic.ChargingStateNotChargeable)
svcs = append(svcs, batt.S)
exposes = append(exposes, NewExposeMapping(&exp, batt.BatteryLevel.C))
}
}
return accessory.TypeUnknown, svcs, exposes, nil
}
func init() {
RegisterCreateServiceHandler(createBatteryServices)
}