Skip to content

REDHAWK 2.0.0

Compare
Choose a tag to compare
@ryanbauman ryanbauman released this 22 Jul 16:12
· 69 commits to master since this release

Core Framework Changes

BulkIO stream-based API

  • Provide structures to manage data flows based on streams rather than individual data pushes.
  • Allow the retrieval of arbitrary amounts of information from the incoming data flow.

Domain Awareness

  • Provide Components with a pointer as part of the base class to their Domain Manager and Application objects.
  • Provide Devices with a pointer as part of the base class to their Domain Manager and Device Manager.

Connection Manager

  • Provide better visibility into and management of system-level connections.

Event Channel Manager

  • Simplify the creation, interaction with, and management of Event Channels.

Network Allocation/NIC selection

  • Provide the allocated NIC as part of the base class to a Component that requested system bandwidth on deployment.

New GPP

  • Written in C++, so it is more responsive.
  • Detects when Components segfault and issues a system notification.
  • Automatically manages system capacity. (Component benchmarking no longer needed to support deployment across different host computers).
  • Supports affinity by default.
    • Co-locates the Component process with its allocated NIC onto the same socket.
    • Co-locates the Components onto the same Node onto the same socket (when possible) to minimize data transfer impact.

New features that simplify current behavior or tooling.

  • Single-call Application deployment.
  • Consolidated Properties from configure and execparam kinds to Property.
  • Deprecated the need for event Property kind by supporting Property change events for all Properties.
  • Added Property change event registration to better manage Property event consumption.
  • Simplified the default behavior for newly-generated RF Device (FrontEnd Interfaces).
  • Extended FrontEnd Device code generators to Python and Java.
  • Created a "REDHAWK constructor" in Components that is invoked after the Component default Properties have been set.
  • De-conflicted environment configuration colliding dependencies on co-located Components.
  • Extended upgraded logging support to Python and Java.
  • Improved Event Service cleanup scripts to remove the need to run them as root.
  • Enhanced C++ API for inspecting and modifying Properties and SRI keywords.
  • Simple sequences can now be members of Property structures.
  • Support for namespaces (Components, Devices, Services, and Waveforms).
  • Added getPortset to return a list of all the Ports that a Component or Device supports.

IDE New Features and Functionality

New Property Support

  • Added support for simple sequences in structs, struct sequences.
  • Added support for the new Property kind, property, and the commandline attribute.
  • IDE helps upgrade old configure or execparams during code generation.

Shared Libraries

  • Added wizard for creating new REDHAWK shared library projects for C++.

Namespaces

  • All REDHAWK project types support namespaces by using names with dots (for example, a.b.c).

Diagrams

  • Waveform and Node diagrams have been completely re-implemented.
  • Waveform diagrams have more intuitive Find By support.
  • Waveform diagrams have new support for FrontEnd usesdevice relationships.
  • A diagram was added for the Sandbox Device manager.
  • Diagrams support visualizing Port statistics with color.
  • Diagrams support visualizing dead/unreachable domain Components with color.
  • Diagrams provide visual help making connections by coloring suggested Ports.
  • Diagrams provide visual feedback while Components are still starting up. Components are initially gray, and when launching is complete, the Component’s background color changes to blue.
  • Diagrams allow expanding/collapsing shapes to hide complexity.

Eclipse

  • Based on the latest version of Eclipse (Mars, version 4.5).

FrontEnd Device Creation

  • Wizards now support creating Java and Python FrontEnd Devices.

Logging

  • The IDE supports changing the log level of Components and Devices at runtime.
  • The exit code for Components launched in the Sandbox is now reported in their console.

Port Descriptions

  • Added support for adding Port descriptions in the SCD file.
  • Display of Port descriptions in the Properties view for Ports and in various tooltips.

IDE Improvements

  • When selecting IDLs (when dealing with Ports or with Services), the IDE now filters uncommon or potentially problematic IDLs unless the user selects to show all.
  • The XML editor (instead of a text editor) is now used when opening REDHAWK XML files from the Target SDR or from a domain.
  • Warning messages for the IDE detecting that the localfile/codefile (for an SPD implementation) were missing on disk have been improved.
  • The IDE can handle receiving a null reference to a Component from the Waveform. This supports inspecting some domains, which were not exhibiting REDHAWK-compliant behavior.
  • The IDE uses WebKit on CentOS 6.6+ to improve the display of pop-up context help.
  • Tooltips to display Property descriptions were added to the FrontEnd Tuner Allocation dialog.
  • If an error occurs while the IDE is determining what files to generate during code generation, the IDE will display the command it tried to execute to facilitate diagnosing problems/error reporting.
  • Ports have been moved to a separate tab in the SPD editor, and that tab is included in the SCD editor.
  • After performing code generation, the IDE places the code generator version in the SPD file in the type attribute of softpkg. This helps identify what version of REDHAWK a particular asset was originally created for.
  • The IDE can handle an UnknownPort exception when it requests a Port from a Component that is listed in its SCD file. This supports inspecting some Components, which were not exhibiting REDHAWK-compliant behavior.
  • The IDE now installs and builds C++ Components, Devices, and Services by invoking build.sh at the top level of the project. This applies to new projects and projects that have their build.sh regenerated with code generation.
  • The IDE performs a clean build after code generation to help prevent stale build artifacts.
  • The IDE supports setting Group ID in the Tuner Allocation dialog.
  • Added an advanced option to uninstall the existing Waveform factory when launching a Waveform.
  • Advanced launch options are available when launching Components, Devices, Services, Waveforms, and Nodes in the Sandbox, including setting Properties, auto-start, timeouts, and log level.
  • The IDE honors the BulkIO SRI blocking flag by default when plotting. This setting can be overridden in the plot settings.
  • When plotting, individual streams can be hidden. Additionally, the color of the streams can be changed.
  • When the IDE creates connections to plot or monitor data, it now prefixes its connections with IDE_ so they can be better identified.
  • The IDE provides the ability to toggle between showing RF and IF values on plot axes.
  • The IDE supports connecting to multiple domains with the same name, but on different machines (previously, the names had to be unique).
  • The IDE now thins plot data based on refresh rate. This helps when plotting Ports with very high/very low data rates. The setting is adjustable in the plot settings.

