|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
This platform exists for use in the framework unit tests. More...
#include <platform.hpp>

Public Member Functions | |
| UnitTestPlatform () noexcept | |
| Default constructor with a supplied platform name. More... | |
| UnitTestPlatform (const char *name) noexcept | |
| Specify unit test platform by const char* to test the platform base APIs. More... | |
| UnitTestPlatform (const std::string &name) noexcept | |
| Specify unit test platform by std::string to test the platform base APIs. More... | |
| UnitTestPlatform (const std::string_view &name) noexcept | |
| Specify unit test platform by std::string_view to test the platform base APIs. More... | |
| ~UnitTestPlatform ()=default | |
| void | init_ () noexcept |
| void | initProcessor_ () noexcept |
| void | initHWPlatform_ () noexcept |
| auto | hwPlatformName () noexcept |
| auto | hwPlatformName_cstr () noexcept |
| void | init () noexcept |
| Initialize the platform. More... | |
| void | initProcessor () noexcept |
| Initialize the processor. More... | |
| void | initHWPlatform () noexcept |
| Initialize the hardware platform. More... | |
| constexpr const std::string_view & | name () const noexcept |
| Access the platform's name. More... | |
| constexpr const char * | name_cstr () const noexcept |
| Access the platform name as a cstring for C API compatibility. More... | |
| auto | findDriver (const std::string_view &name) noexcept |
| Access a device driver in the registry by name. More... | |
| auto | findDriver (embvm::DriverType_t type) noexcept |
| Access a device driver in the registry by type. More... | |
| auto | findDriver () noexcept |
| Access a device driver in the registry by type, cast as the appropriate base class. More... | |
| auto | findDriver (const std::string_view &name) noexcept |
| Access a device driver in the registry by name, cast as the appropriate base class. More... | |
| auto | findAllDrivers (embvm::DriverType_t type) noexcept |
| Get a list of all device drivers in the registry by type. More... | |
| auto | findAllDrivers () noexcept |
| Get a list of all device drivers in the registry by type, cast as the appropriate base class. More... | |
| size_t | driverCount () const noexcept |
| Get the count of drivers registered with the platform. More... | |
| auto | getBoundDispatch () noexcept |
| Get std::bind object corresponding dispatch(const&) function. More... | |
| auto | getBoundMoveDispatch () noexcept |
| Get std::bind object corresponding dispatch(&&) function. More... | |
| void | dispatch (const TFunc &op) noexcept |
| Dispatch an operation. More... | |
| void | dispatch (TFunc &&op) noexcept |
| Dispatch an operation. More... | |
| auto | subscribeToEvent (event_sig_t sig, const event_cb_t &cb) noexcept |
| Subscribe to an event. More... | |
| auto | subscribeToEvent (event_sig_t sig, event_cb_t &&cb) noexcept |
| void | unsubscribeFromEvent (typename PlatformEventCenter ::EventHandle &handle) noexcept |
| Unsubscribe from an event. More... | |
| void | signal (event_sig_t sig) noexcept |
| Forwards a signal to the event manager. More... | |
| void | publishEvent (EventBase event) noexcept |
| Forwards an event to the event manager. More... | |
Static Public Member Functions | |
| static void | earlyInitHook_ () noexcept |
| static UnitTestPlatform & | inst () noexcept |
| Get the global platform instance. More... | |
| static void | earlyInitHook () noexcept |
| Call early-initialization code. More... | |
| static void | initOS () noexcept |
| Initialize the OS. More... | |
| static void | initOS (void(*main_thread)()) noexcept |
| Initialize the with a function to use as the main thread. More... | |
| static void | registerDriver (const std::string_view &name, embvm::DriverBase *driver) noexcept |
| Platform-level API for registering a new device driver. More... | |
| static void | unregisterDriver (const std::string_view &name, embvm::DriverBase *driver) noexcept |
| Platform-level API for unregistering a new device driver. More... | |
Protected Attributes | |
| const std::string_view | name_ |
| PlatformDispatchQueue | dispatch_queue_ |
| PlatformEventCenter | event_manager_ |
| The instance of the event manager that belongs to the platform. More... | |
Private Types | |
| using | VirtualPlatform = embvm::VirtualPlatformBase< UnitTestPlatform, PlatformDriverRegistry > |
Private Attributes | |
| UnitTestHWPlatform | hw_platform_ |
This platform exists for use in the framework unit tests.
|
private |
|
inlinenoexcept |
Default constructor with a supplied platform name.
|
inlineexplicitnoexcept |
Specify unit test platform by const char* to test the platform base APIs.
|
inlineexplicitnoexcept |
Specify unit test platform by std::string to test the platform base APIs.
|
inlineexplicitnoexcept |
Specify unit test platform by std::string_view to test the platform base APIs.
|
default |
|
inlinenoexceptinherited |
Dispatch an operation.
Dispatch an operation to the queue. Forwards the function object to the underlying dispatch queue.
| op | The function object containing the operation that will be dispatched to the queue. |
|
inlinenoexceptinherited |
Dispatch an operation.
Dispatch an operation to the queue. Forwards the function object to the underlying dispatch queue.
| op | The function object containing the operation that will be dispatched to the queue. |
|
inlinenoexceptinherited |
Get the count of drivers registered with the platform.
returns Number of drivers currently registered with the platform DriverRegistry.
|
inlinestaticnoexceptinherited |
Call early-initialization code.
Call early initialization code, which is to be run before C runtime initialization, memory relocations, OS initialization, etc. This call is used to handle early setup code that the rest of the initialization process might depend on, such as DRAM initialization.
This function forwards the call to the derived class for the actual implementation.
|
inlinestaticnoexcept |
|
inlinenoexceptinherited |
Get a list of all device drivers in the registry by type.
The type will be returned as the appropriate base class (instead of embvm::DriverBase).
This call forwards the information to the DriverRegistry instance.
| type | The type of driver being requested (embvm::i2c::master, SystemClock). |
|
inlinenoexceptinherited |
Get a list of all device drivers in the registry by type, cast as the appropriate base class.
The type will be returned as the appropriate base class (instead of embvm::DriverBase).
This call forwards the information to the DriverRegistry instance.
| TDriverClass | The class of driver being requested (embvm::i2c::master, SystemClock). |
|
inlinenoexceptinherited |
Access a device driver in the registry by name.
Find a driver by name.
This call forwards the information to the DriverRegistry instance.
|
inlinenoexceptinherited |
Access a device driver in the registry by type.
Find a driver by type. If multiple drivers are found for a type, the first one found will be returned.
This call forwards the information to the DriverRegistry instance.
|
inlinenoexceptinherited |
Access a device driver in the registry by type, cast as the appropriate base class.
If multiple drivers are found for a type, the first one found will be returned. The type will be returned as the appropriate base class (instead of embvm::DriverBase).
This call forwards the information to the DriverRegistry instance.
| TDriverClass | The class of driver being requested (embvm::i2c::master, SystemClock). |
|
inlinenoexceptinherited |
Access a device driver in the registry by name, cast as the appropriate base class.
The type will be returned as the appropriate base class (instead of embvm::DriverBase).
This call forwards the information to the DriverRegistry instance.
| TDriverClass | The class of driver being requested (embvm::i2c::master, SystemClock). |
|
inlinenoexceptinherited |
Get std::bind object corresponding dispatch(const&) function.
If you need to get the function dispatch(const&) variant for use with another class, (e.g., passing dispatch() as a callback), use this function.
std::bind object corresponding to the dispatch(const&) function.
|
inlinenoexceptinherited |
Get std::bind object corresponding dispatch(&&) function.
If you need to get the function dispatch(&&) variant for use with another class, (e.g., passing dispatch() as a callback), use this function.
std::bind object corresponding to the dispatch(&&) function.
|
inlinenoexcept |
References hw_platform_, and embvm::VirtualHwPlatformBase< THWPlatform >::name().
|
inlinenoexcept |
References hw_platform_, and embvm::VirtualHwPlatformBase< THWPlatform >::name_cstr().
|
inlinenoexceptinherited |
Initialize the platform.
This function is responsible for initializing the platform.
This function forwards the call to the derived class for the actual implementation.
|
inlinenoexcept |
|
inlinenoexceptinherited |
Initialize the hardware platform.
Performs steps necessary to initialize the hardware platform for use by the platform. In many cases, this call should just invoke the hardware platform's init() function. Control of this function is placed in the platform layer to allow for platform-specific customization & initialization of the hardware platform in situations where non-default values are used.
This function forwards the call to the derived class for the actual implementation.
|
inlinenoexcept |
References hw_platform_, and embvm::VirtualHwPlatformBase< THWPlatform >::init().
|
inlinestaticnoexceptinherited |
Initialize the OS.
Performs steps necessary to initialize the OS for use by the platform. Control of this function is placed in the platform layer to allow for platform-specific customization & initialization of the OS, since each OS has different startup requirements
This function forwards the call to the derived class for the actual implementation.
|
inlinestaticnoexceptinherited |
Initialize the with a function to use as the main thread.
Performs steps necessary to initialize the OS for use by the platform. Control of this function is placed in the platform layer to allow for platform-specific customization & initialization of the OS, since each OS has different startup requirements
This function forwards the call to the derived class for the actual implementation.
| main_thread | a function pointer to use as the main thread routine. This version of initOS should be used for OSes such as FreeRTOS which kill execution of the current thread when the scheduler is started. |
|
inlinenoexceptinherited |
Initialize the processor.
Performs steps necessary to initialize the processor for use by the platform. In many cases, this call should just invoke the processor's init() function. Control of this function is placed in the platform layer to allow for platform-specific customization & initialization of the processor in situations where non-default values are used.
This function forwards the call to the derived class for the actual implementation.
|
inlinenoexcept |
References hw_platform_, and embvm::VirtualHwPlatformBase< THWPlatform >::initProcessor().
|
inlinestaticnoexceptinherited |
Get the global platform instance.
Static declaration of the VirtualPlatformBase instance. We use this function to avoid the static initializatio order 'fiasco'. See more: https://isocpp.org/wiki/faq/ctors#static-init-order
|
inlinenoexceptinherited |
Access the platform's name.
|
inlinenoexceptinherited |
Access the platform name as a cstring for C API compatibility.
|
inlinenoexceptinherited |
Forwards an event to the event manager.
| event | The event to publish to the platform event manager. |
|
inlinestaticnoexceptinherited |
Platform-level API for registering a new device driver.
Register a device driver with the platform's driver registry.
This call forwards the information to the DriverRegistry instance.
| name | The name (used as a key) the driver will be registered under. |
| driver | Pointer to the embvm::DriverBase object. A pointer is used because there are any number of potential derived classes which will be tracked. To prevent slicing, a pointer to the base class is stored. |
|
inlinenoexceptinherited |
Forwards a signal to the event manager.
| sig | The signal to raise to the platform event manager. |
|
inlinenoexceptinherited |
Subscribe to an event.
| sig | The signal to subscribe to. |
| cb | The callback function to invoke when the signal is raised. |
|
inlinenoexceptinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inlinestaticnoexceptinherited |
Platform-level API for unregistering a new device driver.
Unregister a device driver with the platform's driver registry.
This call forwards the information to the DriverRegistry instance.
| name | The name of the driver to remove. |
| driver | Pointer to the embvm::DriverBase object being removed. |
|
inlinenoexceptinherited |
Unsubscribe from an event.
| handle | The event handle to unsubscribe. |
|
protectedinherited |
|
protectedinherited |
The instance of the event manager that belongs to the platform.
|
private |
Referenced by hwPlatformName(), hwPlatformName_cstr(), initHWPlatform_(), and initProcessor_().
|
protectedinherited |
1.8.15