Embedded Artistry Framework
Embedded Systems C++ Framework
Namespaces | Classes | Typedefs | Enumerations | Variables

Embedded framework core interfaces, classes, and definitions. More...

Namespaces

 clk
 Definitions, functions, and classes related to clock devices.
 
 comm
 Definitions, functions, and classes related to communication busses.
 
 cv
 Condition Variable types and definitions.
 
 eventflag
 Event flag types and definitions.
 
 gpio
 Definitions, functions, and classes related to GPIO devices.
 
 i2c
 Definitions, functions, and classes related to I2C communication bus devices.
 
 led
 Definitions, functions, and classes related to LED devices.
 
 logger
 Log definitions.
 
 msgqueue
 Message queue types and definitions.
 
 mutex
 Mutex types and definitions.
 
 once
 
 semaphore
 Semaphore types and definitions.
 
 spi
 Definitions, functions, and classes related to SPI communication bus devices.
 
 this_thread
 Functions that operate on the currently active thread.
 
 thread
 Thread types and definitions.
 
 timer
 Definitions, functions, and classes related to Timer devices.
 
 tls
 Thread Local Storage types.
 
 tof
 Definitions, functions, and classes related to Time-of-Flight sensors.
 

Classes

class  basicDisplay
 This class provides an interface for a basic 2-color display device. More...
 
class  BootSequencer
 Boot sequencer with customizable boot strategy. More...
 
class  CircularLogBufferLogger
 Circular log buffer. More...
 
class  commBus
 Base class interface for communication bus driver types (SPI, I2C, etc.). More...
 
class  DriverBase
 Virtual base class for framework drivers. More...
 
class  DriverRegistry
 DriverRegistry base class. More...
 
class  EventBase
 Base class for events. More...
 
class  EventCenter
 Global Event Manager class. More...
 
class  EventQueue
 Keep a queue of events. More...
 
class  HALDriverBase
 
class  LoggerBase
 Base class for logger implementations. More...
 
class  PlatformDispatcher
 Add a dispatch queue to the VirtualPlatform through inheritance. More...
 
class  PlatformEventManagement
 Add an event manager to the VirtualPlatform through inheritance. More...
 
class  PlatformLogger_t
 Declare a static platform logger instance. More...
 
class  TimerManager
 Timer Manager Class. More...
 
class  VirtualConditionVariable
 Defines the VirtualConditionVariable interface. More...
 
class  VirtualEventFlag
 Defines the VirtualEventFlag interface. More...
 
class  VirtualHeap
 
class  VirtualHwPlatformBase
 Virtual Hardware Platform Base. More...
 
class  VirtualMessageQueue
 Defines the VirtualMessageQueue interface. More...
 
class  VirtualMutex
 Defines the VirtualMutex interface. More...
 
class  VirtualOSFactory
 Factory interface for creating RTOS-related objects. More...
 
class  VirtualPlatformBase
 Base class for Platform definitions. More...
 
class  VirtualProcessorArchBase
 Virtual Interface for Common Architecture-Specific Functionality. More...
 
class  VirtualProcessorBase
 Virtual Processor Base. More...
 
class  VirtualSemaphore
 Defines the VirtualSemaphore interface. More...
 
class  VirtualThread
 Defines the VirtualThread interface. More...
 

Typedefs

template<typename TLockType = embutil::nop_lock>
using DynamicDriverRegistry = DriverRegistry< 0, 0, TLockType >
 Declare a DriverRegistry that uses dynamic memory allocation. More...
 
template<const size_t TMaxSize = 32, const size_t TReturnSize = 4, typename TLockType = embutil::nop_lock>
using StaticDriverRegistry = DriverRegistry< TMaxSize, TReturnSize, TLockType >
 Declare a DriverRegistry that uses static memory allocation. More...
 
using DriverType_t = uint32_t
 Driver type used by framework interfaces. More...
 
using Signal_t = uint32_t
 Signal type which is used for function inputs. More...
 
template<const size_t TSize, const size_t TThreadCnt = 1, typename TFunc = stdext::inplace_function<void(), EVENT_CENTER_REQD_STATIC_FUNCTION_SIZE>>
using StaticEventQueue = embutil::StaticDispatchQueue< TSize, TThreadCnt, TFunc >
 This alias represents a static dispatch queue which can be used with the event manager Primarily this alias is used to prevent users from needing to declare a long type declaration just because of the need to increase inplace_function<>'s size. More...
 
using DynamicEventCenter = EventCenter< 0, 0 >
 Declare an EventCenter that uses dynamic memory allocation. More...
 
template<const size_t TMaxEvents = 16, const size_t TMaxSubscribersPerEvent = 4>
using StaticEventCenter = EventCenter< TMaxEvents, TMaxSubscribersPerEvent >
 Declare a DriverRegistry that uses static memory allocation. More...
 
using os_timeout_t = std::chrono::duration< uint64_t, std::nano >
 Timeout type used for OS-related functions. More...
 

Enumerations

enum  DriverType {
  Undefined = 0, GPIO, HARDWARE_TIMER, I2C,
  LED, SPI, SYSTEM_CLOCK, TIME_OF_FLIGHT,
  SOFTWARE_TIMER, TIMER, BASIC_DISPLAY, DRIVER_EXTENSION_START
}
 Default framework driver type definitions. More...
 
enum  Signal {
  Event_Invalid = 0, Event_ProcessorInitd, Event_HwPlatformInitd, Event_PlatformInitd,
  Event_EXTENSION_START
}
 Default framework event signal definitions. More...
 

Variables

static constexpr size_t EVENT_CENTER_REQD_STATIC_FUNCTION_SIZE = (sizeof(void*) * 8)
 Maximum size of the Event center callback functor object. More...
 
constexpr os_timeout_t OS_WAIT_FOREVER = os_timeout_t{UINT64_C(-1)}
 Create a WAIT_FOREVER alias which can be used. More...
 

Detailed Description

Embedded framework core interfaces, classes, and definitions.

TODO: consider additional fields The format of your status messages can make a big difference in later analysis.

Break the messages into fields, so that certain information always appears in a particular column. One column should be a system time stamp that’s accurate enough to deal with timing problems. There are many other candidates for standard columns: the module or source file that outputs the message; a general code for message type, such as “info,” “error,” or “really nasty error”; the initials of the engineer who wrote the output message, to help track down who worked on what and why they can’t spell; and run-time data such as commands, status codes, and expected versus actual values to give you the real details you’ll need later. Finally, by using consistent formats and keywords, you can filter the debug logs afterward to help you focus on the stuff you need to see.