REDHAWK MANUAL
VERSION 2.0.5
FEBRUARY 6, 2017
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.3 Configuring omniORB
2.4 Configuring JacORB to Support the IDE
3 Components
3.1 Introduction
3.2 REDHAWK Core Assets
3.3 Creating a Component Project
3.4 Creating Octave Components
3.5 Running a Component
3.6 Sandbox
3.7 Creating and Running a Hello World Component
4 Component Structure
4.1 Introduction
4.2 Auto-Generated Component Files
4.3 Auto-Generated Component Methods
4.4 Base Component Members
4.5 Component Implementations
4.6 Managing and Defining Properties
4.7 Creating a REDHAWK Shared Library Project
4.8 Including External Libraries
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.8 BurstIO
5.9 Messaging
6 Waveforms
6.1 Waveform Editor
6.2 Create and Deploy a Sample Waveform
6.3 Waveform Deployment and Computing Resources
7 Working with Devices
7.1 Using Devices to Interact with Hardware
7.2 Associating a Waveform with an Front End Interfaces (FEI) Device
7.3 Using Devices to Run Components
7.4 Using Devices to Interface with Field-programmable gate arrays (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.3 Distributed Computing and RF Devices
10 Sandbox
10.1 Introduction
10.2 Python Sandbox
10.3 IDE Sandbox
11 The Runtime Environment
11.1 Overview
11.2 The Domain Manager
11.3 File System
11.4 Applications
11.5 The Application Factory
11.6 The Device Manager
11.7 The Allocation Manager
11.8 The Connection Manager
11.9 Events
11.10 The Event Channel Manager
12 Runtime Environment Inspection
12.1 Introduction
12.2 REDHAWK Module
13 Logging
13.1 Introduction
13.2 Configuring Logging Capabilities
13.3 Logging Within A Resource
13.4 Adjusting Logging at Runtime
13.5 Viewing Logging Events
14 Using the REDHAWK Integrated Development Environment (IDE)
14.1 Launching the REDHAWK IDE for the First Time
14.2 Configuring PyDev for REDHAWK Development
14.3 The Workbench
14.4 Editors and Views
14.5 Creating REDHAWK Projects
14.6 Adding/Changing/Removing REDHAWK Project Namespaces
14.7 Debugging REDHAWK Components and Devices with Eclipse
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.6 Exporting Projects as a Deployable REDHAWK Project
16 Exploring SDRROOT Using the REDHAWK IDE
16.1 Browsing Installed Software-Defined Radio (SDR) Objects
16.2 Browsing Installed Interface Description Language (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.2 Viewing the Contents of the Domain in the REDHAWK Explorer View
17.3 Working with Waveforms on a Running Domain
17.4 Plotting Bulk Input/Output (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.2 Selective Installation
B External Dependencies
B.1 Installing the EPEL Repository
B.2 Runtime-only Dependencies
B.3 Dependencies for Development and Building from Source
C Installing a Stand-alone IDE
D Building and Installing REDHAWK from Source
D.1 Building the Framework
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.2 Types of Tuners
F.3 Allocation
F.4 Command and Control
F.5 Data Flow
F.6 Status
F.7 RFSource Interface
G REDHAWK Persona Device Pattern
G.1 Introduction
G.2 Theory of Operation
G.3 Code-Generation Support
G.4 Persona Pattern Development
G.5 When to Use the Persona Pattern
G.6 Sharing Hardware Driver/API
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
I List of Acronyms
Glossary
List of Figures
List of Tables
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.3 Configuring omniORB
2.4 Configuring JacORB to Support the IDE
3 Components
3.1 Introduction
3.2 REDHAWK Core Assets
3.3 Creating a Component Project
3.4 Creating Octave Components
3.5 Running a Component
3.6 Sandbox
3.7 Creating and Running a Hello World Component
4 Component Structure
4.1 Introduction
4.2 Auto-Generated Component Files
4.3 Auto-Generated Component Methods
4.4 Base Component Members
4.5 Component Implementations
4.6 Managing and Defining Properties
4.7 Creating a REDHAWK Shared Library Project
4.8 Including External Libraries
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.8 BurstIO
5.9 Messaging
6 Waveforms
6.1 Waveform Editor
6.2 Create and Deploy a Sample Waveform
6.3 Waveform Deployment and Computing Resources
7 Working with Devices
7.1 Using Devices to Interact with Hardware
7.2 Associating a Waveform with an Front End Interfaces (FEI) Device
7.3 Using Devices to Run Components
7.4 Using Devices to Interface with Field-programmable gate arrays (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.3 Distributed Computing and RF Devices
10 Sandbox
10.1 Introduction
10.2 Python Sandbox
10.3 IDE Sandbox
11 The Runtime Environment
11.1 Overview
11.2 The Domain Manager
11.3 File System
11.4 Applications
11.5 The Application Factory
11.6 The Device Manager
11.7 The Allocation Manager
11.8 The Connection Manager
11.9 Events
11.10 The Event Channel Manager
12 Runtime Environment Inspection
12.1 Introduction
12.2 REDHAWK Module
13 Logging
13.1 Introduction
13.2 Configuring Logging Capabilities
13.3 Logging Within A Resource
13.4 Adjusting Logging at Runtime
13.5 Viewing Logging Events
14 Using the REDHAWK Integrated Development Environment (IDE)
14.1 Launching the REDHAWK IDE for the First Time
14.2 Configuring PyDev for REDHAWK Development
14.3 The Workbench
14.4 Editors and Views
14.5 Creating REDHAWK Projects
14.6 Adding/Changing/Removing REDHAWK Project Namespaces
14.7 Debugging REDHAWK Components and Devices with Eclipse
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.6 Exporting Projects as a Deployable REDHAWK Project
16 Exploring SDRROOT Using the REDHAWK IDE
16.1 Browsing Installed Software-Defined Radio (SDR) Objects
16.2 Browsing Installed Interface Description Language (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.2 Viewing the Contents of the Domain in the REDHAWK Explorer View
17.3 Working with Waveforms on a Running Domain
17.4 Plotting Bulk Input/Output (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.2 Selective Installation
B External Dependencies
B.1 Installing the EPEL Repository
B.2 Runtime-only Dependencies
B.3 Dependencies for Development and Building from Source
C Installing a Stand-alone IDE
D Building and Installing REDHAWK from Source
D.1 Building the Framework
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.2 Types of Tuners
F.3 Allocation
F.4 Command and Control
F.5 Data Flow
F.6 Status
F.7 RFSource Interface
G REDHAWK Persona Device Pattern
G.1 Introduction
G.2 Theory of Operation
G.3 Code-Generation Support
G.4 Persona Pattern Development
G.5 When to Use the Persona Pattern
G.6 Sharing Hardware Driver/API
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
I List of Acronyms
Glossary
List of Figures
List of Tables
[next]

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