REDHAWK Release Notes - 2.1.2
The effort in REDHAWK 2.1.2 focused on:
Core REDHAWK Features and APIs
- 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/2.1.2/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.
- Implementing a new zero-copy IPC mechanism for BulkIO that uses shared memory to transfer data between two processes on the same host. This is a follow-on enhancement to the shared address space Components feature. Preliminary developer documentation for the REDHAWK 2.1.0 beta release is available at https://github.com/RedhawkSDR/core-framework/tree/2.1.2/docs/shared-memory/shared-memory-ipc.md.
- FrontEnd Interfaces (FEI) Property definition change: For Devices, the
FRONTEND::listener_allocationallocation properties are now writeonly instead of readwrite. Because the properties are now created as writeonly, they can no longer be queried. This change was made to prevent confusion with the actual state of the FrontEnd Device, which is reported by the
FRONTEND::tuner statusproperty. Existing Core Asset FEI Devices have been updated with this change. New FrontEnd Devices created with the IDE will automatically have this change.
- 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 PropertyChangeEvents and can be queried from Components/Devices with the id
QUERY_TIMESTAMP, which is useful when synchronizing the state of the system. utctime can be used by Component/Device developers as an additional type of Property.
- Adding functionality for capacity to be reserved for an entire host collocation on the SAD file. The reservation is a capacity floor for the Components in the host collocation, where the amount of capacity utilized by the aggregate set of Components is this reservation or actual, whichever is higher. This reservation is allocated against the target GPP running this Application, allowing the GPP to verify that the request can be satisfied, reducing the likelihood of over-subscription.
- Adding support for DCD files to have a startorder attribute, which functions similarly to the SAD file’s startorder. On startup, “start” is automatically called on Devices and Services (when possible), and on shutdown, reverse-order “stop” is called. The IDE’s tooling for DCD files has been updated to display and edit startorder.
- Adding support for the DeviceManager to resolve run time environment settings when deploying Devices and Services that have soft package dependencies.
- Resolving issue so that during Application release, calls to the Application object no longer result in misleading errors.
- Adding functionality within the code generators so they create C++, Java, or Python constants for enumerated values defined in the PRF.
- Improving flexibility to ignore GPP threshold checks when determining if the GPP should go into a BUSY state.
- Removing some obsolete options from the Core Framework and BulkIO configure scripts.
- Resolving issue where processes with spaces in the names would cause the GPP to terminate.
- Resolving issue to allow for slow startup conditions of OmniNames service before starting OmniEvents service.
- Adding the stop timeout control to the Application. Options, like the stop timeout, can be configured when designing Waveforms in the IDE.
- Resolving issue with incorrect exception being thrown during allocateCapacity.
- Resolving issue when shutting down orb from Python resources.
- Providing a warning in the logs if a message is too large.
- Resolving issue with the code generators so they can be run on systems with FIPS enabled.
- Resolving issue so generated C++ FEI Devices do not leak memory when deallocating listeners. Existing Devices must be regenerated and recompiled to apply this fix.
- Resolving a memory leak in FrontendTunerDevice::create(). Existing Devices must be recompiled to apply this fix.
- Resolving issue so the function
returnRFInfoPkttransforms all fields between types
- Adjusting the default tuner type for the Python Sandbox tuner allocation. It is now
RX_DIGITIZERrather than DDC, matching the default tuner for a generated FEI Device.
- Preventing sb.DataSink from adding an empty timestamp when it receives EOS in an empty packet.
- Adding scripts and configuration files that allow REDHAWK core services to run as system services. In addition to these services, integrators can define REDHAWK Waveforms that are deployed during the system boot process.
Python Tooling and Sandbox
- Adding snapshot capability of network data and performing SDDS packet analysis on the captured data.
- Improving Python tooling to help manage REDHAWK systems. For example, these improvements include more intuitive event monitoring as well as new EventChannelManager, AllocationManager, and ConnectionManager helpers.
- Adding support for debugger options in the Python sandbox for C++ (Valgrind or gdb), Python (pdb), or Java (jdb) Components, Services, or Devices.
- 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 an option to enable the Domain Manager’s logging level to be dynamically changed.
- Waveform Metrics support: Application objects now contain a “metrics” function that returns GPP usage metrics for individual Components as well as overall for the Application. Metrics are viewable in the Properties view of the IDE. Waveform metrics can now be accessed in the REDHAWK Driver Java and REST APIs.
- Adding the Components tab to the Waveform editor in the IDE to allow editing of Component instantiation details, including logging configuration. This information will be used to resolve the LOGGING_CONFIG_URI parameter during Component deployment.
- Improving the user experience when locating and connecting to existing REDHAWK Domains.
- Providing users with the option to copy Properties from other projects in their workspace or choose from pre-defined REDHAWK Properties when developing a Component or Device.
- Displaying a REDHAWK editor when double-clicking on SCD XML files.
- Adding a notification that is now displayed after exporting projects to the Target SDR.
- Providing better support for adding and editing Services in a DCD file.
- Resolving issue so Diagram shapes no longer stack if they are part of a feedback loop.
- Removing old code generation templates for REDHAWK 1.8 from the IDE. Old IDE diagrams for Waveforms and Nodes from pre-2.0.0 were also removed.
- Adding a Connection Callbacks section to the REDHAWK Manual.
- Updating the REDHAWK Manual with accessibility rules for all properties. Updating the REDHAWK ICD with the description of the new “property” kind.
- Adding a Libraries chapter in the REDHAWK Manual to explain how to use shared libraries.
- Adding documentation explaining how to use the Allocation Manager.
- Creating a new MSDD Device released with bug fixes and enhancements and regenerated for REDHAWK 2.1.
- Updating the ‘rh.VITA49‘ REDHAWK shared library to include support for the VITA 49.2 standard. Initial release adheres to the draft specification, revision 00.51 dated 5 Dec 2016, which was available during development.
REDHAWK Enterprise Integration
- Ensuring the ‘getAllocIds‘ method return object is a List.
- Updating REDHAWK Driver to properly clean up driver-registered Device Managers on shutdown.
- Adding IDL source to appropriate Core Framework jars. Incorporated additional method to produce a jar bundle with a manifest built dynamically via the BnD Tools, source jar, and zip of XSDs.
- Adding implementations of ConnectionManager, AllocationManager interfaces to REDHAWK Driver. Adding utility methods for programatically setting the log level of Domain, Application, Device, and Component resources.
- Adding REST access to Event Channel Manager functionality.
- Updating REDHAWK Driver to have wrapper methods for retrieving state, connections, activeSRIs, and UsesPortStatistics from BULKIO objects. Updating REDHAWK REST to make connections, activeSRIs, UsesPortStatistics, and state available.
- Adding wrapper methods to RedhawkApplication and RedhawkComponent interfaces for easier access to aware(), componentDevices(), componentProcessIds(), and componentImplementations(). REST responses for Component and Application now display componentDevice, aware, componentProcessId, and componentImplementation information.
- Adding ability to get and set adminState from REDHAWK Driver and REDHAWK REST. Adding ability to view usageState and operationalState from REDHAWK Driver and REDHAWK REST.
- Adding ability to registerRemoteDomain, unregisterRemoteDomains, get device implementation information and a deviceConfiguration profile via REDHAWK Driver and REDHAWK REST.
- Adding ability to preconfigure HTTPS and WSS, and adding documentation to explain this functionality in the Web Server Configuration section in the REDHAWK Enterprise Integration User Guide.
- Adding a helper method to dynamically connect two Components; Improving methods used to set REDHAWK Properties; and Adding AllocationFactory to ease users’ ability to generate allocations.
- Adding functionality in REDHAWK REST and Websocket to support JAAS-based method level access.
The following IDE and Core Framework new features were added in REDHAWK 2.1.2.
- The Python Sandbox DataSink object supports a stream API, allowing the DataSink to handle multiple incoming streams and variable SRI.
- The startorder attribute was added to the componentinstantiation element of DCD (node) files. When startorder is set, the Device or Service (if it supports the CF::Resource interface), will receive a start call on the Device Manager startup and a stop call on the Device Manager shutdown.
- Adding functionality in the Sandbox so when using “connect” on a REDHAWK object in a Python session, if the object is an FEI Device and it has a tuner allocated, a listener is automatically created and connected to that tuner.
- The “metrics” function on the Application object accepts two string sequences (components and attributes), and returns the current utilization by all Components of GPP resources. An aggregate consumption amount is also returned.
- Added ability to configure the timeout value for calls to an Application’s Components when the Application-level stop function is invoked.
- Added an editor for SCD files.
- Services can now be added when creating a Node project.
- Added a Details section for the Service selected in the Devices/Services tab of the Node editor.
- Added support to add Services to existing projects in the Node editor.
- Added startorder to DCD XML model.
- Added the ability to add well-known REDHAWK Properties when editing Properties.
- Added the ability to connect to a Domain Manager by selecting from a list.
- Added startorder support to the DCD diagram editor.
- Adding editor support to adjust GPP reservations for hostcollocations in a Waveform.
- Updated the CF.DomainManager IDL to include CF.Logging.
- Added the ability to view Waveform metrics in the Properties view.
- Added options to the SAD XML model.
- Providing the ability to edit SAD file options.
The following Core Framework and IDE improvements were completed in REDHAWK 2.1.2.
Core Framework Improvements
- A new stream API was added to DataSink to associate SRI with specific data sets.
- Removed the
–disable-base-classesoption to BulkIO’s configure script.
- Allocation Properties marked as writeonly cannot be queried.
- Changed the definitions of the
frontend_listener_allocationProperties to writeonly for new FEI Device projects.
- Adding the ability to clone Properties from other projects in the workspace when editing Properties.
- Updated text for Devices tab of the Node editor.
- A notification is now displayed after exporting projects to the Target SDR.
- The IDE now validates CORBA URIs for the naming service reference.
- Added the ability to specify the string “now” as a value for a utctime property.
- Debugging a shared address space Component no longer breaks on main by default.
- Included add/remove functionality for the new Components tab in the SAD editor.
- Added context-specific icons to the Devices tab of the Node editor.
- The Properties view for a running resource has been streamlined to only display Properties that can be configured or queried. When designing a Waveform or Node, only Properties that can be overridden are displayed.
- Added the Libraries chapter to the Redhawk IDE help.
- Added the System Service Configuration appendix to the Redhawk IDE help.
The following Core Framework, IDE, and documentation fixes were completed in REDHAWK 2.1.2.
Release notes for Core Assets are available on Github (https://github.com/RedhawkSDR/) in each Core Asset repository.
Core Framework Fixes
- Updated packaging to install %_localstatedir/log/omniEvents with correct ownership.
- Removed erroneous localtime offset in utctime properties.
- UTCTime sequence properties are represented correctly.
- Struct properties with a utctime member in C++ or Java now compile correctly.
- sb.DataSink no longer stores invalid timestamps.
- The Python Sandbox DataSource always calculates per-packet time stamps using floating point arithmetic, avoiding truncation errors when given an integer value for the sample rate.
- Writing to a C++ BulkIO output stream configured for complex data with real data and a list of time stamps now interprets the time stamp offsets in terms of complex samples, preserving the integrity of the time stamps.
- On the GPP, when nic_usage is disabled, no message is generated when the usage threshold is exceeded.
- Resolved issue so now files_available and threads are checked for GPP BUSY state.
- validateRequestVsDevice evaluates the requested frequency correctly if rfinfo_pkt indicates the spectrum is inverted.
- Clarified logging message regarding reservations.
- Removed superfluous warning messages on DeviceManager startup.
- Removed a superfluous message on DomainManager startup.
- Erroneous warning removed from Domain startup.
- The default implementation of runTest() for Python Components and Devices throws the correct CF.TestableObject.UnknownTest error.
- Changed runser for omniEvents to omniORB user.
- Library order for statically linked libraries fixed for new version of gcc.
- Removed traceback messages from qtbrowse.
- C++ components using the RH_LogEventAppender threw an exception during shutdown when the event service was terminated before the component.
- The severity of the log message when a C++ Device cannot connect to the IDM channel has been reduced from error to warning.
- Removed the –disable-xml-validation option to the Core Framework configure script.
- Resolved inconsistency of RFSource API to return frontend namespace defined data structures.
- Added namespace to property fields of hw_load_request structure.
The following previously reported Known Issues have been closed in REDHAWK 2.1.2 with the following resolutions:
- Make sendChangedProperty events safe for structs that have had attributes added - This issue was rejected.
- Unit test for Devices in 1.8.X returns Component object - This issue is not present in REDHAWK 2.0+ series.
- Query behavior for Optional Elements in Structs - All elements in struct properties are handled as a single configuration item.
- Struct_from_props fails during allocate_capacity in python deviceThis behavior is not an error. - This behavior is not an error.
Fixed By Other Issue
- GPP Valgrind Results - Fixed by improvements made to the GPP during development in the REDHAWK 2.0 series.
–enableOctavetest failed on codegen test test_02_EvaluateUnitTests [Component: octaveTest0]
The following IDE bug fixes were completed in REDHAWK 2.1.2.
- When installing IDL projects with sudo privileges, the permissions are set on the installed artifacts such that they are visible to non-root users on the system.
- Corrected an issue where the IDE could hang or become sluggish while using the CORBA Name Browser view.
- When launching a Domain Manager with a name that is duplicated in another running Domain, the IDE now always shows an error.
- Deleting an aggregate Device removed references from associated compositepartofdevice tags.
- Removed shared libraries from the Property browser.
- Ensured that deleting a Component instantiation only cleans up the hosting Component placement if there are no remaining sibling instantiations.
- Corrected an NPE that occurred when using the Redhawk Import wizard for a shared library project.
- Limited refreshes of underline Port model objects.
- Deleting a resource in the Target SDR now closes any associated open editors.
- Corrected the software update links so they point at Eclipse Oxygen, not Eclipse Mars.
- Corrected an issue where values could not be added to a struct sequence in the Properties tab of the SAD editor.
- Updated Java environment specification to Java 8 for the plotter and editor applications.
- Improved error handling when a query of a resource’s Properties returns unexpected results.
- Corrected some configuration data for the IDE plotter application.
- Ensured that when plotting SDDS ports, a conneciton ID can be specified. This also corrects issues with plotting for SDDS Ports on FEI multi-out Devices.
- Displaying SRI for a FrontEnd tuner no longer prevents other IDEs from also displaying the SRI.
- Corrected an issue that could cause the CORBA name browser to slow the entire UI.
- Resolved a code quality issue.
- Corrected context menu icons for simple and simple sequence Properties.
- Log level combo in SAD editor is only enabled in design-time editors when the “Enabled” checkbox is selected.
- Corrected some information missing from Properties when creating new FEI Devices.
- Corrected the remove button in the new FrontEnd Device wizard so that it is not enabled when a Property cannot be removed.
- Corrected an error where the Property table in the new FrontEnd Device wizard was too small to see Properties on RHEL 7 systems.
- Removed runtime option from UsesDevice wizard in SAD diagram.
- Removed a work-around for a bug fixed in Eclipse Oxygen.
- Resolved ClassCastException when calling Expand All or Collapse All on a Waveform that includes a HostCollocation.
- Calling terminate on the Sandbox Chalkboard when it is empty terminates a running ComponentHost if it exists.
- Corrected the display of a spinner control in the new FEI Device wizard on RHEL 7.
- Resolved issue so Implementation tab now displays all usesdevice Property types.
- Removed an obsolete reference to the old Event viewer from the Show View menu.
- Ensured that some code intended only for debugging is not included in the IDE.
- Corrected the Event viewer so that CORBA calls are not made in the UI thread.
- Corrected the lightweight auto-refresh preference.
- Fixed NPE in FindComponentConstraint.
- Fixed error when terminating a C++ Component launched in debug mode.
- Clearing the “Usage Name” field in the SAD Editors Components tab removes the model element.
- Corrected several internal configuration issues with the code generation menus/buttons for Components.
- Ensured the New Control Panel Project button is displayed on the Components tab in the SAD editor.
- Ensured the Generate Waveform and Generate Node buttons displayed on all applicable SAD and DCD editor tabs.
- Updated SAD/DCD loggingconfig URI validation messages.
- Component usage name and naming service ID are now kept in sync after a graphical edit.
- Allocation IDs generated in the FEI usesdevice wizard of the SAD Diagram no longer contain user names.
- Resolved errors when adding and removing Devices and Services using the Devices tab in the Node editor.
- Removing a Device/Service instantiation removes the componentfile element from the DCD XML if it is not needed.
- Component project’s Generator combo box only displays applicable code generators.
- UsesDevice passes validation with any combination of accepted properties.
- The Sandbox Chalkboard now shows as stopped if all Components in it are released or terminated.
- Improved how HostCollocations are handled by the diagram layout algorithm.
The following previously reported Known Issues have been closed in REDHAWK 2.1.2 with the following resolutions:
- The IDE Help REDHAWK Content is not the released version of the documentation - The IDE Help REDHAWK Content includes the documentation during the IDE build process; therefore, the released version of the documentation cannot be included at that time.
- Hide the create control panel toolbar button for Shared Libraries (softpackage) projects - Duplicate of Control panel button shown when editing shared library in SPD editor.
The following documentation new features/improvements/fixes were completed in REDHAWK 2.1.2.
- Added MSDD STOCK information to the REDHAWK Manual.
- Added a Working with SDDS Data section to the Sandbox chapter of the REDHAWK Manual.
- Updated the REDHAWK Manual with information about loadable Component development and deployment.
- Added information in the REDHAWK Manual about connection management with FEI Devices in the Python Package.
- Added information about setting reservations using the IDE in the Specialized Reservation section of the Waveforms chapter of the REDHAWK Manual.
- Added information in the REDHAWK Manual about the stream API in DataSink.
- Added information in the REDHAWK Manual about the Waveform metrics function.
- Added information in the REDHAWK ICD and the SCA Specification about the metrics function.
- Added the Linux System Service Configuration appendix to REDHAWK manual.
- Added REDHAWK REST metrics information and a REDHAWK Metrics section to the REDHAWK Enterprise Integration Demos chapter of the REDHAWK Enterprise Integration User Guide.
- Added information in the REDHAWK manual about using Application options to set stop timeout and domain awareness.
- Added information in the REDHAWK Manual about using the debugger in the Sandbox.
- Added information in the REDHAWK ICD, the REDHAWK ICD Domain Profile, the SCA Specification, and the SCA Specification Domain Profile about stopTimeout.
- Added new images for the Domain Manager wizard and updated information about connecting to a running Domain.
- Added information in the REDHAWK ICD and the SCA Specification about the startorder attribute for Devices.
- Added startorder information to the REDHAWK Manual.
- Added Enumerations section to REDHAWK Manual to explain the generation of enumerated values for Component properties.
- Updated REDHAWK Enterprise Integration User Guide RedhawkPort and RedhawkApplication information for REDHAWK Driver and REDHAWK REST.
- Updated documentation to explain how to browse for and clone additional Component and Device Properties.
- Updated images for new DCD editor and new Node wizard and modified information to include new Services option.
- Moved the Working with the Shell section in the Getting Started chapter of the REDHAWK Enterprise Integration User Guide. It is now the Working with the Shell chapter located later in the manual, and the Getting Started chapter includes a link to it.
- Added information in the REDHAWK ICD and the SCA Specification about the behavior of write-only FEI allocation properties.
- Fixed trivial grammar issue in Logging Configuration Plugin Appendix.
- Added a note about avoiding reserved names in the REDHAWK IDL Project section of the REDHAWK Manual.
- Updated installation instructions to include RPM that installs the GPG key.
- Updated the Downloads page to support both LTS and Beta Series of REDHAWK.
- Added documentation for configuring the REDHAWK Integration assets with JacORB.
- Added domainName information to REDHAWK Connector and REDHAWK Camel documentation. Corrected base URI information, defined nameserver, and added connectionName information to REDHAWK REST documentation.
- Modified introductory text for RedhawkPort interface code examples.
- Added documentation about managing GPP BUSY state.
- Added a Components Tab section in the Waveforms chapter to document the new Components tab in the SAD editor.
- Updated REDHAWK Enterprise Integration User Guide to include code examples for ConnectionManager, Logging, and AllocationManager.
- Updated REDHAWK Enterprise Integration User Guide code examples of EventChannelListener functionality.
- Fixed display of level 5 headings.
- Updated Converting Complex Data in C++ and BulkIO High-speed data sections of User Manual.
- Updated the REDHAWK SCA and ICD documents to describe duplicate Device and DeviceManager registration behavior.
- Updated the REDHAWK SCA and ICD documents to describe Application release upon Device and Service unregistration.