|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
This class defines common time-of-flight (ToF) sensor interfaces. More...
#include <time_of_flight.hpp>

Public Types | |
| using | read_cb_t = stdext::inplace_function< void(uint16_t)> |
| ToF Callback function which retuns distance in mm. More... | |
Public Member Functions | |
| virtual tof::distance_t | getMaxRangeForModeDark (tof::mode m) const noexcept=0 |
| Check the maximum range in the dark. More... | |
| virtual tof::distance_t | getMaxRangeForModeStrongLight (tof::mode m) const noexcept=0 |
| Check the maximum range in strong light conditions. More... | |
| tof::mode | mode () const noexcept |
| Get the ToF ranging mode. More... | |
| virtual tof::mode | mode (tof::mode m) noexcept=0 |
| Set the ToF ranging mode. More... | |
| virtual void | registerReadCallback (const read_cb_t &cb) noexcept=0 |
| Register a callback for the read() function. More... | |
| virtual void | registerReadCallback (read_cb_t &&cb) noexcept=0 |
| Register a callback for the read() function. More... | |
| virtual void | read () noexcept=0 |
| Trigger a sensor read. More... | |
| virtual void | reset () noexcept=0 |
| Reset the ToF sensor. 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 |
| ToF Driver Type ID. More... | |
Protected Member Functions | |
| sensor () noexcept | |
| Default constructor. More... | |
| sensor (const char *name) noexcept | |
| Construct an tof::sensor with a C-string name. More... | |
| sensor (const std::string &name) noexcept | |
| Construct an tof::sensor with a std::string name. More... | |
| sensor (const std::string_view &name) noexcept | |
| Construct an tof::sensor with a std::string_view name. More... | |
| ~sensor () noexcept override | |
| Default destructor. More... | |
| void | start_ () noexcept override=0 |
| Derived classes override the start_ method to control driver-specific startup behavior. More... | |
| void | stop_ () noexcept override=0 |
| Derived classes override the start_ method to control driver-specific startup behavior. More... | |
Protected Attributes | |
| tof::mode | mode_ = tof::mode::defaultRange |
| The configured ranging mode for the ToF sensor. 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... | |
This class defines common time-of-flight (ToF) sensor interfaces.
tof::sensor is the base class for time-of-flight (ToF) sensor devices.
To define a ToF driver, derive from the tof::sensor object:
Derived classes must implement the following functions:
Additional sensor-specific functions may be defined. They are simply not available in the public/common interface.
Derived classes must also implement pure virtual embvm::DriverBase functions:
The ToF driver should be configured with the desired ranging mode (tof::mode) using the mode() function.
Once the sensor is configured, a callback should be registered via registerReadCallback(). The callback is required in order to receive results from the read() command.
To get a range result from the sensor, call the read() function. The function operates asynchronously and will return immediately. When the read operation completes, registered callbacks will be called.
| using embvm::tof::sensor::read_cb_t = stdext::inplace_function<void(uint16_t)> |
ToF Callback function which retuns distance in mm.
|
inlineprotectednoexcept |
Default constructor.
Initializes the tof::sensor instance with a generic name.
|
inlineprotectednoexcept |
Construct an tof::sensor with a C-string name.
Initializes the tof::sensor instance with a name.
| name | The name of the ToF instance. |
|
inlineprotectednoexcept |
Construct an tof::sensor with a std::string name.
Initializes the tof::sensor instance with a name.
| name | The name of the ToF instance. tof::sensor() uses a std::string_view, so the std::string must remain valid |
|
inlineprotectednoexcept |
Construct an tof::sensor with a std::string_view name.
Initializes the tof::sensor instance with a name.
| name | The name of the ToF instance. |
|
overrideprotecteddefaultnoexcept |
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_.
|
pure virtualnoexcept |
Check the maximum range in the dark.
Implemented in embdrv::vl53l1x.
|
pure virtualnoexcept |
Check the maximum range in strong light conditions.
Implemented in embdrv::vl53l1x.
|
inlinenoexcept |
Set the ToF ranging mode.
| m | The desired ToF ranging mode. |
Implemented in embdrv::vl53l1x.
|
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.
|
pure virtualnoexcept |
Trigger a sensor read.
Trigger an asynchronous read of the ToF sensor. The result will be provided to consumers through a callback function. When the read() operation completes, the callback will be invoked with the result.
Implemented in embdrv::vl53l1x.
|
pure virtualnoexcept |
Register a callback for the read() function.
The read() function works asynchronously, and the result will be provided to consumers through a callback function. When the read() operation completes, the callback will be invoked with the result.
This function must be implemented by the derived class.
| cb | The functor which will be called when read() completes. |
Implemented in embdrv::vl53l1x.
Referenced by FrameworkDemoSimPlatform::init_().
|
pure virtualnoexcept |
Register a callback for the read() function.
The read() function works asynchronously, and the result will be provided to consumers through a callback function. When the read() operation completes, the callback will be invoked with the result.
This function must be implemented by the derived class.
| cb | The functor which will be called when read() completes. |
Implemented in embdrv::vl53l1x.
|
pure virtualnoexcept |
Reset the ToF sensor.
Implemented in embdrv::vl53l1x.
|
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().
|
overrideprotectedpure virtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::DriverBase.
Implemented in embdrv::vl53l1x.
|
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().
|
overrideprotectedpure virtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::DriverBase.
Implemented in embdrv::vl53l1x.
|
inlinestaticnoexcept |
|
protected |
The configured ranging mode for the ToF sensor.
Referenced by mode().
|
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().
1.8.15