feat(cmd/rgb-led): add subcommands to operate with rgb-leds
This commit is contained in:
		
							
								
								
									
										71
									
								
								pkg/led/led.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								pkg/led/led.go
									
									
									
									
									
										Normal 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
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user