REDHAWK Release Notes - 2.1.3
The effort in REDHAWK 2.1.3 focused on:
- Adding snapshot capability of network data and performing SDDS packet analysis on the captured data.
- 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.
- Extending the tool,
rh_net_diag, to provide read/write/execute permissions checks on directories important for running a REDHAWK system.
- Changing the default logging directory for omniEvents service to reside in
- Changing FrontEnd Interfaces (FEI) property definitions:
- 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_status property. Existing Core Asset FEI devices have been updated with this change. New FrontEnd devices created with the IDE will automatically have this change.
- For devices, the
- Adding functionality to the IDE so when users edit a property’s name, the IDE automatically supplies an appropriate ID for the property based on REDHAWK’s naming convention.
- Adding documentation to the REDHAWK Manual regarding naming elements in structures such that element names can be reused across different structures.
- Updating the
rh.VITA49REDHAWK shared library to include support for VITA 49.2. Initial release adheres to the draft specification, revision 00.51 dated 5 Dec 2016, which was available during development.
- Adding functionality in the IDE to install the diagram layout when installing a SAD/DCD file (either by drag-drop or via its RPM
.specfile). At runtime, the IDE checks for the diagram layout and if present, preserves the developer’s layout.
- Adding an option to enable the Domain Manager’s logging level to be dynamically changed.
- Adding a new packed bit data port type and data format for BulkIO:
- Port API for component developers is fully implemented in C++, Python, and Java.
- Plotting, monitoring, and interacting with data are supported in the IDE and Python Sandbox.
- For C++ and Python, a new
bitbufferclass provides high-level access to packed bit data.
- In Python, all BulkIO ports now support a stream-based API that is consistent with C++.
- Adding CF base class support and IDE tooling to allow users to create, implement, and test a FrontEnd scanner device.
- Adding extensible hierarchical name structure support for loggers.
- Correcting behavior for structures that have a default value that is mixed simple values and sequences; if the sequence is empty, it is not treated as nil.
- Adding support for working with multi-out ports.
- Adding Allocation Manager functionality in the IDE:
- Viewing current allocations and allocation details for each allocation is supported.
- Searching for devices used for an allocation and Device Managers referenced by an allocation is supported.
- Allocations can be deallocated.
- Adding context-sensitive property views in the REDHAWK IDE for the following:
- Waveform and node properties are displayed when selecting the respective runtime editor. Runtime connection details are also displayed (read-only) when selecting a connection in a diagram editor.
DeviceConfigurationproperties are displayed when selecting the respective design-time editor. Design-time connection properties are displayed when selecting a connection in a diagram editor.
- Providing better context-specific icons throughout the IDE, and updating images and text in the REDHAWK Manual to reflect these new icons.
- Providing new functionality for interacting with event channels and message event ports.
- Adding Connection Manager functionality in the IDE:
- Viewing current connections and connection details for each connection is supported.
- Searching for the source or target of a connection is supported.
- Connections can be disconnected.
- Fixing an issue so when waveforms containing references to mistyped properties are launched, the IDE displays all the properties including the property that had a mis-matched override in the SAD file.
- Adding validation for mistyped property refs.
- Fixing the DomainManager’s improperly defined scoped locks.
- Implementing several C++ fixes to allow REDHAWK to compile on newer compilers.
- Correcting default property kinds in the DTD and XSD so they are no longer out of sync with the behavior of the Core Framework and the ICD.
- Adding new behavior to the C++ input stream API: It is now possible to “peek” into data sets that have reached EOS by setting consume to 0 when using read or tryread.
- Adding support to custom IDL and FEI control ports so they now accept a connection id argument to specify the connection to use and throw exceptions if the port call is exercised and no connection exists or a connection is specified that does not exist.
- Fixing an issue so when unhandled exceptions occur in Python and Java components, the components terminate rather than remain in a defunct state. If termination was not requested, the GPP now sends a message to the IDM channel when a component exits with a non-zero status.
- Updating the FEI specification to require a device to only partially support a requested signal range rather than the whole signal to return a valid request. The
validateRequestfunction in the
frontendInterfacessupport package checks that a partial overlap of the requested band succeeds rather than requiring full coverage of the requested range.
- Patching omniORBpy to prevent possible segfaults in multithreaded code.
- Updating the IDE on CentOS 7 to use the latest available Eclipse tooling, Eclipse Photon.
- Correcting behavior so readonly property kind properties for devices and services can now be modified during deployment using Device Configuration Descriptor (dcd.xml) file.
- Correcting a bad XML file in the SDRROOT that caused loading of the SDRROOT to stop and report an error.
rh.VITA49to adhere to the approved version of V49.2 Standard (August 2017).
- Adding an option for
MessageSupplierPortto send messages to a specific connection.
- Deprecating REDHAWK Enterprise Integration and removing all references to it within the documentation.
- Providing the ability to generate configuration files for waveforms and nodes for use by the REDHAWK admin service.
- Changing the
redhawkuser’s home directory. When installing REDHAWK, the home directory is now
/var/redhawk. When upgrading, the existing
redhawkuser home directory is updated to
/var/redhawkif it is currently set to
- Refactoring IO redirection to use epoll system call to handle redirection of component output to a single file and direct IO redirection when configured for one output file per component process.
- Correcting behavior so when a component has a struct property with an element that is a complex sequence, the value can be overloaded correctly on a waveform.
The following features were added in REDHAWK 2.1.3:
Core Framework Features
- All components and devices now contain the
getLogLevelfunction that allows the caller to retrieve a named logger’s log level.
- Added FEI scanner device base class and code generator support in C++, Python, and Java.
getLogConfigto the resource API.
- C++ components and devices now support hierarchical naming for loggers.
- Java components and devices now support hierarchical naming for loggers.
- Python components and devices now support hierarchical naming for loggers.
- The Python Sandbox log setting can now be changed using strings. For example,
setLogLevel("comp_1.user.foo","error")will set the
comp_1.user.foolog level to
- The loggers from the components in an application can now be retrieved using the
getNamedLoggersmethod on the
Applicationobject. These loggers are also available through the application’s logging interface (for example,
resetLogmethod on the application resets all the components’ log settings to their launch state when the application was initially launched.
- The REDHAWK AdminService may be used to start all parts of a domain on a single server.
- The log4cxx logger is now available directly through the
rh_loggerin C++ components and devices.
- Added functionality for devices to support hierarchical logging.
- If a connection is selected in a design-time diagram, connection IDs can be edited in the Properties View.
- Added support for creating new FrontEnd scanner devices.
- Provided a wizard to trigger a scan on a FrontEnd scanner.
- Provided the ability to load/save a scan plan for a FrontEnd scanner.
- The context menu for Event Channels now has an option to release the Event Channel through the Event Channel Manager.
- Added a Properties View editor for the
- Added validation for mistyped property refs.
- The Properties View now displays information about negotiated BulkIO connections.
- For ports that support transport negotiation, the IDE now displays available transports in the Advanced tab of the Properties view.
- Added support for monitoring port statistics for BulkIO packed bit ports.
- Added support for displaying SRI from BulkIO packed bit ports.
- Added support for plotting BulkIO packed bit port data as a bit raster.
- Added support for performing a snapshot of data from a BulkIO packed bit port.
- Updated the REDHAWK help contents within the IDE to display the newly redesigned help.
- Added support for viewing a data list from BulkIO packed bit ports.
- Provided a preference that can disable automatic property scoping in the PRF editor.
- Provided the ability to allocate scanner devices.
- Added hierarchical logger information in the Logging section of the REDHAWK Manual.
- Updated the REDHAWK ICD with new information including
getLogLevelinformation to the REDHAWK ICD.
- Added Custom IDL Interfaces information to the REDHAWK Manual.
- Added required naming conventions to the REDHAWK Manual.
- Added a new section to the REDHAWK Manual, Multi-out Port Support in the IDE.
- Added the following in the REDHAWK Manual to reflect new IDE support of FrontEnd scanner devices: updated images in the Creating an FEI Device in the IDE section and added additional instructions for scanners in the Using an FEI Device in the IDE section.
- Added the REDHAWK System Services Appendix to the REDHAWK Manual.
- Updated images of plots in the REDHAWK Manual.
- Updated the REDHAWK ICD with new information including
- Added a new section, Bit Data, to the REDHAWK Manual.
- Added Python-specific documentation of BulkIO streams, and updated the C++ sections in the REDHAWK Manual.
- Added examples of connectionid argument for message supplier send methods to the Message Producer section of the REDHAWK Manual.
The following improvements were added in REDHAWK 2.1.3:
Core Framework Improvements
- The Octave libraries are now located with the octave-config utility, which reduces the time taken to find them.
- The helper functions for validating requests in FEI were improved to allow partial overlap in frequency.
- When an unhandled exception occurs in a C++ component, the exception is logged instead of printed to the console before the component terminates.
- Updated inline header comments documenting C++ BulkIO input stream, output stream, and data block APIs.
- Added support to run-time resources in the IDE that enables users to listen to messages generated by a component.
- Created a new icon for the Shared Libraries container in the Target SDR.
- Waveform & Device Manager properties are now displayed in the Properties View when the associated editor is selected.
- Added “in” and “out” icons to ports in the Find By wizards in SAD diagrams.
- When designing a SAD or DCD file, the diagram layout is now installed to the SDRROOT along with the SAD/DCD file.
- Logging functionality in the IDE (log level, edit log config, tail log) can now be used with a running Domain Manager as well.
- The IDE now updates its model in response to events from the Domain indicating an event channel was added or removed.
- Added unique SPD implementation icons for each programming language.
- If a connection is selected in a runtime diagram, connection properties are now displayed.
- At runtime, diagrams now respect the diagram layout if it was installed along with the SAD/DCD file.
- The IDE now allows the connection ID to be specified when listening to messages from a message event port.
- Added information in the REDHAWK Manual in the Inspecting Allocations through the Python Sandbox section and also added a new section, Inspecting Allocations using the IDE.
- Added information in the Event Viewer View section of the REDHAWK Manual to explain how to view the events emitted by message ports.
- Added the following sections to the REDHAWK Manual: Inspecting Connections using the IDE and Disconnecting Connections using the IDE.
- Updated FEI RFInfo Bandwidth behavior in the Tuner Allocation Properties section of the REDHAWK Manual.
- Updated information in the REDHAWK Manual to reflect the PRF editor improvements for property ID and Name.
The following fixes were completed in REDHAWK 2.1.3:
Core Framework Fixes
- Modified log message so when pushing data, if Python BulkIO ports encounter a communications exception, the message in the exception is included in the log message.
- Persona and programmable device pattern code generators compile correctly.
log_levelon the Domain Manager now affects all classes in the Domain Manager process space.
- Resolved issue so the Domain Manager can use the
- Clarified the conditions under which scanning is toggled in FEI scanners.
- Assembly controller properties can be renamed (and overridden) at the Application level.
- Resolved issue for structures with a default value that is mixed simple values and sequences. If the sequence is empty, it is not treated as nil.
- Fixed improperly scoped locks in Core Framework control.
- Fixed several C++ constructs that do not compile on newer versions of gcc.
- Added Python help documentation to
- To maintain backwards compatibility, updated the XSD/DTD default value for kind and configurationkind from “property” to “configure”.
- Removed additional log message from Python base class when an invalid property is queried.
- Listing registrants for an unknown event channel returns an empty list.
- Resolved issue with
createTunerAllocationin the Python Sandbox. It now provides 0 as the default value for
sample_rate(rather than 1).
- Resolved issue so if a component crashes, the application object in the Python Sandbox does not lose its comps member.
- Readonly property kind properties for Devices and Services can now be modified during deployment using Device Configuration Descriptor (dcd.xml) file.
retrieveDatamethod to always return a tuple of values to match prior API versions.
- Fixed an issue to ensure that
LOGGING_CONFIG_URIis allowed as a property, even when the property is not explicitly declared for the component or device.
- Resolved issue so external writeonly properties are not part of the query set when the application object receives a query all.
- Added support to clean artifacts from omniEvents 2.7 and 2.8+ to the cleanomni script.
- Improved system reliability with regards to shared memory as a finite resource:
- New hybrid allocator uses shared memory if available, dynamically falling back to
BufferManagerto use local memory.
- BulkIO shared memory transport transparently sends data over FIFO link if data cannot be transferred via shared memory.
- GPP monitors the current shared memory state of the system, going to a busy state when the available amount drops below a threshold and sending an event.
- Creating process removes heap file on exit, rather than relying on reference counts.
- GPP cleans up heap files left behind when a component exits.
redhawk-shmcleantools show system shared memory state and clean up stale shared memory files, respectively.
- New hybrid allocator uses shared memory if available, dynamically falling back to
- When complex sequences are elements in
structsequenceproperties, the overloads now work as expected.
- An error is now displayed when attempting code generation with an unsupported template type.
- Fixed an issue to ensure that only appropriate menu items to the current selection are displayed in context menus.
- A waveform’s external properties are now displayed and editable when viewing a Sandbox waveform run configuration.
- Components launched in the Chalkboard editor now always have their ports displayed in the REDHAWK Explorer view.
- In the Port Monitor View, corrected the display of data rates for low-rate data streams.
- The Launch Waveform wizard search capability now assumes a leading wildcard character.
- Double-quote entries for property string values are now always treated as empty strings.
- In the PRF editor, the Remove Value button is now correctly enabled.
- Resolved title text discrepancies in the Properties View.
- The context menu for a Domain Manager no longer shows “Connect” if the Domain Manager is already connected.
- Fixed issue to ensure that simple properties that are not of type “property” cannot be assigned the command-line attribute.
- Corrected an error that could occur during a build of a C++ project if the SPD file contained invalid XML.
- An error message is now displayed if a user attempts to launch a component or waveform with badly malformed XML from the Overview tab of the editor.
- An error message is now displayed if a user attempts to launch a component with badly malformed XML from the Chalkboard diagram.
- Corrected an issue that caused long refresh times when opening diagrams.
- In the Properties tab of the SAD editor, the members of properties belonging to the assembly controller no longer display an external ID.
- Corrected a code issue internal to the IDE during the code generation process.
- When attempting to perform a “Display SRI” action on a Tuner with no applicable Ports, an error message is now displayed.
- When adding Ports using the Port tab in the SPD editor, an NPE is no longer logged.
- Resolved ClassCastException when launching Waveforms containing references to mistyped properties.
- Corrected the default property kind in the DTD schema for PRF files.
- The IDE now allows configuring ‘property’ kind properties that have the ‘commandline’ attribute set.
- The IDE now passes the initial value of ‘property’ kind properties to initializeProperties() when resources are launched in the Sandbox.
- In the Properties tab of the SAD editor, overriding the values of properties is no longer allowed when it does not make sense (for example, allocation properties).
- Negative numbers are no longer allowed in values for complex unsigned properties. Parsing of complex boolean properties was also corrected.
- Corrected an error that occurred when the value of a simpleref inside a structref in a SAD file did not make sense for the referenced property type.
- Resources now report an error if they receive a non-sequence value for a simple sequence property.
- Fixed incorrect validation message for structs containing a sequence with no values while also containing a simple with a default value.
- Corrected an NPE that occurred when saving a SAD or DCD file with no name.
- The Properties View icon is now context sensitive.
- Added the Eclipse p2 director application to the REDHAWK Explorer product.
- Resources now show errors associated with any of their properties.
- An error message is now displayed in the Problems view when a problem is detected in a REDHAWK XML file during build.
- An internal IDE model was corrected to prevent a compilation error.
- Fixed issue to ensure Data List is not enabled for unsupported Ports.
- Fixed issue to ensure that Play Port is not enabled for unsupported Ports.
- Fixed issue to ensure that Snapshot is not enabled for unsupported Ports.
- Fixed issue to ensure that the profile for a running Domain Manager, Waveform, or Device manager cannot be edited.
- Fixed issue to ensure that the Domain Waveform associated with a local Waveform cannot be edited.
- Fixed issue to ensure that the exec params for a launched resource in the Sandbox cannot be edited.
- Fixed issue to ensure that the implementation ID for a launched resource in the Sandbox cannot be edited.
- After listening to an event channel, the IDE now correctly releases all internal resources.
- Event channels can now be listened to from the CORBA Name Browser view.
- Fixed issue to correct an NPE so it does not occur while interacting with the CORBA Name Browser view.
- Text on the IDE splash screen is now correctly displayed and not truncated.
- When selecting a port in the DCD or Device Manager diagrams, the IDL tree browser is displayed in the Properties View.
- A code quality issue was addressed to ensure resources within the IDE are always properly closed.
- A code quality issue was addressed to prevent a potential NPE.
- Selecting Play Port from the context menu of a
BULKIO::dataLongLongport now works correctly and plays a sound.
- Addressed a code quality issue to prevent errors when handling REDHAWK time property values.
- Resolved a code quality issue to prevent errors when handling REDHAWK complex number property values.
- Addressed a code quality issue by removing redundant or unused code.
- Addressed a code quality issue to ease maintainability.
- Corrected the precision of the time reported for the most recent push packet when viewing SRI.
- Corrected an error so the FEI usesdevice wizard now displays correct values corresponding to those in the SAD XML.
- When editing SAD files, usesdevice naming is now more consistent with device naming in DCD diagrams.
- Fixed data list to display all values correctly.
- If a component/device crashes in the IDE’s Sandbox, any orphaned shared memory is now cleaned up.
- Corrected an NPE that may occur during drag-drop in a diagram.
- Text now displays correctly when selecting an entry in a drop-down in the Properties editor.
- Corrected several validation issues with run/debug configurations.
- When configuring a REDHAWK run/debug configuration, the dialog for choosing a file in the workspace was corrected to only show applicable XML files.
- The IDE no longer attempts to call
initializeProperties()for structs without a value when launching resources in the sandbox.
- Corrected the release icon.
- Corrected an error so the IDE no longer calls
initializeProperties()for simple sequence and struct sequences properties without values in the Sandbox.
- Added Octave information to installation information in the REDHAWK Manual.
- Fonts in REDHAWK Manual, Getting Started With REDHAWK, Release Notes, and Known Issues are now consistent.
- Added example plots to the Plotting Data section of the REDHAWK Manual.
- Updated HTML links in the Further Reading section of the Getting Started Guide.
- Updated information and images in the Port Monitor View section of the REDHAWK Manual to reflect use of Bytes/sec in the IDE when displaying data rates for low-rate data streams.
- Enhanced the
deviceSetTuningdescription in the Creating an FEI Device in the IDE section of the REDHAWK Manual.
- Updated the Creating a Component that Consumes Resources section of the REDHAWK Manual to document the new loggers.
- Updated locally named logger instructions in the Logging Within A Resource section of the REDHAWK Manual.
- Added the Shared Memory Maintenance Appendix to the REDHAWK Manual.
The following previously reported Known Issues have been closed in REDHAWK 2.1.3 with the following resolutions:
Core Framework Special Resolutions
- Sandbox DataSource.push() slow - Won’t Fix - In REDHAWK 2.1.3, the new
StreamSourcesandbox helper provides better performance than the legacy
DataSourcehelper when pushing real sample data.
DataSource.push()will not be updated in the 2.0.x series to address this performance concern.
- Struct_from_props fails during allocate_capacity in python device - Won’t Fix - This behavior is not an error.
log_levelapi does not appear to work for C++ components - Duplicate of Add hierarchical logging support in C++, as the
log_levelattribute for component interfaces is now tied to
_baseLogand the resource logger.
IDE Special Resolutions
- Generate button temporarily disabled on SPD editor - Cannot Reproduce
- Uses FEI Device wizard overwrites existing allocation ID - Duplicate of FEI uses device wizard doesn’t preserve existing XML values.
- SAD editor properties tab allows setting external IDs on struct / struct seq members - Cannot Reproduce