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

The documentation is being updated to acommodate the recent improvements. Please, be patient, we are working on it...


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.