semf
semf Namespace Reference

Namespaces

namespace  app
 
namespace  esh
 

Classes

class  AnalogDmaSensor
 Provides data from an AnalogInDma to one to more Sensor objects. More...
 
class  AnalogIn
 Interface for using ADC (Analog to Digital Conversion) hardware in interrupt mode. More...
 
class  AnalogInDma
 Interface for using ADC (Analog to Digital Conversion) hardware in DMA (Direct Memory Access) mode. More...
 
class  AnalogOut
 Interface for using DAC (Digital to Analog Converter) hardware module in interrupt mode. More...
 
class  AnalogOutDma
 Interface for using DAC (Digital to Analog Converter) hardware module in DMA (Direct Memory Access) mode. More...
 
class  AnalogSensor
 Provides data from an AnalogIn to one to more Sensor objects. More...
 
class  Array
 This is an interface to std::array with the benefit of knowing its size without using a template parameter so it can be used easier in object oriented code. More...
 
class  Average
 Average calculates the average value of the entries of a given Buffer or an data array. The types uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t and int64_t are supported. More...
 
class  BigEndianInteger
 Class for representing big-endian numbers. More...
 
class  BitsetUtility
 Useful helper functions for handeling bitsets. More...
 
class  Buffer
 Buffer is a base class for buffer implementations. More...
 
class  Can
 Interface for CAN specific functionalities, which are not solved in a generic way in CommunicationHardware. More...
 
class  CanHardware
 Interface for using CAN. More...
 
class  Clock
 The Clock class provides real time clock functionality. It can return a DateTime object with actual date and time information from Rtc and the Rtc can be updated by setting a DateTime object to Clock. More...
 
class  CommunicationHardware
 This interface standardized the read and write interface between the communication hardware like CAN, SPI and all protocols. More...
 
class  CommunicationHardwareAsynchronous
 This interface standardized the read and write interface for asynchronous hardware, like UART or CAN. More...
 
class  CommunicationHardwareSynchronousMaster
 This interface standardized the read and write interface for synchronous master hardware, like SPI master and I2C master. More...
 
class  CommunicationHardwareSynchronousSlave
 This interface standardized the read and write interface for synchronous slave hardware, like SPI slave and I2C slave. More...
 
class  CrcSoftware
 Template class for CRC generation in software. More...
 
class  CriticalSection
 Class for handle CriticalSections. More...
 
class  Date
 The Date class provides date functions. More...
 
class  DateTime
 The DateTime class provides date and time functionality as a point of time. It combines features of the Date and Time classes (via inheritance). More...
 
class  DebouncedDigitalInPolling
 Class for reading and debouncing a digital input (e.g. used for buttons or relays inputs). The two signals changedToHigh and changedToLow will be emitted after the pin level changed and the debounce time is passed. More...
 
class  Debug
 Class helps debugging by publishing logging information through printf function. More...
 
class  DigitalIn
 Base class for having access to the level state of a digital input. More...
 
class  DigitalInInt
 Class for reading a digital input in interrupt mode. More...
 
class  DigitalInPolling
 Class for reading a digital input in polling mode. More...
 
class  DigitalOut
 Class for handling a digital output. More...
 
class  DivideWithRound
 Class that divides 2 integers with a correct rounding. If the result has a remainder (decimal) less than .5, it will be down rounded (result is the quotient); otherwise it will be up rounded (result is quotient + 1). More...
 
class  Endian
 The Endian class provides a set of functions for handeling the conversion of data with a specific endianess. More...
 
class  Error
 Class for representing errors. Every error should have a unique source code. As a user feel encouraged to define your own errors and pass them via error signals and improve your debugging and error handling. More...
 
class  ExternalInterrupt
 Interface for using a external interrupt. More...
 
class  FrequencyIn
 Class for measuring the frequency on a capture input. More...
 
class  Gpio
 Interface class for using a GPIO pin of the microcontroller. More...
 
