SlideShare a Scribd company logo
1 of 14
NASA – Internship Final Report
Summer 2016 Session1
BARCoMmS:
iSat Ground Station Testing System
Benjamin Kingen
Alissa Smith
Riley Waite
Marshall Space Flight Center
August 12, 2016
Reviewed by NASA Mentor
Scott Akridge
ES-52
____________________________________
Mentor Signature Here
NASA – Internship Final Report
Summer 2016 Session2
BARCoMmS: iSat Ground Station Testing System
Benjamin Kingen1, Alissa Smith2, and Riley Waite3
A ground station test software for the iSat project will be written with the intent of
replicating a mission-viable ground station with the Consultative Committee for Space Data
Systems’ (CCSDS) File Delivery Protocol (CFDP) capability and a modular user interface
with packet transfer visualization, a satellite command issuer, CFDP command-line
integration, and satellite event history displays. Named BARCoMmS (Ben, Alissa, and
Riley’s Communication Management System) after the intern group, the software will be
capable of interfacing with the closed-loop iSat data pipeline during Critical Design Review
(CDR), and, as such, will be integral to the simulation of satellite operations. The system will
send and receive CCSDS space packets through specified UDP ports to the Programmable
Telemetry Processor (PTP) with certain ports representing specific virtual channels through
which telemetry and satellite commands will run.
Nomenclature
ACK = Acknowledgment
APID = Application Process Identifier
BARCoMmS = Ben, Alissa, and Riley’s Communication Management System
CCSDS = The Consultative Committee for Space Data Systems
CFDP = CCSDS File Delivery Protocol
DITL = Day in the Life
EOF = End of file
Graphics Items = Qt QGraphicsItem Inheriting Object for painting (e.g. ellipse, rectangle, text)
NAK = Negative Acknowledgment
PDU = Protocol Data Unit
I. Introduction
he use of iodine propellant for Hall thrusters has been studied and proposed by multiple organizations due to the
potential mission benefits over xenon. In 2013, NASA Marshall Space Flight Center competitively selected a
project for the maturation of an iodine flight operational feed system through the Technology Investment Program.
Multiple partnerships and collaborations have allowed the team to expand the scope to include additional mission
concept development and risk reduction to support a flight systemdemonstration, the iodine Satellite (iSat). The iSat
project is now progressing towards a technology demonstration mission critical design review.
In order to facilitate the stimulation, simulation, and testing of the iSat’s flight software, a ground station testing
framework needs to be rapidly deployable, easily modified, and portable; these were the qualities sought out by the
team when creating BARCoMmS. The software is modular, capable of packet communication visualization,
command issuing, CFDP communication, and event history timeline display. The software allows for speedy and
simple integration of additional modules, commands, and GUI features, and lends itself nicely to the testing and
development of the iSat flight software.
1 Computer Science and Applied Mathematics, NASA MSFC, South-East Missouri State University.
2 Electrical Engineering and Applied Physics, NASA MSFC, The Pennsylvania State University.
3 Aerospace and Mechanical Engineering, NASA MSFC, Rose-Hulman Institute of Technology.
T
NASA – Internship Final Report
Summer 2016 Session3
II. System Overview
Figure 1 BARCoMmS Process Flow Diagram
A. Initialization
BARCoMmS currently consists of four modules: DITL, CFDP, Bulletin, and Command. Upon initialization, the
four modules (green), along with two packet listener threads (blue), are instantiated. Listener threads open and listen
to their respective UDP ports (yellow). Qt Slots (white diamonds; covered later) connect to the necessary Signals.
B. Modular Architecture
The Qt framework allows for a highly modular system architecture. Modules exist within class objects,
interfacing with any other module or application object via Qt Signals and Slots. Additional modules can be
appended to the system simply by instantiating an object of them and calling appropriate initiation methods within
the initialization process.
C. Signals and Slots
The modules connect to each other and the listener threads via signals and slots, a subscription-publication
systemnative to the Qt framework that BARCoMmS was developed in. Connections are as follows:
•Bulletin listens to CFDP for CFDP transaction information
•Bulletin listens to Command for command information
•Bulletin listens to the Telemetry Packet Listener for Health and Status PDUs and command acknowledgments
•DITL listens to the Telemetry Packet Listener for Event PDUs
•Telemetry Packet Listener listens on incoming FSW telemetry UDP port
•Command Packet Listener listens on incoming external command UDP port
•CFDP module connects to the FSW’s CFDP client through UDP port for CCSDS space packet PDU transfers
•Command listens to the Telemetry Packet Listener for telemetry PDUs
•Command listens to Bulletin for Health and Status received signal strength
•Command sends command PDUs to FSW
D. Packet Listener Threads
The two packet listener threads, the Telemetry Packet Listener (TPL) and the Command Packet Listener (CPL),
run concurrently with the primary BARCoMmS application. These threads respectively listen for incoming
telemetry and command PDUs on specified UDP ports. The listeners then disseminate, via aforementioned Qt signal
emission, these PDUs to the appropriately connected modules (e.g. event PDUs to the DITL and command ACK
PDUs to the Bulletin). Packet Listener Threads will only terminate when there are no longer modules listening to
their signals, thus eliminating erroneous processes when possible.
NASA – Internship Final Report
Summer 2016 Session4
Figure 2 BARCoMmS CFDP Main Window.
III. Modules
A. CFDP
1. Overview
At its core, the CFDP module enables the reliable and unreliable (for test purposes) delivery of space packets. In
addition to this, however, the module supports a variety of functions helpful during communication passes. The
ability to freeze and thaw the engine, suspend or cancel transactions, and change the file chunk sizes are just a few.
The module is also fully capable of fault injection testing with built-in faults provided by the link simulator.
The CFDP module consists of two separate implementations: one for ground and one for flight. The ground
implementation (also known as BARCoMmS CFDP) is a user-friendly GUI-wrapped version of CCSDS’s CFDP
library with functionality that enables the user to quickly view the status of transactions and any engine parameters
as well as issue all commands necessary for ensuring reliable file transfers. Equipped with an initialization file, the
user can configure all engine settings and other parameters once to their preference such that, on load, the program
will start with the user’s preferences. The engine is also capable of sending and receiving files at any time while the
program is running (unless the engine is frozen). This means that once the userissues a request to download files, no
further action is required to receive the files. Likewise, once the user initiates a put request, no further action is
necessary. The flight implementation is an embedded solution for use on the satellite itself. Rather than having a
GUI for user input, the system waits for commands issued to the satellite and then responds accordingly. For
example, if the ground operator issues the “Download Camera Images” command, the on-board CFDP client is
notified to “put” the n most recent camera images. Furthermore, like the ground implementation’s engine, the engine
is always ready to receive incoming PDUs (unless the engine has been frozen), meaning that if the ground wanted to
send a packet to the satellite (say a software update), it could do so at any time (also assuming a connection has been
established).
NASA – Internship Final Report
Summer 2016 Session5
The primary purpose for using CFDP on the iSat is to reliably transfer photographs taken by the satellite’s
camera from the satellite to the ground during communication passes. The photos will display the thruster’s plume
and any build-up that accumulates on the thruster itself. A future implementation under consideration is to use
CFDP as a means of not only image transfers, but also software update transfers . Since CFDP is simply a file
delivery protocol, it is fully capable of handling any type of file. As such, the software side of things needs no
changes to handle transactions that are not images. Moreover, it is important to note that CFDP is not limited to just
these two examples.
2. Functionality
The functionality of the engine can be broken up into five categories: requests, engine toggles, engine settings,
statuses, and miscellaneous features. Requests handle the file transactions. Engine toggles handle the freezing and
thawing of the engine. Engine settings handle the configuration of engine-specific parameters (e.g. for address
mapping and for communication timers). Statuses handle user-informative requests. Miscellaneous features are
simply “other” features that could be useful during a communication pass. Note that the statuses and miscellaneous
features are only available for the ground client, since messages will be non-existent on the satellite.
Requests:
i. Put – Given a transfer type, receiver ID, source file, and destination file, allows a transaction to begin.
ii. Suspend – Halts the transaction’s progress until it is resumed or canceled/abandoned.
iii. Resume – Resumes a suspended transaction’s progress.
iv. Cancel – Alerts the transaction partner that the file is to be canceled. Awaits for ACK before killing the
transaction.
v. Abandon – Kills the transaction without telling the partner.
vi. Report – Displays the current status of a transaction.
Engine Toggles:
i. Freeze Engine – Halts the engine’s state such that no transactions can continue until the engine thaws. This
is ideal for when a satellite has finished its communication pass and communication is no longer required.
ii. Disable Engine Messages – Prevents messages pertaining to engine events from displaying.
Engine Settings:
i. MIB (Management Information Base) – Allows the user to control engine parameter settings. These
parameters consist of the following:
a. Issue EOF sent indications
b. Issue EOF received indications
c. Issue file segment sent indications
d. Issue file segment received indications
e. Issue resumed indications
f. Issue suspended indications
g. Issue transaction finished indications
h. Save incomplete files
i. ACK limit
j. ACK timeout
k. NAK limit
l. NAK timeout
m. Inactivity timeout
n. Outgoing file chunk size
o. Entity (node) ID
ii. Message Classes – Allows the user to enable or disable classes of messages that display information
pertaining to their respective events. The classes are the following:
a. Indications
b. Debug memory use
c. Debug NAK
d. Debug PDU
e. PDU file data
f. PDU non-file data
g. PDU retransmitted file data
h. State all
i. State change
NASA – Internship Final Report
Summer 2016 Session6
iii. Link Simulator – A built in fault-injection tool used to set the connection’s strength (as a success rate),
corrupt checksums or file sizes, and performactions such as dropping all transactions or all NAKs. A list of
provided fault parameters follows below:
a. Connection strength (as a success rate)
b. Delay between PDUs
c. Duplicate
d. Reorder
e. Drop all
f. Drop all ACK and Fin
g. Drop all Fin
h. Drop all NAK
i. Drop all but EOF
j. Drop one ACK EOF
k. Drop one ACK Fin
l. Drop one EOF
m. Drop one Fin
Statuses
iv. Detailed Status – Provides details about a specific transaction such as transaction start time, file size, and
bytes transferred so far.
v. Periodic Status – Displays the Trans Status information at a constant rate.
vi. List – Displays a list of every current transaction.
vii. Summary – Displays statistics relating to past and current transactions such as total frozen transactions,
total send-fails, and total receive-fails.
viii. Reset Totals – Resets the statistics displayed in Summary.
Misc.
ix. Robustness Test – Engine robustness test used to ensure the engine is running properly.
x. Echo – A simple tool used to echo back commands to the user, similar to the “echo” function used in the
Linux environment.
xi. Event Log – A means of logging all the input/output fromCFDP.
3. Sample CFDP Application
Consider the case where an operator would like to download the five most recent camera images from the
satellite. The following steps would occur in order to receive the images:
Step 1: The operator uses BARCoMmS Command to issue the “Download Camera Images” command with a
parameter of five (indicating that the satellite should send the five most recent files).
Step 2: The flight software receives the command and notifies CFDP Flight.
Step 3: CFDP Flight begins transaction 1 by sending down the most recent image.
Step 4: CFDP Flight waits for transaction 1 to complete successfully or for the transaction to be
cancelled/abandoned/suspended.
Step 5: If the file transfer was successful, CFDP Flight deletes the image from transaction 1 from on-board
memory as a means of memory management. CFDP Flight continues on to step 6.
Step 6: Repeat steps 3 through 5 until all files transfer successfully or cancel/abandon/suspend.
While these steps perform, in the background BARCoMmS Camera is constantly scanning a directory for any
new images. If a new image is found (e.g. an image that was transferred from CFDP Flight), then it will
automatically display in the Camera module.
NASA – Internship Final Report
Summer 2016 Session7
Figure 3 Sample CFDP application for requesting camera images.
4. Output
BARCoMmS CFDP takes its displayed output straight from the CFDP library’s callback routine to print
statements. As such, it displays all information in a very verbose manner. This is great for debugging and simple to
follow during single transactions. Once multiple files are sending, however, the information is difficult to manage.
BARCoMmS CFDP handles this by sending the output to BARCoMmS Bulletin as well, where all the information
is processed and put in a user-friendly format for viewing. See the Bulletin section for more information.
5. Nodes
Unlike most communication frameworks that use IP addresses and ports directly to reference other
communication-capable entities, CFDP uses so-called “nodes” as a means of identifying those entities. A node,
however, is simply an IP/port pair. A file called mib.nodes defines these pairs. Because of this, whenever a new
connection is necessary, one will need to update the mib.nodes file with a new “node” with the corresponding
IP/port pair. While this is a drawback, it comes with the advantage of being capable of easily identifying CFDP
entities capable of communication.
NASA – Internship Final Report
Summer 2016 Session8
B. Command
1. Overview
The Command module is still a naïve implementation of what will eventually become a fully equipped satellite
control and command interface. It is responsible for sending command packets to the satellite, as well as displaying
relevant telemetry received from the satellite.
Each command packet consists of a CCSDS Space Packet Header, which contains several fields pertinent to the
application. The first is the Application Process Identifier (APID). Each type of telemetry packet (e.g. events,
Guidance, Navigation, and Control data, and Health and Status data) and command packet (e.g. ping, downlink
buffer, and downlink camera images) has a predefined APID that distinguishes it from other telemetry or
commands. Further, every single command packet sent to the satellite has a unique ID, which distinguishes it from
other packets that may have the same APID. The BARCoMmS application assigns this value sequentially just before
it sends a packet.
Some command packets also contain additional parameters to specify actions the satellite should take. The
ground station operator assigns these values at the time of packet construction.
The flight software also downlinks telemetry packets. Most relevant to the Command module are Health and
Status packets, which contain various housekeeping data and are sent down once per second. Two such data are the
unique ID of the last command received by the flight software along with the status of that command (i.e. whether or
not the satellite will execute the command). Another is the received signal strength, a measure of the strength of the
connection from the satellite's point of view. The BARCoMmS application uses these data to determine what is
happening on the flight software at any given time during a communications pass.
2. User Interface
The Command module has two main viewports. The Telemetry Display, outlined in green in Fig. 2, further
consists of the telemetry activity light and a display for the received signal strength, a field in the Health and Status
telemetry packets. When the telemetry activity light is green and the number displayed by the received signal
strength display is above a certain threshold, the connection to the satellite is secure, and it is safe for the ground
operator to begin sending commands to the flight software. The Command GUI, outlined in blue in Fig. 2, is a user-
friendly interface that allows the ground station operator to create and send command packets at the push of a
button.
Figure 4 The two primary Command viewports: Command GUI (top, blue) and Telemetry Display (bottom right, green).
NASA – Internship Final Report
Summer 2016 Session9
3. Communication with Other Modules
The Telemetry Display has two significant slots. When a telemetry packet passes through the specified UDP
port, the Telemetry Packet Listener Thread emits a signal. The Command module has a slot which then turns the
telemetry activity light green and starts a timer. After the timer expires, the telemetry activity light turns red,
indicating that the ground station received no telemetry packets for the specified timer length. Additionally, when a
telemetry packet passes through the specified UDP port and the Bulletin module accepts and parses it, the Bulletin
module emits a signal containing the received signal strength in the form of an integer. The Command module has a
second slot that displays this value next to the telemetry activity light.
The Command GUI has one significant signal. When the Command module sends a command, it emits a signal
containing the command’s APID and unique ID in the form of integers. The Bulletin module has a slot that accepts
these values and displays themaccordingly.
4. Communication with Flight Software
During the Command module’s initialization, it establishes an outgoing connection to the flight software. It
initializes the connection's endpoints, the BARCoMmS application and the flight software, by specifying their
respective IP addresses and the UDP port over which to communicate. It then ins tantiates a buffer of bytes that holds
the serialized packets. The Command module provides two methods by which to send command packets through
this connection.
The first is the Command GUI, which creates and sends command packets within the application. W hen a button
on the GUI is pressed,an object of that class is instantiated. This object, which acts as the command packet, contains
a CCSDS Space Packet Header and any additional command parameters. If the object contains additional
parameters, a dialog window opens which allows the user to choose the values of each parameter. Otherwise, the
Command module assigns the header fields that are unique to each command, namely the APID and unique ID. It
then serializes the packet, writes it to the byte buffer, and sends this buffer to the flight software through the
connection established during instantiation. Finally, the Command module emits a signal containing the APID and
unique ID in the form of integers to notify the Bulletin module that it sent a command packet.
The Command module is also capable of accepting command packets generated outside of the application. When
such a command packet passes through the specified UDP port, the Command Packet Listener Thread emits a signal
with the packet’s byte buffer. The Command module has a slot that accepts this and operates on the packet in its
serialized state. It extracts the APID and reassigns the unique ID to match the BARCoMmS sequential system. The
Command module then treats the packet like any other packet originating from within the BARCoMmS application.
It sends the packet to the flight software through the connection established during instantiation, and emits a signal
to notify the Bulletin module that it sent a command packet.
NASA – Internship Final Report
Summer 2016 Session10
C. Bulletin
1. Overview
The Bulletin module provides real-time packet transfer visualization in a user-friendly format, allowing the
ground station operator to take a quick survey of the satellite’s status and make informed decisions regarding further
operations during a short communications pass.
Figure 5 The three primary Bulletin viewports: CFDP Display (left, blue), Command Display (right, green), and Navigation
(bottom, yellow).
2. User Interface
The Bulletin module consists of three main viewports. The CFDP Display, outlined in blue in Fig. 1, shows the
current and previous statuses of all CFPD file transfers. It organizes information into two columns, based on whether
the ground station sent or received the information. The top-level items, which each represent a single file transfer,
display the CFDP transaction number, file name, and file size. It displays any further details about the transaction,
such as sent or received metadata, file segments, EOF or finished indications, ACKs, and NAKs as children of the
top-level item. It displays any further details, including timestamps, as children of their respective parents or as
grandchildren of the top-level item.
Items in the CFDP Display are color coded to make errors instantly known to the ground station operator. In
general, green indicates that a transaction has completed successfully, yellow indicates that an ACK or NAK timer
has expired or that the CFDP engine has issued a warning message, orange indicates that the transaction has been
cancelled or that a fault has occurred, and red indicates that the transaction has been abandoned. A non -colored item
simply indicates that the transaction is progressing normally.
The Command Display, outlined in green in Fig. 1, shows all commands sent to the flight software and their
status according to the Health and Status telemetry packets received from the flight software. The top-level items,
which each represent a single command, contain the APID and name of the command. It displays any further details
about the command, including the unique ID, timestamp, and status of the command, as children of the top-level
item.
Items in the Command Display are also color-coded. In general, green indicates that the flight software has
received and acknowledged the command, yellow serves as the first warning that the flight software has not
responded to the command, orange serves as the second warning that the flight software has not responded to the
command, and red serves as the third and final warning that the flight software has not responded to the command.
Red can also indicate that the flight software received the command, but replied with a negative acknowledgment. A
non-colored item simply indicates the ground station has not yet heard a response, but that the first warning timer
has not yet expired.
NASA – Internship Final Report
Summer 2016 Session11
Navigation, outlined in yellow in Fig. 1, provides several means by which to navigate through the two displays.
Located underneath the main displays, five buttons allow the ground station operator to expand or collapse a single
item and its children, expand or collapse all items and their children, automatically scroll to new items as they are
added, automatically expand new items as they are added, or choose from eight different methods by which to sort
the items in the displays. Additionally, it provides a search bar for ease of navigation.
3. Communication with Other Modules
The CFDP display has one significant slot. When the CFDP engine prints a new line to the terminal, the CFDP
module emits a signal containing the text in the line. The Bulletin module uses regular expressions to interpret this
text and determine what it should display: a more user-friendly tree item in the CFDP display.
The Command display has two significant slots. When the Command module sends a command packet to the
flight software, it emits a signal containing the command’s APID and unique ID in the formof integers. The Bulletin
module has a slot that accepts these integers and displays the new command. Additionally, when a telemetry packet
passes through the specified UDP port, the Telemetry Packet Listener Thread emits a signal containing the serialized
contents of the packet. The Bulletin module has a second slot that accepts this and extracts the APID. If the APID is
equal to one, indicating a Health and Status Packet, it extracts the unique ID and status of the last command received
by the flight software. The Bulletin module then displays this status as a child item of the specified command, and
color-codes the item accordingly.
Finally, the Command display has one significant signal. Within its second slot, which parses Health and Status
packets received from the flight software, it also extracts the received signal strength, another field in the packet. It
then emits a signal containing this value in the form of an integer. The Command module has a slot that accepts this
value and displays it accordingly.
NASA – Internship Final Report
Summer 2016 Session12
D. Day in the Life
1. Initialization
The Day in the Life (DITL) module’s primary goal is to provide a ground station technician with visual, instant
information about the iSat’s event history and operations timeline. It is the only BARCoMmS module that exists
independently of the others. It cares only about incoming event PDU telemetry.
The DITL Log File simply records all application processes for potential review in case of a significant failure
event or application crash. The logging system is naïve in that all streams to it are software defined; the log file
manager does not track low-level content such as threads, memory blocks, thrown errors, etc. An additional DITL
Event Log File (not pictured) keeps a record of all event PDUs that the application has received. In case of an
application crash, power outage, or other critical event, the software can load this logged data to revert to its
previous state.
Fig. 1 covers GUI initialization only in broad strokes. The Qt Ui Child is parented to the host application
(DITL), enabling the reference of its children (e.g. GUI objects) from the application class scope. The viewport
layouts and geometries are software defined, but scale dynamically with GUI resizing by the user. The DITL
allocates static graphics items: definite graphical elements such as highlighting graphics items. It then defines
painters, brushes, and typefaces within the software, and so are not user configurable. Finally, the software allocates
and paints the application resources to their respective viewports, such as the application icon, the BARCoMmS
logo, and other GUI image resources.
After successful GUI initialization, the application will instantiate, allocate and populate objects of its data base
singleton classes. The DITL uses three database singletons:
1) Primary Event and Graphics Database (PEG)
2) Local Event Reference Database (LER)
3) Local Event Painter Reference Database (LPR)
Of the three, the DITL populates the PEG, the only database that with generated data; the other two, as their names
would suggest, are loaded on initialization from local files stored and upkept by ground control systems. The LER
and LPR hold references to expected events and origins and what, if any, the application ought to color them as,
respectively. A ground user can predefine LPR data via its configuration file, but may not change the LER. The LER
should perfectly mirror the events possibly logged by the iSat, and so removal of these without also doing so on the
flight software could lead to unrecognized event PDUs; adding possible events to the LER is allowable and safe, but
ultimately pointless without flight software additions to compliment it.
The PEG contains data pertaining to events (e.g. time, severity, source), their respective graphics items, time
parameters (e.g. timestep, earliest and latest times), and the DITL Tree Navigator (covered later). This data is
populated and expanded in real-time as the software receives event PDUs from the Packet Listener Thread. The
class also contains the necessary methods to extract and export data to the DITL Event Log File if necessitated by an
unexpected termination.
After the database singleton objects have been instantiated and loaded, the application prepares its graphics
viewports for event PDUs to begin populating. This consists of two simply, but important activities. Firstly, the
application will populate its leftmost column of the DITL Main Viewport (DMV; covered later) with possible events
from the LER database. Secondly, the application will prepare the DMV’s graphics scenes for event PDUs by
superimposing an incorporeal Cartesian coordinate grid on them, with an origin in the upper leftmost corner of each
scene.
Figure 6 DITL Module Instantiation Process
NASA – Internship Final Report
Summer 2016 Session13
2. Event Population
The DITL module contains a very simple method to add an event to its database. This method connects to the
PLT’s PDU signal, and emits whenever the software receives a PDU. If the PDU is an event PDU, then the DITL
will add this event to its database. The DITL has a very simply ruleset for pairing events, as follows:
When the method receives an event, it checks to see if the event has a corresponding “start” event, in which case the
range on that event will become concrete. Otherwise, an event must be either a point, or an unfinished (unf.) or
unstarted (uns.) event, meaning that the application will assume that the event will continue on forever o r was
started in a previous event PDU. Both unf. and uns. events are reduced to finite ranges if the application receives its
partner event PDU.
3. User Interface
The module’s interface is very simplistic, consisting of three primary viewports: the DITL Main Viewport
(DMV), Tree Navigator (DTN), and Toolbar.
The DMV itself contains three child viewports, each of which serve as graphics displays for the primary timeline
display: namely, a Y-axis list of possible events from the LER, an X-axis timeline iterated by a user defined
timestep, and their intersecting grid of event PDUs. When hovering a cursor over an event, a ground us er can see
pertinent information about that PDU via a tooltip box. Additionally, the DTN nests events under user defined
categories. By default, the software nests events by their severities. The DITL will center on and highlight an event
of interest on the DTN when a ground station user clicks on its corresponding tree item.
Figure 7 The three primary DITL viewports: Main Viewport (left, blue), Tree Navigator (right, green), and Toolbar (bottom,
yellow)
NASA – Internship Final Report
Summer 2016 Session14
The DITL Toolbar only houses two buttons, but like the rest of the software is easily expandable. The “Show
Legend” button does exactly that: opens a modular always-on-top dialogue that displays the event color reference
legend. This portion of the software is not yet complete, and so has been loaded with a canned image file
representing a probably legend. The second button, “Change Zoom,” allows the user to select their desired X-axis
timestep (in minutes). Upon a zoom event, the application will repaint its scenes with the new timestep.
IV. Resources and Acknowledgments
Works Cited
Dankanich, John W., Kurt A. Polzin, Derek Calvert, and Hani Kamhawi. "NASA Technical Reports Server
(NTRS)." - The Iodine Satellite (iSAT) Hall Thruster Demonstration Mission Concept and Development. NASA,
28 July 2014. Web. 10 Aug. 2016.
Appendix
Source code for BARCoMmS v1.0 is available at https://github.com/Rileybrains/BARCoMmS. Any
questions about the software can be directed to riley.s.waite@gmail.com.
Acknowledgments
The intern group would like to thank mentors Scott Akridge, Jim Cecil, and especially Jamie Moyers for their
support, guidance, and patience. We thank Tina Atchley for her support as our intern coordinator, and Daniel Heater
for his generosity in selecting us for these positions. We would also like to thank Alex Lay, a volunteer intern, for
his hard work on, and dedication to, the project.

