gpio

package
v0.0.0-...-91c7ab2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ValueInvalidErr = errors.New("read inconsistent value in pinfile")
)

Functions

This section is empty.

Types

type Edge

type Edge uint
const (
	EdgeNone Edge = iota
	EdgeRising
	EdgeFalling
	EdgeBoth
)

type LogicLevel

type LogicLevel uint
const (
	ActiveHigh LogicLevel = iota
	ActiveLow
)

type Pin

type Pin struct {
	Number uint
	// contains filtered or unexported fields
}

Pin represents a single pin, which can be used either for reading or writing

func NewInput

func NewInput(p uint) Pin

NewInput opens the given pin number for reading. The number provided should be the pin number known by the kernel

func NewOutput

func NewOutput(p uint, initHigh bool) Pin

NewOutput opens the given pin number for writing. The number provided should be the pin number known by the kernel NewOutput also needs to know whether the pin should be initialized high (true) or low (false)

func NewOutputWithDefault

func NewOutputWithDefault(p uint, defaultHigh bool) Pin

func (Pin) Cleanup

func (p Pin) Cleanup()

Cleanup close Pin and unexport it

func (Pin) Close

func (p Pin) Close()

Close releases the resources related to Pin. This doen't unexport Pin, use Cleanup() instead

func (Pin) High

func (p Pin) High() error

High sets the value of an output pin to logic high

func (Pin) Low

func (p Pin) Low() error

Low sets the value of an output pin to logic low

func (Pin) Read

func (p Pin) Read() (value uint, err error)

Read returns the value read at the pin as reported by the kernel. This should only be used for input pins

func (Pin) SetLogicLevel

func (p Pin) SetLogicLevel(logicLevel LogicLevel) error

SetLogicLevel sets the logic level for the Pin. This can be either "active high" or "active low"

type Value

type Value uint
const (
	Inactive Value = 0
	Active   Value = 1
)

type Watcher

type Watcher struct {
	Notification chan WatcherNotification
	// contains filtered or unexported fields
}

Watcher provides asynchronous notifications on input changes The user should supply it pins to watch with AddPin and then wait for changes with Watch Alternately, users may receive directly from the Notification channel

func NewWatcher

func NewWatcher() *Watcher

NewWatcher creates a new Watcher instance for asynchronous inputs

func (*Watcher) AddPin

func (w *Watcher) AddPin(p uint)

AddPin adds a new pin to be watched for changes. The pin is configured with logic level "active high" and watched for both rising and falling edges. The pin provided should be the pin known by the kernel

func (*Watcher) AddPinObject

func (w *Watcher) AddPinObject(pin Pin)

func (*Watcher) AddPinObjectWithEdgeAndLogic

func (w *Watcher) AddPinObjectWithEdgeAndLogic(pin Pin, edge Edge, logicLevel LogicLevel)

func (*Watcher) AddPinWithEdgeAndLogic

func (w *Watcher) AddPinWithEdgeAndLogic(p uint, edge Edge, logicLevel LogicLevel)

AddPinWithEdgeAndLogic adds a new pin to be watched for changes. Edges can be configured to be either rising, falling, or both. Logic level can be active high or active low. The pin provided should be the pin known by the kernel.

func (*Watcher) Close

func (w *Watcher) Close()

Close stops the watcher and releases all resources

func (*Watcher) RemovePin

func (w *Watcher) RemovePin(p uint)

RemovePin stops the watcher from watching the specified pin

func (*Watcher) Watch

func (w *Watcher) Watch() (p uint, v uint)

Watch blocks until one change occurs on one of the watched pins It returns the pin which changed and its new value Because the Watcher is not perfectly realtime it may miss very high frequency changes If that happens, it's possible to see consecutive changes with the same value Also, if the input is connected to a mechanical switch, the user of this library must deal with debouncing Users can either use Watch() or receive from Watcher.Notification directly

type WatcherNotification

type WatcherNotification struct {
	Pin   uint
	Value uint
}

WatcherNotification represents a single pin change The new value of the pin numbered by Pin is Value

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL