View on GitHub

Contents

1 Introduction
 1.1 Benefits of Using REDHAWK
 1.2 What Systems May Benefit from Using REDHAWK?
 1.3 Relationship to the SCA
 1.4 Overview of this Document
2 Installation
 2.1 Introduction
 2.2 Installing REDHAWK from RPMs
  2.2.1 Configuring the Host System to Install REDHAWK Extra Packages for Enterprise Linux (EPEL) Dependencies
  2.2.2 Downloading and Configuring the REDHAWK Yum Repository on the Host System
  2.2.3 Installing the REDHAWK Software
  2.2.4 Setting Up the User Environment
 2.3 Configuring omniORB
  2.3.1 Configuring omniORB for Distributed Systems
 2.4 Configuring JacORB to Support the IDE
3 Components
 3.1 Introduction
 3.2 REDHAWK Core Assets
  3.2.1 REDHAWK Basic Components
  3.2.2 REDHAWK Basic Devices
  3.2.3 REDHAWK Basic Waveforms
  3.2.4 REDHAWK Shared Libraries
  3.2.5 REDHAWK Device Dependencies
 3.3 Creating a Component Project
  3.3.1 Component Wizard
  3.3.2 Component Descriptors
  3.3.3 Ports
  3.3.4 Properties
  3.3.5 Logging
  3.3.6 Generating Components
  3.3.7 Installing Components
 3.4 Creating Octave Components
  3.4.1 Overview
  3.4.2 The createOctaveComponent Script
  3.4.3 Design Considerations
 3.5 Running a Component
 3.6 Sandbox
  3.6.1 Python Sandbox
  3.6.2 The IDE Sandbox
 3.7 Creating and Running a Hello World Component
4 Component Structure
 4.1 Introduction
 4.2 Auto-Generated Component Files
  4.2.1 Files Generated for All Components
  4.2.2 Files Generated for C++ Components
  4.2.3 Files Generated for Python Components
  4.2.4 Files Generated for Java Components
 4.3 Auto-Generated Component Methods
  4.3.1 serviceFunction()
  4.3.2 constructor()
 4.4 Base Component Members
  4.4.1 Ports
  4.4.2 Properties
  4.4.3 Domain Awareness
  4.4.4 Network Interface
 4.5 Component Implementations
 4.6 Managing and Defining Properties
  4.6.1 Property Change Listeners
  4.6.2 Customizing Query and Configure
 4.7 Creating a REDHAWK Shared Library Project
 4.8 Including External Libraries
  4.8.1 Adding a Library by Referencing a pkg-config File
  4.8.2 Adding a Library Directly
5 Connections
 5.1 Introduction
 5.2 The Connection Process
 5.3 Why Ports?
 5.4 Port Access
 5.5 Dynamic Connections
 5.6 Standardized Data Interfaces
 5.7 BulkIO
  5.7.1 Data Transfers
  5.7.2 Signal Related Information (SRI)
  5.7.3 Stream API
  5.7.4 Multi-out Ports
  5.7.5 Working with Complex Data
  5.7.6 Time Stamps
  5.7.7 Port Statistics
  5.7.8 Examples
 5.8 BurstIO
  5.8.1 Data Transfers
  5.8.2 Burst Signal Related Information (SRI)
  5.8.3 Multi-out Ports
  5.8.4 Working with Complex Data
  5.8.5 Time Stamps
  5.8.6 Port Statistics
 5.9 Messaging
  5.9.1 Introduction
  5.9.2 Message Producer
  5.9.3 Message Consumer
  5.9.4 Viewing Messages
  5.9.5 Connecting Producers and Consumers
6 Waveforms
 6.1 Waveform Editor
  6.1.1 Overview Tab
  6.1.2 Diagram Tab
  6.1.3 SAD File Tab
 6.2 Create and Deploy a Sample Waveform
  6.2.1 Create a Sample Waveform
  6.2.2 Export the Waveform
  6.2.3 Run the Waveform on the Runtime Environment
 6.3 Waveform Deployment and Computing Resources
  6.3.1 GPP Device
  6.3.2 Monitoring Computing Resources
  6.3.3 Capacity Reservation
7 Working with Devices
 7.1 Using Devices to Interact with Hardware
  7.1.1 Creating an FEI Device in the IDE
  7.1.2 Interacting with an FEI Device with the Python Package
  7.1.3 Using an FEI Device in a Domain
 7.2 Associating a Waveform with an FEI Device
 7.3 Using Devices to Run Components
 7.4 Using Devices to Interface with FPGAs
 7.5 Functions and Data Structures Provided by the FrontEnd Interfaces Library and Code Generators
 7.6 Miscellaneous FrontEnd Tuner Library Implementation Details
8 Services
 8.1 Introduction
 8.2 Management
 8.3 Files Defining a Service
 8.4 Service API
 8.5 Finding a Service
