mirror of https://github.com/kidoman/embd
60 lines
786 B
Go
60 lines
786 B
Go
|
package embd
|
||
|
|
||
|
type LED interface {
|
||
|
On() error
|
||
|
Off() error
|
||
|
|
||
|
Toggle() error
|
||
|
|
||
|
Close() error
|
||
|
}
|
||
|
|
||
|
type LEDDriver interface {
|
||
|
LED(key interface{}) (LED, error)
|
||
|
|
||
|
Close() error
|
||
|
}
|
||
|
|
||
|
var ledDriverInstance LEDDriver
|
||
|
|
||
|
func InitLED() error {
|
||
|
desc, err := DescribeHost()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
if desc.LEDDriver == nil {
|
||
|
return ErrFeatureNotSupport
|
||
|
}
|
||
|
|
||
|
ledDriverInstance = desc.LEDDriver()
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func CloseLED() error {
|
||
|
return ledDriverInstance.Close()
|
||
|
}
|
||
|
|
||
|
func NewLED(key interface{}) (LED, error) {
|
||
|
return ledDriverInstance.LED(key)
|
||
|
}
|
||
|
|
||
|
func LEDOn(key interface{}) error {
|
||
|
led, err := NewLED(key)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return led.On()
|
||
|
}
|
||
|
|
||
|
func LEDOff(key interface{}) error {
|
||
|
led, err := NewLED(key)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return led.Off()
|
||
|
}
|