More Related Content

What's hot

Research Inventy : International Journal of Engineering and Science is publis...
Research Inventy : International Journal of Engineering and Science is publis...Research Inventy : International Journal of Engineering and Science is publis...
Research Inventy : International Journal of Engineering and Science is publis...researchinventy
 
A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...
A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...
A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...TELKOMNIKA JOURNAL
 
Rts assighment final
Rts assighment finalRts assighment final
Rts assighment finalsayanpandit
 
Accelerating system verilog uvm based vip to improve methodology for verifica...
Accelerating system verilog uvm based vip to improve methodology for verifica...Accelerating system verilog uvm based vip to improve methodology for verifica...
Accelerating system verilog uvm based vip to improve methodology for verifica...VLSICS Design
 
Cse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solutionCse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solutionShobha Kumar
 
Atoll platform highlights and lte
Atoll platform highlights and lteAtoll platform highlights and lte
Atoll platform highlights and lteHassan Ghasemi
 
Co emulation of scan-chain based designs
Co emulation of scan-chain based designsCo emulation of scan-chain based designs
Co emulation of scan-chain based designsijcsit
 
Avionics Paperdoc
Avionics PaperdocAvionics Paperdoc
Avionics PaperdocFalascoj
 
Instruction Level Parallelism (ILP) Limitations
Instruction Level Parallelism (ILP) LimitationsInstruction Level Parallelism (ILP) Limitations
Instruction Level Parallelism (ILP) LimitationsJose Pinilla
 
QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...
QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...
QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...csandit
 
Chapter 04 the processor
Chapter 04   the processorChapter 04   the processor
Chapter 04 the processorBảo Hoang
 
LTE Radio Layer 2 And Rrc Aspects
LTE Radio Layer 2 And Rrc AspectsLTE Radio Layer 2 And Rrc Aspects
LTE Radio Layer 2 And Rrc AspectsBP Tiwari
 
Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...
Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...
Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...EMERSON EDUARDO RODRIGUES
 

What's hot (19)

Research Inventy : International Journal of Engineering and Science is publis...
Research Inventy : International Journal of Engineering and Science is publis...Research Inventy : International Journal of Engineering and Science is publis...
Research Inventy : International Journal of Engineering and Science is publis...
 
A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...
A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...
A Customized Reconfiguration Controller with Remote Direct ICAP Access for Dy...
 
Rts assighment final
Rts assighment finalRts assighment final
Rts assighment final
 
Accelerating system verilog uvm based vip to improve methodology for verifica...
Accelerating system verilog uvm based vip to improve methodology for verifica...Accelerating system verilog uvm based vip to improve methodology for verifica...
Accelerating system verilog uvm based vip to improve methodology for verifica...
 
Cse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solutionCse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solution
 
Atoll platform highlights and lte
Atoll platform highlights and lteAtoll platform highlights and lte
Atoll platform highlights and lte
 