IDE Fixes

  • Exporting multiple projects to the Target SDR via the context menu on projects only exported the first project in the selection.
  • Before performing code generation, the IDE may have shown several warnings in the SPD editor that code generation had not yet been performed. These warnings sometimes remained even after performing code generation.
  • Sequence Properties of complex type were not treated correctly resulting in issues displaying or setting the Properties at runtime.
  • When a domain was launched via the IDE, the console always showed the domain name as REDHAWK_DEV regardless of its actual name.
  • Domain Waveforms opened with the Chalkboard editor might get started/stopped twice when the Waveform was started/stopped.
  • REDHAWK C++ Service projects might have warnings/errors related to not being able to find included code. These are cleared up by new settings applied by code generation and by completing a build.
  • On Ubuntu, after building the first time, the IDE would report errors such as installing ./config.sub, installing ./install.sh, etc. This is corrected for legacy projects during code generation.
  • The install location of a Waveform or Node was being determined by the project name when it should have been based on the name in the XML.
  • For existing REDHAWK projects, some settings were not updated during code generation. These included environment variables (like OSSIEHOME) and error parsers.
  • The IDE would automatically overwrite the build.sh file at the top of a project for legacy projects. This is now corrected by code generation.
  • The IDE would automatically overwrite the .spec file at the top of a project for legacy projects. This is now corrected by code generation.
  • The FrontEnd Tuner Allocation dialog did not validate entires correctly.
  • The IDE now handles any CORBA COMM_FAILURE errors that occur while shutting down a Device Manager.
  • The IDE now correctly parses forward-declarations in IDL files.
  • The SPD editor did not allow saving changes in the code section for a selected implementation.
  • The IDE was adding spaces into complex number expressions in Properties in XML (for example, 1 + j3 rather than 1+j3), which caused an error in the Core Framework.
  • Under certain scenarios, the IDE might release domain Waveforms that had been opened with the Chalkboard editor when the IDE was closed.
  • The IDE now allows setting an enum Property in the Waveform Property Editor.
  • Properties with kinds event and allocate were marked as an error.
  • Data saturation while plotting could cause the plots to go blank and stay blank even after data returned to a valid range.
  • The Project Explorer showed arrows next to closed projects.
  • The IDE did not correctly add values for struct sequences in the PRF/SAD XML files.

Core Asset Changes

Namespaces

  • REDHAWK Basic Assets are now distributed in the "rh" namespace.
  • Components, Devices, Shared Libraries, and Waveforms are all members of the "rh" namespace.
  • Device dependencies have not been added to the "rh" namespace (uhd, librtlsdr, and libRfSimulators).

New Assets

  • Basic Components: An asset for doing PSK demodulation, psk_soft is now included. New Components for reading and writing files, FileReader and FileWriter, are now included. FileReader and FileWriter demonstrate the new domain awareness feature available to all Components. DataReader and DataWriter are deprecated. An asset for decoding RBDS information from FM broadcast, RBDSDecoder, is now included. Components for sending and receiving data using the VITA49 protocol, SourceVITA49 and SinkVITA49, are now included.
  • Basic Devices: An FEI Device for simulating FM channels with RDS data, FmRdsSimulator, is now included.
  • Basic Waveforms: A set of Waveforms that collectively demonstrate usage of all Basic Components. These include: basic_Components_demo, FM_mono_demo, FM_RBDS_demo, short_file_to_float_file, socket_loopback_demo, and VITA49_loopback_demo.
  • Shared Libraries: A shared library used by FileReader and FileWriter, blueFileLib, is now included. A shared library used by SourceVITA49 and SinkVITA49, VITA49, is now available.
    Device Dependencies: A Device dependency used by FmRdsSimulator, libRfSimulators, is now included.

New Features

  • psd has been completely overhauled to use the new BulkIO stream API.
  • psd has a new feature to produce SRI metadata at RF values when appropriate keyword is present in the stream.
  • SigGen has new Properties to allow specifying values for CHAN_RF and COL_RF SRI keywords.
  • SigGen also has a new Property to allow specifying SRI blocking.
  • sinksocket has been expanded to support multiple outbound socket connections. This update includes a new API that is not backwards compatible.
  • SinkVITA49 now includes TCP functionality.
  • dsp shared library expanded to provide additional functions useful for agc.
  • RTL2832U now includes a feature to protect against usb timeout when used from within a virtual machine.
  • All Devices include a script that can be used to generate a Node for the Device.

Renamed Shared Libraries

  • REDHAWK-VITA49Libraries_V1 has been renamed VITA49.
  • REDHAWKDevUtils_v1 has been renamed REDHAWKDevUtils.

Removed Assets

  • DataWriter and DataReader have been deprecated by FileWriter and FileReader, respectively.
  • whitenoise has been deprecated by SigGen, which includes a whitenoise generation mode.
  • BurstDeserializer, freqfilter, medianfilter, and unwrap have been removed.