|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
Drivers intended for use with unit test code. More...
|
Classes | |
| class | test::TestDriverBase |
| Test driver that enables testing DriverBase. More... | |
| class | test::UnitTestGPIOInput |
| Unit Test GPIO Input Driver. More... | |
| class | test::UnitTestGPIOInputWithPullup |
| Unit Test GPIO Input Driver, with a pullup. More... | |
| class | test::i2cTestDriver |
| I2C Master Unit Test Driver. More... | |
| class | test::spiTestDriver |
| SPI Master Unit Test Driver. More... | |
Drivers intended for use with unit test code.
| class test::TestDriverBase |
Test driver that enables testing DriverBase.

Public Member Functions | |
| TestDriverBase (const char *name, uint32_t c=embvm::DriverType::Undefined) noexcept | |
| Create a driver base. More... | |
| TestDriverBase (const std::string &name, uint32_t c=embvm::DriverType::Undefined) noexcept | |
| TestDriverBase (const std::string_view &name, uint32_t c=embvm::DriverType::Undefined) noexcept | |
| ~TestDriverBase () noexcept final | |
| Default destructor. 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... | |
Protected Attributes | |
| 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 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... | |
|
inlinenoexcept |
Create a driver base.
| name | The name of the driver base |
| c | The type of the driver base |
|
inlinenoexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inlinenoexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
finalnoexcept |
Default destructor.
|
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 |
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.
|
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().
|
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().
|
finalprivatevirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::DriverBase.
|
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 |
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().
|
finalprivatevirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::DriverBase.
|
protectedinherited |
Name of the driver instance.
Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().
|
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 |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
| class test::UnitTestGPIOInput |
Unit Test GPIO Input Driver.

Public Member Functions | |
| bool | get () noexcept final |
| Get the current GPIO pin state. More... | |
| gpio::pull | pull () const noexcept |
| Get the current pull configuration. More... | |
| gpio::direction | direction () const noexcept |
| Check the direction of the GPIO pin. 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... | |
Static Public Member Functions | |
| static constexpr embvm::DriverType | type () noexcept |
| GPIO Driver Type ID. More... | |
Protected Member Functions | |
| embvm::gpio::pull | pull_ (embvm::gpio::pull p) noexcept final |
| Set the pull configuration in hardware. More... | |
| 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... | |
Protected Attributes | |
| 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... | |
|
inlinenoexceptinherited |
Check the direction of the GPIO pin.
|
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_.
|
finalvirtualnoexcept |
Get the current GPIO pin state.
Derived classes must implement the get() function.
Implements embvm::gpio::input< embvm::gpio::pull::none >.
References embvm::gpio::none, embvm::gpio::input< embvm::gpio::pull::none >::pull(), embvm::gpio::pulldown, and embvm::gpio::pullup.
|
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.
|
inlinenoexceptinherited |
Get the current pull configuration.
|
finalprotectedvirtualnoexcept |
Set the pull configuration in hardware.
Derived classes must implement the pull_(gpio::pull p) function.
Implements embvm::gpio::input< embvm::gpio::pull::none >.
References p.
|
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().
|
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().
|
finalprotectedvirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::gpio::input< embvm::gpio::pull::none >.
|
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 |
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().
|
finalprotectedvirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::gpio::input< embvm::gpio::pull::none >.
|
inlinestaticnoexceptinherited |
GPIO Driver Type ID.
|
protectedinherited |
Name of the driver instance.
Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().
|
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 |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
| class test::UnitTestGPIOInputWithPullup |
Unit Test GPIO Input Driver, with a pullup.

