REDHAWK Release Notes - 2.1.1
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 here.
- 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 the API for a new type of tuner, a scanning Device.
- 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 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 functionality to allow Components that have a usesdevice dependency to now be launched on the same host (Device Manager/Node) as the Device satisfying the usesdevice requirement. This functionality is provided through an extension of the componentplacement hostcollocation.
- Extending DeviceManager to call
configure()on Services at the time they register. This enables users to implement custom Property handling if so desired.
- Changing the default logging directory for omniEvents service to reside in
nodeBooterso it does not deploy if
--groupare set while
--daemonis not, and if the command-line arguments to
nodeBooterare malformed, deployment fails.
- Adding support for the state of the Connection Manager and Event Channel Manager to be restored when persistence is enabled.
Project Code Generation
- Fixing code generators for Port generation of C++ Components to correctly handle data structures returned from methods.
- Providing functionality to add custom headers to project files when generating code.
- Providing Generate Waveform and Generate Node buttons in the IDE editors to initiate file generation. This ensures that Waveform and Node project spec files are created or modified only when requested by the user.
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 eventChannelManager, allocationManager, and connectionManager helpers as well as simpler event monitoring.
- 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.
- Correcting issue in the Python Sandbox so now when the BulkIO queue is full, the Python Sandbox no longer locks up when trying to release stopped Components.
- Improving flexibility to ignore GPP threshold checks when determining if the GPP should go into a BUSY state.
- Updating the IDE to use the latest available Eclipse tooling, Eclipse Oxygen.
- Providing the TM Terminal in the IDE, a full-featured terminal emulator that provides full ANSI cursor control, readline, and coloring.
- 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_URIparameter during Component deployment.
- Showing IDL details when Ports are selected in the REDHAWK Explorer view.
- Providing validation of Property references in SAD and DCD files and flagging invalid Property references as errors.
- Adding the ability to terminate services in the Sandbox via the hover pad or the delete key and making the terminate icon more distinct throughout the IDE.
- Providing an option in the IDE to perform a FrontEnd Device allocation in the background to aid developers who are debugging their FrontEnd Devices.
- Improving the IDE’s Domain refresh logic to prevent the IDE from consuming excessive numbers of threads in some scenarios.
- Correcting the parsing of some numeric literals in Octave M files.
- Fixing links in the IDE’s help contents so REDHAWK help now displays correctly when links within the help are selected.
- Adding documentation for developing a logging configuration plug-in that will be used to resolve
LOGGING_CONFIG_URIparameter during deployment of Devices, Services and Components.
- Renaming the Generating Code section to Generating Code for Components and explaining the code generation process and what occurs in the IDE when the code is generated.
- Revising the BulkIO High-speed data code example in User Manual.
REDHAWK Enterprise Integration
- Updating REDHAWK Java Driver and REDHAWK REST to make it easier for users to access External Properties in Waveforms.
- 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.
- Resolving issue when activating local servants for MessageConsumerPort and MessageSupplierPort Java classes
The following IDE and Core Framework new features were added in REDHAWK 2.1.1.
- C++ shared address space Components can be launched in debug mode.
configure()method is called when launching Services that support it.
- Added an icon and the refid of the Uses Device for host collocations with an associated Uses Device reference.
- The IDE is now built on Eclipse Oxygen, the latest version of Eclipse.
- When creating a Service project that makes use of the PropertySet IDL interface (either directly or via inheritance), a PRF file is generated.
- A link is now available in the SPD, SAD and DCD editors to add a header to the project’s files.
- An optional user-supplied header can now be added to files during the code generation process.
- A command-line terminal (“TM Terminal”) is now available in the IDE and can be opened via Ctrl+Alt+T.
- Added a Components tab to the SAD editor for editing Component instantiation details.
loggingconfigelement can now be edited in the new SAD Components tab.
- In-editor validation of the logging configuration URI element is now provided in the Components tab.
- Added support for load and save of the reservation element in SAD files.
- Components launched in the Python Sandbox have an ID with the pattern similar to the ID when launched in a Waveform (for example, “instance_id:waveform_id”).
- The Python Sandbox function api() uses a pager to display Properties/Ports.
- The Python Sandbox DataSink object supports a stream API, allowing the DataSink to handle multiple incoming streams and variable SRI.
- Input Python Sandbox elements (for example, DataSink) can be customized with user-defined sinks.
sb.SRIKeywordfunction can now support sequence values for keywords as well as simple values.
rhtimePython package to make it easier to retrieve the timestamp for the query call.
- The valid initialization string for utctime properties has been expanded from
nowas a valid value.
- Added support for
loggingconfigelement contents when deploying a Component in a Waveform.
- Capacity reservations can now be added to host collocations, and reservations are checked with the GPP before deployment to avoid oversubscription.
The following Core Framework and IDE improvements were completed in REDHAWK 2.1.1.
Core Framework Improvements
- The Python Sandbox
storeMessagesis set to True in the
getMessagescan be used to retrieve the received messages even if a callback is not provided.
- Added support for a Java debugger (jdb) in the Python Sandbox when launching Components.
- A throttle option for
FileSourcewas added for data to be generated at the given sample rate.
- The Octave libraries are now located with the octave-config utility, which reduces the time taken to find them.
- Added tests to verify that the connection manager state is persisted when persistence is enabled.
- Added support for the state of the Event Channel Manager to be restored when persistence is enabled.
- Improved the REDHAWK Explorer view to include an IDL section in the Properties view for selected Ports.
- RPM spec files for Waveforms and Nodes are now generated manually.
- The IDE now performs validation on the Properties assigned to Component/Devices in SAD/DCD files and reports an error if a Property does not exist in the Component/Device’s PRF file.
- Added a red trash can icon in the Device Manager Sandbox service button pad that terminates services running in the Device Manager Sandbox.
- Added functionality so delete hotkey now terminates a running Service in the IDE Sandbox.
- Added validation for the refid attribute of a usesdeviceref in a SAD file.
- Added functionality to enable FEI allocation to run in a background thread.
- Modified the icon for terminate so it is now distinct from the icon for stop.
The following Core Framework, IDE, and documentation fixes were completed in REDHAWK 2.1.1.
Core Framework Fixes
- RH::DEPLOYMENT_ROOT for deployed Components is the cache directory, not the working directory.
- Generated code for FEI Python Devices produces a properly-formed exception when the sample rate, center frequency, or bandwidth requested on the digital tuner control Port is less than 0.
- Added the function addChannels to the FEI base classes. This function enables the developer to add combinations of tuner types in the same Device. The function setNumChannels is still supported, but its functionality has been replaced by addChannels.
- Device Manager nodeBooter process no longer prints an error to stdout when a Service is included in the Node.
- GPP returns the current cacheDirectory and workingDirectory, even when not overridden on the DCD.
- Most typical shared library Components can be unloaded and relaunched without error. If a library is in use and has been modified, an exception is thrown when trying to create new Components using the library.
- The function set_rf_flow_id in the Python FEI code generators no longer uses a reserved word as an argument to the function.
- The Port name is now used as the default name for adding entries into the connection descriptor table.
- Corrected test that erroneously failed when Java is disabled.
- When a numerical property is initialized in either the SAD file or the DCD file, if the value contains illegal characters (for example: a, b, x), then the deployment fails.
- In the Sandbox, connecting a DataSink to an SDDS output Port now will return with a no matching Port exception.
- On CentOS 7, C++ LoadableDevices no longer throw a CORBA::COMM_FAILURE exception from load() when the file cannot be loaded.
- Added support to Python parsers for new elements: devicerequires, deployerrequires and usesdeviceref.
- Added support to allow
LOGGING_CONFIG_URIto be passed on the command line during Component deployment irrespective of whether it was defined by the Component.
- When the BulkIO queue is full, the Python Sandbox no longer locks up when trying to release stopped Components.
- Thread management in the Python Component/Device base class is updated to better utilize the processor.
- Extended kickDomain API to include the ability to change the logging level for Domain and Device Manager processes.
- Changed runser for omniEvents to omniORB user.
- Package names for Java Components now start with a lower-case letter by default, to adhere to standard Java conventions.
- In the Component editor, the contents of the XML tabs now reflect all changes made in the other tabs.
- A race condition was corrected that allowed a new project to be created with an invalid name.
- Updates to a Device’s usagename in the Node editor Devices tab are correctly reflected in the associated Devices table.
- Services in the Sandbox Device Manager now display in the Sandbox Node Diagram.
- Domains containing large numbers of Waveforms/Device Managers now re-sort their contents appropriately.
- When launching a Node on an existing Domain, the IDE now uses the Domain name instead of the Domain’s display name.
- An NPE no longer occurs if the M-file specified for a new Octave project does not contain a function.
- Ensured that CORBA calls that hang will timeout after a reasonable amount of time.
- Improved the Domain refresh process to prevent issues with too many threads and multiple simultaneous refreshes of the same object.
- Prevented the possibility of the IDE using too many threads when there are problems refreshing a domain.
- IDE Domain/Sandbox refresh code now better responds to cancellation.
- The CORBA Name Browser view now displays the kind of bound names.
- The CORBA Name Browser now consistently loads children in the view.
- Octave functions with arguments that have default values are now created as Properties (instead of Ports) by default in the New Component Project wizard.
- The IDE promptly displays an error if Octave’s include path cannot be found while generating code for an Octave project.
- Keep tree nodes expanded while navigating the Launch Waveform wizard.
- The IDE now displays Services in the Target SDR even if they duplicate the ID of another Service the IDE has already loaded.
- The IDE does not change the DCE ID of a project when it is renamed, which can cause problems if the user installs both the old and new versions of the project in the SDRROOT.
- The connect wizard now works with Waveforms’ external Ports.
- References to non-existent struct simple properties are now handled gracefully.
- The editor action bar no longer attempts to load duplicate ActionHandlers.
- Fixed an occasional NPE that occured when using the Device Manager Explorer diagram.
- Multi-delete functionality race-condition is now handled gracefully.
- Corrected a potential code freeze when updating the Domain’s Waveform list.
- The IDE no longer displays a tree expander next to SRI keywords if there are no keywords to display.
- Clicking the Terminate context menu on the Sandbox Device Manager now terminates its services.
- Clicking the Shutdown context menu on the Sandbox Device Manager now terminates its services.
- Resolved issue where services launched via REDHAWK Explorer were receiving duplicate names.
- The OSSIEHOME Eclipse variable should not be expanded in the IDL project’s .ecpproperties file.
- Read-only Properties of kind ‘property’ can now be overridden, and their values are passed to
initializeProperties()in the Sandbox.
- Fixed bug that occurred when editing the namespace of existing projects.
- An error message was sometimes displayed after closing the “Allocate Tuner” wizard.
- Services launched in the Sandbox Device Manager diagram are now displayed in gray, and their menu options are disabled until they launch and register with the Device Manager.
- Corrected an inefficient monitoring of Devices by the Device Manager diagrams.
- Corrected a unit test failure that occurred when building in a docker container.
- A file descriptor which was being left open is now closed.
- A code quality issue was corrected.
- Removed an instance of double-checked locking.
- Corrected some internal domain model state inconsistencies.
- Fixed issue where the IDL Selection Wizard filter stopped working when the Show all interfaces button was checked.
- Fixed issue where Waveforms with external Ports were not being removed from the REDHAWK Explorer view on terminate.
- Corrected a link in the REDHAWK help that was not working.
- Message is now always a selectable kind type for Struct Properties.
- The icon for the PRF editor was corrected.
- Fixed issue with a ConcurrentModificationException occassionally occurring when using the “Monitor Ports” functionality.
- Diagrams now open without an error in the REDHAWK Explorer product.
- Corrected a warning that was logged about a command not having a category.
- Corrected a copyright notice about Eclipse software.
- Corrected an issue with CSS themes.
- Corrected some issues with product branding.
- A superfluous ODM event channel is no longer created when the display name differs from Domain name.
- Corrected issues with UI themes in the REDHAWK Explorer product.
- Corrected a potential code freeze when the IDE loses contact with a connected Domain.
- The release field in spec files created for Waveforms and Nodes is now correct.
- The IDE no longer attempts to read Device files when browsing the Sandbox file manager.
- Corrected a code issue that could have suppressed Sandbox errors.
- Updated Uses Device icon in the Edit Host Collocation wizard.
- The BULKIO SRI keyword CHAN_RF is now always preferred to COL_RF for center frequency when plotting.
- Corrected a rare bug that could cause the content in the pages of an editor to become un-synchronized.
- Shared address space components were always launched in the Sandbox Chalkboard, but can now be launched in other Sandbox Waveforms as well.
- Corrected an internal IDE issue that could prevent loading REDHAWK XML.
- The New Control Panel Project button is no longer displayed when editing a REDHAWK shared library project.
- Updated a missing environment specification to reflect the requirement for Java 8.
- Added missing icons in the DCD editor.
- Corrected internal IDE code to properly indicate when XML validation problems are found.
- Corrected an NPE that could occur when validating SAD or DCD files with references to non-existent struct sequence Properties.
Documentation New Features/Improvements/Fixes
The following documentation new features/improvements/fixes were completed in REDHAWK 2.1.1.
- Added Managing Allocations and Managing Connections sections to document new helpers in the Python Sandbox.
- Corrected property definition shown in code for multi-out Ports by removing kind elements that were underneath the simple elements.
- Added information to explain that octave Component numerical properties are treated as complex.
- Corrected SAD file location in the SAD File section.
- Documented the new createProps function.
- Documented improved Python Sandbox tooling for new Domain features and resources.
- Added information to initializing timestamp properties to include the valid value string, “now”.
- Added information to describe how to add headers to files.
- Updated design-time SAD diagrams showing hostcollocation with usesdevices.
- Updated screenshots of Overview tabs in SPD, SAD, and DCD editors to show Header link in Project Documentation section.
- Updated screenshots of Waveform and Node editors and added text to explain button used to generate RPM spec files.
- Updated screenshot of SPD editor Properties to correctly display a drop-down for the “Kind”.
- Added documentation for capacity allocation on a per-hostcollocation basis.
- Updated Host Collocation procedure and replaced screenshots to correctly display collocation name created when adding a collocation.
- Updated procedure, Using the FEI Wizard to Create an FEI Device, to include the Setup Code Generation dialog and added screenshot.
- Updated FEI Allocation Wizard Tuner Allocation dialog screenshot and revised text to include new Run in background checkbox.