REDHAWK Release Notes - 2.1.0
The effort in REDHAWK 2.1.0 focused on:
- Adding support for Components to be deployed on a specific GPP, and conversely allowing the GPP to restrict deployments through a matching set of id/value pairs. These id/value pairs are defined in the Software Assembly Descriptor and Device Configuration Definition files respectively. Users may refer to this feature as the “special snowflake” deployment Property.
- Shared address space Components: Significant enhancement of Component model and BulkIO to support high performance I/O. Preliminary developer documentation for the REDHAWK 2.1.0 beta release is available at https://github.com/RedhawkSDR/core-framework/tree/develop-2.1/docs/shared-address. This feature will be under extensive evaluation during the 2.1.x beta release series and is expected to provide the ground work for several new major enhancements to REDHAWK.
- Adding support for a new type of Property, “utctime”, extending the list that includes types such as “short” or “string”. This timestamp Property is used in Property change events and can be queried from Components/Devices with the id QUERY_TIMESTAMP, which is useful when synchronizing the state of the system. The new type of Property can be used by Component/Device developers as an additional type of Property.
- Adding cacheDirectory and workingDirectory Properties to the GPP. These properties provide the deployer with control over where Components are stored (cacheDirectory) and the directory from which Components are executed (workingDirectory).
- Redesigning the IDE’s Event Viewer to improve the ability to monitor event channels.
- Ending support of Command-line interactive mode (-i) on Components, Services, and Devices. Terminal prompt interactions should be through the Python Sandbox.
- Improving Python tooling to help manage REDHAWK systems. For example, these improvements include eventChannelManager, allocationManager, and connectionManager helpers as well as simpler event monitoring.
- Adding functionality to allow Components that have a usesdevice dependency to now be launched on the same host (i.e., Device Manager/Node) as the Device satisfying the usesdevice requirement. This functionality is provided through an extension of the componentplacement hostcollocation.
- Improving recovery of a REDHAWK Domain after a catastrophic failure. The Device Manager reboots all associated Devices/Services when it detects a reset Domain Manager after a catastrophic failure in the Domain Manager. This reboot only happens if (1) persistence is enabled and (2) the name service log, event service log, and persistence database are emptied.
- Adding new concurrent logging appender for C++ Components to improve readability of logging messages when multiple processes are writing to the same log file.
- Improving the New Project Wizard to warn users if the project location selected already contains files that will become part of the project. Increase user awareness of files that may be moved, deleted, or packaged with a project.
- Updating the IDE to use the latest available Eclipse tooling, Eclipse Neon. For more information about Eclipse Neon, refer to http://www.eclipse.org/neon/noteworthy.
- Documenting a publisher/subscriber pattern when accessing an EventChannel from the Domain.
- Documenting available affinity processing directives when deploying Devices, Services, and Components.
- Adding support for the REDHAWK Core Framework, IDE, assets, and new REDHAWK projects to now compile against and run on Java 8.
- Extending DeviceManager to call configure() on Services at the time they register. This enables users to implement custom Property handling if so desired.
- Resolving issue when activating local servants for MessageConsumerPort and MessageSupplierPort Java classes.
- Improving Python Sandbox tooling for new Domain features and resources. Specifically, extended DataSource to provide access to all the available SRI and the data timestamp.
- Adding reservation schema graph in the documentation to enhance the text describing capacity allocation reservation for the GPP.
- Improving documentation of Signal Related Information (SRI).
- Updating Contributor License Agreement (CLA).
Core Framework Features
- Improved DeviceManager to call initalizeProperties or configure for Services that implement the CF::PropertyEmitter or CF::PropertySet interface.
- Added a rolling file appender that synchronizes access to a central file from multiple processes.
- Added support to allow executable Devices to restrict Component deployments during Application deployment.
- Added the implicit property QUERY_TIMESTAMP to all Components and Devices. When this property is queried, a UTCTime timestamp is returned. Furthermore, the PropertyChangeEvent has been extended with the member timestamp, also of UTCTime type.
- Added the ossie.utils.rhconnections package to make it simpler to generate endPoints for interactions between the Python Sandbox and the connectionManager.
- Added an allocations module to the Python ossie.utils module. This module contains a createProps function that performs type matches between a Device’s property set and the property set provided.
- Improved the usability of the Event Channel Manager in the Python package.
- Added new helpers in the Python Sandbox package to listen to Property change events.
- Added capability for the collocation of a usesdevice relationship and a Component on the same host.
- Updated the IDE’s Event Viewer to provide additional clarity when displaying information for all event types. The Event Viewer displays a summary of basic event information, while the Properties view displays full details for a selected event.
- Added IDE support to generate new C++ Components as shared address space Components.
- Added the ability to launch shared address space Components in the Sandbox.
- Added a disconnect button to the IDE Event Viewer, which enables users to stop the viewer from updating with new events, while still persisting existing information.
- Added support to display devicerequires/deployerrequires information for runtime Components/Devices in the Advanced tab of the Properties view.
- Added support for load and save of the deployerrequires element in DCD files and the devicerequires element in SAD files.
- Added support for load and save of the usesdeviceref element in SAD files.
- Added runtime support for viewing/changing timestamp Properties.
- Added design-time support for editing timestamp Properties.
- Added support to display the new precision timestamp associated with a PropertyChangeEvent.
- Added editor support to specify the requirements of the GPP that launches a Component.
- Added editor support to filter Components that can be launched on a Device.
- Added support for editing Devices collocated with a host collocation.
Core Framework Improvements
- Extended Sandbox DataSource to accept SRI and TimeStamp objects when push method is called.
- Moved start and stop Port calls from generated code into base classes.
- Improved sb.launch() to accept a single dictionary for all Property overrides and no longer require the user to distinguish between command line and initialization.
- Added support for new C++ Components to be created as shared libraries, which allow multiple Components to be deployed into the same process and enable faster, lower-cost I/O.
- Added validaton for SPD files to check that referenced shared library Component files are present.
- Enhanced the IDE to recognize shared address space Components.
- Added support to display event messages when event channels are added or removed.
- Added the ability to display PropertyChangeEvent in the Event Viewer.
Core Framework Fixes
- Message supplier Ports now support the CF.QueryablePort interface, which allows querying the current set of connection IDs and connected objects.
- If errors are encountered when installing an Waveform file, the ApplicationFactory will now throw an ApplicationInstallationError with the details of what error occurred.
- Improved error message when using the Python package to attach to a named domain when the name service has a stale reference to the missing Domain Manager.
- In Python FEI Devices, the default Port name used for matchAllocationIdToStreamId is populated correctly.
- Fixed a series of problems with Python FEI base classes, including :
- Added validateRequestSingle and validateRequestVsDeviceStream to remap the Python base API close to the Java and C++ base API.
- In Python FEI Devices, when the user code generates an exception, that exception is correctly logged.
- When Python FEI Devices fail to allocate resources, they return a correctly-formatted exception.
- Resolved issues with listener management in Python FEI Devices.
- validateRequestVsRFInfo correctly scales the minimum sampling rate for scalar or complex data.
- Fixed typo in error messages for Python FEI Devices.
- Added creation of sdr/dev/services directory when installing from source or the REDHAWK RPM package.
- Python FEI Device getTunerStatus call returns without errors.
- If the Java minimum is not met, the automake configure script exits before generating the Makefile.
- When an exception occurs during C++ FEI deallocation, updateUsageState is called to account for the deallocation(s) that succeeded.
- Fixed issue with C++ FEI Devices for failed allocations. Now, the C++ FEI Device base class returns false when the allocation fails instead of throwing an exception.
- The IDE now automatically adds header files in REDHAWK shared library projects to the Makefile.am.ide.
- Properties of type ulonglong are now passed to resources launched in the Sandbox.