dashboard technical presentation
DESCRIPTION
This is a technical overview of my software design I presented to the head of the Engineering division at Kennedy Space Center.TRANSCRIPT
Design Considerations and Design Considerations and Implementation of a Implementation of a
Persistent Constellation Persistent Constellation Launch Control System Launch Control System Dashboard Data Display Dashboard Data Display
FrameworkFrameworkMatthew A. NoyesMatthew A. Noyes
Rochester Institute of Rochester Institute of TechnologyTechnology
RequirementsRequirements UTC Time DisplayUTC Time Display Countdown Time DisplayCountdown Time Display System Status IndicatorSystem Status Indicator Countdown Time Go/Hold IndicatorCountdown Time Go/Hold Indicator User InformationUser Information Embedded Shift Change LoginEmbedded Shift Change Login Dynamic System Application Menu Dynamic System Application Menu
GeneratorGenerator Must not overlay other system application Must not overlay other system application
windows.windows.
Design ConsiderationsDesign Considerations
GNOME Panel AppletGNOME Panel Applet
Potential AdvantagesPotential Advantages Reduce custom development timeReduce custom development time Screen real-estate reservation features Screen real-estate reservation features
already implementedalready implemented Glade Interface BuilderGlade Interface Builder
GNOME Panel AppletGNOME Panel Applet
Potential DisadvantagesPotential Disadvantages Bonobo deprecationBonobo deprecation No Java language bindingsNo Java language bindings High MaintenanceHigh Maintenance
.server file definition.server file definition Heavy manipulation of profile settingsHeavy manipulation of profile settings
C/GTK+ ApplicationC/GTK+ Application
Potential AdvantagesPotential Advantages Glade Interface BuilderGlade Interface Builder Java bindingsJava bindings GTK wrappers for X server callsGTK wrappers for X server calls
C/GTK+ ApplicationC/GTK+ Application
Potential DisadvantagesPotential Disadvantages Cannot maintain consistent look and Cannot maintain consistent look and
feel or communication with other LCS feel or communication with other LCS ApplicationsApplications
Too many external dependenciesToo many external dependencies LibGlade to parse the GUILibGlade to parse the GUI GTK to render the GUIGTK to render the GUI
Java/Swing ApplicationJava/Swing Application
Potential AdvantagesPotential Advantages Cross-platform developmentCross-platform development Reduced dependenciesReduced dependencies Intrinsic Java Message Bus Intrinsic Java Message Bus
communicationcommunication Consistent look/feel/integration with Consistent look/feel/integration with
other LCS Applicationsother LCS Applications
Java/Swing ApplicationJava/Swing Application
Potential DisadvantagesPotential Disadvantages GUI implemented with machine-GUI implemented with machine-
generated codegenerated code No intrinsic method to control/reserve No intrinsic method to control/reserve
screen real estatescreen real estate
Java/Swing Prototype Java/Swing Prototype ImplementationImplementation
• Image logo enhances presentation quality/acts as a visual waypoint to most important information
• User information allows for quick reference for user, and additionally acts as an identifier when a screenshot is taken
• System Time/Countdown Time
• Font and location provide visual clues of information criticality
• System/Countdown Go/No Go status indicator. Pulsating icons augment presentation quality while acting as visual information cues
• Shift Change login allows users to quickly and efficiently change shifts without complex menu interaction or exiting Desktop session
• Menu obtains a pressed/non-pressed relief and icon changes to visually reflect open/closed menu state.
• The open menu is static and is closed when any other is opened.
• Subdirectories contain other executables, and cannot be executed themselves (though they may be selected).
• The menu can also be closed with the “Close” button.
• The “Run” button executes all selected files and then closes the menu.
• Selected executables appear highlighted. More than one executable can be selected with Ctrl+Click, and several in sequence with Shift+Click.
• Double-clicking will execute all selected files but will not close the menu.
The Menu SubsystemThe Menu Subsystem
Dynamic Menu GenerationDynamic Menu Generation Menu root directories stored in XML fileMenu root directories stored in XML file
Custom SAX Parser (event driven)Custom SAX Parser (event driven)
Launchers/Shortcut buttonsLaunchers/Shortcut buttons Quick access to common/critical functionalityQuick access to common/critical functionality
Interfaces with Strut ManagerInterfaces with Strut Manager Automatically wraps menus onto additional Automatically wraps menus onto additional
strut-enabled menu barsstrut-enabled menu bars See Component Model for implementation See Component Model for implementation
detailsdetails
The Strut Manager The Strut Manager SubsystemSubsystem
Window Struts in CWindow Struts in C Low level X functionsLow level X functions
Window Struts in JavaWindow Struts in Java Java Native InterfaceJava Native Interface C Dynamic LibraryC Dynamic Library JWindowJWindow Strut manager classStrut manager class
Component Model for Component Model for implementation detailsimplementation details
Java Caller
C Dynamic Library
long
pointer
pointer
long
Setting Struts in CSetting Struts in C• Atoms
• _NET_WM_STRUT
• _NET_WM_STRUT_PARTIAL
• _NET_WM_WINDOW_TYPE
• _NET_WM_WINDOW_TYPE_DOCK
• Functions
• XOpenDisplay(display_name)
• XCreateSimpleWindow(display, parent, x, y, width, height, border_width, border, background)
• XInternAtom(display, atom_name, only_if_exists)
• XChangeProperty(display, window, property_atom, atom_type, bit_format, property_mode, data, num_elements)
• XMapWindow(display *d, window)
• XNextEvent(display, event_return)
Component ModelComponent Model
Performance Analysis: Performance Analysis: CPU UsageCPU Usage
Active Dashboard
Idle Dashboard
Performance Analysis: Performance Analysis: Memory UsageMemory Usage
Idle Dashboard
Active Dashboard
Questions?Questions?