94 lines
3.6 KiB
Go
94 lines
3.6 KiB
Go
package gobot
|
|
|
|
// DigitalPinOptioner is the interface to provide the possibility to change pin behavior for the next usage
|
|
type DigitalPinOptioner interface {
|
|
// SetLabel change the pins label
|
|
SetLabel(string) (changed bool)
|
|
// SetDirectionOutput sets the pins direction to output with the given initial value
|
|
SetDirectionOutput(initialState int) (changed bool)
|
|
// SetDirectionInput sets the pins direction to input
|
|
SetDirectionInput() (changed bool)
|
|
}
|
|
|
|
// DigitalPinOptionApplier is the interface to apply options to change pin behavior immediately
|
|
type DigitalPinOptionApplier interface {
|
|
// ApplyOptions apply all given options to the pin immediately
|
|
ApplyOptions(...func(DigitalPinOptioner) bool) error
|
|
}
|
|
|
|
// DigitalPinner is the interface for system gpio interactions
|
|
type DigitalPinner interface {
|
|
// Export exports the pin for use by the adaptor
|
|
Export() error
|
|
// Unexport releases the pin from the adaptor, so it is free for the operating system
|
|
Unexport() error
|
|
// Read reads the current value of the pin
|
|
Read() (int, error)
|
|
// Write writes to the pin
|
|
Write(int) error
|
|
// DigitalPinOptionApplier is the interface to change pin behavior immediately
|
|
DigitalPinOptionApplier
|
|
}
|
|
|
|
// DigitalPinValuer is the interface to get pin behavior for the next usage. The interface is and should be rarely used.
|
|
type DigitalPinValuer interface {
|
|
// DirectionBehavior gets the direction behavior when the pin is used the next time.
|
|
// This means its possibly not in this direction type at the moment.
|
|
DirectionBehavior() string
|
|
}
|
|
|
|
// DigitalPinnerProvider is the interface that an Adaptor should implement to allow clients to obtain
|
|
// access to any DigitalPin's available on that board. If the pin is initially acquired, it is an input.
|
|
// Pin direction and other options can be changed afterwards by pin.ApplyOptions() at any time.
|
|
type DigitalPinnerProvider interface {
|
|
DigitalPin(id string) (DigitalPinner, error)
|
|
}
|
|
|
|
// PWMPinner is the interface for system PWM interactions
|
|
type PWMPinner interface {
|
|
// Export exports the pin for use by the operating system
|
|
Export() error
|
|
// Unexport unexports the pin and releases the pin from the operating system
|
|
Unexport() error
|
|
// Enable enables/disables the PWM pin
|
|
// TODO: rename to "SetEnable(bool)" according to golang style and allow "Enable()" to be the getter function
|
|
Enable(bool) (err error)
|
|
// Polarity returns the polarity either normal or inverted
|
|
Polarity() (polarity string, err error)
|
|
// SetPolarity writes value to pwm polarity path
|
|
SetPolarity(value string) (err error)
|
|
// InvertPolarity sets the polarity to inverted if called with true
|
|
InvertPolarity(invert bool) (err error)
|
|
// Period returns the current PWM period for pin
|
|
Period() (period uint32, err error)
|
|
// SetPeriod sets the current PWM period for pin
|
|
SetPeriod(period uint32) (err error)
|
|
// DutyCycle returns the duty cycle for the pin
|
|
DutyCycle() (duty uint32, err error)
|
|
// SetDutyCycle writes the duty cycle to the pin
|
|
SetDutyCycle(duty uint32) (err error)
|
|
}
|
|
|
|
// PWMPinnerProvider is the interface that an Adaptor should implement to allow
|
|
// clients to obtain access to any PWMPin's available on that board.
|
|
type PWMPinnerProvider interface {
|
|
PWMPin(id string) (PWMPinner, error)
|
|
}
|
|
|
|
// Adaptor is the interface that describes an adaptor in gobot
|
|
type Adaptor interface {
|
|
// Name returns the label for the Adaptor
|
|
Name() string
|
|
// SetName sets the label for the Adaptor
|
|
SetName(n string)
|
|
// Connect initiates the Adaptor
|
|
Connect() error
|
|
// Finalize terminates the Adaptor
|
|
Finalize() error
|
|
}
|
|
|
|
// Porter is the interface that describes an adaptor's port
|
|
type Porter interface {
|
|
Port() string
|
|
}
|