9 Nodes
 9.1 Introduction
 9.2 Running a Node
  9.2.1 Exploring the Running Node
  9.2.2 Creating a Component that Consumes Resources
  9.2.3 Create a Waveform for the New Component
  9.2.4 Observe the Effect of Launching the Component
  9.2.5 Creating a New Node
 9.3 Distributed Computing and RF Devices
  9.3.1 Dependencies
  9.3.2 Allocation Properties
  9.3.3 Allocation Usage
10 Sandbox
 10.1 Introduction
 10.2 Python Sandbox
  10.2.1 Setup
  10.2.2 Starting the Sandbox
  10.2.3 Running the Sandbox
  10.2.4 Working with Components, Devices, and Services
  10.2.5 Devices
  10.2.6 Example Sandbox Interaction
  10.2.7 Built-in Sources and Sinks
  10.2.8 Plotting Data
  10.2.9 X/Y Plot
  10.2.10 Miscellaneous
 10.3 IDE Sandbox
  10.3.1 Launching Components in the IDE Sandbox
  10.3.2 Launching Devices in the IDE Sandbox
  10.3.3 Launching Services in the IDE Sandbox
  10.3.4 Launching Waveforms in the IDE Sandbox
11 The Runtime Environment
 11.1 Overview
  11.1.1 Launching a Domain
  11.1.2 Shutting Down the Domain
 11.2 The Domain Manager
  11.2.1 Launching a Domain Manager from the command line
  11.2.2 Registration
  11.2.3 Core Framework Administration
  11.2.4 Human Computer Interfacing
  11.2.5 Persistence Store
 11.3 File System
  11.3.1 File Manager
 11.4 Applications
  11.4.1 Application Class
  11.4.2 SAD File
  11.4.3 Assembly Controller and Start Order
  11.4.4 Host Collocation
  11.4.5 External Ports
  11.4.6 External Properties
  11.4.7 Using the Find By Feature
  11.4.8 usesdevice Relationship
 11.5 The Application Factory
 11.6 The Device Manager
  11.6.1 Launching a Device Manager from the Command Line
  11.6.2 DCD File
  11.6.3 Nodes
  11.6.4 Devices
 11.7 The Allocation Manager
 11.8 The Connection Manager
 11.9 Events
  11.9.1 Event Definition
  11.9.2 Standard REDHAWK Events
  11.9.3 Cleaning up the Event Service
  11.9.4 Consuming Events
  11.9.5 Writing Your Own Event Consumer
 11.10 The Event Channel Manager
12 Runtime Environment Inspection
 12.1 Introduction
 12.2 REDHAWK Module
  12.2.1 Attach
  12.2.2 Starting a Domain from within a Python session
  12.2.3 Domain State
  12.2.4 Using With the Sandbox
13 Logging
 13.1 Introduction
 13.2 Configuring Logging Capabilities
  13.2.1 Configuration Context Tokens
  13.2.2 LOGGING_CONFIG_URI Resolution
  13.2.3 Log Configuration Example - Simple Appender with a Named Logger
  13.2.4 Log Configuration Example - Configuring a Component with Token Macros
  13.2.5 Logging with Event Channels for Components, Devices and Services
 13.3 Logging Within A Resource
  13.3.1 C++
  13.3.2 Java
  13.3.3 Python
 13.4 Adjusting Logging at Runtime
 13.5 Viewing Logging Events
14 Using the REDHAWK IDE
 14.1 Launching the REDHAWK IDE for the First Time
  14.1.1 PyDev Overview
 14.2 Configuring PyDev for REDHAWK Development
  14.2.1 PyDev: Undefined variable or imports
 14.3 The Workbench
  14.3.1 Perspectives
  14.3.2 The REDHAWK Perspective
  14.3.3 Programming Language Specific Perspectives
 14.4 Editors and Views
  14.4.1 SoftPkg Editor
  14.4.2 Waveform Editor
  14.4.3 Node Editor
  14.4.4 NeXtMidas Plot Editor
  14.4.5 REDHAWK Explorer View
  14.4.6 REDHAWK Plot View
  14.4.7 Plot Settings Dialog
  14.4.8 Event Viewer View
  14.4.9 Data List and Statistics View
  14.4.10 Port Monitor View
  14.4.11 SRI View
  14.4.12 Console View
  14.4.13 Properties View
 14.5 Creating REDHAWK Projects
  14.5.1 REDHAWK Component Project
  14.5.2 REDHAWK Control Panel Project
  14.5.3 REDHAWK Device Project
  14.5.4 REDHAWK Front End Device Project
  14.5.5 REDHAWK IDL Project
  14.5.6 REDHAWK Node Project
  14.5.7 REDHAWK Octave Project
  14.5.8 REDHAWK Service Project
  14.5.9 REDHAWK Shared Library Project
  14.5.10 REDHAWK Waveform Project
 14.6 Adding/Changing/Removing REDHAWK Project Namespaces
 14.7 Debugging REDHAWK Components and Devices with Eclipse
  14.7.1 Running Unit Tests
  14.7.2 Running a Component or Device from the REDHAWK Sandbox
  14.7.3 Using the Debugger with the Sandbox
 14.8 Deploying Projects to the SDRROOT
 14.9 Snapshot Tool
 14.10 Connect Wizard
 14.11 Using the Octave Wizard
 14.12 Plot Port Wizard
15 Sharing REDHAWK Projects With Others
 15.1 REDHAWK Project Metadata Files
 15.2 Exporting Projects as Source Code Archives
 15.3 Importing Existing Projects
 15.4 Importing Incomplete Projects
 15.5 Collaborative REDHAWK Development Using a Version Control System
  15.5.1 Managing Projects Outside of the Eclipse Workspace
 15.6 Exporting Projects as a Deployable REDHAWK Project
16 Exploring SDRROOT Using the REDHAWK IDE
 16.1 Browsing Installed SDR Objects
  16.1.1 Components
  16.1.2 Devices
  16.1.3 Nodes
  16.1.4 Services
  16.1.5 Waveforms
 16.2 Browsing Installed IDL Libraries
 16.3 Getting Details About Error Conditions
17 Exploring a Running Domain Using the REDHAWK IDE
 17.1 Connecting to a Domain
  17.1.1 Launching and Connecting Using the IDE
  17.1.2 Connecting to a Running Domain
 17.2 Viewing the Contents of the Domain in the REDHAWK Explorer View
 17.3 Working with Waveforms on a Running Domain
  17.3.1 Launching a Waveform
  17.3.2 Launching Additional Components into a Running Waveform
  17.3.3 Stopping a Waveform
  17.3.4 Releasing a Waveform
 17.4 Plotting BulkIO Ports
 17.5 Increasing the Bandwidth of BulkIO Connections
 17.6 Displaying Port Statistics
 17.7 Getting Details About Error Conditions
A REDHAWK Yum Repository and Packages
 A.1 REDHAWK Yum Repository
  A.1.1 REDHAWK Yum Groups
  A.1.2 Dependencies Packaged with REDHAWK
 A.2 Selective Installation
B External Dependencies
 B.1 Installing the EPEL Repository
  B.1.1 From the Fedora Downloads Site
  B.1.2 Standalone EPEL from REDHAWK
 B.2 Runtime-only Dependencies
  B.2.1 Dependencies for RHEL/CentOS 6
  B.2.2 Dependencies for RHEL/CentOS 7
 B.3 Dependencies for Development and Building from Source
  B.3.1 Dependencies for RHEL/CentOS 6
  B.3.2 Dependencies for RHEL/CentOS 7
C Installing a Stand-alone IDE
D Building and Installing REDHAWK from Source
 D.1 Building the Framework
  D.1.1 Installing Build Dependencies
  D.1.2 Installing the Framework from Source
  D.1.3 Configuring omniORB
E Optimization
 E.1 Introduction
 E.2 Configuring omniORB
 E.3 Packet Transfer Size
 E.4 Messaging Latency
F FrontEnd Interfaces
 F.1 Introduction
  F.1.1 Theory of Operations
  F.1.2 FEI Terminology
  F.1.3 Required Properties
 F.2 Types of Tuners
  F.2.1 RX Tuner
  F.2.2 RX_DIGITIZER Tuner
  F.2.3 CHANNELIZER Tuner
  F.2.4 DDC Tuner
  F.2.5 RX_DIGITIZER_CHANNELIZER Tuner
  F.2.6 TX Tuner
 F.3 Allocation
  F.3.1 ID
  F.3.2 Tuner Allocation Overview
  F.3.3 Tuner Allocation Properties
  F.3.4 Listener Allocation Properties
  F.3.5 Tuner Deallocation
 F.4 Command and Control
  F.4.1 Tuner Control IDL
 F.5 Data Flow
  F.5.1 Multi-Output
  F.5.2 SRI and Keywords
 F.6 Status
  F.6.1 Status Elements
 F.7 RFSource Interface
G REDHAWK Persona Device Pattern
 G.1 Introduction
  G.1.1 Potential Benefits
 G.2 Theory of Operation
  G.2.1 The Programmable and Persona Roles
  G.2.2 REDHAWK Devices
  G.2.3 Associating Programmable/Persona Devices
  G.2.4 Hardware-Accelerated Components
 G.3 Code-Generation Support
 G.4 Persona Pattern Development
  G.4.1 Programmable Device Development
  G.4.2 Persona Device Development
  G.4.3 System Developers
 G.5 When to Use the Persona Pattern
 G.6 Sharing Hardware Driver/API
  G.6.1 Option 1: Modifying the construct Method
  G.6.2 Option 2: Defining a Programmable Device Interface
H Troubleshooting
 H.1 Introduction
 H.2 Performing a Hard Reset Using the cleanomni Script
 H.3 Diagnosing Problems Using the rh_net_diag Script
 H.4 Performing a Soft Reset of omniNames and omniEvents
 H.5 Setting Omni Log Levels
 H.6 Common Causes for omniNames Failure
  H.6.1 IP Version 6 Conflicts
  H.6.2 Invalid IP Addresses in /etc/hosts
I List of Acronyms
Glossary
List of Figures
List of Tables


Creative Commons License
REDHAWK Documentation is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.