- All Implemented Interfaces:
Describable
,Identity
,Lifecycle
,Extension
,I2C
,I2CRegisterDataReader
,I2CRegisterDataReaderWriter
,I2CRegisterDataWriter
,IO<I2C,
,I2CConfig, I2CProvider> IODataReader
,IODataWriter
,AutoCloseable
,Readable
PiGpioI2C class.
- Version:
- $Id: $Id
- Author:
- Robert Savage (http://www.savagehomeautomation.com)
-
Field Summary
Fields inherited from class com.pi4j.common.IdentityBase
description, id, logger, metadata, name
-
Constructor Summary
ConstructorsConstructorDescriptionLinuxFsI2C
(LinuxFsI2CBus i2CBus, I2CProvider provider, I2CConfig config) Constructor for PiGpioI2C. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
int
read()
int
read
(byte[] buffer, int offset, int length) int
readRegister
(byte[] register, byte[] buffer, int offset, int length) int
readRegister
(int register) int
readRegister
(int register, byte[] buffer, int offset, int length) int
write
(byte b) int
write
(byte[] data, int offset, int length) int
writeReadRegisterWord
(int register, int word) int
writeRegister
(byte[] register, byte[] data, int offset, int length) int
writeRegister
(int register, byte b) int
writeRegister
(int register, byte[] data, int offset, int length) Methods inherited from class com.pi4j.io.i2c.I2CBase
getRegister, isOpen, shutdown
Methods inherited from class com.pi4j.io.IOBase
config, context, describe, description, initialize, name, provider
Methods inherited from class com.pi4j.common.IdentityBase
description, id, metadata, name
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.pi4j.io.i2c.I2C
bus, device, getBus, getDevice, getRegister, isOpen, register
Methods inherited from interface com.pi4j.io.i2c.I2CRegisterDataReader
readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegister, readRegisterByte, readRegisterByteBuffer, readRegisterByteBuffer, readRegisterCharArray, readRegisterCharArray, readRegisterCharArray, readRegisterCharArray, readRegisterCharBuffer, readRegisterCharBuffer, readRegisterCharBuffer, readRegisterCharBuffer, readRegisterNBytes, readRegisterNBytes, readRegisterString, readRegisterString, readRegisterString, readRegisterString, readRegisterWord
Methods inherited from interface com.pi4j.io.i2c.I2CRegisterDataWriter
write, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegister, writeRegisterWord
Methods inherited from interface com.pi4j.common.Identity
description, getDescription, getId, getMetadata, getName, id, metadata, name
Methods inherited from interface com.pi4j.io.IODataReader
getInputStream, in, read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, readByte, readByteBuffer, readByteBuffer, readCharArray, readCharArray, readCharArray, readCharArray, readCharBuffer, readCharBuffer, readCharBuffer, readCharBuffer, readNBytes, readNBytes, readString, readString, readString, readString
Methods inherited from interface com.pi4j.io.IODataWriter
getOutputStream, out, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write
Methods inherited from interface com.pi4j.common.Lifecycle
initialize, shutdown
-
Constructor Details
-
LinuxFsI2C
Constructor for PiGpioI2C.
- Parameters:
provider
- aI2CProvider
object.config
- aI2CConfig
object.
-
-
Method Details
-
write
public int write(byte b) - Specified by:
write
in interfaceIODataWriter
-
write
public int write(byte[] data, int offset, int length) - Specified by:
write
in interfaceIODataWriter
-
read
public int read()- Specified by:
read
in interfaceIODataReader
-
read
public int read(byte[] buffer, int offset, int length) - Specified by:
read
in interfaceIODataReader
-
writeRegister
public int writeRegister(int register, byte b) - Specified by:
writeRegister
in interfaceI2CRegisterDataWriter
-
writeRegister
public int writeRegister(int register, byte[] data, int offset, int length) - Specified by:
writeRegister
in interfaceI2CRegisterDataWriter
-
writeRegister
public int writeRegister(byte[] register, byte[] data, int offset, int length) - Specified by:
writeRegister
in interfaceI2CRegisterDataWriter
-
readRegister
public int readRegister(int register) - Specified by:
readRegister
in interfaceI2CRegisterDataReader
-
readRegister
public int readRegister(int register, byte[] buffer, int offset, int length) - Specified by:
readRegister
in interfaceI2CRegisterDataReader
-
readRegister
public int readRegister(byte[] register, byte[] buffer, int offset, int length) This function uses the IOCTL interface to the LinuxFS. This is required so the I2C transaction uses an I2C RESTART. The following details explain creating the ByteBuffers used to create the 'C" structures for the IOCTL.
i2c_msg: The space *buf will be used to set a pointer to the data buffer. This pointer must be aligned to the machines 4 or 8 byte alignment.
This alignment is accomplished when the pointer is 'put' into the ByteBuffer
- struct i2c_msg {
- __u16 addr;
- __u16 flags;
- __u16 len;
- __u8 *buf; wordSize
- u8 buffer
- };
The ioctl command is I2CConstants.I2C_RDWR, this command requires two i2c_msg entries.
The following describes the ByteBuffer, ioctlData, contents:
- two byte address entry one
- two byte len entry one
- Possible padding for alignment
- word size area for pointer to write data buffer
- two byte address entry two
- two byte flags entry two
- two byte len entry two
- Possible padding for alignment
- word size area for pointer to read data buffer
- Bytes required to contain write buffer contents
- Bytes required to contain read data buffer
There is a second byte buffer, offsets, this specifies the ByteBuffer offset of any pointer paired with the ByteBuffer offset of the data pointed to.
This ByteBuffer contents- ByteBuffer position start of pointer to write data buffer
- ByteBuffer position start of write buffer contents
- ByteBuffer position start of pointer to read data buffer
- ByteBuffer position start of read buffer contents
- Specified by:
readRegister
in interfaceI2CRegisterDataReader
-
writeReadRegisterWord
public int writeReadRegisterWord(int register, int word) - Specified by:
writeReadRegisterWord
in interfaceI2CRegisterDataReaderWriter
-
close
public void close()
-