Pipelining in computer architecture
Pipelining in computer architecturePipelining in computer architecture
Pipelining in computer architecture
 
Co emulation of scan-chain based designs
Co emulation of scan-chain based designsCo emulation of scan-chain based designs
Co emulation of scan-chain based designs
 
Resume
ResumeResume
Resume
 
Chapter6 pipelining
Chapter6  pipeliningChapter6  pipelining
Chapter6 pipelining
 
Avionics Paperdoc
Avionics PaperdocAvionics Paperdoc
Avionics Paperdoc
 
Instruction Level Parallelism (ILP) Limitations
Instruction Level Parallelism (ILP) LimitationsInstruction Level Parallelism (ILP) Limitations
Instruction Level Parallelism (ILP) Limitations
 
QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...
QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...
QOS-B ASED P ERFORMANCE E VALUATION OF C HANNEL -A WARE /QOS-A WARE S CHEDULI...
 
Chapter 04 the processor
Chapter 04   the processorChapter 04   the processor
Chapter 04 the processor
 
Ramnarayan-Resume-2_page
Ramnarayan-Resume-2_pageRamnarayan-Resume-2_page
Ramnarayan-Resume-2_page
 
3 gpp lte-rlc (1)
3 gpp lte-rlc (1)3 gpp lte-rlc (1)
3 gpp lte-rlc (1)
 
Lec3 final
Lec3 finalLec3 final
Lec3 final
 
LTE Radio Layer 2 And Rrc Aspects
LTE Radio Layer 2 And Rrc AspectsLTE Radio Layer 2 And Rrc Aspects
LTE Radio Layer 2 And Rrc Aspects
 
Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...
Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...
Emerson Eduardo Rodrigues - ENGINEERING STUDIES1 Rp 160540 signalling reducti...
 

Viewers also liked

Birkosit Application Generators
Birkosit Application GeneratorsBirkosit Application Generators
Birkosit Application GeneratorsProject Sales Corp
 
Jumbo Sale 1
Jumbo Sale 1Jumbo Sale 1
Jumbo Sale 1Korifeyko
 
