RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
Telemetry Subscriber Library

Telemetry Subscriber library and related components. More...

Files

file  blenderError.cpp
 Defines the generic blender error category.
 
file  businessLogic.cpp
 Implements the business logic for telSub.
 
file  correlator.cpp
 Implementation of the Correlator class.
 
file  ddsReaderListener.cpp
 Implementation of DDS Reader Listener.
 
file  ddsReaderListener.hpp
 DDS Reader Listener.
 
file  ddsWaitSet.cpp
 Implementation of the DdsWaitSet.
 
file  agnosticDataSamples.hpp
 Declares AgnosticDataSamples.
 
file  blenderError.hpp
 Declares the generic blender error category.
 
file  businessLogic.hpp
 Implements the business logic for telSub.
 
file  correlator.hpp
 Declares Correlator.
 
file  correlatorIf.hpp
 Declares CorrelatorIf.
 
file  dataSampleView.hpp
 Declares ShmPublisher.
 
file  ddsWaitSet.hpp
 Declares the DdsWaitSet implementation.
 
file  ddsWaitSetIf.hpp
 Declares DdsWaitSetIf.
 
file  main.hpp
 Entry-point for Telemetry Subscriber.
 
file  operationalLogic.hpp
 Declares OperationalLogic.
 
file  operationalLogicIf.hpp
 Declares OperationalLogicIf.
 
file  shmPublisher.hpp
 Declares ShmPublisher.
 
file  shmPublisherIf.hpp
 Declares ShmPublisher.
 
file  operationalLogic.cpp
 Definition of OperationalLogic.
 
file  incMain.cpp
 Test that rtck/telSub/main.hpp is self-contained.
 
file  mockCorrelatorIf.hpp
 Mock of ShmPublisherIf.
 
file  mockDdsWaitSet.hpp
 Mock of DdsSubscriberIf.
 
file  mockShmPublisherIf.hpp
 Mock of ShmPublisherIf.
 

Classes

class  rtctk::telSub::DdsReaderListener
 Listener class for different DDS events. More...
 
class  rtctk::telSub::SeqLoanerIf
 Loaner interface. More...
 
class  rtctk::telSub::AgnosticDataSamples
 Container of DDS samples and associated sample information. More...
 
class  rtctk::telSub::BlenderErrorCategory
 Error category for blender errors. More...
 
struct  rtctk::telSub::OperationalLogicFactoryParams
 Set of all parameters needed when constructing the OperationalLogic object. More...
 
class  rtctk::telSub::BusinessLogic
 Implements the Telemetry Subscriber business logic. More...
 
class  rtctk::telSub::Correlator
 Implements a correlator. More...
 
struct  rtctk::telSub::CorrelatorParams
 Placeholder for correlator parameters. More...
 
class  rtctk::telSub::CorrelatorIf
 Interface for correlator implemementations that takes new data samples from DDS and performs correlation on them. More...
 
struct  rtctk::telSub::DataSampleView
 Agnostic data sample non-owning reference type. More...
 
struct  rtctk::telSub::DataSamplesView
 A set of correlated agnostic non-owning data samples references. More...
 
class  rtctk::telSub::DdsWaitSet
 Implements DDS communication using FastDDS. More...
 
struct  rtctk::telSub::DdsTopicOptions
 Options for a single topic. More...
 
struct  rtctk::telSub::DdsParams
 Parameter set to be passed to classes deriving from DdsWaitSetIf. More...
 
class  rtctk::telSub::DdsWaitSetIf
 Base class abstracting DDS communication code. More...
 
class  rtctk::telSub::OperationalLogic
 Implements the behaviour for Operational state. More...
 
struct  rtctk::telSub::ShmParams
 Shared memory configuration parameters. More...
 
struct  rtctk::telSub::OperationalParams
 Configuration parameters needed for operational logic. More...
 
class  rtctk::telSub::OperationalLogicIf
 Interface to the operational logic implementation. More...
 
class  rtctk::telSub::ShmPublisher< UserTopicType, DataBlender, ShmWriter >
 
class  rtctk::telSub::ShmPublisherIf
 Simple interface to class that owns the shared memory queue. More...
 

Enumerations

enum class  rtctk::telSub::GenericBlenderError : std::uint8_t {
  rtctk::telSub::GenericBlenderError::Success = 0 , rtctk::telSub::GenericBlenderError::MissingTopic , rtctk::telSub::GenericBlenderError::SizeMismatch , rtctk::telSub::GenericBlenderError::InvalidFormat ,
  rtctk::telSub::GenericBlenderError::UnknownError
}
 Error codes for blender-related errors. More...
 

Functions

std::ostream & rtctk::telSub::operator<< (std::ostream &stream, const std::vector< std::string > &data)
 A specialisation of the stream output operator to handle vectors of strings.
 
template<class UserTopicType, class DataBlender>
void rtctk::telSub::Main (const rtctk::componentFramework::Args &args, DataBlender &&blender)
 Main entrypoint for running telemetry subscriber.
 
template<class UserTopicType, class DataBlender, class ShmWriter>
auto rtctk::telSub::MakeShmPublisher (ShmWriter &&shm_writer, DataBlender &blender) -> std::unique_ptr< ShmPublisher< UserTopicType, DataBlender, ShmWriter > >
 Helper that can deduce DataBlender class template argument.
 

Detailed Description

Telemetry Subscriber library and related components.

Refer to the Telemetry Subscriber for an overview.

Enumeration Type Documentation

◆ GenericBlenderError

enum class rtctk::telSub::GenericBlenderError : std::uint8_t
strong

Error codes for blender-related errors.

These are generic error codes that cover the most common error scenarios in blender functions. Users can define their own more specific error codes by creating custom error categories.

Enumerator
Success 

No error, operation successful.

MissingTopic 

Required topic was not found in the input data.

SizeMismatch 

Data size does not match expected size.

InvalidFormat 

Data format is invalid or corrupted.

UnknownError 

Generic unknown error.

Function Documentation

◆ Main()

template<class UserTopicType, class DataBlender>
void rtctk::telSub::Main ( const rtctk::componentFramework::Args & args,
DataBlender && blender )

Main entrypoint for running telemetry subscriber.

It is meant to be invoked by delegation from a RtcComponentMain implementation (see Telemetry Subscriber).

Template Parameters
UserTopicTypeUser defined topic used in shared memory queue.
DataBlenderType for the blender function. It must be callable with the following signature: std::error_code(const rtctk::telSub::DataSamplesView& dds_samples, UserTopicType& shm_sample). In addition it must be movable (or copyable).
Parameters
argsCommand line arguments as received in RtcComponentMain.
blenderThe callable used to convert DDS agnostic topic samples into the user defined topic in shared memory. This is invoked for each set of correlated data samples and should do absolutely minimal processing and avoid thread synchronisation.

◆ MakeShmPublisher()

template<class UserTopicType, class DataBlender, class ShmWriter>
auto rtctk::telSub::MakeShmPublisher ( ShmWriter && shm_writer,
DataBlender & blender ) -> std::unique_ptr<ShmPublisher<UserTopicType, DataBlender, ShmWriter>>

Helper that can deduce DataBlender class template argument.

◆ operator<<()

std::ostream & rtctk::telSub::operator<< ( std::ostream & stream,
const std::vector< std::string > & data )

A specialisation of the stream output operator to handle vectors of strings.

This is used by methods such as BusinessLogic::GetParam.

Note
this needs to be in the same namespace as BusinessLogic, i.e. rtctk::telSub, otherwise the compiler is not able to match this function as the appropriate one to use.