class  HardwareSensor
 Base class for sensor hardware like analog sensor. By calling update(), a measurement cycle gets triggered and the dataAvailable signal will be emitted after completion. The buffer() function provides the raw sensor data to the Sensor class. By using the LastInBuffer class the access is thread save. Multiple Sensor respectively SensorConverter objects can be connected to one HardwareSensor. More...
 
class  I2c
 Interface for I2C specific functionalities, which are not solved in a generic way in CommunicationHardware. More...
 
class  I2cMasterHardware
 For using the I2C in master mode. More...
 
class  I2cScanner
 This class scans a given address range on an I2C master hardware to identify available devices. More...
 
class  I2cSlaveHardware
 This class can be used for using the I2C bus as a slave. Call startListening() for receiving I/O-requests from the master. You can handle them by connecting the signals readExpected and writeExpected and performing the I/O-calls accordingly. More...
 
class  InputCapture
 Class for utilizing the input capture from the uC. More...
 
class  LastInBuffer
 The LastInBuffer class implements a kind of circular buffer. More...
 
class  LastInDmaBuffer
 The LastInDmaBuffer class implements a kind of circular buffer. More...
 
class  LedBlinking
 Interface for a blinking led class. More...
 
class  LedDimming
 This class uses PwmOut and a SoftwareTimer in order to generate different waveforms. (e.g. sine, triangle), for switching the LED on and off. Additionally a pulsing mode and a constant on / off mode is available. More...
 
class  LinearInterpolator
 Class for calculating the linear interpolation. It interpolates till 3-dimensional data. More...
 
class  LinkedList
 LinkedList is an managed double linked list implementation. More...
 
class  LinkedQueue
 LinkedQueue is an managed single linked queue implementation. More...
 
class  LittleEndianInteger
 Class for representing little-endian numbers. More...
 
class  PidController
 Implementation of an pid (proportional integral derivative) regulator. More...
 
class  Pwm
 Class to interface pwm's hardware module of the microcontroller. More...
 
class  PwmOut
 Class for using a PWM as an output with permille value handling. More...
 
class  RingBuffer
 The RingBuffer class implements a classic circular buffer. More...
 
class  Rtc
 Interface for the real time clock. More...
 
class  SensorConverter
 Conversion class for raw sensor measurement values from HardwareSensor to converted values for Sensor used by application level. More...
 
class  Signal
 Signal for lightweight signal/slot implementation. One signal can be connected to multiple slots and one slot can be connected to multiple signal. Depending on the type of callback function you may want to use you need to connect using different implementations of SlotBase. More...
 
class  SimpleSensorConverter
 Offers an simple way for implementing a SensorConverter class for simple conversion functions by handing over an lambda function in the constructor. More...
 
class  Slot
 Slot for lightweight signal/slot implementation. This ConstSlot is for connecting a signal to a member function. When the signal is emitted, the given member function is invoked. More...
 
class  SlotBase
 Base Class for all Slot implementations. More...
 
class  SoftI2cMaster
 This class used two GPIOs (SCL and SDA) and a Timer and implements a software I2C Master interface. More...
 
class  SoftPwm
 The SoftPwm class outputs a PWM signal on the given GPIO. More...
 
class  SoftwareTimer
 Software SoftwareTimer which can be added to a TimeBase or used singular. More...
 
class  Spi
 Interface for SPI specific functionalities, which are not solved in a generic way in CommunicationHardware. More...
 
class  SpiMasterHardware
 Class for using SPI hardware in master mode. More...
 
class  SpiSlaveHardware
 Class for using spi hardware in slave mode. In order of being a SPI slave IO-operations will not get executed before the CS-Signal is LOW. After calling an IO-operation successfully, the hardware state will change to busy while executing the IO call. The hardware state will change to ready after IO-operation is done. When the IO-operation got executed successfully one of the signals dataWritten or dataAvailable gets emitted. The signal handlers can start the next IO-operation as in all other classes deriving from CommunicationHardware. More...
 
class  StaticSlot
 StaticSlot for lightweight signal/slot implementation. This StaticSlot ist for connecting a signal to a static function which have a return value from type void. More...
 
