EVShield  v1.3
EVShield Library Reference by mindsensors.com
BaseI2CDevice Class Reference

This class implements hardware I2C protocol used by EVShield/NXShield on an Arduino. More...

#include <BaseI2CDevice.h>

Inheritance diagram for BaseI2CDevice:
EVShieldI2C EVs_AbsoluteIMU EVs_AngleSensor EVs_CurrentMeter EVs_DISTNx EVs_EV3SensorMux EVs_LightSensorArray EVs_LineLeader EVs_MagicWand EVs_NumericPad EVs_NXTCam EVs_NXTMMX EVs_NXTServo EVs_PFMate EVs_PiLight EVs_PSPNx EVs_RTC EVs_VoltMeter EVShieldBank

Public Member Functions

 BaseI2CDevice (uint8_t i2c_address)
 
void initProtocol ()
 
uint8_t * readRegisters (uint8_t start_register, uint8_t bytes_to_read, uint8_t *buffer=0, uint8_t buffer_length=0, bool clear_buffer=false)
 
uint8_t readByte (uint8_t location)
 
int16_t readInteger (uint8_t location)
 
uint32_t readLong (uint8_t location)
 
char * readString (uint8_t location, uint8_t bytes_to_read, uint8_t *buffer=0, uint8_t buffer_length=0)
 
bool writeRegisters (uint8_t start_register, uint8_t bytes_to_write, uint8_t *buffer=0)
 
bool writeByte (uint8_t location, uint8_t data)
 
bool writeInteger (uint8_t location, uint16_t data)
 
bool writeLong (uint8_t location, uint32_t data)
 
bool checkAddress ()
 
bool setAddress (uint8_t i2c_address)
 
uint8_t getAddress ()
 
uint8_t getWriteErrorCode ()
 
char * getFirmwareVersion ()
 
char * getVendorID ()
 
char * getDeviceID ()
 
char * getFeatureSet ()
 

Static Public Attributes

static uint8_t * _buffer = 0
 
static bool b_initialized = false
 

Protected Member Functions

void setWriteErrorCode (uint8_t code)
 

Detailed Description

This class implements hardware I2C protocol used by EVShield/NXShield on an Arduino.

Constructor & Destructor Documentation

§ BaseI2CDevice()

BaseI2CDevice::BaseI2CDevice ( uint8_t  i2c_address)

constructor for the BaseI2C Device class; requires the i2c address of the device

Member Function Documentation

§ checkAddress()

bool BaseI2CDevice::checkAddress ( )

validate if a device is attached to the i2c bus with the specified i2c address

checkAddress() this function checks to see if there is any device at its specified address

§ getAddress()

uint8_t BaseI2CDevice::getAddress ( )

returns the current address for this instance of BaseI2CDevice

§ getDeviceID()

char * BaseI2CDevice::getDeviceID ( )

get the name of the device

§ getFeatureSet()

char * BaseI2CDevice::getFeatureSet ( )

returns the features on the device, not supported by all devices

returns a string indicating the features on this device some devices may return null.

§ getFirmwareVersion()

char * BaseI2CDevice::getFirmwareVersion ( )

return the firware version id of the device

§ getVendorID()

char * BaseI2CDevice::getVendorID ( )

return the name of the vendor for the device

§ getWriteErrorCode()

uint8_t BaseI2CDevice::getWriteErrorCode ( )

returns the error code for an error with the Wire.h library on the i2c bus

§ initProtocol()

void BaseI2CDevice::initProtocol ( )

initialize hardware i2c using the Wire.h library

§ readByte()

uint8_t BaseI2CDevice::readByte ( uint8_t  location)

Read a byte from specified location

Parameters
locationaddress to read at
Returns
a byte value read from the location

§ readInteger()

int16_t BaseI2CDevice::readInteger ( uint8_t  location)

Read an integer from specified location. Integer comprises of 2 bytes.

Parameters
locationaddress to read at
Returns
an integer value read from the location

§ readLong()

uint32_t BaseI2CDevice::readLong ( uint8_t  location)

Read a long from specified location. Long comprises of 4 bytes.

Parameters
locationaddress to read at
Returns
a long value read from the location

§ readRegisters()

uint8_t * BaseI2CDevice::readRegisters ( uint8_t  start_register,
uint8_t  bytes_to_read,
uint8_t *  buffer = 0,
uint8_t  buffer_length = 0,
bool  clear_buffer = false 
)

read specified number of bytes from the start register.

Parameters
start_registerlocation to start reading from
bytes_to_readNumber of bytes to read (max 16 for LEGO compatible devices)
buffer(optional) buffer to read the data into
buffer_length(optional) length of the buffer if it was provided
clear_buffer(optional) to clear the buffer or not before using.
Returns
pointer to data buffer that was read. If buffer was not provided, this is internal pointer.

§ readString()

char * BaseI2CDevice::readString ( uint8_t  location,
uint8_t  bytes_to_read,
uint8_t *  buffer = 0,
uint8_t  buffer_length = 0 
)

Read a string from specified location

Parameters
locationaddress to read at
bytes_to_readnumber of bytes to read
bufferoptional, a buffer to read the data into.
buffer_lengthoptional, length of the buffer supplied.
Returns
a char array read from the location

§ setAddress()

bool BaseI2CDevice::setAddress ( uint8_t  i2c_address)

set the i2c address for this device

Parameters
i2c_addressnew device address.

setAddress(address) this function set's the i2c address for this instance to given address Note that, generally i2c address of a physical device does not change. Use this function if there are multiple devices on your bus and you want to conserve processor memory from instantiating another class instance.

§ setWriteErrorCode()

void BaseI2CDevice::setWriteErrorCode ( uint8_t  code)
protected

write the internal error code

§ writeByte()

bool BaseI2CDevice::writeByte ( uint8_t  location,
uint8_t  data 
)

write one byte to the specified register location

Parameters
locationlocation to write to.
datathe data to write.

§ writeInteger()

bool BaseI2CDevice::writeInteger ( uint8_t  location,
uint16_t  data 
)

write two bytes (int) to the specified register location

Parameters
locationlocation to write to.
datathe data to write.

§ writeLong()

bool BaseI2CDevice::writeLong ( uint8_t  location,
uint32_t  data 
)

write four bytes (long) to the specified register location

Parameters
locationlocation to write to.
datathe data to write.

§ writeRegisters()

bool BaseI2CDevice::writeRegisters ( uint8_t  start_register,
uint8_t  bytes_to_write,
uint8_t *  buffer = 0 
)

write data bytes to the i2c device starting from the start register

Parameters
start_registerlocation to write at.
bytes_to_writeNumber of bytes to write
buffer(optional) data buffer, if not supplied, data from internal buffer is used.

Member Data Documentation

§ _buffer

uint8_t * BaseI2CDevice::_buffer = 0
static

Buffer used for data that is returned from I2C commands


The documentation for this class was generated from the following files: