diff --git a/noolite.go b/noolite.go index 00ffcbd..b813569 100644 --- a/noolite.go +++ b/noolite.go @@ -131,46 +131,58 @@ func (n *NooliteAdapter) composeCommand(cmd command, channel int, args ...int) [ return c } -func (n *NooliteAdapter) sendCommand(command []byte) { +func (n *NooliteAdapter) sendCommand(command []byte) error { n.Configuration(1) + if n.LastError() != "No error" { + return errors.New(n.LastError()) + } + n.Interface(0) + if n.LastError() != "No error" { + return errors.New(n.LastError()) + } + n.ControlMsg(0x21, 0x09, 0x300, 0, command) + if n.LastError() != "No error" { + return errors.New(n.LastError()) + } + return nil } // Turn power OFF for specified channel -func (n *NooliteAdapter) Off(channel int) { +func (n *NooliteAdapter) Off(channel int) error { cmd := n.composeCommand(off, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Smooth brightnes decrase for specified channel -func (n *NooliteAdapter) DecraseBrightnes(channel int) { +func (n *NooliteAdapter) DecraseBrightnes(channel int) error { cmd := n.composeCommand(decBrightnes, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Turn power ON for specified channel -func (n *NooliteAdapter) On(channel int) { +func (n *NooliteAdapter) On(channel int) error { cmd := n.composeCommand(on, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Smooth brightnes incrase for specified channel -func (n *NooliteAdapter) IncraseBrightnes(channel int) { +func (n *NooliteAdapter) IncraseBrightnes(channel int) error { cmd := n.composeCommand(incBrightnes, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Switch power state between off and on for specified channel -func (n *NooliteAdapter) Switch(channel int) { +func (n *NooliteAdapter) Switch(channel int) error { cmd := n.composeCommand(cSwitch, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Smooth brightnes incrase or decrase for specified channel -func (n *NooliteAdapter) InvertBrightnes(channel int) { +func (n *NooliteAdapter) InvertBrightnes(channel int) error { cmd := n.composeCommand(invertBrightnes, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Set brightnes value for specified channel @@ -178,81 +190,81 @@ func (n *NooliteAdapter) InvertBrightnes(channel int) { // Value must be in range 35..155. // When value == 0 lights off. // When value > 155 lights on for full brightness. -func (n *NooliteAdapter) SetBrightnesValue(channel, value int) { +func (n *NooliteAdapter) SetBrightnesValue(channel, value int) error { cmd := n.composeCommand(set, channel, value) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Set brightnes values for independens channels // // Available for SD111-180 only -func (n *NooliteAdapter) SetBrightnesValues(channel, val1, val2, val3 int) { +func (n *NooliteAdapter) SetBrightnesValues(channel, val1, val2, val3 int) error { cmd := n.composeCommand(set, channel, val1, val2, val3) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Call scenario for specified channel -func (n *NooliteAdapter) CallScenario(channel int) { +func (n *NooliteAdapter) CallScenario(channel int) error { cmd := n.composeCommand(callScenario, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Save scenario for specified channel -func (n *NooliteAdapter) SaveScenario(channel int) { +func (n *NooliteAdapter) SaveScenario(channel int) error { cmd := n.composeCommand(saveScenario, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Unbind signal for specified channel -func (n *NooliteAdapter) UnbindChannel(channel int) { +func (n *NooliteAdapter) UnbindChannel(channel int) error { cmd := n.composeCommand(unbind, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Stop color selection for specified channel // // Available for SD111-180 only -func (n *NooliteAdapter) StopColorSelection(channel int) { +func (n *NooliteAdapter) StopColorSelection(channel int) error { cmd := n.composeCommand(stopColorSelection, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Set binding for specified channel -func (n *NooliteAdapter) BindChannel(channel int) { +func (n *NooliteAdapter) BindChannel(channel int) error { cmd := n.composeCommand(bind, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Smooth color changing for specified channel // // Stop with StopColorSelection method -// +// // Avialable for SD111-180 only -func (n *NooliteAdapter) ColorSelection(channel int) { +func (n *NooliteAdapter) ColorSelection(channel int) error { cmd := n.composeCommand(colorSelection, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Switch color for specified channel // // Avialable for SD111-180 only -func (n *NooliteAdapter) ColorSwitch(channel int) { +func (n *NooliteAdapter) ColorSwitch(channel int) error { cmd := n.composeCommand(colorSwitch, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Switch work mode for specified channel // // Avialable for SD111-180 only -func (n *NooliteAdapter) ModeSwitch(channel int) { +func (n *NooliteAdapter) ModeSwitch(channel int) error { cmd := n.composeCommand(modeSwitch, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) } // Set change color speed for specified channel // // Avialable for SD111-180 only -func (n *NooliteAdapter) EffectSpeed(channel int) { +func (n *NooliteAdapter) EffectSpeed(channel int) error { cmd := n.composeCommand(effectSpeed, channel) - n.sendCommand(cmd) + return n.sendCommand(cmd) }