FESA3 Release 5.0.1 - Planning

Release Date:

03/18: Moved to end of 03/18 just after DR6


  • choice-yes less XSLT code generation (see below)
  • choice-yes subscriptions to ALL selector: first update behaviour (less exceptions desired here), should be configurable
  • choice-yes More testing: subscriptions to beam production chains
  • choice-yes updated CMW libraries: 2.1.0 -> CSCOSV
  • choice-yes which saftlib version to use?
    • currently available: cherry-v4
    • new release (d like ?) of SAFTlib planned weeks after FESA release, state unknown
  • choice-yes New: Timing Format 1 used all over exclusively
  • choice-yes numerous bug-fixes
  • choice-yes C++ 11 support enabled
  • choice-yes repeat integration tests after 01/18 system library patches

To be removed

  • choice-yes implementation of old selector format (FAIR.BP or FAIR.SEQ) ( whereas CERN timing selector format and most recent FAIR timing selector format (FAIR.SELECTOR.X) will stay)
  • choice-yes RPM installation: FESA Explorer does not need to be explicitely installed using RPMs anymore, @GSI Haralds installation will be used


  • first implementation of transactional settings concept? \\winfilesvg\bel$root\belgroup\CS-Design\CCT-Documents\Concepts\TransactionalConcept FESA3TransactionalSettingsConceptImplementation
    • draft implementation
    • interface design
    • additional integration test (FESA class and deploy-unit, transaction manager 0.0.0)
  • choice-nocondition compiler: integration of messages with parameters? missing implementation: still no implementation for parameter usage in messages
  • exceptions should contain device name wherever possible (core / specific part) - exceptions are thrown per field, device seems not accessible at that moment
  • MASP integration? First stable API and library required, MASP usage configurable?
  • Persistency better configurable, e.g. at startup?
  • TODO Usage of Eclipse Oxygen??? SVN plug-in/command line version incompatibilities expected, introduction postponed so far
  • formalized data acquisition?
  • API for interlock signalling?
  • how to proceed with setting data / persistent data problem of function generators? One setting property is not the right solution in this case.
  • ??? GSI: Alarm system integration -> CSCOSV, derzeit kein Ansprechpartner (07/16)
  • ??? GSI: RBAC integration -> CSCOSV, VRapp, Integration possible in FESA in Release 9? (07/16)
  • ??? GSI: Post Mortem integration -> CSCOSV, derzeit keine Planung dafuer (07/16)
  • ??? GSI: Archiving integration -> CSCOSV, derzeit keine Planung dafuer (07/16)
  • Environment tools for observing CMX data -> CSCOSV

FESA3 5.0.0 Release@CERN (Email, 11.08.2017)

Release Notes - FESA3 V5.0.0 (08-08-2017)

FESA3 V5.0.0 is a major release containing new features and bug fixes. It is notbackward compatible with V4, V3, V2 or V1 but the backwards incompatible changes are handled transparently and in the majority of cases won't need a manual modification of the code (see the section "Backwards incompatible changes" below). Please ensure that you use FESA plug-in V2.6.0 or higher before moving to this version of the framework.

Important points

CentOS 7

This is the first version of FESA that is compatible with CentOS 7. In order to test FESA projects for CentOS 7, you must use a CentOS 7 development machine (SLC6 cannot produce binaries for CentOS 7).

Please mind that at the time of this release, it is not yet possible to release and/or deploy FESA deploy-units for CentOS 7 front-ends; only local development and testing is possible.


  • Persistence: if a multiplexed device changes timing domain, the persistent data of its multiplexed fields won't be restored, since the selectors are unique to a timing domain.
  • Makefile-generic: a bug in makefile-generic was found and fixed following an SLC6 update (SIPC-64). The fix makes use of the -rpath-link linker option. If you use it in a Makefile.specific file, you must instead extend the RPATH_LINK variable.

Backward incompatible changes

  • It is not possible anymore to get and set a value of a multiplexed acquisition field with a NoneContext. This was allowed, but was a bug. Trying to do so will now throw an exception.
  • The include path of the PM library has changed from pm to pm-dc-lib. The corresponding include directives are migrated automatically from #include <pm/....h> to #include <pm-dc-lib/....h>.
  • DataStore::getName() returns a const string reference instead of a string. The impact is minimal; only the code modifying the return value is affected, and the change is trivial.
  • The enumeration value MultiplexingContext::TimerCtxt has been removed (it was never used).
  • Generated struct types now have a default constructor that initialize all their attributes to valid values (0 or, for enumerations without a value that maps to 0, the first value of the enumeration). This means that they cannot be initialized with a C-style initializer anymore.

New Features & Improvements

  • FESA-4712] - Device collections order in RT actions is now guaranteed to be the same as in the instance file
  • FESA-5034, FESA-5281, FESA-6871] - Fields with variable dimensions can use a configuration field value as the dimension
  • FESA-6800] - Persistence: multiplexed fields are now restored first based on cycle name, with fallback on cycle id. This is because cycle ids can change and wrong values could be restored.
  • FESA-6081] - The GetStatus action (used by the status property) can now be customised
  • FESA-6237] - An event of type OnSubscription can now contain the property name to be used, ensuring the received data is of the correct format
  • FESA-6419] - The type size_t can now be used in custom constants
  • FESA-3623] - The "default" tag has been removed from value-items (its only effect was to cause confusion)
  • FESA-6647] - The metrics property is always present in newly created FESA classes
  • FESA-6795] - Notification performance improved for deploy-units holding many devices
  • FESA-6440] - Warning displayed for subscribable acquisition properties that are not notified
  • FESA-6441] - Warning displayed in the deployment-unit for scheduling-units that are not in a concurrency layer
  • FESA-6786] - Field classes now have a value_type typedef
  • FESA-6825] - Generated struct types now have a default constructor, and a clear method to reset them
  • FESA-6872] - FESA class makefiles are generated with linker flags to allow for easier unit testing
  • FESA-6839] - pm-dc-lib is now a direct dependency of FESA
  • FESA-6842] - The CycleDescriptor class doesn't contain an empty cycle selector by default any more, making isRealCycleSelector() obsolete.
  • FESA-4795, FESA-6509] - Minor code improvements
  • FESA-5769, FESA-6418, FESA-6443] - Removed unused attributes in the class and deploy-unit designs (repository-path, build time, ...)

Bug fixes

  • FESA-5860] - The "data-consistent" attribute cannot be used with fault fields anymore. It didn't have any effect on fault fields but could cause issues when used.
  • FESA-6448] - Array fields' memory was filled with the last element value. This is not the case anymore since it was inconsistent with how other field types are treated.


This version depends on:
  • cmw-rda3-cern V2.1.0
  • TimDT V1.7
  • Boost 1.54
  • cmw-cmx V2.1.5
  • pm-dc-lib V3.2.2
I remind you that if you use directly any of those libraries and/or any of their internal libraries (e.g. libcmw-log), you must use the same version as FESA. Failing to do so could lead to linking errors or even wrong runtime behaviour.
Topic revision: r17 - 22 May 2018, SolveighMatthies
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback