Sfoglia il codice sorgente

Error handling was added

Denis V. Dedkov 9 anni fa
parent
commit
f4aaee99fb
1 ha cambiato i file con 48 aggiunte e 36 eliminazioni
  1. 48 36
      noolite.go

+ 48 - 36
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)
 }