Public Member Functions | |
| bool | get () noexcept final |
| Get the current GPIO pin state. More... | |
| gpio::pull | pull () const noexcept |
| Get the current pull configuration. More... | |
| gpio::direction | direction () const noexcept |
| Check the direction of the GPIO pin. 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... | |
Static Public Member Functions | |
| static constexpr embvm::DriverType | type () noexcept |
| GPIO Driver Type ID. More... | |
Protected Member Functions | |
| embvm::gpio::pull | pull_ (embvm::gpio::pull p) noexcept final |
| Set the pull configuration in hardware. More... | |
| 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... | |
Protected Attributes | |
| 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 Attributes | |
| embvm::gpio::pull | p_ = embvm::gpio::pull::pullup |
|
inlinenoexceptinherited |
Check the direction of the GPIO pin.
|
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_.
|
finalvirtualnoexcept |
Get the current GPIO pin state.
Derived classes must implement the get() function.
Implements embvm::gpio::input< embvm::gpio::pull::pullup >.
References embvm::gpio::none, embvm::gpio::input< embvm::gpio::pull::pullup >::pull(), embvm::gpio::pulldown, and embvm::gpio::pullup.
|
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.
|
inlinenoexceptinherited |
Get the current pull configuration.
|
finalprotectedvirtualnoexcept |
Set the pull configuration in hardware.
Derived classes must implement the pull_(gpio::pull p) function.
Implements embvm::gpio::input< embvm::gpio::pull::pullup >.
References p.
Referenced by start_().
|
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().
|
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().
|
finalprotectedvirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::gpio::input< embvm::gpio::pull::pullup >.
References p_, pull_(), and embvm::gpio::pullup.
|
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 |
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().
|
finalprotectedvirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::gpio::input< embvm::gpio::pull::pullup >.
|
inlinestaticnoexceptinherited |
GPIO Driver Type ID.
|
protectedinherited |
Name of the driver instance.
Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().
|
private |
Referenced by start_().
|
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 |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
| class test::i2cTestDriver |
I2C Master Unit Test Driver.
This driver can be used as a "fake" for a unit test.
You can prepare return data for a TX operation:
You can verify the data that was transmitted:

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 | |
| i2cTestDriver () noexcept | |
| Create a generic I2C Master. More... | |
| i2cTestDriver (const char *name) noexcept | |
| Create a named I2C master. More... | |
| ~i2cTestDriver () noexcept final | |
| Default destructor. More... | |
| bool | checkTxBuffer (uint8_t *data, size_t length) noexcept |
| Verify that the driver transmitted the correct data. More... | |
| void | clearTxBuffer () noexcept |
| Clear the stored TX buffer. More... | |
| void | appendToRxBuffer (uint8_t *data, size_t length) noexcept |
| Append data to the RX buffer to be returned with the next read operation. More... | |
| void | clearRxBuffer () noexcept |
| Clears the data stored in the RX buffer. More... | |
| 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... | |
Static Public Member Functions | |
| static constexpr embvm::DriverType | type () noexcept |
| I2C Driver Type ID. More... | |
Protected 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) 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... | |
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 Attributes | |
| std::vector< uint8_t > | txBuffer_ |
| Storage represnting the tx buffer. More... | |
| std::queue< uint8_t > | rxBuffer_ |
| Storage representing the rx bufferre. More... | |
|
inherited |
Represents the type of the callback operation.
|
inherited |
|
inherited |
|
inlinenoexcept |
Create a generic I2C Master.
|
inlineexplicitnoexcept |
Create a named I2C master.
| name | The name of this i2c instance. |
|
finalnoexcept |
Default destructor.
|
finalprotectedvirtualnoexcept |
Implements embvm::i2c::master.
|
inlinenoexcept |
|
inlinenoexcept |
Clear the stored TX buffer.
References txBuffer_.
|
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_().
|
finalprotectedvirtualnoexcept |
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 |
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.
|
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 |
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().
|
finalprotectedvirtualnoexcept |
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 |
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().
|
finalprotectedvirtualnoexcept |
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().
|
finalprotectedvirtualnoexcept |
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.
|
finalprotectedvirtualnoexcept |
|
inlinestaticnoexceptinherited |
|
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().
|
private |
Storage representing the rx bufferre.
Referenced by appendToRxBuffer(), and clearRxBuffer().
|
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().
|
private |
Storage represnting the tx buffer.
Referenced by checkTxBuffer(), and clearTxBuffer().
|
protectedinherited |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
| class test::spiTestDriver |
SPI Master Unit Test Driver.
This driver can be used as a "fake" for a unit test.
You can prepare return data for a TX operation:
You can verify the data that was transmitted:

