Documentation ¶
Overview ¶
Package sysfs provides generic access to linux gpio.
It is intended to be used while implementing support for a single board linux computer
Index ¶
- Constants
- func NewI2cDevice(location string) (d *i2cDevice, err error)
- func SetFilesystem(f Filesystem)
- func SetSyscall(s SystemCaller)
- func Stat(name string) (os.FileInfo, error)
- func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
- type DigitalPin
- type DigitalPinner
- type DigitalPinnerProvider
- type File
- type Filesystem
- type MockFile
- func (f *MockFile) Close() error
- func (f *MockFile) Fd() uintptr
- func (f *MockFile) Read(b []byte) (n int, err error)
- func (f *MockFile) ReadAt(b []byte, off int64) (n int, err error)
- func (f *MockFile) Seek(offset int64, whence int) (ret int64, err error)
- func (f *MockFile) Sync() (err error)
- func (f *MockFile) Write(b []byte) (n int, err error)
- func (f *MockFile) WriteString(s string) (ret int, err error)
- type MockFilesystem
- type MockSyscall
- type NativeFilesystem
- type NativeSyscall
- type PWMPin
- func (p *PWMPin) DutyCycle() (duty uint32, err error)
- func (p *PWMPin) Enable(enable bool) (err error)
- func (p *PWMPin) Export() error
- func (p *PWMPin) InvertPolarity(invert bool) (err error)
- func (p *PWMPin) Period() (period uint32, err error)
- func (p *PWMPin) Polarity() (polarity string, err error)
- func (p *PWMPin) SetDutyCycle(duty uint32) (err error)
- func (p *PWMPin) SetPeriod(period uint32) (err error)
- func (p *PWMPin) Unexport() (err error)
- type PWMPinner
- type PWMPinnerProvider
- type SystemCaller
Constants ¶
const ( // IN gpio direction IN = "in" // OUT gpio direction OUT = "out" // HIGH gpio level HIGH = 1 // LOW gpio level LOW = 0 // GPIOPATH default linux gpio path GPIOPATH = "/sys/class/gpio" )
const ( // From /usr/include/linux/i2c-dev.h: // ioctl signals I2C_SLAVE = 0x0703 I2C_FUNCS = 0x0705 I2C_SMBUS = 0x0720 // Read/write markers I2C_SMBUS_READ = 1 I2C_SMBUS_WRITE = 0 // From /usr/include/linux/i2c.h: // Adapter functionality I2C_FUNC_SMBUS_READ_BYTE = 0x00020000 I2C_FUNC_SMBUS_WRITE_BYTE = 0x00040000 I2C_FUNC_SMBUS_READ_BYTE_DATA = 0x00080000 I2C_FUNC_SMBUS_WRITE_BYTE_DATA = 0x00100000 I2C_FUNC_SMBUS_READ_WORD_DATA = 0x00200000 I2C_FUNC_SMBUS_WRITE_WORD_DATA = 0x00400000 I2C_FUNC_SMBUS_READ_BLOCK_DATA = 0x01000000 I2C_FUNC_SMBUS_WRITE_BLOCK_DATA = 0x02000000 // Transaction types I2C_SMBUS_BYTE = 1 I2C_SMBUS_BYTE_DATA = 2 I2C_SMBUS_WORD_DATA = 3 I2C_SMBUS_PROC_CALL = 4 I2C_SMBUS_BLOCK_DATA = 5 I2C_SMBUS_I2C_BLOCK_BROKEN = 6 I2C_SMBUS_BLOCK_PROC_CALL = 7 /* SMBus 2.0 */ I2C_SMBUS_I2C_BLOCK_DATA = 8 /* SMBus 2.0 */ )
Variables ¶
This section is empty.
Functions ¶
func NewI2cDevice ¶
NewI2cDevice returns an io.ReadWriteCloser with the proper ioctrl given an i2c bus location.
func SetFilesystem ¶
func SetFilesystem(f Filesystem)
SetFilesystem sets the filesystem implementation.
Types ¶
type DigitalPin ¶
type DigitalPin struct {
// contains filtered or unexported fields
}
func NewDigitalPin ¶
func NewDigitalPin(pin int, v ...string) *DigitalPin
NewDigitalPin returns a DigitalPin given the pin number and an optional sysfs pin label. If no label is supplied the default label will prepend "gpio" to the pin number, eg. a pin number of 10 will have a label of "gpio10"
func (*DigitalPin) Direction ¶
func (d *DigitalPin) Direction(dir string) error
func (*DigitalPin) Export ¶
func (d *DigitalPin) Export() error
func (*DigitalPin) Read ¶
func (d *DigitalPin) Read() (n int, err error)
func (*DigitalPin) Unexport ¶
func (d *DigitalPin) Unexport() error
func (*DigitalPin) Write ¶
func (d *DigitalPin) Write(b int) error
type DigitalPinner ¶ added in v1.5.0
type DigitalPinner 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 // Direction sets the direction for the pin Direction(string) error // Read reads the current value of the pin Read() (int, error) // Write writes to the pin Write(int) error }
DigitalPinner is the interface for sysfs gpio interactions
type DigitalPinnerProvider ¶ added in v1.5.0
type DigitalPinnerProvider interface {
DigitalPin(string, string) (DigitalPinner, error)
}
DigitalPinnerProvider is the interface that an Adaptor should implement to allow clients to obtain access to any DigitalPin's available on that board.
type File ¶
type File interface { Write(b []byte) (n int, err error) WriteString(s string) (ret int, err error) Sync() (err error) Read(b []byte) (n int, err error) ReadAt(b []byte, off int64) (n int, err error) Seek(offset int64, whence int) (ret int64, err error) Fd() uintptr Close() error }
A File represents basic IO interactions with the underlying file system
type Filesystem ¶
type Filesystem interface { OpenFile(name string, flag int, perm os.FileMode) (file File, err error) Stat(name string) (os.FileInfo, error) }
Filesystem opens files and returns either a native file system or user defined
type MockFile ¶
type MockFile struct { Contents string Seq int // When this file was last written or read. Opened bool Closed bool // contains filtered or unexported fields }
A MockFile represents a mock file that contains a single string. Any write overwrites, and any read returns from the start.
type MockFilesystem ¶
type MockFilesystem struct { Seq int // Increases with each write or read. Files map[string]*MockFile WithReadError bool WithWriteError bool }
MockFilesystem represents a filesystem of mock files.
func NewMockFilesystem ¶
func NewMockFilesystem(files []string) *MockFilesystem
NewMockFilesystem returns a new MockFilesystem given a list of file paths
func (*MockFilesystem) Add ¶
func (fs *MockFilesystem) Add(name string) *MockFile
Add adds a new file to fs.Files given a name, and returns the newly created file
type MockSyscall ¶
MockSyscall represents the mock Syscall
type NativeFilesystem ¶
type NativeFilesystem struct{}
NativeFilesystem represents the native file system implementation
type PWMPin ¶ added in v1.5.0
type PWMPin struct { Path string // contains filtered or unexported fields }
func (*PWMPin) DutyCycle ¶ added in v1.5.0
DutyCycle reads from pwm duty cycle path and returns value in nanoseconds
func (*PWMPin) InvertPolarity ¶ added in v1.5.0
InvertPolarity writes value to pwm polarity path
func (*PWMPin) Period ¶ added in v1.5.0
Period reads from pwm period path and returns value in nanoseconds
func (*PWMPin) SetDutyCycle ¶ added in v1.5.0
SetDutyCycle writes value to pwm duty cycle path duty is in nanoseconds
type PWMPinner ¶ added in v1.5.0
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 Enable(bool) (err error) // Polarity returns the polarity either normal or inverted Polarity() (polarity 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) }
PWMPin is the interface for sysfs PWM interactions
type PWMPinnerProvider ¶ added in v1.5.0
PWMPinnerProvider is the interface that an Adaptor should implement to allow clients to obtain access to any PWMPin's available on that board.