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 I2cDevice
- type I2cOperations
- 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 I2cDevice ¶
type I2cDevice interface { I2cOperations SetAddress(int) error }
I2cDevice is the interface to a specific i2c bus
type I2cOperations ¶ added in v1.2.0
type I2cOperations interface { io.ReadWriteCloser ReadByte() (val byte, err error) ReadByteData(reg uint8) (val uint8, err error) ReadWordData(reg uint8) (val uint16, err error) WriteByte(val byte) (err error) WriteByteData(reg uint8, val uint8) (err error) WriteWordData(reg uint8, val uint16) (err error) WriteBlockData(reg uint8, b []byte) (err error) }
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.