From d8b826cade29bc428d506bf02a624b9836f6743e Mon Sep 17 00:00:00 2001 From: jkerdreux-imt <jerome.kerdreux@imt-atlantique.fr> Date: Fri, 22 Nov 2024 21:25:11 +0100 Subject: [PATCH] Refactoring in progress Move the XAALDevice.setup() to XAALInterface, and call it after device creation --- xaal.go | 30 ++++++------------------------ z2m.go | 1 + 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/xaal.go b/xaal.go index 953336b..b209ef7 100644 --- a/xaal.go +++ b/xaal.go @@ -76,6 +76,7 @@ type DebugDevice struct { type XAALDeviceInterface interface { update(map[string]interface{}) GetXAALDevice() *xaal.Device + setup() } func (dev *XAALDevice) setup() { @@ -95,9 +96,7 @@ func (dev *XAALDevice) GetXAALDevice() *xaal.Device { // Contact // ============================================================================= func NewContact(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Contact{XAALDevice{schemas.NewContact(addr), zDev, exp}} - dev.setup() - return dev + return &Contact{XAALDevice{schemas.NewContact(addr), zDev, exp}} } func (dev *Contact) update(payload map[string]interface{}) { @@ -111,9 +110,7 @@ func (dev *Contact) update(payload map[string]interface{}) { // Thermometer // ============================================================================= func NewThermometer(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Thermometer{XAALDevice{schemas.NewThermometer(addr), zDev, exp}} - dev.setup() - return dev + return &Thermometer{XAALDevice{schemas.NewThermometer(addr), zDev, exp}} } func (dev *Thermometer) update(payload map[string]interface{}) { @@ -127,9 +124,7 @@ func (dev *Thermometer) update(payload map[string]interface{}) { // Hygrometer // ============================================================================= func NewHygrometer(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Hygrometer{XAALDevice{schemas.NewHygrometer(addr), zDev, exp}} - dev.setup() - return dev + return &Hygrometer{XAALDevice{schemas.NewHygrometer(addr), zDev, exp}} } func (dev *Hygrometer) update(payload map[string]interface{}) { @@ -145,7 +140,6 @@ func (dev *Hygrometer) update(payload map[string]interface{}) { func NewLinkQuality(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &LinkQuality{XAALDevice{schemas.NewLinkquality(addr), zDev, exp}} dev.GetAttribute("level").Value = 0 // override type to int - dev.setup() dev.RemoveAttribute("devices") dev.UnsupportedAttributes = []string{"devices"} return dev @@ -167,7 +161,6 @@ func (dev *LinkQuality) update(payload map[string]interface{}) { // ============================================================================= func NewBattery(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &Battery{XAALDevice{schemas.NewBattery(addr), zDev, exp}} - dev.setup() dev.RemoveAttribute("devices") dev.UnsupportedAttributes = []string{"devices"} return dev @@ -188,7 +181,6 @@ func NewPowerRelay(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInter dev.SetMethod("turn_on", dev.turnOn) dev.SetMethod("turn_off", dev.turnOff) dev.SetMethod("toggle", dev.toggle) - dev.setup() return dev } @@ -233,7 +225,6 @@ func (dev *PowerRelay) toggle(xaal.MessageBody) *xaal.MessageBody { // ============================================================================= func NewPowerMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &PowerMeter{XAALDevice{schemas.NewPowermeter(addr), zDev, exp}} - dev.setup() dev.RemoveAttribute("devices") dev.UnsupportedAttributes = []string{"devices"} return dev @@ -281,7 +272,6 @@ func NewLamp(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev.AddMethod("set_hsv", dev.setHSV) dev.AddMethod("set_mode", dev.setMode) } - dev.setup() return dev } @@ -442,7 +432,6 @@ func (dev *Lamp) setMode(body xaal.MessageBody) *xaal.MessageBody { // ============================================================================= func NewButtonRemote(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &ButtonRemote{XAALDevice{schemas.NewButtonRemote(addr), zDev, exp}} - dev.setup() dev.SetMethod("get_buttons", dev.getButtons) return dev } @@ -470,9 +459,7 @@ func (dev *ButtonRemote) getButtons(xaal.MessageBody) *xaal.MessageBody { // Motion // ============================================================================= func NewMotion(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &Motion{XAALDevice{schemas.NewMotion(addr), zDev, exp}} - dev.setup() - return dev + return &Motion{XAALDevice{schemas.NewMotion(addr), zDev, exp}} } func (dev *Motion) update(payload map[string]interface{}) { @@ -488,7 +475,6 @@ func (dev *Motion) update(payload map[string]interface{}) { func NewLuxMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { dev := &LuxMeter{XAALDevice{schemas.NewLuxmeter(addr), zDev, exp}} dev.GetAttribute("illuminance").Value = 0 // override - dev.setup() return dev } @@ -507,7 +493,6 @@ func NewVoltMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterf dev := &VoltMeter{XAALDevice{schemas.NewBasic(addr), zDev, exp}} dev.DevType = "voltmeter.any" dev.AddAttribute("voltage", 0.0) - dev.setup() return dev } @@ -525,7 +510,6 @@ func NewAmpMeter(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterfa dev := &AmpMeter{XAALDevice{schemas.NewBasic(addr), zDev, exp}} dev.DevType = "ampmeter.any" dev.AddAttribute("current", 0.0) - dev.setup() return dev } @@ -540,9 +524,7 @@ func (dev *AmpMeter) update(payload map[string]interface{}) { // Debug Device // ============================================================================= func NewDebugDevice(addr uuid.UUID, zDev *Z2MDevice, exp *Expose) XAALDeviceInterface { - dev := &DebugDevice{XAALDevice{schemas.NewBasic(addr), zDev, exp}} - dev.setup() - return dev + return &DebugDevice{XAALDevice{schemas.NewBasic(addr), zDev, exp}} } func (dev *DebugDevice) update(payload map[string]interface{}) { diff --git a/z2m.go b/z2m.go index 27486bc..5a5789a 100644 --- a/z2m.go +++ b/z2m.go @@ -127,6 +127,7 @@ func (zDev *Z2MDevice) FindXAALDevices(gw *Gateway) { } if dev != nil { + dev.setup() zDev.XAALDevices = append(zDev.XAALDevices, dev) xaalDev := dev.GetXAALDevice() xaalDev.GroupID = grpAdd -- GitLab