aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2018-09-28 23:27:39 +0200
committerDimitri Sokolyuk <demon@dim13.org>2018-09-28 23:27:39 +0200
commitf5df1d03524b12b8ac0b6a47f13bcd0e47464873 (patch)
treebf5e3de19e2861c3879716953a64cf7d15faa620
parent728d02790d3c961083ea23cb8cd3d44e465a720c (diff)
return error
-rw-r--r--blinkstick.go42
1 files changed, 23 insertions, 19 deletions
diff --git a/blinkstick.go b/blinkstick.go
index 34adede..6e95f43 100644
--- a/blinkstick.go
+++ b/blinkstick.go
@@ -2,6 +2,7 @@
package blinkstick
import (
+ "errors"
"image/color"
"io"
)
@@ -18,16 +19,21 @@ import (
9: LED Frame [Channel, [G, R, B][0..63]]
*/
-// SetIndex sets color by index
-func SetIndex(w io.Writer, i int, c color.Color) {
+func rgb(c color.Color) (r, g, b uint8) {
if c == nil {
- c = color.Black
+ return 0, 0, 0
}
- r, g, b, _ := c.RGBA()
- w.Write([]byte{5, 0, uint8(i), uint8(r >> 8), uint8(g >> 8), uint8(b >> 8)})
+ R, G, B, _ := c.RGBA()
+ return uint8(R >> 8), uint8(G >> 8), uint8(B >> 8)
+}
+
+// SetIndex sets color by index
+func SetIndex(w io.Writer, i int, c color.Color) {
+ r, g, b := rgb(c)
+ w.Write([]byte{5, 0, uint8(i), r, g, b})
}
-func Set(w io.Writer, colors ...color.Color) {
+func Set(w io.Writer, colors ...color.Color) error {
var buf []byte
switch {
case len(colors) <= 8:
@@ -43,26 +49,24 @@ func Set(w io.Writer, colors ...color.Color) {
buf = make([]byte, 3*64+2)
buf[0] = 9
default:
- panic("too many colors")
+ errors.New("too many colors")
}
for i, c := range colors {
- if c == nil {
- c = color.Black
- }
- r, g, b, _ := c.RGBA()
- buf[3*i+2] = uint8(g >> 8)
- buf[3*i+3] = uint8(r >> 8)
- buf[3*i+4] = uint8(b >> 8)
+ r, g, b := rgb(c)
+ buf[3*i+2] = g
+ buf[3*i+3] = r
+ buf[3*i+4] = b
}
- w.Write(buf)
+ _, err := w.Write(buf)
+ return err
}
// SetAll sets all (8) LEDs to same color
-func SetAll(w io.Writer, c color.Color) {
- Set(w, c, c, c, c, c, c, c, c)
+func SetAll(w io.Writer, c color.Color) error {
+ return Set(w, c, c, c, c, c, c, c, c)
}
// Off all LEDs
-func Off(w io.Writer) {
- SetAll(w, color.Black)
+func Off(w io.Writer) error {
+ return SetAll(w, nil)
}