This page hosts the documentation of the SmartCGMS software architecture and all of its components.


The SmartCGMS architecture recognizes the following types of entities:

  • filters - a base entity, maintains one isolated piece of work
  • discrete models - generates signals with a fixed stepping
  • signal models - generates signals as a result of another incoming signal level
  • metrics - evaluates the differences between two signals
  • solvers - optimizes parameters of a given model using a programmer-defined objective function
  • approximators - approximates a discrete signal, calculates (or estimates) its derivation
  • signals - containers for a set of signal levels

Each entity has its own GUID and descriptor. A single entity should be managed by a single shared object (dynamic library). The shared object that exported the entity descriptor (via the do_get_*_descriptors) must also be able to create it using appropriate factory method (do_create_*).

Some entity types must implement its respective interface. If using the C++ SDK, the interface identifiers per entity type are as follows:

  • scgms::IFilter for filters
  • scgms::IDiscrete_Model for discrete models
  • scgms::IMetric for metrics
  • scgms::IApproximator for approximators
  • scgms::ISignal for signals
  • signal models are not exported as entities; instead, they only manage a collection of signals (thus a signal model has a descriptor and available signals only)
  • solvers are not exported as entities; instead, they are invoked using do_solve_generic call

Interface contracts, descriptor contents and implementation details are described in respective subpages.