AceWire  0.4.0
Unified interface for selecting different I2C implementations on Arduino platforms
Public Member Functions | List of all members
ace_wire::TwoWireInterface< T_WIRE > Class Template Reference

A thin wrapper around the default TwoWire class and its Wire object provided by most Arduino platforms. More...

#include <TwoWireInterface.h>

Public Member Functions

 TwoWireInterface (T_WIRE &wire)
 Constructor. More...
 
void begin () const
 Initialize the interface. More...
 
void end () const
 End the interface. More...
 
uint8_t beginTransmission (uint8_t addr) const
 Prepare the write buffer to accept a sequence of data, and save the addr for transmission when endTransmission() is called. More...
 
uint8_t write (uint8_t data) const
 Write data into the write buffer. More...
 
uint8_t endTransmission (bool sendStop=true) const
 Send the data in the buffer, with a STOP condition if sendStop is true. More...
 
uint8_t requestFrom (uint8_t addr, uint8_t quantity, bool sendStop=true) const
 Read bytes from the slave and store in buffer owned by TwoWire and send a STOP condition if sendStop is true. More...
 
uint8_t read () const
 Read byte from the TwoWire receive buffer.
 
 TwoWireInterface (const TwoWireInterface &)=default
 
TwoWireInterfaceoperator= (const TwoWireInterface &)=default
 

Detailed Description

template<typename T_WIRE>
class ace_wire::TwoWireInterface< T_WIRE >

A thin wrapper around the default TwoWire class and its Wire object provided by most Arduino platforms.

All TwoWire instances use a TX and RX buffer of varying sizes. For example:

This is a template class to avoid including the <Wire.h> header file, which increases flash memory on AVR by about 1000 byte even if the Wire object is never used.

Template Parameters
T_WIREunderlying class that implements the I2C protocol which will always be TwoWire

Definition at line 50 of file TwoWireInterface.h.

Constructor & Destructor Documentation

◆ TwoWireInterface()

template<typename T_WIRE >
ace_wire::TwoWireInterface< T_WIRE >::TwoWireInterface ( T_WIRE &  wire)
inlineexplicit

Constructor.

Parameters
wireinstance of TwoWire which will always be the Wire object

Definition at line 56 of file TwoWireInterface.h.

Member Function Documentation

◆ begin()

template<typename T_WIRE >
void ace_wire::TwoWireInterface< T_WIRE >::begin ( ) const
inline

Initialize the interface.

Currently does nothing.

Definition at line 59 of file TwoWireInterface.h.

◆ beginTransmission()

template<typename T_WIRE >
uint8_t ace_wire::TwoWireInterface< T_WIRE >::beginTransmission ( uint8_t  addr) const
inline

Prepare the write buffer to accept a sequence of data, and save the addr for transmission when endTransmission() is called.

Returns
always returns 0 to indicate success because the addr is simply written into a buffer

Definition at line 71 of file TwoWireInterface.h.

◆ end()

template<typename T_WIRE >
void ace_wire::TwoWireInterface< T_WIRE >::end ( ) const
inline

End the interface.

Currently does nothing.

Definition at line 62 of file TwoWireInterface.h.

◆ endTransmission()

template<typename T_WIRE >
uint8_t ace_wire::TwoWireInterface< T_WIRE >::endTransmission ( bool  sendStop = true) const
inline

Send the data in the buffer, with a STOP condition if sendStop is true.

Returns the value returned by the underlying TwoWire::endTransmission() method, which returns the values documented in the twi_writeTo() function:

  • 0: success
  • 1: length too long for buffer
  • 2: address send, NACK received
  • 3: data send, NACK received
  • 4: other twi error (lost bus arbitration, bus error, ..)

Definition at line 98 of file TwoWireInterface.h.

◆ requestFrom()

template<typename T_WIRE >
uint8_t ace_wire::TwoWireInterface< T_WIRE >::requestFrom ( uint8_t  addr,
uint8_t  quantity,
bool  sendStop = true 
) const
inline

Read bytes from the slave and store in buffer owned by TwoWire and send a STOP condition if sendStop is true.

Parameters
addrI2C address
quantitynumber of bytes to read
sendStopwhether the STOP condition should be sent at end
Returns
the value returned by the underlying T_WIRE::requestFrom() method, which will normally be 'quantity'

Definition at line 113 of file TwoWireInterface.h.

◆ write()

template<typename T_WIRE >
uint8_t ace_wire::TwoWireInterface< T_WIRE >::write ( uint8_t  data) const
inline

Write data into the write buffer.

Returns
the number of bytes written into buffer, will always be 1.

Definition at line 81 of file TwoWireInterface.h.


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