class  Stm32AnalogIn
 Stm32 driver for using a anologIn channel. More...
 
class  Stm32AnalogInDma
 
class  Stm32AnalogOut
 
class  Stm32AnalogOutDma
 
class  Stm32Can
 Class for using CAN with Stm32. More...
 
class  Stm32CriticalSection
 CriticalSection implementation for STM32. More...
 
class  Stm32ExternalInterrupt
 ExternalInterrupt implementation for STM32. More...
 
class  Stm32Flash
 This Class is for read and write data in the internal flash from the Stm32. More...
 
class  Stm32Gpio
 Gpio implementation for STM32. More...
 
class  Stm32I2cMaster
 I2cMasterHardware implementation for STM32. More...
 
class  Stm32I2cSlave
 I2cSlaveHardware implementation for STM32. More...
 
class  Stm32InputCapture
 InputCapture implementation for STM32. More...
 
class  Stm32Power
 app::Power implementation for STM32. More...
 
class  Stm32Pwm
 Pwm implementation for STM32. More...
 
class  Stm32Rtc
 Rtc implementation for STM32. More...
 
class  Stm32SpiMaster
 SpiMasterHardware implementation for STM32. More...
 
class  Stm32SpiSlave
 SpiSlaveHardware implementation for STM32. More...
 
class  Stm32Systick
 Timer implementation for STM32 as single systick.. More...
 
class  Stm32Timer
 Timer implementation for STM32 as peripheral timer. More...
 
class  Stm32Uart
 UartHardware implemenation for STM32. More...
 
class  TickReceiver
 Interface for all classes receiving ticks like DigitalInPolling or SoftwareTimer. More...
 
class  Time
 The Time class provides clock time functions. More...
 
class  TimeBase
 A TimeBase is the bridge between e.g. a hardware timer (interrupt service routine) and TickReceiver objects like /c SoftwareTimer. Multiple timers can be added to one TimeBase object, but one TickReceiver object can only be added to a single TimeBase. It's also not possible to add a TickReceiver object twice to a TimeBase. More...
 
class  Uart
 Interface for UART specific functionalities, which are not solved in a generic way in CommunicationHardware. More...
 
class  UartHardware
 Class for using UART hardware. More...
 

Typedefs

typedef CrcSoftware< uint32_t, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF > Crc32Software
 
typedef CrcSoftware< uint16_t, 0x1021, 0xFFFF, 0xFFFF > Crc16Software
 
typedef CrcSoftware< uint8_t, 0x07, 0xFF, 0xFF > Crc8Sofware
 
using int16be = BigEndianInteger< int16_t >
 
using int16le = LittleEndianInteger< int16_t >
 
using int32be = BigEndianInteger< int32_t >
 
using int32le = LittleEndianInteger< int32_t >
 
using int64be = BigEndianInteger< int64_t >
 
using int64le = LittleEndianInteger< int64_t >
 
using uint16be = BigEndianInteger< uint16_t >
 
using uint16le = LittleEndianInteger< uint16_t >
 
using uint32be = BigEndianInteger< uint32_t >
 
using uint32le = LittleEndianInteger< uint32_t >
 
using uint64be = BigEndianInteger< uint64_t >
 
using uint64le = LittleEndianInteger< uint64_t >
 

Enumerations

enum class  DebugLevel {
  DebuglevelError = 0 , DebuglevelWarning , DebuglevelInfo , DebuglevelDebug ,
  DebuglevelTrace , DebuglevelIgnore = 255
}
 Levels for differing debug messages. More...
 

Functions

template<class T , class... Args>
void internalDebug (T *object, DebugLevel level, const char *name, const char *format, Args... args)
 Passes a print message to the Debugger class. More...
 
template<int i, class T >
void debugObject (T &object, DebugLevel level, const char *name)
 Adds an object to the debug objects list by creating a Debugger object. More...
 
template<size_t N>
static size_t insertBitsetInBuffer (std::bitset< N > bitset, uint8_t buffer[], size_t bufferSize, size_t firstBit)
 

