Release 1#

Contents of release 1.14.0#

  • Core Frameworks

    • Updated Node.js Core Framework

      • Step Groups

        • The step function of the Component class supports a new ‘group’ parameter. When used, only the Component Behaviors and the Feature Behaviors matching that group will be executed.

        • Behaviors have a new ‘group’ attribute. Their ‘apply’ function is only executed if the ‘group’ argument matches the specified Behavior group.

        • Connectors have a new ‘group’ attribute. The group is propagated to the associated EndPoints Behaviors, so communication between components can also be orchestrated.

        • CoreContainer can now invoke the step function of its Components. This allows the orchestration of the behaviors from different Components using the group attribute.

        • The new ‘scan_mode’ property allows to specify whether a Component triggers its own step or is triggered externally as part of a step group.

      • Sampling Policies

        • Added a new ‘sampling_policies’ property with a set of predefined default sampling policies (silent, standby, norm, debug).

        • Added a new ‘sampling_mode’ property that can be used to set the sampling policies for all Component DataIOs.

      • Query sorting

        • Core Services now support a ‘sort’ expression when invoking a query

        • Updated ‘gas db’ command to support sorting arguments

      • Added new unit tests using node:test

      • Added new parameter depth to ‘grs inspect’ to display large, nested structures

      • ‘grs inspect’ can now show the status of Component behaviors, proxies and handlers

      • Minor bug fixes

    • Updated C/C++ Core Framework

      • Step Groups

        • generic_step changed to run_step, and now accepts a group parameter

        • group added to behaviors, which will not execute if the group passed as the _apply parameter is not the behavior group

        • group added to connectors

        • added the Dispatcher class, which can be used to orchestrate the execution of components

        • added scan_mode property in Component

      • Added ability to lock a ValueClassifier, or set a State Variable to not be controllable, preventing external updates

      • Updated Alarm and Fault Event fields, synchronized with Node.js implementation (#281, #288)

      • Fixed gmt_issues #201: Alarm acknowledgement

      • Fixed gmt_issues #237: The component execution will no longer be affected by setting a priority on a non-rt kernel

    • Updated Python Core Framework

      • Server Proxy and Data Adapters

      • Fixed issues with Sampling behavior (#284)

      • Fixed gmt_issues #248: Component class init default properties (#287)

    • Updated C/C++ IO Framework

      • EtherCAT SDO/PDO handling optimization

      • Minor bug fixes

Contents of release 1.13.0#

  • Core Frameworks

    • Updated C/C++ Core Framework

      • DataIOs now are part of collection fields. For example, to access the property acl now, one should use properties->acl->value. Same thing for inputs, outputs, state_vars, alarms and faults.

      • Added all the remaining core adapters to the C++ frameworks: conf, data, job, supervisor and alarm.

      • Added HealthSupervisingBehavior

      • Changed telemetry field from data to value to be consistent with other services

    • Updated Coffee Core Framework

      • Added initial support to the UI framework WebSockets

    • Updated Python Core Framework

      • Added new_async_input_handler method to Python DataIOs.

      • Added is_step_counter method to PeriodicThreads and, therefore, Components

      • Changed telemetry field from data to value to be consistent with other services

      • Bugfixes in the Periodic Behavior

    • Updated Development Framework

      • Fixed gds info command

Contents of release 1.12.0#

  • Core Frameworks

    • Updated C/C++ Core Framework

      • Added support for log messages containing formatted strings with parameters.

      • Added a class hierarchy to compute several kinds of moving averages.

      • Added convenience methods to the TimingAnalyzer class for getting measured start and end times.

      • Added an optional start-time delay in PeriodicThread class.

      • Fixed a minor issue with incoming Fault connectors.

    • Updated Python Core Framework

      • Improved error handling.

    • Updated C/C++ Development Framework

      • Fixed a code generation issue caused by a limitation in MsgPack macros when a struct had too many fields.

      • Code generation of Hardware Adapters now generate a parameter for DataIO during data objects creation, allowing the use of an async forward handler to automatically write SDOs.

      • Fixed gmt_issues #218: C++ applications are now only created for C++ components.

      • Fixed gmt_issues #181: The module.mk file will no longer be overwritten.

      • Fixed gmt_issues #195: Corrected CaMeLiZation of variables and methods for inherited packages.

    • Updated Python Development Framework

      • Fixed issue where code generation did not call the Component setup method at the appropriate time.

Contents of release 1.11.0#

  • Core Frameworks

    • Updated C/C++ Core Framework

      • Added a forwarding asynchronous handler. This handler will automatically copy the data of an async readable feature to a writeable feature. Optionally, it will trigger an async send of the recipient feature.

      • Telemetry time stamps are now stored per step instead of individually for each telemetry value. This change optimizes space usage in the database and synchronizes timestamps for data collected within the same step.

    • Updated Python Core Framework

      • Minor bug fixes and example updates.

      • Added send() method to dataio implementation

      • Updates to preliminary Test Framework implementation, including the ability to skip certain tests and specifying a host runner.

      • Fixed issue with python ComponentProxy not working with C++ components (fixes GMTO/gmt_issues#227)

    • Updated C/C++ I/O Framework

      • Fixed minor issue in EtherCAT where the first PDO (ID 0) was not being sent correctly

Contents of release 1.10.0#

  • Core Frameworks

    • Updated C/C++ Core Framework

      • Added timers to the step function to assess performance

      • Fixed adding scan_rate in the properties declaration

      • Fixed issue with telemetry sampling rate that caused erroneous sampling rates in some cases

    • Updated Development Framework

      • Fixed issue #212: Type ‘float’ is now mapped to ‘double’ in C++, per modeling guidelines

      • Removed stale zeromq dependency

    • Updated C/C++ IO Framework

      • EtherCAT HW Adapter refactoring

        • Fixed names, namespaces and includes

        • Improved robustness of several data structures and decision trees

        • Updated to follow code formatting guidelines

        • Improved encapsulation of etherlab library method calls

        • Fixed errors and typos in type name identifiers and descriptions

      • EtherCAT HW Adapter updates

        • EtherCAT bus configuration is now loaded and applied during the setup, before the step loop starts

        • The state machine of the EtherCAT master has been changed to a StateMachine Behavior

        • The SDO read/write mechanisms have been changed, as the previous strategy led to non-deterministic errors on sdo read or write. Now the framework provides:

          • Methods to read/write SDO during the setup execution, before starting the RT process. These methods are blocking and ensure that all read/write operations are executed before the step

          • Methods to read/write SDO during the step execution. These methods are non-blocking. The operations will take more than one cycle to be completed; upon completion, a user-provided callback is executed

    • Updated UI Framework

      • Improved build environment for continuous integration and dependencies on other modules

      • Improved error logging

      • Fixed issue with multi-dimensional array parsing

Contents of release 1.9.0#

  • Core Frameworks

    • Updated Core Framework

      • Implemented Python Component life-cycle, including - Resource allocation/deallocation - op_state_sv state machine compliance

      • Implemented Python Component Distributed Communication, including - Reading and writing remote data - Asynchronous communication - Pseudo synchronous communication - Publishing and receiving data streams

      • Implemented Python Component Behaviors, including - Periodic behavior - Dynamic behavior - Reusable behaviors - OpState behavior

      • Implemented Python Component Service Access (Container), including - Log events - Telemetry - Local logging

      • Fixed minor issues in the service data ports

    • Updated IO Framework

      • Fixed small issues in EtherCAT hardware adapter

        • Vendor_id type changed from uint8 to uint32

        • Updated support for addressing slaves by alias

        • Set slave to PRE_OP after firmware update

        • Re-read SDOs on slave when transitioning from IDLE to RUNNING

        • Added an error log when the master goes into ERROR state

        • #116: Removed erroneous “Failed to get slave info: invalid argument” error message on hw_adapter_app start-up

        • #124: Added slave type info to get_ethercat_slave_info functions

        • #125: Added exception checking in get_ethercat_slave_info functions for invalid values (slave does not exist)

        • #126: Prevent application from crashing if booting without no slaves connected on the bus (but defined in the config)

    • Updated Development Framework

      • Added OCS Module code generation in Python

      • Added OCS Module building support for Python platform

      • Implemented Model definition mapping to Python

    • Updated UI Framework

      • Split framework into separate libraries with separate concerns to make future development easier

      • Visualization Package development with dynamic rendering

        • visualization packages can be run as standalone apps using Navigator as the launcher

        • single source of modules in GMT_LOCAL/node_modules

        • visualization packages can register data with Navigator context

    • React library implementation

      • provides a simple and systematic way to retrieve and display connector data

      • provides interaction primitives that can be used to build complex visualization packages

    • UI Styles update

      • unified look and feel through CSS styling

      • updated widgets for buttons and data structures

  • Navigator Application

    • Stability and performance improvements

    • Updated tab system

      • drag & drop support

      • tab groups

      • complex layouts

      • faster tab switching/rendering

    • Create new inspect instances by pasting comands grs inspect commands

    • Load standalone vis packages

    • Develop vis packages with live-reload

  • Documentation: Software Development

    • Updated Installing the SDK

      • Fixed commandline examples

      • Added installation instructions for Python and related libraries

    • Updated upgrade

      • Added instructions for upgrading from v1.8 to v1.9

  • Known issues

    • Missing documentation for Python model-language mapping

    • Missing documentatino for updated widget library

Contents of release 1.8.1#

  • Core Frameworks

    • Updated UI Framework

      • Added React framework library, allowing vis panel developers to use the same library used by Navigator.

      • Consolidated CSS styles, allowing vis panels to inherit Navigator’s look and feel

      • Added new developer tools to support realtime vis panel rendering during development

  • Navigator Application

    • Updated data rendering

      • better representation of on/off states

      • distinct colors for data types

      • fixed rendering issues for complex data types

      • cleaner and more consistent design

      • fail gracefully on unknown types

    • Updated data controls

      • allow selection between connecting to service data ports or sockets

      • play/stop interface to start and stop data streaming from components

      • show errors on connection failure

    • Improved interface for sending values to component features

      • notification on successfully sending a value

      • allow storing and editing a list of commonly used values per feature

      • auto saves last value sent to list of commonly used values

    • Improved toolboxes

      • selecting enums and state machines will show all possible values

      • selecting structs will show properties and types

    • Auto-generated intance tabs

      • selecting an instance now opens a more comprehensive view with inputs/outputs/state_vars

    • Preliminary plots

      • 2D plot view of a single scalar value

    • New window tiling system with improved panel editor

      • add/remove new panels to the grid

      • resize and re-order panels

      • Add panels from different component instances to the same view

    • Camera views

      • GMT site cameras included in the list of pre-defined camera feeds that can be added from the panel menu

    • Vis panel developer tools

      • allows switching between production and development modes

      • allows mock data to be received by the UI, simulating a component

      • realtime vis panel rendering during development

    • Improved error displays when failing to render

      • provide full stacktrace for better debugging

      • automated attempts to recover from error

    • Performance improvements

      • threaded component proxy instances

      • rendering improvements

      • more memoization, more fun

  • Implementation Examples

    • The HDK example has been updated to be synchronized with Core Frameworks version 1.8

  • Documentation: Software Development

    • Updated gds documentation

      • Removed support for “gds clone” command. Developers are requested to use the “git clone” command directly.

    • Updated grs documentation

      • Added description of “grs db” command for Database operations when the instance implements a database server

      • Added more examples of grs commands

    • Updated Mapping between the Model Definition Files and Coffeescript source code

      • Updated diagrams for Fault FSM and Alarm FSM

      • Updated description for StructType, Enum and StateMachine Data Types

      • Updated description of communication between components to be consistent with Core Frameworks version 1.8

      • Added section describing the ComponentProxy

    • Updated Model specification guide document

      • Updated to be consistent with Core Frameworks version 1.8

      • New examples and diagrams

    • Updated OCS Test Guidelines

      • Updated examples to use “op_state_value” instead of “ops_state_value” to be consistent with the version 1.8 of the core frameworks

    • Updated ui_fwk documentation

Contents of release 1.8.0#

  • Release distribution and installation:

    • Updated mechanism for packaging and distributing the Navigator application for MacOS and Linux

  • Third-party libraries and Applications

    • Updated to Node 12.16.1

    • Updated the following node modules to newer versions:

      • coffeescript 2.5.1

      • mongodb 4.2

      • nanomsg 4.1.0

      • zeromq 5.2.0

  • Development Framework

    • New Data I/O and Connector definitions implemented on Node.js and C++

    • Update ICD model and docgen templates for generating ICD documents

    • Add generation of automated interface tests

    • Code Generation updates on Node.js:

      • Update code generation for the new Data I/O and connector model definitions

      • Add code generation for StateMachine and StructType data types

      • Add code generation for Enums (#178)

      • Fixed issue where code generation created duplicate “require” statements (#177)

      • Fixed issue in code generation where components were included in an application that did not match the target language (#175)

    • Code Generation updates on C++:

      • Update code generation for the new Data I/O and connector definitions

      • Update code generation for Faults and Alarms

      • Updated code generation of HW Adapter to allow having data objects that are primitive types or array elements instead of structs when the “field” parameter of a data object in the data_object_map collection is left empty (#169)

      • Fixed issue in C++ code generation of default values for arrays of state machines (#156)

      • Fixed issue in C++ code generation of path values for data types (#163)

      • Fixed issue in C++ code generation of default values for data types defined in the IO Framework (#164)

      • Fixed issue in C++ code generation where the dimensions of a 2D array was reversed (#167)

      • Removed GMT namespace from I/O Framework state machines (#172)

      • Fixed issue where enums in C++ were not properly initialized (#176)

    • Configuration files:

      • Updated generation of configuration files for new Data I/O and connector definitions

      • Fixed issue in generation of port numbers in configuration files (#157)

      • Fixed issue in generation of state variable ports in configuration files (#165)

      • Fixed issue in generation of large default values in configuration files (#168)

    • Improved error handling in ‘grs compile’ when the URI has not been specified properly in the model (#143)

    • Update ‘grs compile’ to compile all the configuration files of a module

    • Added check option in ‘grs compile’ to check the consistency of the compiled files

  • Core Frameworks

    • Updated Node.js implementation of Core Framework:

      • New implementation of Data I/O and Connector strategy

      • Added timeout option to grs get, set and inspect commands

      • Added monitoring of computing resources, such as CPU and memory

      • CPU and memory performance optimizations

      • Updated model definition and implementation of Enum data types

      • Updated control_mode_sv state machine implementation

      • Updated OpStateFSM, AlarmFSM and FaultFSM model representation to match current implementation

      • Added performance metrics for Component Behaviors (step execution average, jitter, etc)

      • Added Query API to service adapters

    • Updated C++ implementation of Core Framework:

      • New implementation of Data I/O and Connector strategy, updated to match Node.js Core Framework

      • Added Fault Management

      • Added Alarm Management

      • Component distributed asynchronous communication

      • Updated op_state_sv state machine implementation

      • Updated Component Service Access (container) handling of alarm, fault and configuration events

    • Added Node.js implementation of OPC-UA Adapter with client and server implementation examples

    • Added new database command to the grs tool to query and update the Core Services databases

    • EtherCAT Hardware Adapter updates:

      • Support the ability to set any EtherCAT slave state from the master (including OFF, PREOP, OP, SAFEOP, INIT and BOOT)

      • Added ability to update slave firmware from the master

      • Support definition of domains with different data rates

      • Fixed PDO mapping

    • Control Framework updated to sync with Node.js Core Framework

    • Updated Persistence Framework:

      • Updated mongodb driver

      • Added database connection monitoring

    • Test Framework updated to sync with Node.js Core Framework

    • UI Framework implementation:

      • Abstraction of UI framework components from the Navigator application

      • Updated data connectors to synchronize with Core Frameworks

      • Added basic 2-D Plot widget for time-series display

      • Data Caching for widgets that are temporarily not visible

      • Added a basic Telemetry Viewer UI Element with filtering capability

  • Core Services

    • Add support for Query API to Core Service Servers

  • Implementation examples

    • The HDK example has been updated to sync with the new Core Frameworks

    • The ISample example has been updated to sync with the new Core Frameworks

  • Documentation: Software Development

    • Minor updates to the Installing the SDK and Upgrade pages

    • Replaced the online version of the Software and Controls Standards with a download link for the released version of Rev.A

  • Known Issues:

    • Validate command has not been updated yet to correctly validate the new Connector implementation

Contents of release 1.7.0#

  • Release distribution and installation:

    • Support added for CentOS 8

  • Core Frameworks:

    • Development Framework:

      • Added C++17 support

      • Added SerialAdapter compiler flags to module.mk

      • Fixed issue where make did not parallelize the build correctly (#139)

    • Core Framework (Node.js):

      • Fixed issue where a scan rate < 1 caused an issue in periodic execution (#152)

    • Core Framework (C++):

      • Added StateMachine implementation

      • Implemented Operational State Machine

    • I/O Framework:

      • Updated query mechanism for EtherCAT slave state

      • Alias addressing on the EtherCAT bus

  • Navigator Application:

    • Complete integration with latest version of the Node.js frameworks, including Service Data Ports

    • Added a basic log viewer UI Element with filtering capability

    • Added a basic telemetry viewer UI Element

    • Added ability to get and set state variables, inputs and outputs via the user interface

    • Updated packaging and distribution for MacOS and Linux

  • Documentation: Software Development

    • Updated instructions for installing and running the Navigator application in MacOS and Linux

    • Updated installation and upgrade instructions for CentOS 8

    • Update Virtual Machine installation guide for CentOS 8

    • Developer Guide for UI Framework

  • Implementation Examples:

    • Updated version of the HDK with Visualization Package

  • Known Issues:

    • In C++ controllers, auto-generated configuration files need to be updated by hand to define the correct inputs and outputs for the goals and values of the state variables

    • System reboot may be needed after losing connection to EtherCAT modules

Contents of release 1.6.2#

  • Bug Fixes:

    • Fixed issue with connectors in Node.js where components incorrectly determined whether a connection is active/inactive

    • Unable to reproduce issue in v1.6.0 with generating test skeletons using “gds gen -t test”. Marking as fixed.

    • Fixed issue in v1.6.0 with sending SDOs during runtime using the EtherCAT Hardware Adapter.

Contents of release 1.6.1#

  • Core Frameworks:

    • Development Framework:

      • Improved component configuration generation

      • Fixed type generation case in which no types are defined

      • Fixed names of inputs and outputs in config file

      • Preserving StateMachine and Component generated files

      • Preserving module.mk when generating code

      • Improved codegen for Node.js applications

      • Fixed dependency linking in Makefile for compiling apps, examples and tests with parallel option (-j)

    • Core Framework (Node.js):

      • Updated State Machine implementation

      • Updated Tree validation and improved validation rules

      • Improved Fault and Alarm State Machines

      • Added state elapsed time and timeout functionality

    • Core Framework (C++):

      • Improved compilation time due to external template declaration and explicit template instantiation

      • Restructured Service Data code to reduce compilation time

      • Removed unused Data I/O (i.e.: heartbeat, etc)

    • Control Framework: - Improved compilation time due to external template declaration and explicit template instantiation

    • Test Framework:

      • Performance and Functionality improvements

  • Core Services:

    • Log, Alarm, Telemetry and Configuration Services:

      • Fixed empty parent specification in fault section of the configuration files

  • OCS Application System:

    • Added preview of Core Service Server improvements

  • OCS Supervisory System:

    • Updated Fault and Alarm Tree specifications

  • OCS Sequencing System:

    • Initial implementation and examples for the OCS Sequencer

  • Documentation: Software Development

    • Added description of the mapping between the Model Definition Files and Coffeescript source code (Mapping between the Model Definition Files and Coffeescript source code).

    • Added Version 1.5 to Version 1.6 migration guide

    • Updated page gds documentation to add section on gds validate command

    • Updated page Core Services user guide to use fix argument description for --records command.

    • Updated page Model specification guide document, section Component Specification, to update faults and alarms descriptions.

  • Implementation Examples:

    • Updated ISample connector specification

Contents of release 1.6.0#

  • Release distribution and installation

    • The Navigator application is now distributed as a binary instead of a tar file (Supported on MacOS).

  • Third-party libraries and Applications

    • Updated from Node 8 to Node 10

    • Updated the following node modules to newer versions:

      • coffeescript 2.4

      • mongodb 3.2

      • nanomsg 4.0.2

      • zeromq 5.1

    • Updated to msgpack version 3.1.1

    • Updated to nanomsg (C++) version 1.1.5

  • Development Framework

    • Add Node.js code generation

    • Code Generation updates on C++:

      • Update code generation to sync with Core and I/O Frameworks

      • Change code preservation mechanism

      • Add realtime-specific code generation

    • Fixed minor issues in “gds info” and “validate” commands

    • Fixed issue where default values for State Variables were not generated in the config files

    • Updated OPC-UA data model generator

  • Core Frameworks

    • Updated Node.js implementation of Core Framework:

      • Refactored Service Data Ports

      • Added HealthSupervisory behavior

      • Added Fault Management and propagation

      • Fault Tree evaluation per Component

      • Support of DataIO paths

      • Implementation of connectors between DataIO paths

      • Component to Component communication without dedicated ports

      • Added Alarm Management and propagation

      • Compilation and loading of configuration files from the file system

      • Added new runtime tool to inspect and communicate with running components (grs)

      • Added ComponentProxy to communicate with other components given their instance name

      • Added Views for command line state visualization

      • Added support for distributed goal sequencing

      • Telemetry decimation

    • Refactored C++ Core Framework to sync with Node.js Core Framework:

      • Added Service Data Ports

      • Added support for loading component configurations from file

      • Added Asynchronous ports

      • Added real-time support

      • Telemetry decimation

      • Command Line support for C++ applications

    • Updated C++ Control Framework to sync with Core Framework

    • EtherCAT Hardware Adapter updates:

      • Support dynamic updates to PDO mapping during runtime

      • EtherCAT ring topology support

      • Read the slave state (OP, PREOP, SAFEOP, etc)

      • Fixed issue found when etherCAT bus nominal rate was less than the component scan rate

    • Added basic Serial Communications Hardware Adapter (does not support Serial over EtherCAT yet)

    • Persistence Framework updated to sync with Node.js Core Framework:

      • Added option to define the number of records to return on a query

      • Added database connection and disconnection fault reporting

  • Core Services

    • Refactored all core services to sync with Node.js Core Framework

    • Update options to the core services command line tools (See updated documentation)

  • Navigator Application

    • Updated Look & Feel

  • Implementation examples

    • The HDK example has been updated to sync with the new Core Frameworks

      • Configurations are read from file and the command line

      • Realtime priorities added

      • Changes in class layout (each Component has a Base with autogenerated code and a derived class with user-added code)

      • Using CoreContainer and CoreApplication

    • The ISample example has been updated to sync with the new Core Frameworks

      • Model files have been cleaned up

      • Removed Heartbeat dedicated port as this is now managed transparently by the component supervisor

      • Removed unsupported components from the Model

      • Changed async ports to sync

  • Documentation: Software Development

    • New page grs documentation, contains a user guide for the new grs (GMT Runtime System) Tool. This utility allows interaction with running instances of remote components.

    • Updated page Core Services user guide, to reflect recent changes to the Core Services Applications.

    • Updated ISample Example and HDK example pages to reflect recent changes to the commands for interacting with the core service applications.

    • Updated UI Framework page to simplify installation instructions for the Navigator application binary.

  • Known Issues:

    • Generating test skeletons with “gds gen -t test” does not currently work

    • The UI Framework has not been updated to work with the new Core Frameworks yet. This updated functionality will be included in an updated release in the next 2 months, along with more examples on creating User Interface panels.

    • Functionality added to send SDOs during runtime using the EtherCAT Hardware Adapter does not work as expected. At this time, no SDOs can be sent to the slave, either during start-up or runtime. This will be fixed in a patch as soon possible.

    • The issue connecting the IgH Master to EL7201-0010 and EL7211-0010 modules has been fixed, but the known issue with sending SDO values to the slave affects this functionality as well.

Contents of release 1.5.0#

  • Release distribution and installation

    • Support added for Fedora 28

    • Installation instructions updated for creating either a Fedora 28 Server or a MacOS Workstation

    • Instructions added for installing and running the SDK and Navigator application on MacOS

  • Development Framework

    • Added Model validation with `gds validate` command

    • Added Test plugin for generating and executing module tests

    • Fixed `gds new` command (issue #108)

  • Core Frameworks

    • C++ components generate heartbeats using timestamps instead of 0 values

    • EtherCAT support

      • Added ability to send SDOs to slaves during runtime and not just during initialization

      • Fixed issue with sending SDOs to multiple slaves with the same name

    • Added Ethernet TCP/IP Hardware Adapter

    • Initial release of the UI Framework for building User Interface panels

      • Navigator Application for viewing Engineering UI panels and custom UI Panels

      • Model files are loaded automatically for configured modules to build Engineering UI Panels

      • Custom UI panels can be defined in the Visualization package of the module

    • Initial release of the Test Framework for generating and running tests on the Component level

  • Implementation examples

    • HDK components have been updated to provide visibility to data for the UI

    • Documentation for the HDK example has been updated to include UI components.

  • Documentation: Software Development

    • New page UI Framework, contains a user guide for UI Framework.

    • New page OCS Test Guidelines, contains a user guide for the Test Framework.

    • Updated page HDK example, with instructions on running the Engineering UI and building custom UI panels.

Contents of release 1.4.1#

  • Release distribution and installation

    • A new folder `doc` has been created in `$GMT_GLOBAL` with the PDF version of the documentation.

  • Development Framework

    • Updated configuration files

    • Improvements in the C++ code generation:

      • Properties-related code is now generated.

      • Inherited class member variables are not re-defined in the generated code for derived classes.

      • Type mapping improvements.

      • Fixes to handle correctly some rare cases in code generation.

  • Core Frameworks

    • Add database support for logging and telemetry.

    • Changed C++ BaseComponent class member variables according the model.

    • Component scan_rate is now a frequency (in Hz), not a period.

    • Port rates are now true frequencies, not cycle counts.

    • Fixed instabilities in the EtherCAT IO framework.

  • Implementation examples

    • Documentation for the HDK example has been added.

  • Documentation: Software Development

    • New page gds documentation, with the user manual of the gds tool.

    • New page Model specification guide, with the description of the model files syntax.

    • New page Model-language mapping, with the mapping between the model files and the implementation languages.

    • New page Core Services user guide, with the user manual of the core services.

    • New page HDK example, with a tutorial to download, build and execute the HDK example.

Contents of release 1.4.0#

  • Release distribution and installation

    • The OCS Software Release is no longer distributed as a fully configured ISO file with multiple RPM packages to be installed. The Software Development Kit (SDK) is now distributed as a single TAR file. The Operating System must be installed independently.

    • Instructions are provided to install the Operating System, set up the development platform, configure applicable system services, install external dependencies, install the SDK and use the Development Tools for software development.

    • Dependency management is built into the SDK platform instead of being managed by external tools in order to maintain control of specific versions used.

  • Development Framework

    • The single repository containing model files and development tools has been reorganized into individual modules according to the new Work Breakdown Structure (WBS). The SDK supports the full life-cycle of each module independently.

    • Folder organization and tools and processes for working within the development environment have been standardized across all modules.

    • Development tools have been added to configure the development environment, integrate modules and build/deploy software in a standardized way.

    • The build system is improved and simplified.

    • The code generator supports c++ and coffee targets, with python planned on subsequent releases.

    • The code generator includes now support for scalar, structured and multidimensional array types.

    • A preliminary test automation framework is included with this release.

  • Core Frameworks

    • An improved version of the c++ implementation of the core frameworks is included. The major improvements are the correct handling of the configuration properties, the possibility to define default values for the input and output ports and the standardization of the telemetry generation.

    • A new nodejs implementation of the core frameworks is included and provides the foundation for the Core Services.

  • Core Services

    • A new improved implementation of the core services is included —currently, logging, telemetry, alarm and supervisory services are included.

    • All the services provide event consumer filtering.

    • The server and test client applications support new command line options and help.

  • Implementation examples

    • Two reference Device Control System implementations are included: hdk_dcs and isample_dcs.

    • The model specifications of both subsystem have been updated

    • The code generated from the specification can be compiled and executed.

    • Both examples are distributed directly from git

  • Documentation: Software Development

    • Installation page rewritten to reflect new OCS Software Release procedure:

      • Install the Operating System and configure system functions

      • Configure the Development Platform

    • Install the Software Development Kit (SDK)

    • Upgrade page rewritten to provide instructions for upgrading from version 1.3 to 1.4.

    • Installing a Virtual Machine page changed with instructions and images for installing a standard Fedora server instead of a distributed GMT iso file.

    • ISample Example page updated to reflect new Development Procedure using the SDK.

  • Known Issues

    • A new implementation of the EtherCAT IO framework is included and has some stability problems while loading the fieldbus configuration.

    • The persistent functionality of the core services has been revised and it is disabled in this release.

    • The project is working in the known issues and the release will be updated once a patch is available.

Follow the upgrade procedure.

Contents of release 1.3#

  • Upgraded OS to Fedora 26

  • Improvements to port communication mechanism using msgpack and nanomsg

  • Added support for float and double data objects in the Ethercat Adapter

  • Fully implemented testing port push/pull using gds

  • Fixed known issues with code generation

  • Defined the development environment file structure and added commands and scripts for easy configuration

  • Added Module Configuration Management

  • Added dynamic loading of submodules into gds/gmt

  • Made significant improvements to the code generator, including automatic port assignments based on the model

  • Moved ISample Example DCS to a new GitHub repository

  • Updated ISample Example documentation to reflect the new development workflow

Contents of release 1.2#

  • Minor bug fixes.

  • The code generation tools now support c++14.

  • Improved ISample Example documentation.

  • New guide on setting up a Virtual Machine development environment.

Contents of release 1.1#

  • Miscellaneous fixes and improvements. Follow the upgrade procedure.

Contents of release 1.0#

  • A set of common frameworks that provide software components that address similar problems with a unified architecture. The common frameworks encapsulate the implementation details allowing the developers to focus in the solving the domain specific programming tasks. These release includes a first implementation of the following frameworks:

    • The Core Framework implements a component model and distributed real-time communication protocols between components. Software components may be deployed in the same execution thread, different processes or different machines.

    • The IO framework provides adapter components that enable GMT software components to communicate with external control and data acquisition hardware. In this release the IO framework provides adapters for EtherCAT and OPC UA.

    • The Control Framework includes the main building blocks of a control system. These real-time control components address the problems of state estimation, goal estimation and state control and define a set of standard state variables and associated state machines (e.g. operation state, simulation mode and control mode).

    • The Persistence Framework provides a way to store telemetry data streams. The current implementation uses MongoDB.

  • A set of Core Services that allows subsystem developers to test their software/hardware components in an environment similar to the one they will find at the observatory. This release includes an initial implementation of the telemetry, configuration, persistence and logging services.

  • An example instrument control system implementation (ISample). This example provides a template that instrument developers can use as a model.

  • A formal specification and modeling language for the description of software interfaces. Interface test programs will be generated automatically from this specification to guarantee consistency between specification and implementation and to facilitate continuous integration and testing through the life of the project.

  • A set of code generation tools that create subsystem scaffolds that conform to the reference architecture. These scaffolds reduce dramatically the time necessary to have an initial working system by generating automatically repetitive and tedious parts of code. They also provide a way to separate application logic from infrastructure logic. The code generation tools support c++11, python and Coffeescript (Javascript dialect).

  • The documentation of the GMT control reference architecture and the corresponding development tools.

Note

The scope of v1.0 development documentation is currently limited to describing how to configure, start and monitor services (using logging and telemetry as examples), how to establish a communication network, and finally, how to setup a device control system. Future versions of this document will add other information as the development progresses.