Public Member Functions | |
| spiTestDriver (const embvm::spi::master::DispatcherFunc &dispatcher=nullptr) noexcept | |
| Create a generic spi driver with a dispatcher. More... | |
| spiTestDriver (const char *name, const embvm::spi::master::DispatcherFunc &dispatcher=nullptr) noexcept | |
| Create a named spi driver with a dispatcher. More... | |
| ~spiTestDriver () noexcept final | |
| Default destructor. More... | |
| bool | checkTxBuffer (uint8_t *data, size_t length) noexcept |
| Verify that the driver transmitted the correct data. More... | |
| void | clearTxBuffer () noexcept |
| Clear the stored TX buffer. More... | |
| void | appendToRxBuffer (uint8_t *data, size_t length) noexcept |
| Append data to the RX buffer to be returned with the next read operation. More... | |
| void | clearRxBuffer () noexcept |
| Clears the data stored in the RX buffer. More... | |
| virtual void | configure (spi::baud_t baud) noexcept |
| Configure the SPI bus. More... | |
| spi::mode | mode () const noexcept |
| Get the current SPI bus mode. More... | |
| spi::mode | mode (spi::mode mode) noexcept |
| Set the SPI bus mode. More... | |
| spi::order | order () const noexcept |
| Get the current SPI bus byte order. More... | |
| spi::order | order (spi::order order) noexcept |
| Set the SPI bus byte order. 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... | |
Static Public Member Functions | |
| static constexpr embvm::DriverType | type () noexcept |
| SPI Driver Type ID. More... | |
Protected Member Functions | |
| embvm::comm::status | transfer_ (const spi::op_t &op, const cb_t &cb) noexcept override=0 |
Protected Attributes | |
| spi::mode | mode_ = spi::mode::mode0 |
| Stores the active SPI mode configuration. More... | |
| spi::order | order_ = spi::order::msbFirst |
| Stores the active SPI byte ordering. 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 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 | setMode_ (embvm::spi::mode mode) noexcept final |
| Set the SPI bus mode. More... | |
| void | setOrder_ (embvm::spi::order order) noexcept final |
| Set the SPI bus byte order. More... | |
| embvm::comm::status | transfer_ (const embvm::spi::op_t &op, const embvm::spi::master::cb_t &cb) noexcept final |
| uint32_t | baudrate_ (uint32_t baud) noexcept final |
| void | configure_ () noexcept final |
| Configure the SPI bus for operation. More... | |
Private Attributes | |
| std::vector< uint8_t > | txBuffer_ |
| std::queue< uint8_t > | rxBuffer_ |
|
inlineexplicitnoexcept |
Create a generic spi driver with a dispatcher.
| dispatcher | The function to use as a dispatcher for callbacks. |
|
inlineexplicitnoexcept |
Create a named spi driver with a dispatcher.
| name | The name of the SPI driver instance. |
| dispatcher | The function to use as a dispatcher for callbacks. |
|
finalnoexcept |
Default destructor.
Implements embvm::spi::master.
|
inlinenoexcept |
|
inlinenoexcept |
Clear the stored TX buffer.
References txBuffer_.
|
inlinevirtualnoexceptinherited |
Configure the SPI bus.
Configures the SPI bus for operation and sets the target baud rate.
Derived classes must implement the configure_() function to set up the target hardware.
| baud | The target baudrate, in Hz. TODO: Tolerance - allowed relative tolerance for the resulting baudrate |
References embvm::spi::master::configure_().
|
finalprivatevirtualnoexcept |
Configure the SPI bus for operation.
This function is implemented by the derived class. It is responsible for configuring the target hardware for operation.
Implements embvm::spi::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 |
Get the current SPI bus mode.
References embvm::spi::master::mode_.
Referenced by embvm::spi::master::mode(), and embvm::spi::activeMaster< TQueueSize, TLock, TCond >::setMode_().
|
inlinenoexceptinherited |
Set the SPI bus mode.
Derived classes must implement the setMode_() function, which is reponsible for configuring the target hardware.
| mode | The desired SPI bus mode. |
References embvm::spi::master::mode(), embvm::spi::master::mode_, and embvm::spi::master::setMode_().
|
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.
|
inlinenoexceptinherited |
Get the current SPI bus byte order.
References embvm::spi::master::order_.
Referenced by embvm::spi::master::order(), and embvm::spi::activeMaster< TQueueSize, TLock, TCond >::setOrder_().
|
inlinenoexceptinherited |
Set the SPI bus byte order.
Derived classes must implement the setOrder_() function, which is reponsible for configuring the target hardware.
| order | The desired byte ordering. |
References embvm::spi::master::order(), embvm::spi::master::order_, and embvm::spi::master::setOrder_().
|
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().
|
finalprivatevirtualnoexcept |
Set the SPI bus mode.
This function is implemented by the derived class. It is responsible for configuring the target hardware to use the new mode.
| mode | The desired byte ordering. |
Implements embvm::spi::master.
|
finalprivatevirtualnoexcept |
Set the SPI bus byte order.
This function is implemented by the derived class. It is responsible for configuring the target hardware to use the new byte ordering.
| order | The desired byte ordering. |
Implements embvm::spi::master.
|
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().
|
finalprivatevirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::spi::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 |
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().
|
finalprivatevirtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::spi::master.
|
finalprivatenoexcept |
References embvm::comm::ok.
|
overrideprotectedpure virtualnoexceptinherited |
|
inlinestaticnoexceptinherited |
|
protectedinherited |
Stores the active SPI mode configuration.
Referenced by embdrv::aardvarkSPIMaster::configure_(), and embvm::spi::master::mode().
|
protectedinherited |
Name of the driver instance.
Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().
|
protectedinherited |
Stores the active SPI byte ordering.
Referenced by embdrv::aardvarkSPIMaster::configure_(), and embvm::spi::master::order().
|
private |
Referenced by appendToRxBuffer(), and clearRxBuffer().
|
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().
|
private |
Referenced by checkTxBuffer(), and clearTxBuffer().
|
protectedinherited |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
1.8.15