- Revised: Sun Sep 25 19:02:58 1994 by nyland@cs.unc.edu
An example problem is
VERSION 2, in use, 10/15/94 (validate doctrine-name dam-timestamp track-server-timestamp) VERSION 1, no longer in use. (validate doctrine-name (clip-region) (resolution) track-server-port doctrine-server-port display-server-port)where the doctrine-name is the name of a doctrine in the current data, and the 2 timestamps that follow are timestamps to ask the doctrine-server and the track-server for data at a particular time. For version 1, the doctrine-name matches a name in the doctrine dataset; the clip-region is a list of 2 positions (lat/long) on the Earth that define a bounding region; the resolution is a pair of numbers, indicating the number of sample points in the rectangular coverage-map; and the three ports indicate where to get/send the data (ports have the form "(machine-id port-number)").
An example is
For version 2 (validate carrier 120006 120001) or, for version 1 (validate carrier ((22.1 24.8) (49.5 54.0)) (64 64) (alpha.ship.navy.mil 9991) (beta.ship.navy.mil 9001) (gamma.ship.navy.mil 9500))
No specification of where we should get track-data was ever supplied. As an exercise, we developed a track-server in Proteus, and extended it to cover all of the scenarios given in the Scenario Descriptions. We provided this service for our own purposes, and also invited other ProtoTech teams to use it as well. Intermetrics used it extensively, as did the NSWC developers working on the graphical ouput system. As the project was coming to a close, Bob Balzer of ISI supplied an enhanced version, which all of us used since 9/26/94.
Currently, the format is a list of values, where each value is a pair consisting of a region and it's coverage value. More precisely,
Version 2, since 10/24/94, flattened at Balzer's request coverage-map ::= (element ...) element ::= (region value) region ::= (min_lat min_long max_lat max_long) value ::= (radar_depth doctrine_depth intersection_depth) Version 1 coverage-map ::= (column ...) column ::= (element ...) element ::= (region value) region ::= (min_lat min_long max_lat max_long) value ::= (radar_depth doctrine_depth intersection_depth)
By sending data in this form (rather than a grid of pixel values), the display function can be tailored to find the best method of converting this information into a meaningful representation. Our current display-server stub generates a portable-pix-map (ppm) file that shows areas where the doctrine is covered in shades of one color (doctrine_depth > 0 and intersection_depth > 0), where it is not covered at all in an eye-catching color (doctrine_depth > 0 and intersection_depth = 0), and the rest of the radar coverage in shades of another color (radar_depth > 0 and intersection_depth = 0).
The other specification with which we have had difficulty is in actually receiving the data. No formats were provided for incoming data supplied by NSWC until 8/29/94, and when it was announced, it was in a form that did not interface well with the prototyping systems being used. It also had the serious drawback that one process failing to read the incoming data could lock up the entire system with overfull buffers. This situation has evidently uncovered many of the problems of interfacing typical prototyping language components into a production system (especially a system with real-time deadlines). Prototyping systems do not typically allow a programmer full access to the machine (there are no high-level models for expressing some of the low-level capabilities), and prototyping systems typically run slower than production systems. We provided NSWC with an intermediate server that would consume all data from the real-time system, and provide data as needed to the prototype modules.
In addition, there are two components in this prototyping scenario that both require absolute geographical information, yet both parts must receive relative information and track information and then convert that into absolute information. There may be good reason for acquiring the track and doctrine data from separate sources, but it seems that one repository for geographical information would allow a single centralized place for the manipulation of geographical data.
7/14/94 (lsn) Added socket capabilities to Proteus interpreter (2 days) 7/15/94 Discussed several designs with Proteus group members 8/08/94 (lsn) Finished initial dist. framework w/stubs 8/09/94 (lsn) Asked questions about architecture, user-interface 8/10/94 (lsn) Built several stubs, set up my own architecture 8/12/94 (lsn) Inquired about "radar parameters" 8/17/94 (lsn) Revamped code structure s.t. servers could be restarted at will 8/18/94 (lsn) Inquired about what to do with generated coverage map 8/19/94 (lsn) Got radar parameters picture, required new geometries. 8/23/94 (lsn) Received NYU structure of system, talked with Harrison 8/23/94 (lsn) Sought/recv info on track-data service from INMET & NSWC 8/25/94 (lsn) Recv an Ada header of graphical interface package 8/25/94 (lsn) Revised architecture, in light of M. Harrison's DAM desc. 8/26/94 (lsn) Set up track-data server, for use by us and INMET 8/29/94 (lsn) Discussed the optionality of 3d info from my track-server 8/29/94 (lsn) Recv track-data spec from NSWC-- binary, periodic data 8/30/94 (lsn) Req ascii, on-demand track-data, consistent with NYU-DAM 8/30/94 (lsn) Explored track-data service problems (buffer o-flow, lock-up) 8/30/94 (lsn) Requested our two compute engines to have the same interface 8/30/94 (lsn) Discussed who should take care of providing track-data svc 8/30/94 (lsn) Started discussion of process priority, concurrent i/o 8/31/94 (lsn) NSWC track-data format and values require clarification 9/01/94 (lsn) Provided NSWC with track-data conversion program 9/12/94 (lsn) Made commands case-insensitive