Source code now available!
HAWKEYE provides a language-native gateway into a REDHAWK SDR system. This gateway enables a user to view and stream updates from entities in multiple Domains simultaneously — all without itself being deployed with a Domain controller. By way of a JSON message stream, rich web-based interfaces backed by open-source and heavily vetted frameworks such as Node.js, jQuery, and Socket.io are readily possible.

JavaScript failed to load.

Further extending the server is Express.js — a framework providing file routing, template-based management, etc. For HAWKEYE, this translates to rapid reuse and deployment of ever-richer interfaces with the same message stream. Shown here is the transition from the default to some additional redirection and CSS. The final example, RASHAWK, integrates Frontend GPS streamed coordinates with Google’s mapping API.

REDHAWK SDR Integration

JavaScript failed to load.

HAWKEYE provides direct access to REDHAWK SDR’s internal Python-based model by way of a simple socket-based messaging gateway. This messaging gateway only requires REDHAWK SDR to be installed with access to OmniORB. Otherwise, it can be deployed elsewhere on the network.
The resulting message API allows the end user to not only view details of multiple REDHAWK entities simultaneously, but also control those entities. End users are free to change properties, manage running applications, etc. by issuing simple JSON-encoded messages by one of the transport mechanisms supported by Socket.io

Asynchronous Access

JavaScript failed to load.

HAWKEYE’s various proxy objects take advantage of REDHAWK SDR’s underlying event infrastructure to provide asynchronous “push” updates to the client interface over Socket.io. Each entity’s proxy manages whether or not to push these events.
Example: a new Domain is detected, and its proxy is created. This proxy attaches to the ODM Channel to capture entities as they join and leave the Domain. As shown here, a Node and its Device come online, are browsed, and depart using HAWKEYE’s default view.
This Socket.io connection is bidirectional. A client interface for example can request and update of a Component’s property or start a BULKIO port streaming data.

jQuery Event Updates

JavaScript failed to load.

HAWKEYE jQuery widgets all provide an event for pushing updates to user-defined callbacks. These callbacks can drive plots scripts, additional processing, mapping APIs, etc. — all using client-side JavaScript and jQuery widgets.
Here a simple Processing.js sketch instance is attached to a BULKIO port’s HAWKEYE widget. The original widget retains its ability to start or stop the stream, and each message is passed to the sketch for plotting in a standard HTML5 canvas.
Since Express.js allows you to serve or replace any default file to the client-side interface, you can control what exactly how to use the stream. A HAWKEYE-backed interface can effectively be driven by any entity — including individual property values.