|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
#include <active_i2c.hpp>

Public Types | |
| using | cb_t = stdext::inplace_function< void(i2c::op_t, i2c::status)> |
| Represents the type of the callback operation. More... | |
| using | sweep_list_t = etl::vector< uint8_t, 128 > |
| using | sweep_cb_t = stdext::inplace_function< void(void)> |
Public Member Functions | |
| activeMaster (embvm::i2c::master &m) noexcept | |
| ~activeMaster ()=default | |
| void | process_ (ao_storage pair) noexcept |
| virtual void | configure (i2c::baud baud, i2c::pullups pull=i2c::pullups::external) noexcept |
| Configure the I2C bus. More... | |
| i2c::state | state () const noexcept |
| Check the I2C bus status. More... | |
| i2c::pullups | pullups (i2c::pullups pullups) noexcept |
| Configure pull-ups. More... | |
| i2c::pullups | pullups () const noexcept |
| Check the pull-up configuration. More... | |
| void | sweep (sweep_list_t &found_list, const sweep_cb_t &cb) noexcept |
| Perform an I2C bus sweep to identify active devices. More... | |
| void | start () noexcept |
| Start the driver. More... | |
| void | stop () noexcept |
| Stop the driver. More... | |
| void | restart () noexcept |
| Restart the driver. More... | |
| type_safe::boolean | started () const noexcept |
| Check if the driver has been started. More... | |
| constexpr embvm::DriverType_t | DriverType () const noexcept |
| Returns the registered type ID of the driver. More... | |
| constexpr const std::string_view & | name () const noexcept |
| Provides a string_view reference of the driver name. More... | |
| constexpr const char * | name_cstr () const noexcept |
| Provides a c-string version of the driver name. More... | |
| virtual DriverBase & | operator++ () noexcept |
| Increment operator is a no-op, but is used for iterator compatibility. More... | |
| size_t | queuedCount () const noexcept |
| Get the number of operations in the queue. More... | |
| bool | enqueue (embvm::i2c::ao_storage t) noexcept |
| Add an operation to the queue. More... | |
| void | shutdown () noexcept |
| Shutdown the active object. More... | |
Static Public Member Functions | |
| static constexpr embvm::DriverType | type () noexcept |
| I2C Driver Type ID. More... | |
Protected Attributes | |
| i2c::pullups | pullups_ = i2c::pullups::external |
| Tracks the active pull-up configuration. More... | |
| i2c::state | state_ = i2c::state::idle |
| Tracks the status of the I2C bus. More... | |
| type_safe::boolean | started_ = false |
| Tracks the driver state. More... | |
| const std::string_view | name_ |
| Name of the driver instance. More... | |
| const embvm::DriverType_t | type_ |
| Type ID of the driver instance. More... | |
Private Types | |
| using | ao_base = embutil::activeObject< activeMaster, ao_storage, TQueueSize, TLock, TCond > |
Private Member Functions | |
| void | start_ () noexcept final |
| Derived classes override the start_ method to control driver-specific startup behavior. More... | |
| void | stop_ () noexcept final |
| Derived classes override the start_ method to control driver-specific startup behavior. More... | |
| void | configure_ (embvm::i2c::pullups pullup) noexcept final |
| Configure the I2C bus for operation. More... | |
| embvm::i2c::status | transfer_ (const embvm::i2c::op_t &op, const embvm::i2c::master::cb_t &cb) noexcept final |
| embvm::i2c::baud | baudrate_ (embvm::i2c::baud baud) noexcept final |
| embvm::i2c::pullups | setPullups_ (embvm::i2c::pullups pullups) noexcept final |
| Configure pull-ups. More... | |
Private Attributes | |
| embvm::i2c::master & | m_ |
|
private |
|
inherited |
Represents the type of the callback operation.
|
inherited |
|
inherited |
|
inlineexplicitnoexcept |
|
default |
|
inlinefinalprivatevirtualnoexcept |
Implements embvm::i2c::master.
|
inlinevirtualnoexceptinherited |
Configure the I2C bus.
Configures the I2C bus for operation and sets the target baud rate and pull-ups.
Derived classes must implement the configure_() function to set up the target hardware.
| baud | The target baudrate (as an i2c::baud enumeration rather than integral Hz). TODO: Tolerance - allowed relative tolerance for the resulting baudrate |
| pull | The pullup setting, which defaults to external pull-ups (in hardware). |
References embvm::i2c::master::configure_(), and embvm::i2c::master::pullups().
Referenced by embvm::i2c::activeMaster< 128 >::configure_(), and FWDemoSimulatorHWPlatform::init_().
|
inlinefinalprivatevirtualnoexcept |
Configure the I2C bus for operation.
This function is implemented by the derived class. It is responsible for configuring the target hardware for operation.
| pullups | The target pull-up configuration. |
Implements embvm::i2c::master.
|
inlinenoexceptinherited |
Returns the registered type ID of the driver.
When using DriverBase interfaces, clients can retrieve the registered driver type in order to up-cast to the correct interface.
The type is returned as a embvm::DriverType_t rather than a embvm::DriverType enum to work with custom user-defined types. Enforcing a embvm::DriverType return value would prevent clients from defining and using their own custom types.
References embvm::DriverBase::type_.
|
inlinenoexceptinherited |
Add an operation to the queue.
This function can be called directly, or by functions internal to the activeObject. For example, the "transfer" API enqueues transfer operations.
This function is marked noexcept because we want the program to terminate if an exception results from this call. For example, the underlying queue may throw on push.
| t | The operation data object to enqueue for later processing. |
|
inlinenoexceptinherited |
Provides a string_view reference of the driver name.
std::string_view ref containing the driver name. References embvm::DriverBase::name_.
|
inlinenoexceptinherited |
Provides a c-string version of the driver name.
References embvm::DriverBase::name_.
|
inlinevirtualnoexceptinherited |
Increment operator is a no-op, but is used for iterator compatibility.
|
inlinenoexcept |
|
inlinenoexceptinherited |
Configure pull-ups.
| pullups | The target pull-up setting. |
References embvm::i2c::master::pullups_, and embvm::i2c::master::setPullups_().
Referenced by embvm::i2c::activeMaster< 128 >::setPullups_().
|
inlinenoexceptinherited |
Check the pull-up configuration.
References embvm::i2c::master::pullups_.
Referenced by embvm::i2c::master::configure(), nRF51i2cMaster_Blocking< TTWIIndex, TSclPin, TSdaPin >::setPullups_(), and nRFi2cMaster< NordicTWIM0, nRFPinID< 0, 27 >, nRFPinID< 0, 26 > >::setPullups_().
|
inlinenoexceptinherited |
Get the number of operations in the queue.
|
inlinenoexceptinherited |
Restart the driver.
Calls stop() and then start() on the driver. If the driver is not started, then it will be started after the start() function is invoked.
References embvm::DriverBase::start(), and embvm::DriverBase::stop().
|
inlinefinalprivatevirtualnoexcept |
Configure pull-ups.
This function is implemented by the derived class. It is responsible for configuring the target hardware to use the requested pullup setting.
| pullups | The target pull-up setting. |
Implements embvm::i2c::master.
|
inlinenoexceptinherited |
Shutdown the active object.
Call this function in the parent class destructor to stop the AO thread operation before destroying the parent class. This will prevent memory access problems due to race conidtions during destruction.
This function is marked noexcept because we want the program to terminate if an exception results from this call.
The shutdown process is permanent and cannot be reversed without recreating the object.
|
inlinenoexceptinherited |
Start the driver.
If the driver is not started, call the start_() function defined by the derived class. (Template Method Pattern)
References embvm::DriverBase::start_(), and embvm::DriverBase::started_.
Referenced by NRF52DongleHWPlatform::init_(), NRF52DKHWPlatform::init_(), BlinkySimulatorHWPlatform::init_(), FWDemoSimulatorHWPlatform::init_(), FrameworkDemoSimPlatform::initHWPlatform_(), embvm::DriverBase::restart(), embvm::timer::Timer::restart(), embvm::spi::activeMaster< TQueueSize, TLock, TCond >::start_(), embvm::i2c::activeMaster< 128 >::start_(), embdrv::aardvarkSPIMaster::start_(), embdrv::aardvarkI2CMaster::start_(), embdrv::aardvarkGPIOInput< 4 >::start_(), embdrv::vl53l1x::start_(), embdrv::aardvarkGPIOOutput< 5 >::start_(), BlinkySimulatorHWPlatform::startBlink(), and FWDemoSimulatorHWPlatform::startLEDTimer().
|
inlinefinalprivatevirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::i2c::master.
|
inlinenoexceptinherited |
Check if the driver has been started.
true if the driver is running (started), false if not running (stopped). References embvm::DriverBase::started_.
Referenced by embdrv::aardvarkSPIMaster::configure_(), embdrv::aardvarkGPIOInput< 4 >::get(), embdrv::aardvarkGPIOOutput< 5 >::set(), embdrv::vl53l1x::start_(), embdrv::aardvarkAdapter::start_(), and embdrv::aardvarkAdapter::stop_().
|
inlinenoexceptinherited |
Check the I2C bus status.
References embvm::i2c::master::state_.
|
inlinenoexceptinherited |
Stop the driver.
If the driver has been started, call the stop_() function defined by the derived class. (Template Method Pattern)
References embvm::DriverBase::started_, and embvm::DriverBase::stop_().
Referenced by embvm::DriverBase::restart(), embvm::timer::Timer::restart(), embvm::spi::activeMaster< TQueueSize, TLock, TCond >::stop_(), embvm::i2c::activeMaster< 128 >::stop_(), embdrv::aardvarkSPIMaster::stop_(), embdrv::aardvarkI2CMaster::stop_(), embdrv::aardvarkGPIOInput< 4 >::stop_(), embdrv::aardvarkGPIOOutput< 5 >::stop_(), FWDemoSimulatorHWPlatform::~FWDemoSimulatorHWPlatform(), and embdrv::SimulatorTimer::~SimulatorTimer().
|
inlinefinalprivatevirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::i2c::master.
|
noexceptinherited |
Perform an I2C bus sweep to identify active devices.
The sweep function pings all I2C addresses. Devices which ACK are stored in a list and returned via callback.
| [in,out] | found_list | Caller's memory which will contain the successfully found ping addresses |
| [in] | cb | The callback which will be called to indicate that the sweep is complete. After the cb is called, found_list is valid and can be used by the caller. |
References embvm::i2c::op_t::address, embvm::i2c::busy, I2C_ADDR_MAX, and embvm::i2c::op_t::op.
|
inlinefinalprivatevirtualnoexcept |
Implements embvm::i2c::master.
|
inlinestaticnoexceptinherited |
|
private |
|
protectedinherited |
Name of the driver instance.
Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().
|
protectedinherited |
Tracks the active pull-up configuration.
Referenced by embvm::i2c::master::pullups().
|
protectedinherited |
Tracks the driver state.
True if the driver has been started, false if it has been stopped or not yet started.
Referenced by embvm::DriverBase::start(), embvm::DriverBase::started(), and embvm::DriverBase::stop().
|
protectedinherited |
Tracks the status of the I2C bus.
Referenced by embvm::i2c::master::state().
|
protectedinherited |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
1.8.15