Certificate of analysis, march 2011, exp March 2016 Birkosit
Certificate of analysis, march 2011, exp March 2016 BirkositCertificate of analysis, march 2011, exp March 2016 Birkosit
Certificate of analysis, march 2011, exp March 2016 BirkositProject Sales Corp
 
RESUMEdsponraj
RESUMEdsponrajRESUMEdsponraj
RESUMEdsponrajjothi0606
 
Colaborativo - Wiki 11
Colaborativo  - Wiki 11Colaborativo  - Wiki 11
Colaborativo - Wiki 11CLorenaa
 
Comunicado contestaciã“n declaracions miguel abad
Comunicado contestaciã“n declaracions miguel abadComunicado contestaciã“n declaracions miguel abad
Comunicado contestaciã“n declaracions miguel abadoscargaliza
 
BIRKOSIT - Sealing Compound for NTPC Dadri
BIRKOSIT - Sealing Compound for NTPC DadriBIRKOSIT - Sealing Compound for NTPC Dadri
BIRKOSIT - Sealing Compound for NTPC DadriProject Sales Corp
 
Presentatie OVAC powerpoint
Presentatie OVAC powerpointPresentatie OVAC powerpoint
Presentatie OVAC powerpointMirjam Kers
 

Viewers also liked (12)

O
OO
O
 
Test
TestTest
Test
 
Birkosit Application Generators
Birkosit Application GeneratorsBirkosit Application Generators
Birkosit Application Generators
 
Jumbo Sale 1
Jumbo Sale 1Jumbo Sale 1
Jumbo Sale 1
 
Certificate of analysis, march 2011, exp March 2016 Birkosit
Certificate of analysis, march 2011, exp March 2016 BirkositCertificate of analysis, march 2011, exp March 2016 Birkosit
Certificate of analysis, march 2011, exp March 2016 Birkosit
 
Muscle fitness tips
Muscle fitness tipsMuscle fitness tips
Muscle fitness tips
 
RESUMEdsponraj
RESUMEdsponrajRESUMEdsponraj
RESUMEdsponraj
 
Colaborativo - Wiki 11
Colaborativo  - Wiki 11Colaborativo  - Wiki 11
Colaborativo - Wiki 11
 
Comunicado contestaciã“n declaracions miguel abad
Comunicado contestaciã“n declaracions miguel abadComunicado contestaciã“n declaracions miguel abad
Comunicado contestaciã“n declaracions miguel abad
 
BIRKOSIT - Sealing Compound for NTPC Dadri
BIRKOSIT - Sealing Compound for NTPC DadriBIRKOSIT - Sealing Compound for NTPC Dadri
BIRKOSIT - Sealing Compound for NTPC Dadri
 
Siemens Po For Birkosit
Siemens Po For BirkositSiemens Po For Birkosit
Siemens Po For Birkosit
 
Presentatie OVAC powerpoint
Presentatie OVAC powerpointPresentatie OVAC powerpoint
Presentatie OVAC powerpoint
 

Similar to BARCoMmS Ground Station Testing System

EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems ToolboxEclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems ToolboxBrett Hackleman
 
Linux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop ComputerLinux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop ComputerIOSR Journals
 
Linux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop ComputerLinux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop ComputerIOSR Journals
 
DesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellites
DesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellitesDesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellites
DesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellitesBrenden Hogan
 
vehicle traking based on GSM/GPS using 8051
vehicle traking based on GSM/GPS using 8051vehicle traking based on GSM/GPS using 8051
vehicle traking based on GSM/GPS using 8051Sagar Parmar
 
OSGi: Best Tool In Your Embedded Systems Toolbox
OSGi: Best Tool In Your Embedded Systems ToolboxOSGi: Best Tool In Your Embedded Systems Toolbox
OSGi: Best Tool In Your Embedded Systems ToolboxBrett Hackleman
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingJaime Martin Losa
 
Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301Editor IJARCET
 
Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301Editor IJARCET
 

Similar to BARCoMmS Ground Station Testing System (20)

EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems ToolboxEclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
 
Resume
ResumeResume
Resume
 
Linux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop ComputerLinux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop Computer
 
Linux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop ComputerLinux-Based Data Acquisition and Processing On Palmtop Computer
Linux-Based Data Acquisition and Processing On Palmtop Computer
 
DesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellites
DesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellitesDesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellites
DesignOfAnExtensibleTelemetry&CommandArcitectureForSmallSatellites
 
Eclipse RT Day
Eclipse RT DayEclipse RT Day
Eclipse RT Day
 
vehicle traking based on GSM/GPS using 8051
vehicle traking based on GSM/GPS using 8051vehicle traking based on GSM/GPS using 8051
vehicle traking based on GSM/GPS using 8051
 
Ig3514391443
Ig3514391443Ig3514391443
Ig3514391443
 
OSGi: Best Tool In Your Embedded Systems Toolbox
OSGi: Best Tool In Your Embedded Systems ToolboxOSGi: Best Tool In Your Embedded Systems Toolbox
OSGi: Best Tool In Your Embedded Systems Toolbox
 
LVTS Projects
LVTS ProjectsLVTS Projects
LVTS Projects
 
EE281FINALREPORT
EE281FINALREPORTEE281FINALREPORT
EE281FINALREPORT
 
Parimal Resume
Parimal ResumeParimal Resume
Parimal Resume
 
INOVA GIS Platform
INOVA GIS PlatformINOVA GIS Platform
INOVA GIS Platform
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
Cisco project ideas
Cisco   project ideasCisco   project ideas
Cisco project ideas
 
Ankit sarin
Ankit sarinAnkit sarin
Ankit sarin
 
Ameya_Kasbekar_Resume
Ameya_Kasbekar_ResumeAmeya_Kasbekar_Resume
Ameya_Kasbekar_Resume
 
Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301
 
Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301Ijarcet vol-2-issue-7-2297-2301
Ijarcet vol-2-issue-7-2297-2301
 
UDP Report
UDP ReportUDP Report
UDP Report
 

BARCoMmS Ground Station Testing System

  • 1. NASA – Internship Final Report Summer 2016 Session1 BARCoMmS: iSat Ground Station Testing System Benjamin Kingen Alissa Smith Riley Waite Marshall Space Flight Center August 12, 2016 Reviewed by NASA Mentor Scott Akridge ES-52 ____________________________________ Mentor Signature Here
  • 2. NASA – Internship Final Report Summer 2016 Session2 BARCoMmS: iSat Ground Station Testing System Benjamin Kingen1, Alissa Smith2, and Riley Waite3 A ground station test software for the iSat project will be written with the intent of replicating a mission-viable ground station with the Consultative Committee for Space Data Systems’ (CCSDS) File Delivery Protocol (CFDP) capability and a modular user interface with packet transfer visualization, a satellite command issuer, CFDP command-line integration, and satellite event history displays. Named BARCoMmS (Ben, Alissa, and Riley’s Communication Management System) after the intern group, the software will be capable of interfacing with the closed-loop iSat data pipeline during Critical Design Review (CDR), and, as such, will be integral to the simulation of satellite operations. The system will send and receive CCSDS space packets through specified UDP ports to the Programmable Telemetry Processor (PTP) with certain ports representing specific virtual channels through which telemetry and satellite commands will run. Nomenclature ACK = Acknowledgment APID = Application Process Identifier BARCoMmS = Ben, Alissa, and Riley’s Communication Management System CCSDS = The Consultative Committee for Space Data Systems CFDP = CCSDS File Delivery Protocol DITL = Day in the Life EOF = End of file Graphics Items = Qt QGraphicsItem Inheriting Object for painting (e.g. ellipse, rectangle, text) NAK = Negative Acknowledgment PDU = Protocol Data Unit I. Introduction he use of iodine propellant for Hall thrusters has been studied and proposed by multiple organizations due to the potential mission benefits over xenon. In 2013, NASA Marshall Space Flight Center competitively selected a project for the maturation of an iodine flight operational feed system through the Technology Investment Program. Multiple partnerships and collaborations have allowed the team to expand the scope to include additional mission concept development and risk reduction to support a flight systemdemonstration, the iodine Satellite (iSat). The iSat project is now progressing towards a technology demonstration mission critical design review. In order to facilitate the stimulation, simulation, and testing of the iSat’s flight software, a ground station testing framework needs to be rapidly deployable, easily modified, and portable; these were the qualities sought out by the team when creating BARCoMmS. The software is modular, capable of packet communication visualization, command issuing, CFDP communication, and event history timeline display. The software allows for speedy and simple integration of additional modules, commands, and GUI features, and lends itself nicely to the testing and development of the iSat flight software. 1 Computer Science and Applied Mathematics, NASA MSFC, South-East Missouri State University. 2 Electrical Engineering and Applied Physics, NASA MSFC, The Pennsylvania State University. 3 Aerospace and Mechanical Engineering, NASA MSFC, Rose-Hulman Institute of Technology. T
  • 3. NASA – Internship Final Report Summer 2016 Session3 II. System Overview Figure 1 BARCoMmS Process Flow Diagram A. Initialization BARCoMmS currently consists of four modules: DITL, CFDP, Bulletin, and Command. Upon initialization, the four modules (green), along with two packet listener threads (blue), are instantiated. Listener threads open and listen to their respective UDP ports (yellow). Qt Slots (white diamonds; covered later) connect to the necessary Signals. B. Modular Architecture The Qt framework allows for a highly modular system architecture. Modules exist within class objects, interfacing with any other module or application object via Qt Signals and Slots. Additional modules can be appended to the system simply by instantiating an object of them and calling appropriate initiation methods within the initialization process. C. Signals and Slots The modules connect to each other and the listener threads via signals and slots, a subscription-publication systemnative to the Qt framework that BARCoMmS was developed in. Connections are as follows: •Bulletin listens to CFDP for CFDP transaction information •Bulletin listens to Command for command information •Bulletin listens to the Telemetry Packet Listener for Health and Status PDUs and command acknowledgments •DITL listens to the Telemetry Packet Listener for Event PDUs •Telemetry Packet Listener listens on incoming FSW telemetry UDP port •Command Packet Listener listens on incoming external command UDP port •CFDP module connects to the FSW’s CFDP client through UDP port for CCSDS space packet PDU transfers •Command listens to the Telemetry Packet Listener for telemetry PDUs •Command listens to Bulletin for Health and Status received signal strength •Command sends command PDUs to FSW D. Packet Listener Threads The two packet listener threads, the Telemetry Packet Listener (TPL) and the Command Packet Listener (CPL), run concurrently with the primary BARCoMmS application. These threads respectively listen for incoming telemetry and command PDUs on specified UDP ports. The listeners then disseminate, via aforementioned Qt signal emission, these PDUs to the appropriately connected modules (e.g. event PDUs to the DITL and command ACK PDUs to the Bulletin). Packet Listener Threads will only terminate when there are no longer modules listening to their signals, thus eliminating erroneous processes when possible.
  • 4. NASA – Internship Final Report Summer 2016 Session4 Figure 2 BARCoMmS CFDP Main Window. III. Modules A. CFDP 1. Overview At its core, the CFDP module enables the reliable and unreliable (for test purposes) delivery of space packets. In addition to this, however, the module supports a variety of functions helpful during communication passes. The ability to freeze and thaw the engine, suspend or cancel transactions, and change the file chunk sizes are just a few. The module is also fully capable of fault injection testing with built-in faults provided by the link simulator. The CFDP module consists of two separate implementations: one for ground and one for flight. The ground implementation (also known as BARCoMmS CFDP) is a user-friendly GUI-wrapped version of CCSDS’s CFDP library with functionality that enables the user to quickly view the status of transactions and any engine parameters as well as issue all commands necessary for ensuring reliable file transfers. Equipped with an initialization file, the user can configure all engine settings and other parameters once to their preference such that, on load, the program will start with the user’s preferences. The engine is also capable of sending and receiving files at any time while the program is running (unless the engine is frozen). This means that once the userissues a request to download files, no further action is required to receive the files. Likewise, once the user initiates a put request, no further action is necessary. The flight implementation is an embedded solution for use on the satellite itself. Rather than having a GUI for user input, the system waits for commands issued to the satellite and then responds accordingly. For example, if the ground operator issues the “Download Camera Images” command, the on-board CFDP client is notified to “put” the n most recent camera images. Furthermore, like the ground implementation’s engine, the engine is always ready to receive incoming PDUs (unless the engine has been frozen), meaning that if the ground wanted to send a packet to the satellite (say a software update), it could do so at any time (also assuming a connection has been established).
  • 5. NASA – Internship Final Report Summer 2016 Session5 The primary purpose for using CFDP on the iSat is to reliably transfer photographs taken by the satellite’s camera from the satellite to the ground during communication passes. The photos will display the thruster’s plume and any build-up that accumulates on the thruster itself. A future implementation under consideration is to use CFDP as a means of not only image transfers, but also software update transfers . Since CFDP is simply a file delivery protocol, it is fully capable of handling any type of file. As such, the software side of things needs no changes to handle transactions that are not images. Moreover, it is important to note that CFDP is not limited to just these two examples. 2. Functionality The functionality of the engine can be broken up into five categories: requests, engine toggles, engine settings, statuses, and miscellaneous features. Requests handle the file transactions. Engine toggles handle the freezing and thawing of the engine. Engine settings handle the configuration of engine-specific parameters (e.g. for address mapping and for communication timers). Statuses handle user-informative requests. Miscellaneous features are simply “other” features that could be useful during a communication pass. Note that the statuses and miscellaneous features are only available for the ground client, since messages will be non-existent on the satellite. Requests: i. Put – Given a transfer type, receiver ID, source file, and destination file, allows a transaction to begin. ii. Suspend – Halts the transaction’s progress until it is resumed or canceled/abandoned. iii. Resume – Resumes a suspended transaction’s progress. iv. Cancel – Alerts the transaction partner that the file is to be canceled. Awaits for ACK before killing the transaction. v. Abandon – Kills the transaction without telling the partner. vi. Report – Displays the current status of a transaction. Engine Toggles: i. Freeze Engine – Halts the engine’s state such that no transactions can continue until the engine thaws. This is ideal for when a satellite has finished its communication pass and communication is no longer required. ii. Disable Engine Messages – Prevents messages pertaining to engine events from displaying. Engine Settings: i. MIB (Management Information Base) – Allows the user to control engine parameter settings. These parameters consist of the following: a. Issue EOF sent indications b. Issue EOF received indications c. Issue file segment sent indications d. Issue file segment received indications e. Issue resumed indications f. Issue suspended indications g. Issue transaction finished indications h. Save incomplete files i. ACK limit j. ACK timeout k. NAK limit l. NAK timeout m. Inactivity timeout n. Outgoing file chunk size o. Entity (node) ID ii. Message Classes – Allows the user to enable or disable classes of messages that display information pertaining to their respective events. The classes are the following: a. Indications b. Debug memory use c. Debug NAK d. Debug PDU e. PDU file data f. PDU non-file data g. PDU retransmitted file data h. State all i. State change
  • 6. NASA – Internship Final Report Summer 2016 Session6 iii. Link Simulator – A built in fault-injection tool used to set the connection’s strength (as a success rate), corrupt checksums or file sizes, and performactions such as dropping all transactions or all NAKs. A list of provided fault parameters follows below: a. Connection strength (as a success rate) b. Delay between PDUs c. Duplicate d. Reorder e. Drop all f. Drop all ACK and Fin g. Drop all Fin h. Drop all NAK i. Drop all but EOF j. Drop one ACK EOF k. Drop one ACK Fin l. Drop one EOF m. Drop one Fin Statuses iv. Detailed Status – Provides details about a specific transaction such as transaction start time, file size, and bytes transferred so far. v. Periodic Status – Displays the Trans Status information at a constant rate. vi. List – Displays a list of every current transaction. vii. Summary – Displays statistics relating to past and current transactions such as total frozen transactions, total send-fails, and total receive-fails. viii. Reset Totals – Resets the statistics displayed in Summary. Misc. ix. Robustness Test – Engine robustness test used to ensure the engine is running properly. x. Echo – A simple tool used to echo back commands to the user, similar to the “echo” function used in the Linux environment. xi. Event Log – A means of logging all the input/output fromCFDP. 3. Sample CFDP Application Consider the case where an operator would like to download the five most recent camera images from the satellite. The following steps would occur in order to receive the images: Step 1: The operator uses BARCoMmS Command to issue the “Download Camera Images” command with a parameter of five (indicating that the satellite should send the five most recent files). Step 2: The flight software receives the command and notifies CFDP Flight. Step 3: CFDP Flight begins transaction 1 by sending down the most recent image. Step 4: CFDP Flight waits for transaction 1 to complete successfully or for the transaction to be cancelled/abandoned/suspended. Step 5: If the file transfer was successful, CFDP Flight deletes the image from transaction 1 from on-board memory as a means of memory management. CFDP Flight continues on to step 6. Step 6: Repeat steps 3 through 5 until all files transfer successfully or cancel/abandon/suspend. While these steps perform, in the background BARCoMmS Camera is constantly scanning a directory for any new images. If a new image is found (e.g. an image that was transferred from CFDP Flight), then it will automatically display in the Camera module.
  • 7. NASA – Internship Final Report Summer 2016 Session7 Figure 3 Sample CFDP application for requesting camera images. 4. Output BARCoMmS CFDP takes its displayed output straight from the CFDP library’s callback routine to print statements. As such, it displays all information in a very verbose manner. This is great for debugging and simple to follow during single transactions. Once multiple files are sending, however, the information is difficult to manage. BARCoMmS CFDP handles this by sending the output to BARCoMmS Bulletin as well, where all the information is processed and put in a user-friendly format for viewing. See the Bulletin section for more information. 5. Nodes Unlike most communication frameworks that use IP addresses and ports directly to reference other communication-capable entities, CFDP uses so-called “nodes” as a means of identifying those entities. A node, however, is simply an IP/port pair. A file called mib.nodes defines these pairs. Because of this, whenever a new connection is necessary, one will need to update the mib.nodes file with a new “node” with the corresponding IP/port pair. While this is a drawback, it comes with the advantage of being capable of easily identifying CFDP entities capable of communication.
  • 8. NASA – Internship Final Report Summer 2016 Session8 B. Command 1. Overview The Command module is still a naïve implementation of what will eventually become a fully equipped satellite control and command interface. It is responsible for sending command packets to the satellite, as well as displaying relevant telemetry received from the satellite. Each command packet consists of a CCSDS Space Packet Header, which contains several fields pertinent to the application. The first is the Application Process Identifier (APID). Each type of telemetry packet (e.g. events, Guidance, Navigation, and Control data, and Health and Status data) and command packet (e.g. ping, downlink buffer, and downlink camera images) has a predefined APID that distinguishes it from other telemetry or commands. Further, every single command packet sent to the satellite has a unique ID, which distinguishes it from other packets that may have the same APID. The BARCoMmS application assigns this value sequentially just before it sends a packet. Some command packets also contain additional parameters to specify actions the satellite should take. The ground station operator assigns these values at the time of packet construction. The flight software also downlinks telemetry packets. Most relevant to the Command module are Health and Status packets, which contain various housekeeping data and are sent down once per second. Two such data are the unique ID of the last command received by the flight software along with the status of that command (i.e. whether or not the satellite will execute the command). Another is the received signal strength, a measure of the strength of the connection from the satellite's point of view. The BARCoMmS application uses these data to determine what is happening on the flight software at any given time during a communications pass. 2. User Interface The Command module has two main viewports. The Telemetry Display, outlined in green in Fig. 2, further consists of the telemetry activity light and a display for the received signal strength, a field in the Health and Status telemetry packets. When the telemetry activity light is green and the number displayed by the received signal strength display is above a certain threshold, the connection to the satellite is secure, and it is safe for the ground operator to begin sending commands to the flight software. The Command GUI, outlined in blue in Fig. 2, is a user- friendly interface that allows the ground station operator to create and send command packets at the push of a button. Figure 4 The two primary Command viewports: Command GUI (top, blue) and Telemetry Display (bottom right, green).
  • 9. NASA – Internship Final Report Summer 2016 Session9 3. Communication with Other Modules The Telemetry Display has two significant slots. When a telemetry packet passes through the specified UDP port, the Telemetry Packet Listener Thread emits a signal. The Command module has a slot which then turns the telemetry activity light green and starts a timer. After the timer expires, the telemetry activity light turns red, indicating that the ground station received no telemetry packets for the specified timer length. Additionally, when a telemetry packet passes through the specified UDP port and the Bulletin module accepts and parses it, the Bulletin module emits a signal containing the received signal strength in the form of an integer. The Command module has a second slot that displays this value next to the telemetry activity light. The Command GUI has one significant signal. When the Command module sends a command, it emits a signal containing the command’s APID and unique ID in the form of integers. The Bulletin module has a slot that accepts these values and displays themaccordingly. 4. Communication with Flight Software During the Command module’s initialization, it establishes an outgoing connection to the flight software. It initializes the connection's endpoints, the BARCoMmS application and the flight software, by specifying their respective IP addresses and the UDP port over which to communicate. It then ins tantiates a buffer of bytes that holds the serialized packets. The Command module provides two methods by which to send command packets through this connection. The first is the Command GUI, which creates and sends command packets within the application. W hen a button on the GUI is pressed,an object of that class is instantiated. This object, which acts as the command packet, contains a CCSDS Space Packet Header and any additional command parameters. If the object contains additional parameters, a dialog window opens which allows the user to choose the values of each parameter. Otherwise, the Command module assigns the header fields that are unique to each command, namely the APID and unique ID. It then serializes the packet, writes it to the byte buffer, and sends this buffer to the flight software through the connection established during instantiation. Finally, the Command module emits a signal containing the APID and unique ID in the form of integers to notify the Bulletin module that it sent a command packet. The Command module is also capable of accepting command packets generated outside of the application. When such a command packet passes through the specified UDP port, the Command Packet Listener Thread emits a signal with the packet’s byte buffer. The Command module has a slot that accepts this and operates on the packet in its serialized state. It extracts the APID and reassigns the unique ID to match the BARCoMmS sequential system. The Command module then treats the packet like any other packet originating from within the BARCoMmS application. It sends the packet to the flight software through the connection established during instantiation, and emits a signal to notify the Bulletin module that it sent a command packet.
  • 10. NASA – Internship Final Report Summer 2016 Session10 C. Bulletin 1. Overview The Bulletin module provides real-time packet transfer visualization in a user-friendly format, allowing the ground station operator to take a quick survey of the satellite’s status and make informed decisions regarding further operations during a short communications pass. Figure 5 The three primary Bulletin viewports: CFDP Display (left, blue), Command Display (right, green), and Navigation (bottom, yellow). 2. User Interface The Bulletin module consists of three main viewports. The CFDP Display, outlined in blue in Fig. 1, shows the current and previous statuses of all CFPD file transfers. It organizes information into two columns, based on whether the ground station sent or received the information. The top-level items, which each represent a single file transfer, display the CFDP transaction number, file name, and file size. It displays any further details about the transaction, such as sent or received metadata, file segments, EOF or finished indications, ACKs, and NAKs as children of the top-level item. It displays any further details, including timestamps, as children of their respective parents or as grandchildren of the top-level item. Items in the CFDP Display are color coded to make errors instantly known to the ground station operator. In general, green indicates that a transaction has completed successfully, yellow indicates that an ACK or NAK timer has expired or that the CFDP engine has issued a warning message, orange indicates that the transaction has been cancelled or that a fault has occurred, and red indicates that the transaction has been abandoned. A non -colored item simply indicates that the transaction is progressing normally. The Command Display, outlined in green in Fig. 1, shows all commands sent to the flight software and their status according to the Health and Status telemetry packets received from the flight software. The top-level items, which each represent a single command, contain the APID and name of the command. It displays any further details about the command, including the unique ID, timestamp, and status of the command, as children of the top-level item. Items in the Command Display are also color-coded. In general, green indicates that the flight software has received and acknowledged the command, yellow serves as the first warning that the flight software has not responded to the command, orange serves as the second warning that the flight software has not responded to the command, and red serves as the third and final warning that the flight software has not responded to the command. Red can also indicate that the flight software received the command, but replied with a negative acknowledgment. A non-colored item simply indicates the ground station has not yet heard a response, but that the first warning timer has not yet expired.
  • 11. NASA – Internship Final Report Summer 2016 Session11 Navigation, outlined in yellow in Fig. 1, provides several means by which to navigate through the two displays. Located underneath the main displays, five buttons allow the ground station operator to expand or collapse a single item and its children, expand or collapse all items and their children, automatically scroll to new items as they are added, automatically expand new items as they are added, or choose from eight different methods by which to sort the items in the displays. Additionally, it provides a search bar for ease of navigation. 3. Communication with Other Modules The CFDP display has one significant slot. When the CFDP engine prints a new line to the terminal, the CFDP module emits a signal containing the text in the line. The Bulletin module uses regular expressions to interpret this text and determine what it should display: a more user-friendly tree item in the CFDP display. The Command display has two significant slots. When the Command module sends a command packet to the flight software, it emits a signal containing the command’s APID and unique ID in the formof integers. The Bulletin module has a slot that accepts these integers and displays the new command. Additionally, when a telemetry packet passes through the specified UDP port, the Telemetry Packet Listener Thread emits a signal containing the serialized contents of the packet. The Bulletin module has a second slot that accepts this and extracts the APID. If the APID is equal to one, indicating a Health and Status Packet, it extracts the unique ID and status of the last command received by the flight software. The Bulletin module then displays this status as a child item of the specified command, and color-codes the item accordingly. Finally, the Command display has one significant signal. Within its second slot, which parses Health and Status packets received from the flight software, it also extracts the received signal strength, another field in the packet. It then emits a signal containing this value in the form of an integer. The Command module has a slot that accepts this value and displays it accordingly.
  • 12. NASA – Internship Final Report Summer 2016 Session12 D. Day in the Life 1. Initialization The Day in the Life (DITL) module’s primary goal is to provide a ground station technician with visual, instant information about the iSat’s event history and operations timeline. It is the only BARCoMmS module that exists independently of the others. It cares only about incoming event PDU telemetry. The DITL Log File simply records all application processes for potential review in case of a significant failure event or application crash. The logging system is naïve in that all streams to it are software defined; the log file manager does not track low-level content such as threads, memory blocks, thrown errors, etc. An additional DITL Event Log File (not pictured) keeps a record of all event PDUs that the application has received. In case of an application crash, power outage, or other critical event, the software can load this logged data to revert to its previous state. Fig. 1 covers GUI initialization only in broad strokes. The Qt Ui Child is parented to the host application (DITL), enabling the reference of its children (e.g. GUI objects) from the application class scope. The viewport layouts and geometries are software defined, but scale dynamically with GUI resizing by the user. The DITL allocates static graphics items: definite graphical elements such as highlighting graphics items. It then defines painters, brushes, and typefaces within the software, and so are not user configurable. Finally, the software allocates and paints the application resources to their respective viewports, such as the application icon, the BARCoMmS logo, and other GUI image resources. After successful GUI initialization, the application will instantiate, allocate and populate objects of its data base singleton classes. The DITL uses three database singletons: 1) Primary Event and Graphics Database (PEG) 2) Local Event Reference Database (LER) 3) Local Event Painter Reference Database (LPR) Of the three, the DITL populates the PEG, the only database that with generated data; the other two, as their names would suggest, are loaded on initialization from local files stored and upkept by ground control systems. The LER and LPR hold references to expected events and origins and what, if any, the application ought to color them as, respectively. A ground user can predefine LPR data via its configuration file, but may not change the LER. The LER should perfectly mirror the events possibly logged by the iSat, and so removal of these without also doing so on the flight software could lead to unrecognized event PDUs; adding possible events to the LER is allowable and safe, but ultimately pointless without flight software additions to compliment it. The PEG contains data pertaining to events (e.g. time, severity, source), their respective graphics items, time parameters (e.g. timestep, earliest and latest times), and the DITL Tree Navigator (covered later). This data is populated and expanded in real-time as the software receives event PDUs from the Packet Listener Thread. The class also contains the necessary methods to extract and export data to the DITL Event Log File if necessitated by an unexpected termination. After the database singleton objects have been instantiated and loaded, the application prepares its graphics viewports for event PDUs to begin populating. This consists of two simply, but important activities. Firstly, the application will populate its leftmost column of the DITL Main Viewport (DMV; covered later) with possible events from the LER database. Secondly, the application will prepare the DMV’s graphics scenes for event PDUs by superimposing an incorporeal Cartesian coordinate grid on them, with an origin in the upper leftmost corner of each scene. Figure 6 DITL Module Instantiation Process
  • 13. NASA – Internship Final Report Summer 2016 Session13 2. Event Population The DITL module contains a very simple method to add an event to its database. This method connects to the PLT’s PDU signal, and emits whenever the software receives a PDU. If the PDU is an event PDU, then the DITL will add this event to its database. The DITL has a very simply ruleset for pairing events, as follows: When the method receives an event, it checks to see if the event has a corresponding “start” event, in which case the range on that event will become concrete. Otherwise, an event must be either a point, or an unfinished (unf.) or unstarted (uns.) event, meaning that the application will assume that the event will continue on forever o r was started in a previous event PDU. Both unf. and uns. events are reduced to finite ranges if the application receives its partner event PDU. 3. User Interface The module’s interface is very simplistic, consisting of three primary viewports: the DITL Main Viewport (DMV), Tree Navigator (DTN), and Toolbar. The DMV itself contains three child viewports, each of which serve as graphics displays for the primary timeline display: namely, a Y-axis list of possible events from the LER, an X-axis timeline iterated by a user defined timestep, and their intersecting grid of event PDUs. When hovering a cursor over an event, a ground us er can see pertinent information about that PDU via a tooltip box. Additionally, the DTN nests events under user defined categories. By default, the software nests events by their severities. The DITL will center on and highlight an event of interest on the DTN when a ground station user clicks on its corresponding tree item. Figure 7 The three primary DITL viewports: Main Viewport (left, blue), Tree Navigator (right, green), and Toolbar (bottom, yellow)
  • 14. NASA – Internship Final Report Summer 2016 Session14 The DITL Toolbar only houses two buttons, but like the rest of the software is easily expandable. The “Show Legend” button does exactly that: opens a modular always-on-top dialogue that displays the event color reference legend. This portion of the software is not yet complete, and so has been loaded with a canned image file representing a probably legend. The second button, “Change Zoom,” allows the user to select their desired X-axis timestep (in minutes). Upon a zoom event, the application will repaint its scenes with the new timestep. IV. Resources and Acknowledgments Works Cited Dankanich, John W., Kurt A. Polzin, Derek Calvert, and Hani Kamhawi. "NASA Technical Reports Server (NTRS)." - The Iodine Satellite (iSAT) Hall Thruster Demonstration Mission Concept and Development. NASA, 28 July 2014. Web. 10 Aug. 2016. Appendix Source code for BARCoMmS v1.0 is available at https://github.com/Rileybrains/BARCoMmS. Any questions about the software can be directed to riley.s.waite@gmail.com. Acknowledgments The intern group would like to thank mentors Scott Akridge, Jim Cecil, and especially Jamie Moyers for their support, guidance, and patience. We thank Tina Atchley for her support as our intern coordinator, and Daniel Heater for his generosity in selecting us for these positions. We would also like to thank Alex Lay, a volunteer intern, for his hard work on, and dedication to, the project.