Typedef Documentation

◆ Crc16Software

typedef CrcSoftware<uint16_t, 0x1021, 0xFFFF, 0xFFFF> semf::Crc16Software

Typedef for Crc16 calculation

Definition at line 150 of file crcsoftware.h.

◆ Crc32Software

typedef CrcSoftware<uint32_t, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF> semf::Crc32Software

Typedef for Crc32 calculation

Definition at line 148 of file crcsoftware.h.

◆ Crc8Sofware

typedef CrcSoftware<uint8_t, 0x07, 0xFF, 0xFF> semf::Crc8Sofware

Typedef for Crc8 calculation

Definition at line 152 of file crcsoftware.h.

◆ int16be

using semf::int16be = typedef BigEndianInteger<int16_t>

Definition at line 21 of file endian.h.

◆ int16le

using semf::int16le = typedef LittleEndianInteger<int16_t>

Definition at line 22 of file endian.h.

◆ int32be

using semf::int32be = typedef BigEndianInteger<int32_t>

Definition at line 23 of file endian.h.

◆ int32le

using semf::int32le = typedef LittleEndianInteger<int32_t>

Definition at line 24 of file endian.h.

◆ int64be

using semf::int64be = typedef BigEndianInteger<int64_t>

Definition at line 25 of file endian.h.

◆ int64le

using semf::int64le = typedef LittleEndianInteger<int64_t>

Definition at line 26 of file endian.h.

◆ uint16be

using semf::uint16be = typedef BigEndianInteger<uint16_t>

Definition at line 27 of file endian.h.

◆ uint16le

using semf::uint16le = typedef LittleEndianInteger<uint16_t>

Definition at line 28 of file endian.h.

◆ uint32be

using semf::uint32be = typedef BigEndianInteger<uint32_t>

Definition at line 29 of file endian.h.

◆ uint32le

using semf::uint32le = typedef LittleEndianInteger<uint32_t>

Definition at line 30 of file endian.h.

◆ uint64be

using semf::uint64be = typedef BigEndianInteger<uint64_t>

Definition at line 31 of file endian.h.

◆ uint64le

using semf::uint64le = typedef LittleEndianInteger<uint64_t>

Definition at line 32 of file endian.h.

Enumeration Type Documentation

◆ DebugLevel

enum class semf::DebugLevel
strong

Levels for differing debug messages.

Enumerator
DebuglevelError 

Error level: used for a problems that makes the application work wrongly but not crashing.

DebuglevelWarning 

Warning level: used for non-fatal warnings detected by the application.

DebuglevelInfo 

Info level: used for informational records.

DebuglevelDebug 

Debug level: used for a software debugging.

DebuglevelTrace 

Trace level: used for internal code tracking.

DebuglevelIgnore 

Ignore level: used to ignore logs.

Definition at line 55 of file debug.h.

Function Documentation

◆ debugObject()

template<int i, class T >
void semf::debugObject ( T &  object,
DebugLevel  level,
const char *  name 
)

Adds an object to the debug objects list by creating a Debugger object.

Template Parameters
iInternal counter for creating single objects for every object.
TClass type.
Parameters
objectPointer to the object to print a message from.
levelDebug level of the message.
nameName of the class and function.

Definition at line 259 of file debug.h.

◆ insertBitsetInBuffer()

template<size_t N>
static size_t semf::insertBitsetInBuffer ( std::bitset< N >  bitset,
uint8_t  buffer[],
size_t  bufferSize,
size_t  firstBit 
)
static

Definition at line 78 of file bitsetutility.h.

◆ internalDebug()

template<class T , class... Args>
void semf::internalDebug ( T *  object,
DebugLevel  level,
const char *  name,
const char *  format,
Args...  args 
)

Passes a print message to the Debugger class.

Template Parameters
TClass type.
Parameters
objectPointer to the object to print a message from.
levelDebug level of the message.
nameName of the class and function.
formatPrintf string.
argsPrintf argument list.

Definition at line 245 of file debug.h.

Here is the call graph for this function: