Class LinuxFsI2C
- 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 TypeMethodDescriptionintread()intread(byte[] buffer, int offset, int length) intreadRegister(byte[] register, byte[] buffer, int offset, int length) intreadRegister(int register) intreadRegister(int register, byte[] buffer, int offset, int length) intwrite(byte b) intwrite(byte[] data, int offset, int length) intwriteReadRegisterWord(int register, int word) intwriteRegister(byte[] register, byte[] data, int offset, int length) intwriteRegister(int register, byte b) intwriteRegister(int register, byte[] data, int offset, int length) Methods inherited from class com.pi4j.io.IOBase
config, context, describe, description, initialize, name, providerMethods inherited from class com.pi4j.common.IdentityBase
description, id, metadata, nameMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.pi4j.io.i2c.I2C
bus, close, device, execute, getBus, getDevice, getRegister, isOpen, register, writeRead, writeReadMethods 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, readRegisterWordMethods 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, writeRegisterWordMethods inherited from interface com.pi4j.common.Identity
description, getDescription, getId, getMetadata, getName, id, metadata, nameMethods 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, readStringMethods 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, writeMethods inherited from interface com.pi4j.common.Lifecycle
initialize, shutdown
-
Constructor Details
-
LinuxFsI2C
Constructor for PiGpioI2C.
- Parameters:
i2CBus-provider- aI2CProviderobject.config- aI2CConfigobject.
-
-
Method Details
-
write
public int write(byte b) - Specified by:
writein interfaceIODataWriter
-
write
public int write(byte[] data, int offset, int length) - Specified by:
writein interfaceIODataWriter
-
read
public int read()- Specified by:
readin interfaceIODataReader
-
read
public int read(byte[] buffer, int offset, int length) - Specified by:
readin interfaceIODataReader
-
writeRegister
public int writeRegister(int register, byte b) - Specified by:
writeRegisterin interfaceI2CRegisterDataWriter
-
writeRegister
public int writeRegister(int register, byte[] data, int offset, int length) - Specified by:
writeRegisterin interfaceI2CRegisterDataWriter
-
writeRegister
public int writeRegister(byte[] register, byte[] data, int offset, int length) - Specified by:
writeRegisterin interfaceI2CRegisterDataWriter
-
readRegister
public int readRegister(int register) - Specified by:
readRegisterin interfaceI2CRegisterDataReader
-
readRegister
public int readRegister(int register, byte[] buffer, int offset, int length) - Specified by:
readRegisterin 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:
readRegisterin interfaceI2CRegisterDataReader
-
writeReadRegisterWord
public int writeReadRegisterWord(int register, int word) - Specified by:
writeReadRegisterWordin interfaceI2CRegisterDataReaderWriter
-