PDS_VERSION_ID = PDS3 RECORD_TYPE = STREAM OBJECT = TEXT INTERCHANGE_FORMAT = ASCII PUBLICATION_DATE = 1998-07-11 NOTE = "MPF_LAND.INS Inspekt Script Tutorial" END_OBJECT = TEXT END MPF_LAND.INS Inspekt Script Tutorial =========================================================================== by Boris Semenov, NAIF/JPL, March 27, 1998 Introduction -------------------------------------------------------- The Inspekt SPICE utility program script ``mpf_land.ins'' eases the viewing of the contents of MPF Sequence SPICE Event Kernel (EK) files by defining multiple macro commands for the most reasonable queries that can be done on various types of event data contained in the file data tables. Sequence and dictionary EK file contents. -------------------------------------------------------- There are two different types of a binary EK files used in this script: a sequence EK file and a dictionary EK file. The sequence EK files are produced from and accumulate most of the information found in Predicted Events Files (PEF). In particular, they contain spacecraft commands, spacecraft subsystem status information, spacecraft activity information, ground events and sequence notes. Each of these types of information is a stored in separate tables of a sequence EK file. Each data entry in these tables (command, activity, ground event or note) is stored in multiple table records that can be grouped together using an ENTRY_ID field which contains the same character string for all records representing a single data entry. The command dictionary EK file contains most of the descriptive information found in a MPF Command Dictionary. The descriptions of the commands and parameters, parameter ranges, types and default values are the types of information that can be found in this EK file. A single table is used to hold an information in a dictionary file. The information for each command in the dictionary EK file is stored in multiple records, one record per command parameter plus an additional record for a general description of the command. The names of the commands and parameters and the parameter indexes stored in a sequence file and a dictionary file are consistent because the dictionary EK file was used in the sequence EK file generation process. Since the SPICE EK subsystem and the Inspekt EK program incorporate the ability to join tables from one or multiple EK files, and some columns in both the sequence and dictionary tables contain consistent values, these tables can be used together to provide dictionary descriptions for an actual sequence of commands when those are viewed with the Inspekt program. The script contains a few macro commands to facilitate this task. Starting Inspekt program -------------------------------------------------------- The Inspekt program executable is usually located under the EXE subdirectory of your SPICE system directory tree. Assuming that this subdirectory is included into your path you can just type ``inspekt'' at your UNIX prompt to bring this program up: Copyright (1995), California Institute of Technology. U.S. Government sponsorship acknowledged. Inspekt --- Version 7.13 A NAIF program for inspecting the contents of E-kernels. by Bill Taber with assistance from Hester Neilan and Nat Bachman Please note: 1) Commands may extend over multiple lines but ALL commands must end with a semi-colon. 2) To leave the program type "EXIT;". 3) To get a summary of commands type "HELP;" or "help;". Inspekt> Inspekt is now ready to accept your commands. Loading the script into Inspekt -------------------------------------------------------- Now you can load the ``mpf_land.ins'' startup script into the Inspekt program. To do that you must provide the full name of the script file to Inspekt's ``start'' command: Inspekt> start /YOUR/LOCATION/OF/THE/FILE/mpf_land.ins; Do not forget the semi-colon after the file name -- there is a rule to end each Inspekt command with a semi-colon. This gives the possibility to type a long command spreading over a few lines on the Inspekt command prompt. To execute ``start'' command is not enough; during loading of the script Inspekt will prompt you for a few additional inputs. These are the names of a leapseconds file, a command dictionary EK file and a sequence EK file (in the example below we assume that all these files are in the current directory): Inspekt> start /YOUR/LOCATION/OF/THE/FILE/mpf_land.ins; Enter value for LEAPSECONDS_FILE > leapseconds.tls; Enter value for COMMAND_DICTIONARY_EK_FILE > mpf_dictionary.dbk; Enter value for SEQUENCE_EK_FILE > mpf_sequence.bes; Loading of the script can take a little while -- be patient and wait until you will see the Inspekt prompt again: Inspekt> What does the ``mpf_land.ins'' script contain? -------------------------------------------------------- The answer to this question is very simple: the script (as any other Inspekt script) contains a set of Inspekt commands that could be typed and executed from Inspekt's command line interactively. All these commands are executed by Inspekt when the script is loaded. All commands that are ``pre-canned'' in the ``mpf_land.ins'' script can be divided into three categories. The first sets of commands, appearing first in the script, prompts for the names of and loads EK and LSK files. This dialog was shown in the previous section. The next set of commands sets up the format for screen output. It makes the output screen page 132 characters wide, so don't forget to make our terminal window wide enough to accomodate this. These commands also format report columns. They basically adjust the widths of the columns to make any report fit into the 132 characters wide screen. The last set of commands defines symbols. Symbols in Inspekt can hold any character string. Symbols can be nested i.e. the value of one symbol can contain another symbol in it. The value of a symbol is substituted for the symbol name when Inspekt parses a string specified on the command line. The symbols defined in the script serve two different purposes. Some symbols are used to abbreviate or simplify long character strings. For example, ``status_table'' could be used to hold the name of the status information table from a sequence EK file, and ``sc'' could be used to abbreviate the long macro name ``show_commands'', and so on. Other symbols are used to hold long and possibly complex query commands. If Inspekt finds any of these symbols on the command line it will not just substitute the value for it but will also execute the command defined by the symbol. So these symbols actually are new macro commands for Inspekt and we'll call them ``macros'' later in the document. Let's take a look at one of these macros. The macro ``show_commands'' is defined as define show_commands select entry_id, time, command from cmd_table where parameter_index eq 0 and command like COMMAND_NAME? order by time; where define is the Inspekt ``define'' command used to assign value to a symbols, ``show_commands'' is the symbol (or macro) name and the rest of the string is the symbol value. Note that this value is a complete ``select'' command that searches a sequence EK command table for a command that will be specified in response to an Inspekt prompt (``?'' after COMMAND_NAME will cause Inspekt to prompt for it). So when you type Inspekt> show_commands; at the Inspekt prompt it has the same effect as if you would type the corresponding ``select'' command Inspekt> select entry_id, time, command from cmd_table where parameter_index eq 0 and command like COMMAND_NAME? order by time; leading Inspekt to look for data meeting the query specification. But to make it even simpler (to avoid a lot of typing) you can also use the ``sc'' macro -- and it will have absolutely the same effect as ``show_commands'' macro or the corresponding complete select command. Now, with ``mechanics'' of the macros explained, we will look at the particular macros that will make browsing the MPF EK data an easy process. Looking for s/c and payload commands -------------------------------------------------------- Almost half of the macros specified in this script are defined to simplify browsing of the sequence command table either by itself or in combination with information from the command dictionary table. The most generic of these macros is ``show_commands'' (or ``sc''): Inspekt> show_commands; Enter value for COMMAND_NAME > '*'; Inspekt Report ENTRY_ID TIME COMMAND ============================================================== S0021J:00102 1997 JUL 05 01:04:20.000 IMP_IMAGE_AZ_EL S0021J:00104 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL ... S0021J:00265 1997 JUL 05 04:23:37.000 DEFINE_SCM_SEQ S0021J:00266 1997 JUL 05 04:23:39.000 DEFINE_SCM_SEQ S0021J:00309 1997 JUL 05 06:30:00.000 HGA_STOP_TRACK S0021J:00310 1997 JUL 05 06:30:04.000 HGA_DE_POWER S0021J:00338 1997 JUL 05 07:18:26.000 ACTIVAT_SEQUENCE This macro searches a sequence command table for all appearances of command(s) with the name specified in response to the ``Enter value for COMMAND_NAME'' prompt that are contained in this sequence and displays them in time order. The COMMAND_NAME can be a name of a particular command, like `IMP_IMAGE_AZ_EL', or a string containing a wild card `*' that represents any number of any characters. Note that the command name string entered in response to the prompt is quoted and followed by a semi-colon. Inspekt requires that, and will report an error if the quotes or semi-colon are omitted. Two other macros search a sequence command table for all commands related to a particular subsystem (``show_commands_for_subsystem'' or ``scfs'') and for all commands over a specified time interval (``show_commands_over_time'' or ``scot''). The first of them prompts for a subsystem name: Inspekt> show_commands_for_subsystem; Enter value for SUBSYSTEM > 'TELECOMMUNICATIONS'; Inspekt Report ENTRY_ID TIME COMMAND ============================================================== S0021J:00141 1997 JUL 05 03:18:11.000 ANTENNA_WTS S0021J:00142 1997 JUL 05 03:18:12.000 RANGING S0021J:00144 1997 JUL 05 03:18:13.000 TWO_WAY_NON_COH S0021J:00148 1997 JUL 05 03:18:15.000 SET_DOWNLNK_RATE S0021J:00150 1997 JUL 05 03:18:17.000 SET_SUBCARRIER S0021J:00152 1997 JUL 05 03:18:18.000 SET_CONVOLUTIONL S0021J:00156 1997 JUL 05 03:18:19.000 SET_MOD_INDEX S0021J:00159 1997 JUL 05 03:18:20.000 TRANSMIT S0021J:00260 1997 JUL 05 04:23:36.000 TRANSMIT The subsystem name can be any of ``LANDER HARDWARE'', ``ATTITUDE CONTROL'', ``DATA SYSTEM'', ``FAULT PROTECTION'', ``DOWNLINK SOFTWARE'', ``EH*A'', ``FLIGHT SOFTWARE'', ``PROPULSION'', ``IMP'', ``EDL RELATED'', ``ROVER RELATED'', ``POWER*PYRO'', ``SEQUENCE MANAGEMENT'', ``TELECOMMUNICATIONS'', ``THERMAL'', ``ASI/MET'' or ``LAUNCH COMPLEX EQUIPMENT''. A wildcard string can be used to shorten your typing. The second macro prompts for the start and stop UTC times for an interval of interest: Inspekt> show_commands_over_time; Enter value for START_TIME > '1997 JUL 05 03:00'; Enter value for END_TIME > '1997 JUL 05 03:30'; Inspekt Report ENTRY_ID TIME COMMAND ============================================================== S0021J:00140 1997 JUL 05 03:18:00.000 DEFINE_SCM_SEQ S0021J:00141 1997 JUL 05 03:18:11.000 ANTENNA_WTS S0021J:00142 1997 JUL 05 03:18:12.000 RANGING S0021J:00144 1997 JUL 05 03:18:13.000 TWO_WAY_NON_COH ... S0021J:00177 1997 JUL 05 03:27:00.000 QUEUE_ROVER_LOAD S0021J:00178 1997 JUL 05 03:28:00.000 ROVR_SEQNCE_LOAD S0021J:00194 1997 JUL 05 03:28:16.000 ACTIVAT_SEQUENCE S0021J:00200 1997 JUL 05 03:30:00.000 ACCEL_POWER UTC time strings entered in response to a prompt can be in any of the wide variety of UTC formats supported by SPICE time conversion subroutines. Any of the macros described previously in this section will display only TIME and ENTRY_ID for each found command. To see the values of the parameters of any particular command the ``show_parameter_values'' (or ``spv'') or ``show_parameter_long_values'' (or ``splv'') macros can be used. Both macros will prompt for an ENTRY_ID -- a unique string identifier used in a sequence command table to group records related to a single command together. Inspekt> show_parameter_values; Enter value for ENTRY_ID > 'S0021J:00104'; Inspekt Report TIME COMMAND PARAMETER_NAME CHR_VALUE =================================================================== 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL PROCESSOR_ID SSC 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL SEQUENCE_ID Mag_upper_ lower_ stowed$2CMD 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL CMDTYP IMPIMG 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL APID 19 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL IMGID 4442 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL EXPTYP AUTO 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL EXPCNT 4 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL FRMTYP RIGHT ... 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL MINROW 95 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL MAXROW 200 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL MINCOL 0 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL MAXCOL 255 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL CMPDTV 1 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL QTABLE 0 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL PXBWTH 1 1997 JUL 05 01:04:50.000 IMP_IMAGE_AZ_EL PXBHIT 1 Usually the ``show_parameter_long_values'' macro is not necessary. It should be used only in cases when the value of the command parameter is a very long string, for example a hex array. Then the short value displayed by the ``show_parameter_values'' macro will be ``null''; that shows that the value couldn't fit into 1032 characters. Looking at the commands and dictionary together -------------------------------------------------------- Probably no-one can recall the definitions of all commands that can appear in a spacecraft sequence. So, it can be very useful to have a command descriptions displayed together with the command mnemonics when you are looking at the sequence commands. We provide a few macros that allow the user to combine descriptions with actual sequence commands. The first of the them is the ``show_commands_with_desc'' (or ``scwd'') macro. It is very similar tothe ``show_commands'' macro, i.e. it searches a sequence command table for all appearances of command(s) with the name specified in response to the ``Enter value for COMMAND_NAME'' prompt that are contained in this sequence and displays them in time order. But it additionally displays the description of each command in the right column of the report table. Inspekt> show_commands_with_desc; Enter value for COMMAND_NAME > '*'; Inspekt Report TIME COMMAND DESCRIPTION ================================================================= ... 1997 JUL 05 03:18:11.000 ANTENNA_WTS Sets the position of the waveguide transfer switch to HGA or LGA (MGA). 1997 JUL 05 03:18:12.000 RANGING Turns the ranging channel of the downlink on or off. 1997 JUL 05 03:18:13.000 TWO_WAY_NON_COH Used to enable or inhibit two way non-coherent mode (TWNC). If enabled, the DST will operate in TWNC mode if there is an uplink, otherwise it will be in one-way mode. If inhibited the DST will operate in two way coherent mode if there is an uplink, and one-way mode if there is no uplink. 1997 JUL 05 03:18:15.000 SET_DOWNLNK_RATE Sets the downlink data rate to one of 20 rates from 5 b/s to 11060 b/s. 1997 JUL 05 03:18:17.000 SET_SUBCARRIER Sets the downlink subcarrier to 360 kHz, 22.5 kHz, or off (data is modulated directly on the carrier). ... There is also an equivalent of the ``show_parameter_values'' macro in this category -- ``show_parameters_with_desc'' (or ``spwd'') macro. It finds the values of all parameters for a particular command specified by its ENTRY_ID and displays parameter descriptions from the dictionary on the right: Inspekt> show_parameters_with_desc; Enter value for ENTRY_ID > 'S0021J:00266'; Inspekt Report COMMAND PAR_NAME CHR_VAL DESCRIPTION ================================================================= DEFINE_SCM_SEQ STATE SNOBAT State for which a sequence is being identified. DEFINE_SCM_SEQ SEQNAM CNTGNC Name portion of the sequence identification. DEFINE_SCM_SEQ SEQNUM 0201 Number portion of the sequence identification. Looking for s/c subsystems and payload status -------------------------------------------------------- There are two macros to facilitate viewing of the information in the spacecraft subsystems status table: ``show_status'' (``ss'') and ``show_status_at_time'' (``ssat''). The First of them, ``show_status'', finds all values of all status parameters for a subsystem specified in response to a prompt and displays them ordered first by subsystem, then by parameter name within each subsystem and finally by time for each particular parameter: Inspekt> show_status; Enter value for SUBSYSTEM > 'TELE*'; Inspekt Report TIME SUBSYSTEM PARAMETER_NAME CHR_VALUE =============================================================== 1997 JUL 04 20:43:15.000 TELECM CONVOLUTION DRVOFF 1997 JUL 05 03:18:18.000 TELECM CONVOLUTION 7_&_1/2 1997 JUL 04 20:43:15.000 TELECM DST_CDU OFF 1997 JUL 05 03:18:20.000 TELECM DST_CDU ON 1997 JUL 04 20:43:15.000 TELECM DST_TYPE 1WAY 1997 JUL 04 20:43:15.000 TELECM EXCITER OFF 1997 JUL 05 03:18:20.000 TELECM EXCITER ON 1997 JUL 05 04:23:36.000 TELECM EXCITER OFF 1997 JUL 04 20:43:15.000 TELECM PWR OFF 1997 JUL 05 03:18:20.000 TELECM PWR ON 1997 JUL 05 04:23:36.000 TELECM PWR OFF 1997 JUL 04 20:43:15.000 TELECM SSA OFF 1997 JUL 04 20:43:15.000 TELECM SSPA OFF 1997 JUL 05 03:18:20.000 TELECM SSPA A 1997 JUL 04 20:43:15.000 TELECM TMU OFF 1997 JUL 05 03:18:20.000 TELECM TMU ON 1997 JUL 04 20:43:15.000 TELECM XMIT_MODE NORMAL The second macro, ``show_status_at_time'', displays only values of all status parameters of a specified subsystem before a specified time: Inspekt> show_status_at_time; Enter value for SUBSYSTEM > 'SEQ'; Enter value for TIME > '1997 JUL 05 03:30'; Inspekt Report TIME SUBSYSTEM PARAMETER_NAME CHR_VALUE =============================================================== 1997 JUL 04 20:43:15.000 SEQ act_count 0 1997 JUL 05 03:28:16.000 SEQ act_count 1 1997 JUL 04 20:43:15.000 SEQ act_seq [NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL] 1997 JUL 05 03:28:16.000 SEQ act_seq [SURFCE53,NULL, NULL,NULL,NULL, NULL,NULL,NULL] 1997 JUL 04 20:43:15.000 SEQ deact_seq [NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL, NULL,NULL,NULL] Note that the last value for each parameter is the status of the parameter at the specified time. Looking for s/c activity information -------------------------------------------------------- There are three macros defined to browse the spacecraft activity table. These are: ``show_activities'' (``sa''), ``show_activities_over_time'' (``saot'') and ``show_activity_attribute_values'' (``saav''). The first two show all occurences of spacecraft activities that match an activity name (``show_activities'') -- or name and time Inspekt> show_activities; Enter value for ACTIVITY_NAME > '*'; Inspekt Report ENTRY_ID TIME ACTIVITY ============================================================== t0100:00053 1997 JUL 04 12:34:21.108 ALLOCATION t0100:00057 1997 JUL 04 12:34:21.108 ALLOCATION t0100:00117 1997 JUL 04 19:49:05.565 STATION_VIEW t0100:00119 1997 JUL 04 19:49:05.565 STATION_VIEW t0100:00121 1997 JUL 04 19:49:11.565 STATION_VIEW ... t0100:00821 1997 JUL 06 19:46:06.542 STATION_VIEW t0100:00823 1997 JUL 06 19:49:13.534 ALLOCATION t0100:00829 1997 JUL 06 20:03:32.501 STATION_VIEW t0100:00833 1997 JUL 06 20:34:13.427 ALLOCATION and Inspekt> show_activities_over_time; Enter value for ACTIVITY_NAME > 'ALLOC*'; Enter value for START_TIME > '1997 JUL 05 2:00'; Enter value for END_TIME > '1997 JUL 05 20:00'; Inspekt Report ENTRY_ID TIME ACTIVITY ============================================================== t0100:00683 1997 JUL 05 03:14:19.476 ALLOCATION t0100:00689 1997 JUL 05 03:54:19.377 ALLOCATION t0100:00720 1997 JUL 05 16:24:17.538 ALLOCATION t0100:00724 1997 JUL 05 17:24:17.393 ALLOCATION t0100:00739 1997 JUL 05 19:49:17.043 ALLOCATION t0100:00743 1997 JUL 05 19:54:17.032 ALLOCATION The third macro, ``show_activity_attribute_values'', displays all attribute values for a particular activity specified by its ENTRY_ID in activity information table Inspekt> show_activity_attribute_values; Enter value for ENTRY_ID > 't0100:00689'; Inspekt Report TIME ACTIVITY ATTR_NAME CHR_VALUE ================================================================ 1997 JUL 05 03:54:19.377 ALLOCATION PROCESSOR_ID NONE 1997 JUL 05 03:54:19.377 ALLOCATION SEQUENCE_ID ALO_6$1AL 1997 JUL 05 03:54:19.377 ALLOCATION BOT_EOT 02:29:59.628 1997 JUL 05 03:54:19.377 ALLOCATION BOA_BOT 00:29:59.926 1997 JUL 05 03:54:19.377 ALLOCATION EOT_EOA 00:14:59.963 1997 JUL 05 03:54:19.377 ALLOCATION ANT DSS-43 1997 JUL 05 03:54:19.377 ALLOCATION CONFIG H004 1997 JUL 05 03:54:19.377 ALLOCATION PASS 1997 JUL 05 03:54:19.377 ALLOCATION PROJ MPF 1997 JUL 05 03:54:19.377 ALLOCATION DESC T/P_PRIM_ SCIENCE 1997 JUL 05 03:54:19.377 ALLOCATION WORK_CODE 1A1 Looking for ground events -------------------------------------------------------- Information from the ground event data table can be viewed using the following macros: ``show_gr_events'' (``SGE''), ``show_gr_events_over_time'' (``SGEOT'') and ``show_gr_event_attribute_values'' (``SGEAV''). The ``show_gr_events'' macro finds all ground events of the type specified in response to a prompt and displays the name and essencial attributes (one or two) for each event that was found: Inspekt> show_gr_events; Enter value for GROUND_EVENT_NAME > 'VIEW'; Inspekt Report ENTRY_ID TIME GROUND_EVENT ATTR_NAME CHR_VAL =================================================================== t0100:00118 1997 JUL 04 19:49:05.565 VIEW TYPE RISE t0100:00118 1997 JUL 04 19:49:05.565 VIEW ANT 24 t0100:00120 1997 JUL 04 19:49:05.565 VIEW TYPE RISE t0100:00120 1997 JUL 04 19:49:05.565 VIEW ANT 25 t0100:00122 1997 JUL 04 19:49:11.565 VIEW TYPE RISE t0100:00122 1997 JUL 04 19:49:11.565 VIEW ANT 15 t0100:00124 1997 JUL 04 19:49:12.565 VIEW TYPE RISE t0100:00124 1997 JUL 04 19:49:12.565 VIEW ANT 14 t0100:00136 1997 JUL 04 20:08:15.520 VIEW TYPE RISE t0100:00136 1997 JUL 04 20:08:15.520 VIEW ANT 16 t0100:00668 1997 JUL 05 01:11:30.777 VIEW TYPE MAX_EL t0100:00668 1997 JUL 05 01:11:30.777 VIEW ANT 16 t0100:00669 1997 JUL 05 01:11:30.777 VIEW TYPE MAX_EL t0100:00669 1997 JUL 05 01:11:30.777 VIEW ANT 24 t0100:00670 1997 JUL 05 01:11:30.777 VIEW TYPE MAX_EL ... The ``show_gr_events_over_time'' does the same operation as the previous macro but looks only for events that occurred within a specified time interval. Inspekt> show_gr_events_over_time; Enter value for GROUND_EVENT_NAME > '*'; Enter value for START_TIME > '1997 JUL 05 2:00'; Enter value for END_TIME > '1997 JUL 05 20:00'; Inspekt Report ENTRY_ID TIME GROUND_EVENT ATTR CHR_VAL ================================================================ t0100:00682 1997 JUL 05 02:26:47.592 VIEW TYPE RISE t0100:00682 1997 JUL 05 02:26:47.592 VIEW ANT 46 t0100:00685 1997 JUL 05 03:14:19.476 ALLOC TYPE BOT t0100:00685 1997 JUL 05 03:14:19.476 ALLOC ANT DSS-45 t0100:00687 1997 JUL 05 03:44:19.402 ALLOC TYPE EOT t0100:00687 1997 JUL 05 03:44:19.402 ALLOC ANT DSS-15 t0100:00691 1997 JUL 05 03:54:19.377 ALLOC TYPE BOT t0100:00691 1997 JUL 05 03:54:19.377 ALLOC ANT DSS-43 ... t0100:00738 1997 JUL 05 19:47:39.048 VIEW TYPE RISE t0100:00738 1997 JUL 05 19:47:39.048 VIEW ANT 14 t0100:00741 1997 JUL 05 19:49:17.043 ALLOC TYPE BOT t0100:00741 1997 JUL 05 19:49:17.043 ALLOC ANT DSS-15 t0100:00745 1997 JUL 05 19:54:17.032 ALLOC TYPE BOT t0100:00745 1997 JUL 05 19:54:17.032 ALLOC ANT DSS-14 The ``show_gr_event_attribute_values'' macro is used to get all attributes of a ground event specified by its ENTRY_ID: Inspekt> show_gr_event_attribute_values; Enter value for ENTRY_ID > 't0100:00741'; Inspekt Report TIME GROUND_EVENT ATTRIBUTE_NAME CHR_VALUE ================================================================= 1997 JUL 05 19:49:17.043 ALLOC SEQUENCE_ID ALO_9$1AL_1GEV 1997 JUL 05 19:49:17.043 ALLOC TYPE BOT 1997 JUL 05 19:49:17.043 ALLOC ANT DSS-15 1997 JUL 05 19:49:17.043 ALLOC PROJ MPF 1997 JUL 05 19:49:17.043 ALLOC DESC T/P_PRIM_SCIENCE 1997 JUL 05 19:49:17.043 ALLOC PASS 1997 JUL 05 19:49:17.043 ALLOC CONFIG U001 1997 JUL 05 19:49:17.043 ALLOC WORK_CODE 1A1 1997 JUL 05 19:49:17.043 ALLOC START_TIME 1997-186T19:49: +BOT_EOT 17.044 Looking for sequence notes -------------------------------------------------------- There are two macros that help you to look at the textual notes describing a sequence. These are ``show_notes'' (``sn'') and ``show_notes_over_time'' (``snot''). The first of them, ``show_notes'', displays all notes for a sequence in time order. Inspekt> show_notes; Inspekt Report TIME CHR_VALUE ============================================================== 1997 JUL 05 03:17:59.000 WINDOW 1997 JUL 05 03:18:19.000 XMIT ON 1997 JUL 05 03:19:02.000 Configure for 2520 bps downlink 1997 JUL 05 03:27:00.000 Queue Rover Load 02000 - Drive onto floor 1997 JUL 05 03:28:00.000 [ROVER] Abort Sequence 1997 JUL 05 03:28:16.000 High Res Soil Images 1997 JUL 05 03:30:20.000 [ROVER] Move ... 1997 JUL 05 07:23:44.000 [ROVER] APXS Cycle Start 1997 JUL 05 07:23:50.000 [ROVER] APXS Sample - Start 1997 JUL 05 08:20:00.000 [ROVER] Rover Wakeup 1997 JUL 05 10:47:59.000 SEQUENCE END The second, ``show_notes_over_time'', displays only the notes for a specified time interval: Inspekt> show_notes_over_time; Enter value for START_TIME > '1997 JUL 05 05:00'; Enter value for END_TIME > '1997 JUL 05 06:15'; Inspekt Report TIME CHR_VALUE ============================================================== 1997 JUL 05 05:00:34.000 [ROVER] Ops image 1997 JUL 05 05:01:44.000 [ROVER] ALL CRITICAL TELEMETRY SENT 1997 JUL 05 05:01:52.000 [ROVER] Synch Clock 1997 JUL 05 05:02:05.000 [ROVER] APXS Cycle Start 1997 JUL 05 05:02:11.000 [ROVER] APXS Sample - Start 1997 JUL 05 05:12:46.000 [ROVER] APXS Sample - End 1997 JUL 05 05:12:58.000 [ROVER] APXS Read 1997 JUL 05 06:05:00.000 [ROVER] APXS Sample - End 1997 JUL 05 06:05:12.000 [ROVER] APXS Read 1997 JUL 05 06:06:00.000 [ROVER] Rover Shutdown List of macros by category =========================================================================== Names of the dictionary and sequence tables dictionary_table cmd_table status_table act_table gev_table note_table Macros to facilitate browsing of the command dictionary command_description CD parameters_description PD Macros to facilitate browsing of sequence commands show_commands SC show_commands_for_subsystem SCFS show_commands_over_time SCOT show_commands_with_desc SCWD show_parameter_values SPV show_parameter_long_values SPLV show_parameters_with_desc SPWD Macros to facilitate browsing of sequence status information show_status SS show_status_at_time SSAT Macros to facilitate browsing of sequence s/c activity information show_activities SA show_activity_attribute_values SAAV show_activities_over_time SAOT Macros to facilitate browsing of sequence ground events show_gr_events SGE show_gr_event_attribute_values SGEAV show_gr_events_over_time SGEOT Macros to facilitate browsing of sequence notes show_notes SN show_notes_over_time SNOT Sequence and dictionary tables structure and description =========================================================================== This chapter contains detailed description of the sequence and dictionary tables structure. Sequence data tables -------------------------------------------------------- Each sequence EK file may contain up to five data tables, one for each of the following information types: s/c commands, s/c sybsystem status parameters, s/c activities, ground events and sequence notes. These tables have the following structures: Command data table: MPF_CMD TIME TIME COMMAND CHARACTER*(*) PARAMETER_NAME CHARACTER*(*) CHR_VALUE CHARACTER*(*) DP_VALUE DOUBLE PRECISION INT_VALUE INTEGER VALUE_FLAG CHARACTER*(*) ENTRY_ID CHARACTER*(*) PARAMETER_INDEX INTEGER LONG_VALUE CHARACTER*(*)(VSA) Status information data table: MPF_STATUS TIME TIME SUBSYSTEM CHARACTER*(*) PARAMETER_NAME CHARACTER*(*) CHR_VALUE CHARACTER*(*) DP_VALUE DOUBLE PRECISION INT_VALUE INTEGER VALUE_FLAG CHARACTER*(*) ENTRY_ID CHARACTER*(*) PARAMETER_INDEX INTEGER Activity data table: MPF_ACT TIME TIME ACTIVITY CHARACTER*(*) ATTRIBUTE_NAME CHARACTER*(*) CHR_VALUE CHARACTER*(*) DP_VALUE DOUBLE PRECISION INT_VALUE INTEGER VALUE_FLAG CHARACTER*(*) ENTRY_ID CHARACTER*(*) ATTRIBUTE_INDEX INTEGER Ground events data table: MPF_GEV TIME TIME GROUND_EVENT CHARACTER*(*) ATTRIBUTE_NAME CHARACTER*(*) CHR_VALUE CHARACTER*(*) DP_VALUE DOUBLE PRECISION INT_VALUE INTEGER VALUE_FLAG CHARACTER*(*) ENTRY_ID CHARACTER*(*) ATTRIBUTE_INDEX INTEGER Notes data table: MPF_NOTES TIME TIME ATTRIBUTE_NAME CHARACTER*(*) CHR_VALUE CHARACTER*(*) ENTRY_ID CHARACTER*(*) ATTRIBUTE_INDEX INTEGER Definitions of the elements (the columns) of the sequence tables are as follows: TIME UTC time of the entry. COMMAND command name. Command names are taken from the command dictionary. ACTIVITY activity name. Activity names are taken from the activity dictionary. GROUND_EVENT ground event name. Ground event names are taken from the ground event dictionary. SUBSYSTEM subsystem name. PARAMETER_NAME parameter name. Parameter names are taken from the command dictionary for commands and from corresponding PEF record for statuses. ATTRIBUTE_NAME attribute name. Attribute names are taken from the activity and ground event dictionaries for activities and ground events, and are set to some fixed values defined by PEF specification for notes. CHR_VALUE value of the parameter or attribute as a character string (1032 characters max). DP_VALUE value of the parameter or attribute as a DP number (if character string could be parsed as a DP number) INT_VALUE value of the parameter or attribute as a INT number (if character string could be parsed as an INT number). VALUE_FLAG single character flag showing which values are present for current parameter or attribute. It can be set to 'C', 'D' or 'I' for activities, ground events and statuses and to 'C', 'D', 'I' or 'A' for commands. These values stand for: 'C' -- only character value is available. 'D' -- character and DP values are available. 'I' -- character, DP and INT values are available. 'A' -- only "long value" is available. ENTRY_ID character string which has the same value for all EK table records representing a single command, activity, ground event, subsystem status or note record from PEF file. Constructed as {PEF SEQ ID}:{CMD line number in PEF file}. If {PEF SEQ ID} string wasn't available from PEF file header, it's replaced with some random string that will be the same for all records from a single PEF file. PARAMETER_INDEX index of the parameter in a command or status record from PEF file. For commands this index is the same as the index stored in the command dictionary. ATTRIBUTE_INDEX index of the attribute in an activity, ground event or note record from PEF file. For activities and ground events this index is the same as the index stored in the corresponding dictionary. LONG_VALUE character string array containing a "80-characters" wrapped long character value that couldn't fit into CHR_VALUE. To get real parameter value from this array all array elements must be concatenated together. Each data entry of any of the types described above is represented by one or a few records in the corresponding data table in the sequence EK file. ENTRY_ID must be used as a key to group EK records representing a single data entry together. PARAMETER_INDEX or ATTRIBUTE_INDEX will give correct order of parameter or attributes. Dictionary data tables -------------------------------------------------------- The command dictionary EK file contains a single table having the following structure: Command dictionary data table: MPF_COMMANDS SUBSYSTEM CH*(32) name of the subsystem COMMAND CH*(32) name of the command PARAMETER_NAME CH*(32) name of the parameter PARAMETER_INDEX INT index of the parameter in the command sequence PARAMETER_TYPE CH*(32) parameter type PARAMETER_RANGE CH*(80)VSY parameter range DESCRIPTION CH*(80)VSY parameter, command or subsystem description Each command in the dictionary EK file is represented by a few records: one per parameter plus an additional record for the command itself ("general description record")