Upload
meghan-obrien
View
224
Download
0
Embed Size (px)
Citation preview
SRTS RCMP Project Overview
By Jerry D. Garcia
Outline
Project Details & Description Analysis Development Delivery Conclusion
Motivation
Students training to learn flight and operation procedures at Tinker AFB for the E3 AWACS fleet of aircraft use simulation suite called SRTS
System was old, outdated, unmaintained, difficult to manage and slow
Needed update
Definitions – E3 AWACS Airborne Warning and
Control System Basically a giant,
flying mobile radar Systems used to
detect aircraft, ships and vehicles at a distance
Useful for command control and battle management
Definitions - SRTS Surveillance Radar Training Set Air Force trainer designed to provide
maintenance/operations procedures for E3 AWACS Surveillance Radar Prime Mission Equipment
Located at Tinker AFB, OK Sets consist of one…
IOS – Instructor Operator Station (1) SWDF – Simware Development Facility (1) SWS – Student Work Station (SWS) (6)
Definitions: SRTS DiagramSWS
Definitions – CAT Console Computer Aided Training Console Controls and drives the SRTS simulation
software on SWS Receives notifications over network
regarding user inputs, changes in switches and gauges, commands from Instructor Operator Station, updates simulation accordingly
Communicates and sends update commands to other components
Definitions: SRTS Diagram
CAT Console
SWS
Definitions - RCMP Radar Control Maintenance Panel Simulator for RCMC P91 console on AWACS airship Interactive, menu-driven radar display interface Utilized to acquaint students with all aspects of RCMC
operation FIT – Fault Isolation Test Procedures RCMP Menu and Selection Navigation PPI – Plan Position Indicator FFT – Fast Fourier Transform
Situated on right hand side of SWS
Definitions: SRTS Diagram Con’t
RCMP
Left/RightRCDU
Custom Keyboard
CustomTrackball
Windows 95Computer
Project Purpose Port original RCMP Windows 95 Visual C
codebase into C++11 on openSUSE Linux Rewrite for improved performance,
readability, portability, intuitiveness Maintain parity with original system
behavior and functionality Parallel effort with Tinker AFB team
translating CAT simulation driving software 1 year project
NCI & ATC Collaboration
Work for ATC (Prime) in Altus, OK Work at NCI (Sub) in San Antonio, TX
Chad SkeetersTechnical Lead
Fred ClutzProject Manager
Richard McGinleyDirector of Engineering
Skills Required C++11 Linux Cairo Graphics, GTK, XLib Libraries Some network/socket communication Agile development Mercurial versioning system Familiarity with radar systems Familiarity with Windows 95 MFC
Skills I Possessed C++11 Linux Cairo Graphics, GTK, XLib Libraries Some network/socket communication Agile development Mercurial versioning system Familiarity with radar systems Familiarity with Windows 95 MFC
Skills I Possessed Redux Bachelors of Science in Computer Science
at UTSA (3.9 GPA) Object Oriented Language Programming
(Java) PHP, CSS, HTML, XHTML, XML, W3C
compliancy Some C, C# experience Some relational database experience with
Oracle/MySQL/JDBC Wordpress CMS PROBLEM SOLVING SKILLS!
Why Did They Hire Me?
Good Problem Solving Skills Flexibility and Adaptability Quick Learner Good Communication Integrity More affordable than the next guy
Analysis Begins
Get acquainted with project details Pour through existing documentation Analyze existing files, relationships Formulate plan of attack
SWS RCMP Software What it actually does
Receives and processes Simware Directives from nearby CAT computer
Parses resource files for window generation Processes keyboard and mouse actions Based on above, updates left/right display
panels to show dialog menus and radar displays How it does it
Developed in Visual C++ 5.0 Microsoft Developer Studio
Built on Microsoft Foundation Classes (MFC) Framework
Major Coding Areas
RCMPSrvr PPIDLL APISrv
RCMPSrvr Primary entry into program (RCMPSrvrDlg.cpp) CAT computer communicates back and forth over
network with RCMP through RCMPSrvr Responsibilities
Startup and initialization Event Timing Socket Communication Processing Simware Directives Parsing Dialog Resource Files to build menus and
associating to panels Communication to keyboard LED’s Keyboard/mouse processing Communication to PPIDLL/APISrv
Basically the locus of control for all RCMP activity
RCMPSrvr Overview
PPIDLL Code area that manages both the PPI and FFT radar
displays Receives and processes commands from RCMPSrvr on
how to build the PPI and FFT displays, and their respective display objects (targets, strobes, bitmaps, movies, etc.)
Synchs with RCMPSrvr for timed update events of the displays
Communicates with APISrvr to create display primitives, and associates these to proper subwindows for proper display
PPIDLL Con’t Multiple display types
PPI Display Types PPI_A PPI_G PPI_Plots PPI_Reports PPI_REPORTS_EX
FFT Display Types Range vs. Range (RR) 1 Range Gate vs. All Doppler Filters 3 Range Gates vs. All Doppler Filters 1 Doppler Filter vs. All Range Gates 3 Doppler Filters vs. All Range Gates
PPIDLL Con’t
Uses helper classes to manage state information used for primitive objects belonging to each display type CmdChgSymbol Targets Strobes ECCM
PPIDLL Overview
APISrv Graphical server that builds a variety of
drawing primitives using MFC Device Contexts
Receives requests from RCMPSrvr and PPIDLL to build the drawing primitives
Responsible for generating, managing and deleting all primitives
Stores every drawing primitive object created, and maintains their relationships through complex hierarchy of arrays
Drawing Primitives Drawing Primitives Include…
Frame, Subwindow, Clip Rectangle Bar Plot, Bitmap, Bitmap Definition, Bitmap Movie Mark, ECCM Slider, Strobe, Filled Rectangle Line, Lubber Line PPI_A, PPI_G Circle Plot, Line Plot, Plot Definition Target, Target Definition Text
All primitives implement “Primitive” parent class As a result, every primitive stores an array of
subprimitives
APISrv Overview
Primitive Hierarchy
Ex. PPI_A Display
High Level Summary
Concerns Huge codebase
Difficult to trace logic Difficult to tell how parts worked together Time-consuming to read
Unmaintained Badly formatted Mixed logic Deprecated logic
Old language on old system Over a decade old (Windows 95) MFC Variants, Device Contexts, Timer threads, Void Pointers, AFX
Threads Complex, unintuitive design Manuals general, no documentation Redundancy Previous contractor efforts Less than one year
Solution
+ =
Lots of coffee Intravenous Drip Results!
Actual Approach High level conceptual design Prepare Development Environment Major Refactoring Effort Build development tools
High Level Conceptual Design
Development Environment Work from Gnome command line terminal
on openSUSE Linux Coded in GVIM editor with SPF-13 plugin Code changes constantly checked into
Mercurial repository on NCI MTS Server Connected development computers directly
over Ethernet cables to test on SWS
Refactoring effort Clean up original code Unpeel spaghetti
Strip out mixed functionality to relevant areas Implement manager software to concentrate
major areas of functionality Rework MFC logic
Device Context logic to Cairo code Startup, shutdown and timer functionality
Remove layers of redundancy (container classes, primitive arrays, comment histories, etc.)
Revision and simplification of networking code to use BSD Sockets (Berkley sockets)
Overhaul keyboard, LED and mouse handling Slow process of cleanup/reworking/tweaking
Tools Developed RCMP Packet Sniffer
Records all communication between CAT and RCMP
Keeps timestamp information CAT Playback Tool
Plays back recorded data to serve as dummy simulator of CAT
Options to Adjust Timing Revised by Technical Lead
Better API Simultaneous read/playback to both original
RCMP display and local testing computer
High Level Code Overview
Results of Process
Major Improvements to… Usability Readability Portability Size Performance Version control
Delivery
11th hour tweaks and preparations to head to Tinker AFB
9 hour drive up to Oklahoma
Delivery Con’t
Onsite setup, integration and testing Ongoing development of unfinished
CAT simulation driver software Bug fixes, miscellaneous Success!
Wrapup, Questions, Comments