feat(cmd/rgb-led): add subcommands to operate with rgb-leds

This commit is contained in:
2019-06-16 13:00:50 +02:00
parent c81cd2d21c
commit 49d66cfcbb
27 changed files with 713 additions and 40 deletions

71
pkg/led/led.go Normal file
View File

@ -0,0 +1,71 @@
package led
import (
"fmt"
"github.com/go-flucky/flucky/pkg/types"
"github.com/stianeikeland/go-rpio"
)
type LED interface {
On() error
Off() error
Toggel() error
}
type RGBLED struct {
*types.LED
}
func (l *RGBLED) On() error {
if err := rpio.Open(); err != nil {
return fmt.Errorf("Can not open rpio: %v", err)
}
defer rpio.Close()
gpio, err := types.GPIOToInt(*l.GPIONumber)
if err != nil {
return fmt.Errorf("Can not determine %v into integer: %v", l.GPIONumber, err)
}
pin := rpio.Pin(gpio)
pin.High()
return nil
}
func (l *RGBLED) Off() error {
if err := rpio.Open(); err != nil {
return fmt.Errorf("Can not open rpio: %v", err)
}
defer rpio.Close()
gpio, err := types.GPIOToInt(*l.GPIONumber)
if err != nil {
return fmt.Errorf("Can not determine %v into integer: %v", l.GPIONumber, err)
}
pin := rpio.Pin(gpio)
pin.Low()
return nil
}
func (l *RGBLED) Toggel() error {
if err := rpio.Open(); err != nil {
return fmt.Errorf("Can not open rpio: %v", err)
}
defer rpio.Close()
gpio, err := types.GPIOToInt(*l.GPIONumber)
if err != nil {
return fmt.Errorf("Can not determine %v into integer: %v", l.GPIONumber, err)
}
pin := rpio.Pin(gpio)
pin.Toggle()
return nil
}