rpicontrol/internal/PinControlService/HardwarePinRpi.go

56 lines
854 B
Go

//go:build (arm || arm64) && linux
package PinControlService
import "github.com/stianeikeland/go-rpio/v4"
type PinRpi struct {
pin rpio.Pin
}
func (p *PinRpi) Toggle() {
p.pin.Toggle()
}
func (p *PinRpi) High() {
p.pin.High()
}
func (p *PinRpi) Low() {
p.pin.Low()
}
func (p *PinRpi) Input() {
p.pin.Input()
}
func (p *PinRpi) Output() {
p.pin.Output()
}
func (p *PinRpi) Detect(e Edge) {
p.pin.Detect(rpio.Edge(e))
}
func (p *PinRpi) PullUp() {
p.pin.PullUp()
}
func (p *PinRpi) PullDown() {
p.pin.PullDown()
}
func (p *PinRpi) PullOff() {
p.pin.PullOff()
}
func (p *PinRpi) Read() State {
return State(p.pin.Read())
}
func (p *PinRpi) EdgeDetected() bool {
return p.pin.EdgeDetected()
}
func NewHardwarePin(n int) HardwarePinInterface {
return &PinRpi{
pin: rpio.Pin(n),
}
}
func HardwarePinOpen() error {
return rpio.Open()
}