Skip to content
Snippets Groups Projects
Commit d8b826ca authored by KERDREUX Jerome's avatar KERDREUX Jerome
Browse files

Refactoring in progress

Move the XAALDevice.setup() to XAALInterface, and call it after device
creation
parent 053578f6
No related branches found
No related tags found
No related merge requests found
......@@ -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{}) {
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment