mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-07-26 10:38:41 +00:00
d224b5d648
Signed-off-by: deadprogram <ron@hybridgroup.com>
40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
package drivers
|
|
|
|
// PinOutput represents a pin hardware abstraction layer for a pin that can output a digital signal.
|
|
type PinOutput interface {
|
|
Set(level bool)
|
|
}
|
|
|
|
// PinInput represents a pin hardware abstraction layer.
|
|
type PinInput interface {
|
|
Get() (level bool)
|
|
}
|
|
|
|
// PinOutputFunc is hardware abstraction for a function that causes pin to output a
|
|
// digital signal (high or low level).
|
|
//
|
|
// // Code conversion demo: from machine.Pin to drivers.PinOutputFunc
|
|
// led := machine.LED
|
|
// led.Configure(machine.PinConfig{Mode: machine.PinOutput})
|
|
// var pin drivers.PinOutputFunc = led.Set // Going from a machine.Pin to a drivers.PinOutputFunc
|
|
type PinOutputFunc func(level bool)
|
|
|
|
// High sets the underlying pin's level to high. This is equivalent to calling PinOutput(true).
|
|
func (po PinOutputFunc) High() {
|
|
po(true)
|
|
}
|
|
|
|
// Low sets the underlying pin's level to low. This is equivalent to calling PinOutput(false).
|
|
func (po PinOutputFunc) Low() {
|
|
po(false)
|
|
}
|
|
|
|
// PinInputFunc is hardware abstraction for a pin which receives a
|
|
// digital signal and reads it (high or low level).
|
|
//
|
|
// // Code conversion demo: from machine.Pin to drivers.PinInputFunc
|
|
// input := machine.LED
|
|
// input.Configure(machine.PinConfig{Mode: machine.PinInputPulldown}) // or use machine.PinInputPullup or machine.PinInput
|
|
// var pin drivers.PinInputFunc = input.Get // Going from a machine.Pin to a drivers.PinInputFunc
|
|
type PinInputFunc func() (level bool)
|