FastArduino  v1.7
C++ library to build fast but small Arduino/AVR projects
i2c::AbstractI2CSyncManager< ARCH_HANDLER_, MODE_, HAS_LC_, STATUS_HOOK_, HAS_DEBUG_, DEBUG_HOOK_ > Class Template Reference

Abstract synchronous I2C Manager for all MCU architectures. More...

#include <fastarduino/i2c_handler_common.h>

Public Member Functions

void begin ()
 Prepare and enable the MCU for I2C transmission. More...
 
void end ()
 Disable MCU I2C transmission. More...
 
void begin_ ()
 Prepare and enable the MCU for I2C transmission. More...
 
void end_ ()
 Disable MCU I2C transmission. More...
 

Protected Types

using ARCH_HANDLER = ARCH_HANDLER_
 
using MODE_TRAIT = I2CMode_trait< MODE_ >
 
using I2C_TRAIT = board_traits::TWI_trait
 
using REG8 = board_traits::REG8
 
using DEBUG = I2CDebugSupport< HAS_DEBUG_, DEBUG_HOOK_ >
 
using LC = I2CLifeCycleSupport< HAS_LC_ >
 
using ABSTRACT_FUTURE = future::AbstractFakeFuture
 
template<typename T >
using PROXY = typename LC::template PROXY< T >
 
template<typename OUT , typename IN >
using FUTURE = future::FakeFuture< OUT, IN >
 

Friends

template<typename >
class I2CDevice
 

Detailed Description

template<typename ARCH_HANDLER_, I2CMode MODE_, bool HAS_LC_, typename STATUS_HOOK_, bool HAS_DEBUG_, typename DEBUG_HOOK_>
class i2c::AbstractI2CSyncManager< ARCH_HANDLER_, MODE_, HAS_LC_, STATUS_HOOK_, HAS_DEBUG_, DEBUG_HOOK_ >

Abstract synchronous I2C Manager for all MCU architectures.

A specifi abstract subclass is defined for each MCU architecture (ATmega, ATtiny). You should never need to subclass AbstractI2CSyncManager yourself.

Template Parameters
ARCH_HANDLER_the type of an actual class handling I2C control on actual target architecture
MODE_the I2C mode for this manager
HAS_LC_tells if this I2C Manager must be able to handle proxies to Future that can move around and must be controlled by a LifeCycleManager; using false will generate smaller code.
STATUS_HOOK_the type of the hook to be called. This can be a simple function pointer (of type I2C_STATUS_HOOK) or a Functor class (or Functor class reference). Using a Functor class will generate smaller code.
HAS_DEBUG_tells this I2C Manager to call a debugging hook at each step of an I2C transaction; this is useful for debugging support for a new I2C device; using false will generate smaller code.
DEBUG_HOOK_the type of the hook to be called when HAS_DEBUG_ is true. This can be a simple function pointer (of type I2C_DEBUG_HOOK) or a Functor class (or Functor class reference). Using a Functor class will generate smaller code.
See also
I2CMode
I2C_STATUS_HOOK
I2C_DEBUG_HOOK
i2c::debug
i2c::status

Definition at line 412 of file i2c_handler_common.h.

Member Function Documentation

◆ begin()

template<typename ARCH_HANDLER_ , I2CMode MODE_, bool HAS_LC_, typename STATUS_HOOK_ , bool HAS_DEBUG_, typename DEBUG_HOOK_ >
void i2c::AbstractI2CSyncManager< ARCH_HANDLER_, MODE_, HAS_LC_, STATUS_HOOK_, HAS_DEBUG_, DEBUG_HOOK_ >::begin ( )
inline

Prepare and enable the MCU for I2C transmission.

Preparation includes setup of I2C pins (SDA and SCL). This method is synchronized.

See also
end()
begin_()

Definition at line 433 of file i2c_handler_common.h.

◆ end()

template<typename ARCH_HANDLER_ , I2CMode MODE_, bool HAS_LC_, typename STATUS_HOOK_ , bool HAS_DEBUG_, typename DEBUG_HOOK_ >
void i2c::AbstractI2CSyncManager< ARCH_HANDLER_, MODE_, HAS_LC_, STATUS_HOOK_, HAS_DEBUG_, DEBUG_HOOK_ >::end ( )
inline

Disable MCU I2C transmission.

This method is synchronized.

See also
begin()
end_()

Definition at line 444 of file i2c_handler_common.h.

◆ begin_()

template<typename ARCH_HANDLER_ , I2CMode MODE_, bool HAS_LC_, typename STATUS_HOOK_ , bool HAS_DEBUG_, typename DEBUG_HOOK_ >
void i2c::AbstractI2CSyncManager< ARCH_HANDLER_, MODE_, HAS_LC_, STATUS_HOOK_, HAS_DEBUG_, DEBUG_HOOK_ >::begin_ ( )
inline

Prepare and enable the MCU for I2C transmission.

Preparation includes setup of I2C pins (SDA and SCL). This method is NOT synchronized.

See also
end_()
begin()

Definition at line 456 of file i2c_handler_common.h.

◆ end_()

template<typename ARCH_HANDLER_ , I2CMode MODE_, bool HAS_LC_, typename STATUS_HOOK_ , bool HAS_DEBUG_, typename DEBUG_HOOK_ >
void i2c::AbstractI2CSyncManager< ARCH_HANDLER_, MODE_, HAS_LC_, STATUS_HOOK_, HAS_DEBUG_, DEBUG_HOOK_ >::end_ ( )
inline

Disable MCU I2C transmission.

This method is NOT synchronized.

See also
begin_()
end()

Definition at line 467 of file i2c_handler_common.h.


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