14.07.2013 Views

System Interface (CGS ICD) - Astrium ST Service Portal

System Interface (CGS ICD) - Astrium ST Service Portal

System Interface (CGS ICD) - Astrium ST Service Portal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Space Infrasctructure<br />

Titel:<br />

Title:<br />

Dokument Nr.:<br />

Document No.:<br />

Ausgabe Nr.:<br />

Issue No.:<br />

Überarbeitung:<br />

Revision:<br />

Klassifikations Nr.:<br />

Class. Prod. Code:<br />

Ausgabedatum:<br />

Issue Date:<br />

Überarbeitungsdatum:<br />

Revision Date:<br />

Liste der zu liefernden Dokumente/Dok.–Anforderungs–Beschreibung(LLD/DAB):<br />

Document Requirements List / Doc. Requirements Description (DRL/DRD):<br />

Bearbeitet:<br />

Prepared by:<br />

Geprüft:<br />

Agreed by:<br />

Projektmanager<br />

Project Manager<br />

<strong>CGS</strong> <strong>Interface</strong> Control Document<br />

– for <strong>CGS</strong> V4.3.0 –<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4<br />

B<br />

Firma:<br />

Company:<br />

<strong>CGS</strong> Engineering astrium–si<br />

Firma:<br />

Company:<br />

P. Athmann astrium–si<br />

J.Frank, astrium–si<br />

Vertrags–Nr.:<br />

Contract–No.:<br />

8–QA<br />

17/04/98<br />

31/08/00<br />

3.704<br />

Projektmanager<br />

Project Manager<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

DOCUMENT CHANGE RECORD<br />

Issue/Rev. Issue date Pages/Section Remarks<br />

Affected<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

i von/of: xii<br />

1/– 22/03/96 all First issue of this <strong>ICD</strong> for <strong>CGS</strong> V2.2 and<br />

V3.0.<br />

2/– 24/03/97 all Update for <strong>CGS</strong> V3.1.3:<br />

Incorporation of <strong>CGS</strong> V3.1.2/V3.1.3 IRNs<br />

3/– 04/08/97 all Update for <strong>CGS</strong> V4.1:<br />

Incorporation of <strong>CGS</strong> V3.1.3 / V3.2 / V4.0<br />

/ V4.1 IRNs<br />

4/– 17/04/98 all Update for <strong>CGS</strong> V4.1:<br />

Incorporation of <strong>CGS</strong> V3.1.3 / V4.0 / V4.1<br />

IRNs<br />

4/A 31/03/99 all Update for <strong>CGS</strong> V4.2.0:<br />

Incorporation of <strong>CGS</strong> V4.1/V4.2.0 IRNs<br />

Update Applicable Documentation<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Issue/Rev. Issue date Pages/Section Remarks<br />

Affected<br />

4/B 31/08/00 Update for <strong>CGS</strong> V4.3:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

ii von/of: xii<br />

2 Update Applicable Documentation<br />

4.1 Remove Ch 4.1 (Communication <strong>Service</strong>s)<br />

(double entry)<br />

4.6.5 Update File Information for Error <strong>Service</strong>s<br />

Incorporation of following IRNs<br />

7.8.1 COL–RIBRE–IRN–<strong>CGS</strong>–8003c<br />

UCL <strong>System</strong> Library Extensions/Updates<br />

7.8.2 COL–RIBRE–IRN–<strong>CGS</strong>–8011b<br />

UCL Ground_Command_to_onboard modifications<br />

6.10.3.1 COL–RIBRE–IRN–<strong>CGS</strong>–8050<br />

Deletion of optional <br />

7.6.5 COL–RIBRE–IRN–<strong>CGS</strong>–8051<br />

750 Measurments in ADU: ADTs<br />

7.8 COL–RIBRE–IRN–<strong>CGS</strong>–8057<br />

New HK Values<br />

7.11 COL–RIBRE–IRN–<strong>CGS</strong>–8059<br />

DBS_DEFINITIONS<br />

7.13 COL–RIBRE–IRN–<strong>CGS</strong>–8060<br />

TEV_DEFINITIONS:SID/pathname list<br />

7.14 COL–RIBRE–IRN–<strong>CGS</strong>–8061<br />

ADT_PACKET_RESULT: SID/pathname list<br />

7.3.5 COL–RIBRE–IRN–<strong>CGS</strong>–8069<br />

ADT_BINARY_BUFFER:Param. length check<br />

7.17 COL–RIBRE–IRN–<strong>CGS</strong>–8075<br />

CSS merge with DMS–R prototype<br />

7.11,7.13 COL–RIBRE–IRN–<strong>CGS</strong>–8078a<br />

DBS_,TEV_DEFINIT,ADT_EVENT_RESULT<br />

7.3.4 COL–RIBRE–IRN–<strong>CGS</strong>–8064<br />

ADT_CCSDS_P.: Access to CCSDS Header<br />

7.6.5 COL–RIBRE–IRN–<strong>CGS</strong>–8065<br />

ADT_ADU_DESCR.: Access to CCSDS Header<br />

4.6, 4.8, 4.3.3 COL–RIBRE–IRN–<strong>CGS</strong>–8068a<br />

Commercial Baseline: Ada/DV/Oracle Patch<br />

7.6.5 COL–RIBRE–IRN–<strong>CGS</strong>–8070<br />

ADT_ADU: Access to CCSDS Header<br />

7.8.1 COL–RIBRE–IRN–<strong>CGS</strong>–8076<br />

UCL <strong>System</strong> Library Extensions/Updates<br />

6.1.2 COL–RIBRE–IRN–<strong>CGS</strong>–8079<br />

MPS_DEFINITIONS:new e.i. types for derived values<br />

4.7.3, 7.2 COL–RIBRE–IRN–<strong>CGS</strong>–8082<br />

ERROR_SERVICES,VICOS_DEF.: convert msg types<br />

7.6.7 COL–RIBRE–IRN–<strong>CGS</strong>–8085<br />

ADT_GDU_DESCR: TC Verification<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

iii von/of: xii<br />

new 4.7.6 COL–RIBRE–IRN–<strong>CGS</strong>–8089<br />

<strong>CGS</strong>I: Installation Registry<br />

4.3.2.2.1 COL–RIBRE–IRN–<strong>CGS</strong>–8090<br />

<strong>CGS</strong>I: SORT_AREA_SIZE in init.ora<br />

7.2 COL–RIBRE–IRN–<strong>CGS</strong>–8094<br />

VICOS_DEFINITIONS: Add new Log Groups<br />

7.7 COL–RIBRE–IRN–<strong>CGS</strong>–8096<br />

TES_API : add SUSPEND_ADU<br />

7.13, 7.14 COL–RIBRE–IRN–<strong>CGS</strong>–8099<br />

TEV_API and tev_definitions_.a for merge tool<br />

7.8.2 COL–RIBRE–IRN–<strong>CGS</strong>–8101a<br />

Length Parameter in ISSUE_SW_COMMAND<br />

7.10.1.2, 7.10.2.2 COL–RIBRE–IRN–<strong>CGS</strong>–8102<br />

Byte Alignment in SW Commands<br />

7.8 COL–RIBRE–IRN–<strong>CGS</strong>–8104<br />

HK values for limit violations<br />

7.11 COL–RIBRE–IRN–<strong>CGS</strong>–8106<br />

DBS_DEFINITIONS, DBS_RPI<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

TABLE OF CONTENTS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

iv von/of: xii<br />

CHAPTER 1 :<br />

INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.1 Identification and Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.2 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.3 Reader Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.4 Type of Described <strong>Interface</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

CHAPTER 2 :<br />

APPLICABLE AND REFERENCE DOCUMENTS . . . . . . . . . . . . . . . . . . . . . . . 4<br />

2.1 Applicable Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.2 Reference Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

CHAPTER 3 :<br />

GENERAL DESCRIPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

3.1 <strong>CGS</strong> Functional Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

CHAPTER 4 :<br />

INFRA<strong>ST</strong>RUCTURE INTERFACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

4.1 Operating <strong>System</strong> <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

4.1.1 Operating <strong>System</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

4.1.2 File <strong>System</strong> Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

4.1.2.1 Home Directories for <strong>CGS</strong> Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

4.1.2.1.1<br />

4.1.2.1.1.1<br />

4.1.2.1.1.2<br />

4.1.2.1.1.3<br />

Sun Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

GSAF Home Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

<strong>CGS</strong> Home Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

Product Home Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

14<br />

14<br />

14<br />

4.1.2.1.2 HP Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

4.1.2.2 Subdirectories for <strong>CGS</strong> Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

4.1.2.2.1 Start–Up Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

4.1.2.2.2 Executable Images (Platform dependent) . . . . . . . . . . . . . . . . . . . . . . 15<br />

4.1.2.2.3 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

4.1.2.2.4 Utilities and Tools (Platform dependent) . . . . . . . . . . . . . . . . . . . . . . .<br />

15<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

v von/of: xii<br />

4.1.2.2.5 Configuration Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

4.1.2.2.6 Runtime Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

4.1.2.2.7 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

4.1.2.3 Special Checkout related Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

4.1.2.3.1 Test Node Directory on the HP Test Nodes . . . . . . . . . . . . . . . . . . . . . 16<br />

4.1.2.3.2 Test Node Directories on the SUN Database Server . . . . . . . . . . . . . . 17<br />

4.1.2.4 Home Directories For <strong>CGS</strong> Extensions And Add–Ons . . . . . . . . . . . . . . . 17<br />

4.1.2.4.1 Special Application Software (SAS) . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

4.1.2.4.2 Command And Measurement Adaptation Software (CMAS) . . . . . . . 18<br />

4.1.2.4.3 Mission Database Support Software (MDB_SS) . . . . . . . . . . . . . . . . . 18<br />

4.1.3 Common User Environment Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

4.1.3.1 Central Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

4.1.3.1.1 Central ”login” Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

4.1.3.1.2 Central ”cshrc” Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

4.1.3.1.3 Central ”logout” Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4.2 Relational Database Management <strong>System</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.1 Functional <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.1.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2 Database Installation and Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2.1 Predefined Object Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2.1.1 User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2.1.2 Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2.1.3 Public Synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2.1.4 CRT Device Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.2.2.2 ORACLE Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.2.2.2.1 INIT.ORA Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.2.2.2.2 Rollback Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

4.2.3 Commercial Product Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

4.3 Communication <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

4.3.1 Internet Port Number Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

4.3.2 Commercial Product Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

4.4 Presentation <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

4.5 DataViews <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

4.6 <strong>CGS</strong> Top Level User <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

4.6.1 Error <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

4.6.1.1 Definition of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

4.6.1.2 Provided Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

4.6.1.3 Reporting Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

4.6.1.4 Addressing the Error Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

39<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

vi von/of: xii<br />

4.6.1.5 Displaying and Logging the Error Message . . . . . . . . . . . . . . . . . . . . . . . 39<br />

4.6.1.6 Central Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

4.6.1.7 Supplying a Timestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

4.6.1.8 Supplying Extra Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

4.6.1.9 Error Message Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

4.6.1.10 Error Message Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

4.6.1.11 Handling of Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

4.6.2 Error Report Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

4.6.3 Error <strong>Service</strong>s Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

4.6.4 Timestamp <strong>Service</strong>s Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br />

4.6.5 File Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

4.6.5.1 File Names and Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

4.6.5.1.1 Session Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

4.6.5.1.2 Process Response Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

4.6.6 Installation Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

4.7 Other Commercial Products Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

4.8 <strong>CGS</strong>_Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

4.8.1 Informal <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

4.8.2 Formal <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

CHAPTER 5 :<br />

SOFTWARE DEVELOPMENT INTERFACES . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

5.1 Documentation Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

5.1.1 Format of Imported Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.1.1.1 <strong>Interface</strong> Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.1.1.2 <strong>Interface</strong> Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.1.1.2.1 Document Location Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.1.1.2.2 Document Filename Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.1.1.2.3 Importable DOCUMENT Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

5.2 Generic Compiler <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

5.2.1 Generic C Compiler Environment Integration <strong>Interface</strong> . . . . . . . . . . . . . . . . . 63<br />

5.2.2 Generic Ada Compiler Environment Integration <strong>Interface</strong> . . . . . . . . . . . . . . . 63<br />

5.3 Generic Tool <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

CHAPTER 6 :<br />

MISSION PREPARATION INTERFACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

6.1 Package MPS_DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

66<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

vii von/of: xii<br />

6.1.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

6.1.1.1 Exceptions due to internal MDB / ORACLE errors . . . . . . . . . . . . . . . . . 66<br />

6.1.1.2 SID_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

6.1.1.3 AUTHORIZATION_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

6.1.1.4 USE_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

6.1.1.5 ENVIRONMENT_ERROR , CDU/CCU_ERROR . . . . . . . . . . . . . . . . . . 66<br />

6.1.1.6 PARAMETER_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

6.1.1.7 CONSI<strong>ST</strong>ENCY_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

6.1.2 Formal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

6.2 MDB Standard Entities and Application Programmer <strong>Interface</strong> . . . . . . . . . . 85<br />

6.3 CLS Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

6.3.1 General CLS Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

6.3.2 Runtime Representation of UCL Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

6.4 Flexible Tool Invocation <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

6.5 Foreign Key Support / PUI Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95<br />

6.6 MDB Batch Data Entry Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

6.7 I–Code Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

6.7.1 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

6.7.2 I–Code Record Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

6.7.3 I–Code Record Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

6.7.4 Architecture of the Stack Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

6.7.5 I–Code Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

6.7.5.1 Instruction Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

6.7.5.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

6.7.5.3 Detailed I–code Instructions Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

6.7.5.3.1 Instructions with implied parameter . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

6.7.5.3.2 Load Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110<br />

6.7.5.3.3 Load Address Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

6.7.5.3.4 Store Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

6.7.5.3.5 MOVE and CAT Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

6.7.5.3.6 Stack Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

6.7.5.3.7 Numerical Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

6.7.5.3.8 Comparison Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br />

6.7.5.3.9 BOOLEAN negation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

6.7.5.3.10 Allocation Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

6.7.5.3.11 Jump Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

6.7.5.3.12 Special Jump Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

6.7.5.3.13 Iterative Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

143<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

viii von/of: xii<br />

6.7.5.3.14 Switch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

6.7.5.3.15 Procedure/Function Call Instructions . . . . . . . . . . . . . . . . . . . . . . . . . 146<br />

6.7.5.3.16 Conversion Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148<br />

6.7.5.3.17 Miscellaneous Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

6.7.5.3.18 <strong>System</strong> Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

6.7.5.3.19 No–operation Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

6.7.6 Sample AP and Corresponding I–Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

6.7.7 Procedural <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

6.8 Parameter Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

6.8.1 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

6.8.2 Parameter Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

6.8.3 Encoding Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170<br />

6.8.3.1 External Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170<br />

6.8.3.2 Internal Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

6.8.4 Example (Call of a library procedure) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

6.8.5 Stack Machine Representation of AP Parameters . . . . . . . . . . . . . . . . . . . . . . 173<br />

6.9 Flight Synoptic Display Representation Format . . . . . . . . . . . . . . . . . . . . . . . . 174<br />

6.10 FWDU Supported Sammi API <strong>Interface</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

6.10.1 File Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

6.10.2 Logical Server Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176<br />

6.10.3 Commands to the On–Board <strong>System</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

6.10.3.1 Software Commanding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

6.10.3.2 Pre–Defined Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

6.10.3.3 Window Association Information (WAF) . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

6.10.4 FWDU Applied Type Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />

6.10.4.1 Mapping between On–board and <strong>CGS</strong> standard end item types . . . . . . . . 180<br />

6.10.4.2 Mapping between <strong>CGS</strong> standard end item types and Sammi data types . . 180<br />

CHAPTER 7 :<br />

CHECKOUT AND SIMULATION INTERFACES . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

7.1 Test Setup Invocation <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183<br />

7.2 VICOS Types Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

7.3 HCI Abstract Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192<br />

7.3.1 General Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192<br />

7.3.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

193<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

ix von/of: xii<br />

7.3.2.1 SET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

7.3.2.2 GET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

7.3.2.3 ALTERNATIVE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

7.3.2.4 PACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

7.3.2.5 UNPACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

7.3.2.6 PACKED_SIZE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

7.3.2.7 ADD Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

7.3.2.8 Operations on tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

7.3.2.9 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

7.3.2.10 Particular Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

7.3.2.10.1 On Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

7.3.2.10.2 On Packing/Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

7.3.3 ADT Physical Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196<br />

7.3.4 ADT CCSDS Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

7.3.5 Binary Buffer ADT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220<br />

7.4 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228<br />

7.5 TES DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

7.6 TES Abstract Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249<br />

7.6.1 General Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249<br />

7.6.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

7.6.2.1 SET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

7.6.2.1.1 GET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

7.6.2.1.2 ALTERNATIVE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.3 PACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.4 UNPACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.5 PACKED_SIZE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.6 ADD Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.7 Operations on tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.8 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

7.6.2.1.9 Particular Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />

7.6.2.1.10 On Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />

7.6.2.1.11 On Packing/Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />

7.6.3 ADT Raw Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

7.6.4 ADT Engineering Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

7.6.5 ADT ADU Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

7.6.6 ADT ADU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />

7.6.7 ADT GDU Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291<br />

7.6.8 ADT GDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

304<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

x von/of: xii<br />

7.7 TES Application Programmer <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311<br />

7.8 VICOS Housekeeping Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />

7.9 <strong>System</strong> Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338<br />

7.9.1 UCL Ground <strong>System</strong> Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338<br />

7.9.1.1 Routines Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338<br />

7.9.1.2 UCL Ground <strong>System</strong> Library Specification . . . . . . . . . . . . . . . . . . . . . . . 339<br />

7.9.1.3 <strong>Interface</strong> Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366<br />

7.9.1.3.15 General Conversion Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423<br />

7.9.2 UCL GROUND_TO_OB_LIB <strong>System</strong> Library . . . . . . . . . . . . . . . . . . . . . . . 425<br />

7.9.2.1 Routines Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425<br />

7.9.2.2 UCL GROUND_TO_OB_LIB <strong>System</strong> Library Specification . . . . . . . . . 425<br />

7.9.2.3 <strong>Interface</strong> Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

7.9.3 TCL <strong>System</strong> Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447<br />

7.9.3.1 Routines Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447<br />

7.9.3.2 TCL_LIBRARY Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448<br />

7.9.3.3 TCL ASCII Format Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

7.10 Onboard Commands and Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461<br />

7.10.1 Software Commands (SWOP_Command) . . . . . . . . . . . . . . . . . . . . . . . . . . . 461<br />

7.10.1.1 CCSDS Header for Software Commands . . . . . . . . . . . . . . . . . . . . . . . . . 461<br />

7.10.1.2 CCSDS Data Field for Software Commands . . . . . . . . . . . . . . . . . . . . . . 462<br />

7.10.1.3 Response Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

7.10.1.3.1 CCSDS Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

7.10.1.3.2 CCSDS Data Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

7.10.2 FLAP Execution Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464<br />

7.10.2.1 CCSDS Header for FLAP Execution Requests . . . . . . . . . . . . . . . . . . . . 464<br />

7.10.2.2 CCSDS Data Field for FLAP Execution Requests . . . . . . . . . . . . . . . . . . 464<br />

7.10.2.3 Response Packet for FLAP Execution Requests . . . . . . . . . . . . . . . . . . . 465<br />

7.10.2.3.1 CCSDS Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

7.10.2.3.2 CCSDS Data Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

7.11 DBS Types and Constants Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466<br />

7.12 DBS Application Programmer <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482<br />

7.13 TEV Types and Constants Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490<br />

7.14 TEV Application Programmer <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510<br />

7.15 Test Evaluation Invocation <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567<br />

7.15.1 TEV Invocation for Interactive Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567<br />

7.15.2 TEV Batch Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

567<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

xi von/of: xii<br />

7.15.3 TEV in Office Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568<br />

7.16 EXCEL Representation Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569<br />

7.17 Command and Measurement Adaptation <strong>System</strong> . . . . . . . . . . . . . . . . . . . . . . 570<br />

7.18 Data Types supported by <strong>CGS</strong> in TES_API and CMAS_IF . . . . . . . . . . . . . . 632<br />

7.18.1 <strong>CGS</strong> Data Types Supported<br />

. . . . . . . .<br />

632<br />

7.18.2 <strong>CGS</strong> Data Types: UCL to Raw Value Conversion<br />

. . . . . . . .<br />

635<br />

APPENDIX A :<br />

ACRONYMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637<br />

APPENDIX B :<br />

DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

645<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

TABLE OF FIGURES<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

xii von/of: xii<br />

Figure 1.3–1 <strong>CGS</strong> <strong>Interface</strong> Control Document Structure . . . . . . . . . . . . . . . 3<br />

Figure 4.1.2.3.2–1 Example of Mounting Test Node Directories on the DB Server. 17<br />

Figure 6.7–1 I–Code Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

Figure 6.7–2 Stack Machine Runtime Layout . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

Figure 6.8.3–1 External Parameter Encoding Scheme . . . . . . . . . . . . . . . . . . . . 170<br />

Figure 6.8.3–2 Internal Parameter Enoding Scheme . . . . . . . . . . . . . . . . . . . . . 171<br />

Figure 6.8.3–1 Encoded Parameter List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

Figure 6.8.3–1 Global Data Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

173<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 1 :<br />

INTRODUCTION<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

1 von/of: 662


Space Infrastructure<br />

1.1 Identification and Scope<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

This is the <strong>Interface</strong> Control document for the COLUMBUS Ground <strong>System</strong> software.<br />

The authorized abbreviation for this software is <strong>CGS</strong>.<br />

The approved identification and nomenclature of the document is the following :<br />

<strong>CGS</strong> <strong>Interface</strong> Control Document<br />

– for <strong>CGS</strong> V4.3.0 –<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

The scope of this document is to cover all aspects of <strong>CGS</strong> related to external interfaces.<br />

1.2 Purpose<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

2 von/of: 662<br />

The purpose of this document is to describe functionally and formally how <strong>CGS</strong> interacts with the other SW<br />

products of the Columbus Ground <strong>System</strong> (<strong>CGS</strong>) and with other external systems.<br />

It establishes in a single document an interface agreement between the Columbus <strong>System</strong> and the <strong>CGS</strong> product<br />

with respect to those interfaces identified in section 1.1.<br />

Hereby it is the objective to control the interface of the <strong>CGS</strong> product such that it provides services to all interfaced<br />

Columbus products in a manner suited to their needs.<br />

The contents of this document are applicable to the design and the development of the <strong>CGS</strong> product.<br />

1.3 Reader Guide<br />

In principle, the structure of this document follows the general <strong>ICD</strong> layout, as described in the Columbus Software<br />

Development Standards (refer to document 2.2.2.1). But the presentation of the provided and required interfaces<br />

has been modified because it simplifies the different <strong>CGS</strong> product <strong>ICD</strong>s handling. For the <strong>CGS</strong> component,<br />

the following structure has been adopted :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––1 | Introduction<br />

––2 | Applicable and Reference Documents<br />

––3 | General Description<br />

––4 | ”Product Name” Provided <strong>Interface</strong>s<br />

––4.1 | <strong>Interface</strong> A<br />

––4.2 | <strong>Interface</strong> B<br />

...<br />

––5 | ”Product Name” Required <strong>Interface</strong> of ”Product Y”<br />

––5.1 | <strong>Interface</strong> C<br />

...<br />

––6 | ”Product Name” Required <strong>Interface</strong> of ”Product Z”<br />

––6.1 | <strong>Interface</strong> D<br />

...<br />

––n | Language <strong>Interface</strong> (optional)<br />

––n+1 | Representation <strong>Interface</strong> (optional)<br />

––n+2 | Implementation <strong>Interface</strong> (optional)<br />

––n+3 | Product Link <strong>Interface</strong><br />

––Appendix A | Acronyms<br />

––Appendix B | Definitions<br />

...<br />

Figure 1.3–1 <strong>CGS</strong> <strong>Interface</strong> Control Document Structure<br />

The chapter 2 provides the applicable and reference documents mentioned in this <strong>ICD</strong>.<br />

The chapter 3 gives an overview of the role of <strong>CGS</strong> within the complete <strong>CGS</strong> component.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

3 von/of: 662<br />

The chapter 4 contains the interfaces provided by <strong>CGS</strong> to the rest of the system, as listed in the chapter 3.<br />

The chapter 5 and the following ones contain the interfaces <strong>CGS</strong> requires from the rest of the system, as listed<br />

in the chapter 3. Each component interfacing <strong>CGS</strong> is treated in a separate chapter.<br />

The chapter n describes language conventions, if there are some defined.<br />

The chapter n+1 describes data representation conventions, if there are some defined.<br />

The chapter n+2 describes protocol implementation conventions, if there are some defined.<br />

The chapter n+3 gives necessary information to set links between products.<br />

The appendix A provides the list of the acronyms used in this <strong>ICD</strong>.<br />

The appendix B lists the definitions of the key terms used in this <strong>ICD</strong>.<br />

1.4 Type of Described <strong>Interface</strong>s<br />

This document deals with application program interface, language interface and representation interface only.<br />

The reader will not find the description of the <strong>CGS</strong> user interface. This type of interface, if any, will be described<br />

in detail in the <strong>CGS</strong> Architectural Design Document and/or in the <strong>CGS</strong> User Manual .


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 2 :<br />

APPLICABLE AND<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

4 von/of: 662<br />

REFERENCE DOCUMENTS


Space Infrastructure<br />

2.1 Applicable Documents<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

5 von/of: 662<br />

The following documents, of the issue shown, are external documents called up in the current document and<br />

which are considered to form part of this document, i.e. the called up section(s) of the applicable document<br />

should be treated as if they were an integral part of the document. In case of conflict, the newer document<br />

supersedes the older one.<br />

2.1.1 Specifications<br />

2.1.1.1 COLUMBUS Ground <strong>System</strong> Infrastructure (<strong>CGS</strong>I)<br />

S/W Product Requirement Specification, SPE 1216 471 Issue 1/B 03/11/93<br />

2.1.1.2 Software Development Environment (SDE), Reduced Operational Capability (ROC)<br />

S/W Assembly Requirement Specification SPE 1081 716 003 Issue 1/B 08/09/93<br />

2.1.1.3 Software Entity Software (SWES)<br />

S/W Product Requirements Specification, SPE 1218 850 002 Issue 1/– 28/05/93<br />

2.1.1.4 Mission Database Application (MDA)<br />

S/W Product Requirement Specification, SPE 1216 401 002 Issue 2/C 05/11/93<br />

2.1.1.5 COLUMBUS Language <strong>System</strong> (CLS)<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0119 Issue 2/A 19/06/97<br />

2.1.1.6 Ground Window Definition Utility (GWDU)<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0035 Issue 4/– 04/07/97<br />

2.1.1.7 Flight Window Definition Utility (FWDU)<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0070 Issue 2/– 25/06/97<br />

2.1.1.8 Test Setup, Configuration and Validation (TSCV)<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0043 Issue 6/D 17/07/97<br />

2.1.1.9 Human Comuter <strong>Interface</strong> (HCI)<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0052<br />

2.1.1.10 Test Execution Software (TES)<br />

Issue 6/– 02/07/97<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0044<br />

2.1.1.11 Database Sevices (DBS)<br />

Issue 6/A 01/07/97<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0051<br />

2.1.1.12 Test Evaluation Software (TEV)<br />

Issue 6/A 18/02/97<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0050<br />

2.1.1.13 Network Software (NWSW)<br />

Issue 6/A 18/02/97<br />

S/W Product Requirement Specification, SPE 1216 844 001<br />

2.1.1.14 Time <strong>Service</strong>s Software (TSS)<br />

Issue 7/– 06/05/93<br />

S/W Product Requirement Specification, SPE 1235 055<br />

2.1.1.15 Core Simulation Software (CSS)<br />

Issue 1/A 19/05/93<br />

S/W Product Requirement Specification, COL–RIBRE–SPE–0126 Issue 3/– 11/06/97<br />

2.1.1.16 COLUMBUS Ground <strong>System</strong> (<strong>CGS</strong>)<br />

S/W Assembly Requirement Specification, COL–RIBRE–SPE–0032 Issue 6/C 31/03/99


Space Infrastructure<br />

2.1.2 Standards<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

6 von/of: 662<br />

2.1.2.1 User Control Language (UCL) Reference Manual<br />

COL–RIBRE–<strong>ST</strong>D–0010 Issue 4/– 13/03/98<br />

2.1.2.2 High Level Command Language (HLCL) Reference Manual<br />

COL–RIBRE–<strong>ST</strong>D–0009 Issue 2/A 13/03/98<br />

2.1.2.3 Reference Manual for Crew Procedure Language (CPL) and Software Commanding<br />

COL–RIBRE–<strong>ST</strong>D–0008 Issue 1/E 18/05/98<br />

2.1.3 Design Documents<br />

None.<br />

2.1.4 Technical Notes<br />

2.1.4.1 <strong>CGS</strong>_Library Description COL_RIBRE_TN_1113; Iss. 1F; 4.8.1997<br />

2.1.5 Manuals<br />

2.1.5.1 Life*CODE Integrator Manual TBD TBD<br />

2.1.5.2 Life*ADA Integrator Manual<br />

CSD/TRJ/USM/005<br />

Issue 1.1 July 1995<br />

2.1.5.3 Generic Tool Integration User Manual Issue 2.0 May 1995<br />

2.1.5.4 Interleaf 5, File Formats Manual Release 5.3<br />

2.1.5.5 MDA Reference Manual<br />

COL–RIBRE–MA–0031–00<br />

and<br />

DADI–MA Reference Manual<br />

Issue 4/C 31/03/00<br />

COL–RIBRE–MA–0032–00 Issue 4/– 01/09/97<br />

2.1.5.6 Sammi Application Development Kit (ADK) Version 3.0 31/03/94<br />

<strong>System</strong> Administrator’s Guide<br />

2.1.6 <strong>Interface</strong> Control Documents<br />

2.1.6.1 MDB Standard Entities and Application Programmer <strong>Interface</strong><br />

COL–RIBRE–<strong>ICD</strong>–0069 Issue 4/B 31/8/00<br />

2.1.6.2 Space Station Manned Base to Columbus Attached Pressurized Module <strong>Interface</strong> Control Document.<br />

SSP 42001 Revision K TBD


Space Infrastructure<br />

2.2 Reference Documents<br />

The documents specified in this section serve only as reference material.<br />

2.2.1 Specifications<br />

None.<br />

2.2.2 Standards<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

7 von/of: 662<br />

2.2.2.1 Columbus Software Development Standards,<br />

<strong>ST</strong>D 1213 800 000 Issue 5/–, 22/11/91.<br />

2.2.3 Design Documents<br />

None.<br />

2.2.4 Technical Notes<br />

None.<br />

2.2.5 Manuals<br />

None.<br />

2.2.6 Other Documents<br />

None.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 3 :<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

8 von/of: 662<br />

GENERAL DESCRIPTION


Space Infrastructure<br />

3.1 <strong>CGS</strong> Functional Overview<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

9 von/of: 662<br />

<strong>CGS</strong> is the ’backbone’ assembly providing core or essential services and actually making up most of its functionality<br />

of the various ground based Facilities within the different Space Programmes (e.g. GSRF, DMS–R, COF,<br />

MPLM, NASA). <strong>CGS</strong> exists in several configurations each targeted at some specific operational environment<br />

or user task. Major Facilities currently identified are:<br />

* Software Design and Development Facility (SDDF). Used for design and development (coding,<br />

unit test, product–level integration & partial qualification) of flight SW and data.<br />

* Electrical Ground Support Equipment (EGSE). This facility is used for system–level integration,<br />

verification and qualification of Flight HW and SW.<br />

* Software, Integration and Test Equipment (SITE). Used for system–level integration, verification<br />

and qualification of Flight SW.<br />

A Facility is made up from <strong>CGS</strong> software configurations, standard hardware and additional hardware/software<br />

Add Ons, e.g. Software Design and Development support services, Ground Test equipment etc. <strong>CGS</strong> is a generic<br />

reference concept, encompassing specific <strong>CGS</strong> ’Add On’ software and <strong>CGS</strong> will be extended to establish the<br />

Facilities. Each Facility will be different although each follow a logical model.<br />

<strong>CGS</strong> provides software services as required for the Facilities. These services are needed for the design, development<br />

and integration, test and qualification related activities for the Flight Configuration.<br />

The overall functionality of <strong>CGS</strong> will support the following functions:<br />

Design and Development Support for Ground and Flight <strong>System</strong>s including:<br />

Columbus Ground <strong>System</strong> Infrastructure (<strong>CGS</strong>I) provides the basic service layer to all<br />

<strong>CGS</strong> S/W Applications, supporting Servers (SUN–4), Test Nodes (HP 9000 – 700/800<br />

Series) and graphical Workstations (SUN–4) under the UNIX Operating <strong>System</strong>.<br />

Software Development Environment (SDE) provides standard S/W Life Cycle support:<br />

<strong>CGS</strong> provides interfaces to commercial SDEs, related to S/W Coding / Testing<br />

Support including Compiler <strong>System</strong>s and additional S/W Development Tools. Via<br />

the MDB and the SWES component, the bridge to S/W Configuration Management<br />

is closed, based on contractual Configuration Items and entities stored together<br />

with data items in the MDB, .<br />

The Software Entity Software (SWES) provides support for Ada Precompilation of<br />

SW and Transfer of Onboard SW into the Mission Database (MDB).<br />

The Mission Database Application (MDA) constitutes the set of utilities which support<br />

or enable various activities typically performed during the preparation phase of a checkout<br />

/ simulation test or mission and provides data entry and reporting, configuration management<br />

and support to off-line generation of onboard database/flight image. MDA is<br />

centered around the Mission Database which serves as a central repository for all test /<br />

mission–related information.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

10 von/of: 662<br />

The Columbus Language <strong>System</strong> (CLS) comprises several language related software<br />

components for UCL, HLCL and CPL:<br />

The CLS Editor is the XView based user front–end for editing UCL, HLCL or CPL<br />

command sequences and for the specification of SW Commands within the interactive<br />

database environment of MDA,<br />

The UCL Compiler translates automated procedures (APs) and libraries written<br />

in the User Control Language (UCL) into an intermediate code (I–Code),<br />

The HLCL Interpreter constitutes the interactive commanding interface of different<br />

applications running on various workstations in the ground system. It interprets<br />

and executes interactive commands and automated command sequences<br />

written in the High Level Command Language (HLCL),<br />

The HLCL Command Window is an XView based interactive window interface<br />

to the HLCL Interpreter.<br />

The Ground Window Definition Utility (GWDU) provides functionality to generate<br />

checkout and simulation orientated ground synoptic displays. These layouts contain animated<br />

functional drawings which will be used to display e.g. checkout, simulation, subsystem<br />

and payload status information and to read in dedicated commands from the<br />

human user. This product will be based on the Ground Symbol and Display Standard.<br />

The Flight Window Definition Utility (FWDU) provides functionality to generate flight<br />

synoptic displays. These layouts contain animated functional drawings which will be<br />

used to display subsystem and payload status information and to read in dedicated commands<br />

from the human user. This product will be based on the Flight Symbol and Display<br />

Standard.


Space Infrastructure<br />

Integration, Test and Qualification Support for Flight <strong>System</strong>s:<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

11 von/of: 662<br />

The Test Setup, Configuration and Verification Software (TSCV) configures a required<br />

system configuration for a Checkout Test / Simulation. It enables the test nodes to be activated<br />

for a given test. TSCV implements the generation of a test session in the master<br />

archive. TSCV further supports the user to identify and control the currently used S/W<br />

Configuration.<br />

The Human Computer <strong>Interface</strong> (HCI) provides all services related to user input / output<br />

on workstations during execution of a Checkout Test / Simulation Session. It provides<br />

different interfaces to the window system and the HCI devices (keyboard,mouse,screen)<br />

and includes services for synoptic display update, user help and user guidance through<br />

test operations. It provides the commanding interface and the message output during online<br />

test execution.<br />

The Test Execution Software (TES) implements the support for test operations and automatic<br />

testing / monitoring of the Unit under Test (UUT). It is driven by the test definitions<br />

done by MDA and the configuration setup by TSCV. It provides a generic data and control<br />

interface to the UUT and all services required for realtime enditem data processing.<br />

Data Base <strong>Service</strong>s (DBS) provides low level management and access to checkout test<br />

related result data items stored in the Test Results Database or files.<br />

Test Evaluation Software (TEV) provides all services to evaluate a.m. data generated and<br />

stored during checkout test execution. It provides services for data selection and data<br />

presentation. It further implements the final archiving of test results as well as the selective<br />

exporting / importing of parts of the Test Result Database.<br />

Network Software (NWSW) provides low level message based interprocess communication<br />

as well as file transfer and directory services in a non NFS environment.<br />

Timing <strong>Service</strong>s Software (TSS) provides the synchronization of local computer clocks<br />

in a distributed environment with respect to the actual (local) time. In addition, TSS also<br />

provide low level SMT distribution, access and handling.<br />

The Core Simulation Software (CSS) provides support for Simulation Model Development,<br />

Simulation Preparation and Execution / Control of Models.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 4 :<br />

INFRA<strong>ST</strong>RUCTURE<br />

INTERFACES<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

12 von/of: xii<br />

astrium – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

4.1 Operating <strong>System</strong> <strong>Service</strong>s<br />

4.1.1 Operating <strong>System</strong><br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

13 von/of: 662<br />

<strong>CGS</strong>I provides the Operating <strong>System</strong> for SUN and HP. FORCE as a third platform is used for the execution of<br />

simulation models only.<br />

Sun Platform<br />

The <strong>System</strong> V option is installed and enabled.<br />

Network Information <strong>Service</strong>s (NIS) are installed and running.<br />

Newsprint software for Postscript printers.<br />

UUCP is installed and configured.<br />

HP Platform<br />

Network Information <strong>Service</strong>s (NIS) are installed and running.<br />

FORCE Platform<br />

Network Information <strong>Service</strong>s (NIS) are installed and running.<br />

Formal <strong>Interface</strong> Description<br />

<strong>CGS</strong>I Product Platform Commercial Product Version<br />

OS <strong>Service</strong>s SUN SOLARIS 2.6<br />

incl. Sun recommended patches (Generic_105181–03)<br />

HP 9000/700 HP–UX 10.20 A<br />

+ Y2K Patch Bundle


Space Infrastructure<br />

4.1.2 File <strong>System</strong> Structure<br />

4.1.2.1 Home Directories for <strong>CGS</strong> Products<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

14 von/of: 662<br />

<strong>CGS</strong>I provides to each <strong>CGS</strong> product a single home directory as defined in the following subsections.<br />

4.1.2.1.1 Sun Platform<br />

4.1.2.1.1.1 GSAF Home Directory<br />

For <strong>CGS</strong> and its extensions and add–ons in the frame of GSAF, a global home directory, addressed by<br />

means of the environment variable<br />

$GSAF_HOME<br />

exists. This directory is created during <strong>CGS</strong> installation. By default, the pathname<br />

/usr/gsaf<br />

will be used, but this is not mandatory and can be changed during installation.<br />

The directory $GSAF_HOME and associated subdirectories and files will be owned by the user, who<br />

is doing the installation of <strong>CGS</strong> (and its products).<br />

4.1.2.1.1.2 <strong>CGS</strong> Home Directory<br />

The following home directory is assigned to <strong>CGS</strong> as a common pool for SW and data:<br />

$GSAF_HOME/cgs<br />

The home directory is addressed by means of the environment variable <strong>CGS</strong>_HOME. This directory<br />

will be used to store common SW and data as well as general scripts for installation / administration<br />

etc. used by more than one <strong>CGS</strong> Product.<br />

4.1.2.1.1.3 Product Home Directories<br />

The following home directories are assigned to the lower level <strong>CGS</strong> Products:<br />

$GSAF_HOME/<br />

where is one of the following:<br />

cgsi, sde, mps, mda, gwdu, fwdu, cls, vicos, tscv, hci, tes, dbs, tev, nwsw, tss, css.<br />

The home directory is addressed by means of the environment variable _HOME<br />

where is one following:<br />

<strong>CGS</strong>I, SDE, MDA, GWDU, FWDU, CLS, TSCV, HCI, TES, DBS, TEV, NWSW, TSS,<br />

CSS.<br />

Note: The installation of the <strong>CGS</strong> Product SWES will be done under the directory structure of SDE.<br />

Within <strong>CGS</strong> scripts, SW etc, the explicit usage of ~username as reference scheme has to be avoided<br />

in any case. All references in scripts, SW etc. shall be based on the environment variables as defined<br />

above.<br />

It is recommended that non–<strong>CGS</strong> Products (e.g. FES, CMAS etc.) will be installed parallel to the <strong>CGS</strong><br />

Products directly under $GSAF_HOME with the same substructure as defined in section 4.1.2.2.<br />

4.1.2.1.2 HP Platform<br />

On each HP platform the GSAF top level directory (as described in section NO TAG) must be visible<br />

and mounted into the same pathname as for the SUN platform.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

15 von/of: 662<br />

The ”..._HOME” variables address the specified directories in the same way as specified for SUN platform.<br />

4.1.2.2 Subdirectories for <strong>CGS</strong> Products<br />

Each product has its subdirectories relative to its home directory for the location of executable images,<br />

data, utilities etc. as defined in sections 4.1.2.2.1 to 4.1.2.2.7 etc. <strong>CGS</strong>I will create these subdirectories.<br />

Any extension in order to add another subdirectory in parallel to this level require explicit authorization<br />

by <strong>CGS</strong> Engineering.<br />

Note: For SDE and SWES, the directory structure already established under $SDE_HOME will be kept<br />

without any changes!<br />

4.1.2.2.1 Start–Up Scripts<br />

The following directory is provided for Product related start–up scripts:<br />

$_HOME/bin/common<br />

where is one of the products specified in section 4.1.2.1.1.3. Product start–up scripts<br />

will setup the necessary environment for the execution of product SW and then subsequentially call<br />

the target dependant executable image(s) as defined in section 4.1.2.2.<br />

Note: For the external invocation of <strong>CGS</strong> Product SW always the start–up script under<br />

$_HOME/bin/common<br />

shall be called and not directly the target dependant executable image !<br />

4.1.2.2.2 Executable Images (Platform dependent)<br />

The following directory is provided for Product related executable images:<br />

$_HOME/bin/<br />

where is one of the products specified in section 4.1.2.1.1.3 and is one of the<br />

following: sun5, hp_ux8.<br />

4.1.2.2.3 Environment<br />

The following directory is provided for Product related environment setup (e.g. specific login, logout,<br />

cshrc):<br />

$_HOME/user_env<br />

where is one of the products specified in section 4.1.2.1.1.3.<br />

4.1.2.2.4 Utilities and Tools (Platform dependent)<br />

The following directory is provided for executables / scripts etc of Product related utilities and tools<br />

(e.g. installation / deinstallation of users, product SW etc.):<br />

$_HOME/util/<br />

where is one of the products specified in section 4.1.2.1.1.3 and is one of the<br />

following: sun5, hp_ux8.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

For the installation of users the following file name syntax shall be used:<br />

install_user<br />

Configuration data files as inputs to these scripts shall be placed under<br />

$_HOME/config.<br />

4.1.2.2.5 Configuration Data<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

16 von/of: 662<br />

The following directory is provided for static configuration data of a Product (e.g. license files, product<br />

version identification files etc, usually defined by the Product Administrator):<br />

$_HOME/config<br />

where is one of the products specified in section 4.1.2.1.1.3 .<br />

4.1.2.2.6 Runtime Data<br />

The following directory is provided for Product SW generated data files at runtime:<br />

$_HOME/data<br />

where is one of the products specified in section 4.1.2.1.1.3 .<br />

4.1.2.2.7 Libraries<br />

The following directory is provided for Product specific library code including Application Programmers<br />

<strong>Interface</strong>s (e.g. Ada, C, SQL etc):<br />

$_HOME/lib/<br />

where is one of the products specified in section 4.1.2.1.1.3 and is one of the<br />

following: sun5, hp_ux8<br />

Whenever library code including Application Programmers <strong>Interface</strong>s is crossing Product boundaries<br />

(i.e. <strong>CGS</strong> wide libraries), the location shall be:<br />

$<strong>CGS</strong>_HOME/lib/<br />

instead, where is one of the following: sun5, hp_ux8.<br />

4.1.2.3 Special Checkout related Directories<br />

4.1.2.3.1 Test Node Directory on the HP Test Nodes<br />

Additionally, for each test node (HP platform) one directory in the local filesystem on the HP machine<br />

will be created during <strong>CGS</strong> installation.<br />

By default, the pathname<br />

/test_node/‘hostname‘<br />

will be used, but this is not mandatory and can be changed during installation.<br />

This directory has to be created with the same ownerships as the directory tree under $GSAF_HOME<br />

on the SUN platform.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

17 von/of: 662<br />

This directory will be referenced by the environment variable:<br />

$TN_HOME<br />

on each host (HP and SUN).<br />

Also below this directory, two directories ”archive” and ”replay” have to be created, also owned by<br />

the same user as for $TN_HOME. These directories will be used by the <strong>CGS</strong> products to store archive<br />

files produced during a normal session (directory ”archive”) or used for replay purposes (directory ”replay”).<br />

4.1.2.3.2 Test Node Directories on the SUN Database Server<br />

Additionally for each installed HP test node, a directory in the local filesystem of the SUN Database<br />

Server will be created during <strong>CGS</strong> installation.<br />

The pathname for these directories needs to be exactly the same as for the test nodes (see section<br />

4.1.2.3.1).<br />

These directories have to be created with the same ownerships as the directory tree under<br />

$GSAF_HOME on the SUN platform.<br />

For all a.m. directories, the corresponding directories of the test nodes need to be mounted (see also<br />

Figure 4.1.2.3.2–1 below).<br />

/usr/test_node/hostn<br />

/usr/test_node/host2<br />

/usr/test_node/host1<br />

DB Server<br />

(SUN)<br />

UNIX Mounts<br />

/usr/test_node/host1 /usr/test_node/host2 /usr/test_node/hostn<br />

archive archive archive<br />

replay replay replay<br />

Test Node 01<br />

(HP)<br />

Test Node 02<br />

(HP)<br />

Test Node xy<br />

(HP)<br />

Figure 4.1.2.3.2–1 Example of Mounting Test Node Directories on the Database Server.<br />

4.1.2.4 Home Directories For <strong>CGS</strong> Extensions And Add–Ons<br />

4.1.2.4.1 Special Application Software (SAS)<br />

The <strong>CGS</strong> product TES is able to start special application Software (SAS).<br />

For all SAS related data (executables, data, config files, results, etc.), <strong>CGS</strong> provides a global directory<br />

$GSAF_HOME/sas<br />

This directory will be owned by the owner of $GSAF_HOME.<br />

<strong>CGS</strong> Software expects that SAS executables be stored in a directory


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

18 von/of: 662<br />

$GSAF_HOME/sas/bin<br />

such that they can be started from here. Therefore, the executables must either by physically present<br />

in this directory or visible here through UNIX softlinks into other parts of the filesystem, possibly<br />

owned by the user.<br />

It is important that all SASes are executable for <strong>CGS</strong>, i.e. the corresponding permissions have to be<br />

set appropriately.<br />

<strong>CGS</strong> does not use any other directory structure below $GSAF_HOME/sas, however, it is recommended<br />

that SASes follow the breakdown given in para. 4.1.2.2.<br />

4.1.2.4.2 Command And Measurement Adaptation Software (CMAS)<br />

The <strong>CGS</strong> product CSS communicates with Command And Measurement Adaptation Software<br />

(CMAS) to facilitate hardware in the loop testing.<br />

For all CMAS related data (executables, data, config files, results, etc.), <strong>CGS</strong> provides a global directory<br />

$GSAF_HOME/cmas<br />

This directory will be owned by the owner of $GSAF_HOME.<br />

<strong>CGS</strong> Software expects that CMAS executables be stored in a directory<br />

$GSAF_HOME/cmas/bin<br />

such that they can be started from here. Therefore, the executable(s) must either by physically present<br />

in this directory or visible here through UNIX softlinks into other parts of the filesystem, possibly<br />

owned by the user.<br />

It is important that all CMASes are executable for <strong>CGS</strong>, i.e. the corresponding permissions have to be<br />

set appropriately.<br />

<strong>CGS</strong> does not use any other directory structure below $GSAF_HOME/cmas, however, it is recommended<br />

that CMASes follow the breakdown given in para. 4.1.2.2.<br />

4.1.2.4.3 Mission Database Support Software (MDB_SS)<br />

The <strong>CGS</strong> product MDA provides the capability for Mission Database Support Software to facilitate<br />

mission specific database operations.<br />

For all MDB_SS related data (executables, data, config files, results, etc.), <strong>CGS</strong> provides a global directory<br />

$GSAF_HOME/mdb_ss<br />

This directory will be owned by the owner of $GSAF_HOME.<br />

<strong>CGS</strong> Software expects that MDB_SS executables be stored in a directory<br />

$GSAF_HOME/mdb_ss/bin<br />

such that they can be started from here. Therefore, the executable(s) must either by physically present<br />

in this directory or visible here through UNIX softlinks into other parts of the filesystem, possibly<br />

owned by the user.<br />

It is important that all MDB_SSes are executable for <strong>CGS</strong>, i.e. the corresponding permissions have to<br />

be set appropriately.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

19 von/of: 662<br />

<strong>CGS</strong> does not use any other directory structure below $GSAF_HOME/mdb_ss, however, it is recommended<br />

that MDB_SSes follow the breakdown given in para. 4.1.2.2.


Space Infrastructure<br />

4.1.3 Common User Environment Files<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

20 von/of: 662<br />

This section lists the script files which are used to set the environment of all <strong>CGS</strong> users.<br />

The user environment files described in these sections are C–shell script files.<br />

Through the use of the login and cshrc files <strong>CGS</strong>I initialises the <strong>CGS</strong> user environment for a <strong>CGS</strong> user on login.<br />

The cshrc file is also executed for each subsequent shell that is invoked. <strong>CGS</strong>I uses the logout script files to tidy<br />

up a user session on logout.<br />

After establishing a common environment for all <strong>CGS</strong> users these script files provide the facility for a product<br />

to provide further, product specific, tailoring of the user environment by executing the product supplied scripts.<br />

Finally the script files provide the facility for an individual <strong>CGS</strong> User to carry out his or her own individual environment<br />

tailoring through the use of user supplied script files.<br />

Formal <strong>Interface</strong> Description<br />

The <strong>CGS</strong>I provided central scripts for the supported target platforms, as defined in section 4.1.3.1, are implemented<br />

as target–independant shell scripts. Central scripts are provided for login, cshrc and logout.


Space Infrastructure<br />

4.1.3.1 Central Scripts<br />

4.1.3.1.1 Central ”login” Script<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

21 von/of: 662<br />

#####################################################################<br />

#<br />

# Product: <strong>CGS</strong>I CI–Number: 1216471<br />

#<br />

# Function: Central <strong>CGS</strong>I login file. Will be called by the users’ local .login script.<br />

#<br />

#####################################################################<br />

unsetenv <strong>CGS</strong>_ERROR<br />

set DISPLAY_MOTD = $<strong>CGS</strong>I_HOME/bin/common/display_motd<br />

umask 022<br />

switch ( ‘uname –s‘)<br />

case ”SunOS”:<br />

# Set terminal characteristics for remote terminals:<br />

set noglob<br />

eval ‘tset –Q –s –m ’dialup:?vt100’ –m ’network:?vt100’ –m ’su:?vt100’‘<br />

unset noglob<br />

set term=$TERM<br />

# Set up cd path<br />

set cdpath = (.. ~ )<br />

# Skip remaining setup if not an interactive shell<br />

if ($?USER == 0 || $?prompt == 0) exit<br />

# Set mail characteristics<br />

set mail = /var/mail/$user<br />

biff y<br />

# Set helpful environment variables<br />

setenv MORE ’–c’<br />

breaksw<br />

case ”HP–UX”:<br />

##################################################################<br />

# Set terminal characteristics for remote terminals:<br />

##################################################################<br />

eval ‘tset –s –Q –m ’:vt100’‘<br />

stty erase ”^H” kill ”^U” intr ”^C” eof ”^D” susp ”^Z” hupcl ixon ixoff tostop tabs<br />

##################################################################<br />

# Set up the shell environment<br />

##################################################################<br />

setenv TERM sun<br />

set noclobber<br />

breaksw<br />

default:<br />

setenv <strong>CGS</strong>_ERROR ”Unsupported Architecture”<br />

endsw<br />

#####################################################################<br />

# Display any ”message of the day”<br />

#####################################################################<br />

if (–e $DISPLAY_MOTD) then<br />

$DISPLAY_MOTD<br />

endif<br />

unset DISPLAY_MOTD


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

#####################################################################<br />

# Source the SDE’s ”login” file<br />

#####################################################################<br />

if (–e $SDE_HOME/user_env/login) then<br />

source $SDE_HOME/user_env/login<br />

endif<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

22 von/of: 662


Space Infrastructure<br />

4.1.3.1.2 Central ”cshrc” Script<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

23 von/of: 662<br />

################################################################################<br />

#<br />

# Product: <strong>CGS</strong>I CI–Number: 1216471<br />

#<br />

# Date: 22.02.96 Version: 4.3<br />

#<br />

# Name: Cshrc Type: Cshell script<br />

#<br />

# Authors: P. Athmann, J. Hoyng, A. Ringleb, U. Hohnhorst<br />

#<br />

# Function: Central <strong>CGS</strong>I cshrc file. Will be called by the users’<br />

# local .cshrc script.<br />

# Change History:<br />

# PIRN 8027 1/A (08.03.99): MD<br />

# –– Added SWES_HOME<br />

# PIRN 3094 1/B (22.02.96):<br />

# – New architecture sun5,<br />

# – new environment variables CMAS_HOME, SAS_HOME<br />

# – included $<strong>CGS</strong>I_HOME/oracle/.cshrc<br />

#<br />

# PIRN 3086 1/A (10.11.95):<br />

# – Execute dbs_cshrc file<br />

# – Define TN_HOME variable<br />

#<br />

# PIRN 3083 1/C (10.11.95)<br />

# – New default for GSAF_HOME<br />

#<br />

# COL–RIBRE–<strong>CGS</strong>–IRN–5017<br />

# GSRF–RIBRE–<strong>CGS</strong>–SPR–2945<br />

# – TN_HOME problems fixed<br />

#<br />

################################################################################<br />

umask 022<br />

unsetenv <strong>CGS</strong>_ERROR<br />

set architecture = ‘uname –s‘<br />

switch ($architecture)<br />

case ”SunOS”:<br />

set hardpaths<br />

setenv OPENWINHOME /usr/openwin<br />

setenv LD_LIBRARY_PATH $OPENWINHOME/lib<br />

setenv XAPPLRESDIR $OPENWINHOME/lib/app–defaults<br />

set path = ( . \<br />

~/bin \<br />

$OPENWINHOME/bin \<br />

/usr/sbin \<br />

/usr/bin \<br />

/usr/ucb \<br />

/usr/ccs/bin \<br />

/usr/local/bin )<br />

setenv REMOTE_SHELL rsh<br />

set os_release = ‘uname –r‘<br />

if ( $os_release =~ 4.* ) then<br />

setenv <strong>CGS</strong>_ARCH sun4<br />

else if ( $os_release =~ 5.* ) then<br />

setenv <strong>CGS</strong>_ARCH sun5<br />

else<br />

setenv <strong>CGS</strong>_ERROR ”Unsupported Architecture”<br />

endif


Space Infrastructure<br />

unset os_release<br />

breaksw<br />

case ”HP–UX”:<br />

set path = (. \<br />

~/bin \<br />

/usr/sbin \<br />

/usr/bin \<br />

/opt/ansic/bin \<br />

/usr/ccs/bin \<br />

/usr/contrib/bin \<br />

/usr/bin/X11 \<br />

/usr/contrib/bin/X11 )<br />

alias rsh remsh<br />

setenv REMOTE_SHELL remsh<br />

setenv <strong>CGS</strong>_ARCH hp_ux8<br />

breaksw<br />

default:<br />

setenv <strong>CGS</strong>_ERROR ”Unsupported Architecture $architecture”<br />

endsw<br />

unset architecture<br />

# exit the script, if <strong>CGS</strong>_ERROR is set<br />

if ($?<strong>CGS</strong>_ERROR ) then<br />

echo ” ”<br />

echo ” *** Error in <strong>CGS</strong>I Cshrc script ***”<br />

echo $<strong>CGS</strong>_ERROR<br />

echo ” ”<br />

echo ”exit with status 1”<br />

exit 1<br />

endif<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

24 von/of: 662<br />

################################################################################<br />

# Define <strong>CGS</strong> variables<br />

################################################################################<br />

setenv LOGNAME ‘whoami‘<br />

setenv USER ‘whoami‘<br />

#############################################################################<br />

# Define product home environment variables<br />

#<br />

# Note: Default Pathname will be /usr/gsaf, but can be<br />

# ===== changed below during <strong>CGS</strong>I Installation !<br />

#############################################################################<br />

if ($?GSAF_HOME) then<br />

:<br />

else<br />

setenv GSAF_HOME /usr/gsaf<br />

endif<br />

if (–d ”$GSAF_HOME”) then<br />

setenv <strong>CGS</strong>_HOME $GSAF_HOME/cgs<br />

setenv <strong>CGS</strong>I_HOME $GSAF_HOME/cgsi<br />

setenv SDE_HOME $GSAF_HOME/sde<br />

setenv SWES_HOME $SDE_HOME/swes<br />

setenv MDA_HOME $GSAF_HOME/mda<br />

setenv GWDU_HOME $GSAF_HOME/gwdu<br />

setenv FWDU_HOME $GSAF_HOME/fwdu<br />

setenv CLS_HOME $GSAF_HOME/cls<br />

setenv TSCV_HOME $GSAF_HOME/tscv


Space Infrastructure<br />

else<br />

endif<br />

setenv HCI_HOME $GSAF_HOME/hci<br />

setenv TES_HOME $GSAF_HOME/tes<br />

setenv DBS_HOME $GSAF_HOME/dbs<br />

setenv TEV_HOME $GSAF_HOME/tev<br />

setenv NWSW_HOME $GSAF_HOME/nwsw<br />

setenv TSS_HOME $GSAF_HOME/tss<br />

setenv CSS_HOME $GSAF_HOME/css<br />

setenv CMAS_HOME $GSAF_HOME/cmas<br />

setenv SAS_HOME $GSAF_HOME/sas<br />

echo ” ”<br />

echo ” Error in <strong>CGS</strong>I Cshrc script: ”<br />

echo ” Directory $GSAF_HOME doesn’t exist”<br />

echo ” Environment variables could not be set”<br />

echo ” ”<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

#############################################################################<br />

# setup Oracle environment<br />

#############################################################################<br />

setenv ORACLE_BASE ‘(cd $ORACLE_HOME/../.. && pwd)‘<br />

setenv ORACLE_HOME ORACLE_HOME # MODIFY value during installation<br />

setenv ORACLE_SID oracle7 # MODIFY value during installation<br />

if ( –e $ORACLE_HOME ) then<br />

if ($?LD_LIBRARY_PATH == 0) then<br />

setenv LD_LIBRARY_PATH $ORACLE_HOME/lib<br />

else<br />

switch ($LD_LIBRARY_PATH)<br />

case *$ORACLE_HOME/lib* :<br />

breaksw<br />

case ”” :<br />

setenv LD_LIBRARY_PATH $ORACLE_HOME/lib<br />

breaksw<br />

default :<br />

setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:${LD_LIBRARY_PATH}<br />

breaksw<br />

endsw<br />

endif<br />

switch ($PATH)<br />

case *$ORACLE_HOME/bin* :<br />

breaksw<br />

case *[:] :<br />

setenv PATH ${PATH}$ORACLE_HOME/bin:<br />

breaksw<br />

case ”” :<br />

setenv PATH $ORACLE_HOME/bin<br />

breaksw<br />

default :<br />

setenv PATH ${PATH}:$ORACLE_HOME/bin<br />

breaksw<br />

endsw<br />

setenv ORA_NLS33 $ORACLE_HOME/ocommon/nls/admin/datad2k<br />

endif<br />

#############################################################################<br />

# setup DBS environment<br />

#############################################################################<br />

if ( –e $DBS_HOME/user_env/dbs_cshrc ) then<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

25 von/of: 662


Space Infrastructure<br />

endif<br />

source $DBS_HOME/user_env/dbs_cshrc<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

#############################################################################<br />

# Define Test Node (dependant) home environment variable<br />

#<br />

# Note: Default Pathname will be /usr/test_node, but will be changed below<br />

# ===== during <strong>CGS</strong>I Installation !<br />

#############################################################################<br />

setenv TN_HOME /usr/test_node/‘hostname‘<br />

#############################################################################<br />

# Set helpful variables<br />

#############################################################################<br />

set filec<br />

set ignoreeof<br />

set history=50<br />

###########################################################################<br />

# Source the SDE’s ”cshrc” file<br />

###########################################################################<br />

if (–e $SDE_HOME/user_env/cshrc) then<br />

source $SDE_HOME/user_env/cshrc<br />

endif<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

26 von/of: 662


Space Infrastructure<br />

4.1.3.1.3 Central ”logout” Script<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

27 von/of: 662<br />

#######################################################################################<br />

#<br />

# Product: <strong>CGS</strong>I CI–Number: 1216471<br />

#<br />

# Date: 06.02.95 Version: 1.0<br />

#<br />

# Name: Logout Type: Cshell script<br />

#<br />

# Authors: P. Athmann, J. Hoyng, A. Ringleb, U. Hohnhorst<br />

#<br />

# Function: Central <strong>CGS</strong>I logout file. Will be called by the users’ local .logout<br />

script.<br />

#<br />

#######################################################################################<br />

clear<br />

###########################################################################<br />

# Source the SDE’s ”logout” file<br />

###########################################################################<br />

if (–e $SDE_HOME/user_env/logout) then<br />

source $SDE_HOME/user_env/logout<br />

endif<br />

echo ”‘hostname‘: ‘whoami‘ logged out at ‘date‘”<br />

echo ”Goodbye\!”


Space Infrastructure<br />

4.2 Relational Database Management <strong>System</strong><br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

28 von/of: 662<br />

This chapter defines the interface provided by <strong>CGS</strong>I to the <strong>CGS</strong> products for access to and use of the RDBMS<br />

services.<br />

A general section details the basic interface as specificed by the commercial product documentation. This is followed<br />

by individal subsections with the specific details for each of the <strong>CGS</strong> products.<br />

Formal <strong>Interface</strong> Description<br />

4.2.1 Functional <strong>Interface</strong><br />

4.2.1.1 General<br />

The <strong>CGS</strong>I RDBMS services are implemented by means of the ORACLE database management system.<br />

See chapter 4.2.3 for details on product version.<br />

4.2.2 Database Installation and Configuration<br />

All instances of the <strong>CGS</strong>I RDBMS <strong>Service</strong>s are installed and configured in accordance with the following subsections.<br />

For each of the predefined objects names identified <strong>CGS</strong> product–specific defintions are described in the appropriate<br />

product subsection.<br />

4.2.2.1 Predefined Object Names<br />

4.2.2.1.1 User Accounts<br />

A user requiring access to an ORACLE database must have an ORACLE username and password that are valid<br />

for a given database. This is separate from the username and password required by the operating system which<br />

are assigned independently from ORACLE and do not provide access to an ORACLE database or programs.<br />

4.2.2.1.2 Tablespaces<br />

A database is divided into logical divisions called tablespaces. A database may have one or more tablespaces<br />

and each logical tablespace corresponds to one or more physical files. Each tablespace has a set of default storage<br />

characteristics. ORACLE users who will be creating database objects must have the right to create objects in<br />

a given tablespace.<br />

4.2.2.1.3 Public Synonyms<br />

Public synonyms are used for database objects which the DBA has created for use by all ORACLE users.<br />

4.2.2.1.4 CRT Device Names<br />

Default terminal definitions are provided, in CRT files, for many terminals associated with the operating system<br />

under which ORACLE runs. (A CRT file maps terminal keys to application functions, such as Clear Screen or


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

29 von/of: 662<br />

Go To Next Field). The ORACLE distribution tape for a given operating system contains the appropriate default<br />

terminal definition. It is possible to select an alternative CRT file.<br />

The following CRT terminal definition file is used for <strong>CGS</strong>:<br />

default.crt<br />

4.2.2.2 ORACLE Configuration Parameters<br />

4.2.2.2.1 INIT.ORA Configuration File<br />

Informal <strong>Interface</strong> Description<br />

When an ORACLE database instance starts, the ORACLE configuration parameters are taken into consideration.<br />

These parameters are defined in the file INIT.ORA whereby is is the<br />

Oracle Instance Identifier. The parameters effect memory structures, impose limits, identify files and optimize<br />

performance. In the absence of an explicit value, ORACLE uses default values for each parameter.<br />

Constraints on the use of parameters defined in the INIT..ORA file and applicable to the <strong>CGS</strong><br />

assemblies using ORACLE have been identified. To provide a precise formal interface, and since most parameter<br />

values specificed in INIT.ORA are global (that is, are specified on a database–wide basis), the ORACLE<br />

configuration parameters that apply across all assemblies are stated. No assembly specific configuration constraints<br />

have been identified.<br />

Formal <strong>Interface</strong> Description<br />

#################################################################################<br />

#<br />

# Name : config/Oracle/initoracle.ora<br />

#<br />

# Title : Oracle RDBMS Setup parameters<br />

#<br />

# CI : 1216 471, <strong>CGS</strong>I<br />

#<br />

# Description : Customized init.ora file for Oracle Setup<br />

#<br />

#<br />

# Use : Copied to directory $ORACLE_HOME/dbs by the install_cgsi<br />

# script.<br />

#<br />

#<br />

# Notes : See Oracle Documentation for contents of this file<br />

#<br />

#<br />

# include database configuration parameters<br />

ifile = /gsaf/cgsi/oracle/dbs/configoracle.ora<br />

rollback_segments = (rs, rs_large, r01,r02,r03)<br />

# tuning parameters<br />

db_files = 20


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

#db_file_multiblock_read_count = 8 # SMALL<br />

db_file_multiblock_read_count = 16 # MEDIUM<br />

# db_file_multiblock_read_count = 32 # LARGE<br />

#db_block_buffers = 200 # SMALL<br />

#db_block_buffers = 550 # MEDIUM<br />

#db_block_buffers = 3200 # LARGE<br />

db_block_buffers = 12000 # MDB<br />

#shared_pool_size = 3500000 # SMALL<br />

#shared_pool_size = 6000000 # MEDIUM<br />

#shared_pool_size = 9000000 # LARGE<br />

shared_pool_size = 32000000 # MDB<br />

log_checkpoint_interval = 10000<br />

# processes = 50 # SMALL<br />

processes = 100 # MEDIUM<br />

# processes = 200 # LARGE<br />

#dml_locks = 100 # SMALL<br />

#dml_locks = 200 # MEDIUM<br />

#dml_locks = 500 # LARGE<br />

dml_locks = 2000 # MDB<br />

#log_buffer = 8192 # SMALL<br />

log_buffer = 32768 # MEDIUM<br />

# log_buffer = 163840 # LARGE<br />

#sequence_cache_entries = 10 # SMALL<br />

sequence_cache_entries = 30 # MEDIUM<br />

# sequence_cache_entries = 100 # LARGE<br />

#sequence_cache_hash_buckets = 10 # SMALL<br />

sequence_cache_hash_buckets = 23 # MEDIUM<br />

# sequence_cache_hash_buckets = 89 # LARGE<br />

# audit_trail = true # if you want auditing<br />

# timed_statistics = true # if you want timed statistics<br />

max_dump_file_size = 10240 # limit trace file size to 5 Meg each<br />

# log_archive_start = true # if you want automatic archiving<br />

# mts_dispatchers=”ipc,1”<br />

# mts_max_dispatchers=10<br />

# mts_servers=1<br />

# mts_max_servers=10<br />

# mts_service=oracle7<br />

# mts_listener_address=”(ADDRESS=(PROTOCOL=ipc)(KEY=oracle7))”<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

30 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

OS_AUTHENT_PREFIX = ”OPS$” # required by MDB<br />

REMOTE_OS_AUTHENT = TRUE # required by MDB<br />

enqueue_resources = 4020 # required by MDB<br />

open_cursors = 255 # required by MDB<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

31 von/of: 662<br />

SORT_AREA_SIZE = 1048576 # 1 MB for sort area in memory<br />

# The following enables a feature we need to create our tablespaces.<br />

# The script is preconfigure_oracle.sql.<br />

# The computations for maxextents use UNLIMITED<br />

COMPATIBLE = 7.3.0.0.0<br />

OPTIMIZER_MODE = rule<br />

4.2.2.2.2 Rollback Segments<br />

The cgsi installation script defines five rollback segments:<br />

RS : system rollback segment<br />

<strong>CGS</strong>I insures the minimum parameters sizes as follow:<br />

optimal 1500K next 250k minextents 5<br />

R01, R02, R03 : rollback segments to be used by applications performing transactions with low level<br />

amount of data<br />

<strong>CGS</strong>I insures the minimum parameters sizes as follow:<br />

optimal 1500k next 250k minextents 5<br />

RS_LARGE : rollback segment to be used by applications performing transactions with high level<br />

amount of data<br />

<strong>CGS</strong>I insures the minimum parameters sizes as follow:<br />

optimal 2750K next 550K minextents 5<br />

The application has to insure the usage of the RS_LARGE segment when performing high level amount<br />

of data transactions.


Space Infrastructure<br />

4.2.3 Commercial Product Versions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

<strong>CGS</strong>I Product Platform Commercial Product Version<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

32 von/of: 662<br />

RDBMS <strong>Service</strong>s SUN ORACLE RDBMS<br />

+ Varraw patch (DASA)<br />

7.3.4.4 (*)(**)<br />

SUN PRO*C 2.2.4 (*)(**)<br />

SUN PRO*Ada 1.8.4 (*)(**)<br />

SUN Oracle*Forms 4.5.9 (*)(***)<br />

SUN SQL*Plus 3.3.4.0.1 (*)(**)<br />

SUN Oracle*Reports 2.5.7 (*)(***)<br />

SUN SQL*Net TCP/IP 2.3.4.0 (*)(**)<br />

(*) Products so marked are covered by ESA/Oracle license contract<br />

(**) Products so marked are an integral part of Oracle 7 Server 7.3.4.0.1 Delivery<br />

Note: Version 7.3.4.4=7.3.4.0+Patch4<br />

(***) Products so marked are an integral part of Oracle Developer 2000 Kit (Release 1.6)


Space Infrastructure<br />

4.3 Communication <strong>Service</strong>s<br />

4.3.1 Internet Port Number Allocation<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

33 von/of: 662<br />

An Internet port is a logical communication channel in a host. These ports total 65535 and are accessed by port<br />

numbers. Some of the numbers are reserved by system services such as TELNET, FTP etc. Others are reserved<br />

for applications such as ORACLE/SQL*net.<br />

This section defines the ports reserved for system services, etc.<br />

Formal <strong>Interface</strong> Description<br />

The following port numbers are reserved:<br />

<strong>Service</strong> Portnumber/Protocol aliases and comments<br />

<strong>System</strong> services 0–1023<br />

ingreslock 1524/tcp<br />

orasrv 1526/tcp ORACLE<br />

1259/tcp Reserved for Atherton BackPlane<br />

1259/udp Reserved for Atherton Backplane<br />

rlb 1260/tcp # remote loopback diagnostic<br />

nft 1536/tcp # NS network file transfer<br />

netdist 2106/tcp # update(1m) network distribution service<br />

rfa 4672/tcp # NS remote file access<br />

dc_server 5000/tcp # Teamwork Data Controller Server<br />

lanmgrx.osB 5696/tcp # LAN Manager/X for B.00.00 OfficeShare<br />

grmd 5999/tcp # graphics resource manager<br />

spc 6111/tcp # sub–process control<br />

nfsd 2049/udp # NFS remote file system<br />

<strong>CGS</strong> Applications 7000/tcp–7999/tcp VICOS Applications<br />

<strong>CGS</strong> Applications<br />

Notes:<br />

8000/tcp–8999/tcp CSS Applications<br />

# The X10_LI server for each display listens on ports 5800 + display number.<br />

# The X10_MI server for each display listens on ports 5900 + display number.<br />

# The X11 server for each display listens on ports 6000 + display number.<br />

# Do not associate other services with these ports.<br />

# Refer to the X documentation for details.


Space Infrastructure<br />

4.3.2 Commercial Product Versions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

<strong>CGS</strong>I Product Platform Commercial Product Version<br />

Communication<br />

<strong>Service</strong>s SUN TCP/IP (*)<br />

SUN NFS (*)<br />

SUN Ethernet Software (*)<br />

HP TCP/IP (**)<br />

HP NFS (**)<br />

HP Ethernet Software (**)<br />

(*) Products so marked are an integral part of SunOS<br />

(**) Products so marked are an integral part of HP–UX<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

34 von/of: 662


Space Infrastructure<br />

4.4 Presentation <strong>Service</strong>s<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

35 von/of: 662<br />

The <strong>CGS</strong>I Presentation <strong>Service</strong>s provide an X–11 environment on all <strong>CGS</strong> workstations and servers (both Sun<br />

and HP).<br />

In addition on Sun platforms the <strong>CGS</strong>I Presentation <strong>Service</strong>s provide both an environment for developing<br />

OPENLOOK applications and an OPENLOOK window manager environment for executing window applications.<br />

Formal <strong>Interface</strong> Description<br />

<strong>CGS</strong>I Product Platform Commercial Product Version<br />

Presentation<br />

<strong>Service</strong>s SUN X–lib Open Windows 3.6 (*)<br />

SUN X View Toolkit Open Windows 3.6 (*)<br />

SUN Open Look Window<br />

Manager (OLWM) Open Windows 3.6 (*)<br />

SUN X–Server Open Windows 3.6 (*)<br />

(*) Products so marked, including Open Windows, are an integral part of SunOS/SOLARIS


Space Infrastructure<br />

4.5 DataViews <strong>Service</strong>s<br />

Informal <strong>Interface</strong> Description<br />

<strong>CGS</strong> provides Dataviews services.<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

36 von/of: 662<br />

<strong>CGS</strong>I Product Platform Commercial Product Version<br />

SUN DataViews DV Draw 9.7a<br />

SUN DataViews DV Tools 9.7a<br />

SUN DataViews EO Geck 3.1<br />

SUN DataViews Ada Bindings 9.7a<br />

+ patch types.a: Color Threshold Table<br />

(described in COL–RIBRE–<strong>CGS</strong>–SMD–3031)<br />

+ patch 052<br />

(ftp://ftp.prs.de/pub/packages/dv97/p052.solaris.tgz)


Space Infrastructure<br />

4.6 <strong>CGS</strong> Top Level User <strong>Interface</strong><br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

37 von/of: 662<br />

The <strong>CGS</strong> Top Level User <strong>Interface</strong> is the name given to the <strong>CGS</strong>I developed product. As such, it provides the<br />

following:<br />

– the user interface to the <strong>CGS</strong> system as a whole<br />

– which integrates the <strong>CGS</strong> products through the provision of a common invocation mechanism<br />

– which is also referred to as the <strong>CGS</strong> Desktop<br />

– which enables the user to execute <strong>CGS</strong> level tasks (and the privileged user to perform data administration<br />

and user administration).<br />

[It is important to note that <strong>CGS</strong>I exercises no privilege control over users. When a user<br />

selects and invokes a task from the <strong>CGS</strong> Desktop then that task is invoked by <strong>CGS</strong>I and<br />

it is an product responsibility to check the user has sufficient privileges to execute that<br />

task.]<br />

– a set of services additional to those provided by the <strong>CGS</strong> Platform (the <strong>CGS</strong>I procured products)<br />

– the only services provided in this version of <strong>CGS</strong>I are the Error <strong>Service</strong>s<br />

– part of the Error <strong>Service</strong>s functionality [the Error Manager] is implemented as a <strong>CGS</strong> Desktop<br />

application<br />

– other Error <strong>Service</strong>s functionality [the Error Server and Response Server] are implemented as<br />

freestanding Unix processes<br />

– Error <strong>Service</strong>s functionality [the Error Reporter] are provided as a set of Ada libraries and C<br />

objects.<br />

Timestamp <strong>Service</strong>s<br />

The informal description and the formal specification of this interface are described in the Timestamp <strong>Service</strong>s<br />

section.<br />

Error <strong>Service</strong>s<br />

The Error <strong>Service</strong>s section details the interface to <strong>CGS</strong>I Error <strong>Service</strong>s including a summary of the underlying<br />

implementation. More detail concerning the Error Reporter, Error Server, Error Manager and Response Server,<br />

mentioned above, can be found in this section. The formal specification of the provided interface is also detailed<br />

in this section.<br />

Not all of the services described in the subsections Calendar <strong>Service</strong>s, Timestamp <strong>Service</strong>s and Error <strong>Service</strong>s<br />

are required by all <strong>CGS</strong> products.


Space Infrastructure<br />

4.6.1 Error <strong>Service</strong>s<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

38 von/of: 662<br />

The <strong>CGS</strong>I provided Error services are used for the reporting of warning/error mesages. A set of services are provided<br />

as outlined in section 4.6.<br />

Each <strong>CGS</strong> login starts a local Error Server. In addition, the NIS master server starts a special Error Server at<br />

boot time.<br />

Any <strong>CGS</strong> product which uses the Error Reporter starts a Response Server when invoked.<br />

The <strong>CGS</strong> user may invoke the Error Manager application at any time from his Desktop.<br />

The following sections provide an overview of the provided operations (section 4.6.1.2), the options available<br />

(section 4.6.1.3), addressing, displaying and logging of error messages (sections 4.6.1.4, 4.6.1.5 and 4.6.1.5 respectively),<br />

use of timestamps (section 4.6.1.7), the format of error messages (sections 4.6.1.8, 4.6.1.9, and<br />

4.6.1.10) and, in general terms, the services should be used.<br />

More detail concerning the actual implementation of the Error Report Package and the Error <strong>Service</strong> Package<br />

can be found in sections 4.6.2 and 4.6.3 respectively.<br />

Object code is made available to those products using the Error <strong>Service</strong>s provided interface. This object code<br />

implements the Error Reporter and consists of an Ada library and a number of C object files.<br />

4.6.1.1 Definition of Terms<br />

An error message is the complete collection of data (textual description, criticality, time of occurrence, etc.)<br />

which describes the error which has occurred.<br />

Certain elements of an error message may be predefined. These constitute an error message spec. This is the<br />

form in which <strong>CGS</strong>I expects to find error messages in an assembly provided Error Message Database [section<br />

NO TAG].<br />

An error report is the act of invoking <strong>CGS</strong>I Error <strong>Service</strong>s. The invoking process is then known as the reporting<br />

process. The result of an error report is the broadcast of an error message on the network.<br />

An error message mnemonic is a short text string used by the Error Reporter to index error message specs contained<br />

in an Error Message Database [section NO TAG].<br />

For the errors reported by a given reporting process, an error message number uniquely identifies each error<br />

report.<br />

4.6.1.2 Provided Operations<br />

<strong>CGS</strong>I Error <strong>Service</strong>s provides a single operation for the reporting of errors:<br />

– report_error<br />

This operation requires the following parameters to be supplied:<br />

– an error message spec or an error message mnemonic, depending on the interface being used<br />

(ad hoc or controlled) [section 4.6.1.3]<br />

– the error message handling (log only or display and log) [section 4.6.1.5].<br />

– the error message tags, as follows:<br />

– the name of the assembly to which the reporting process belongs<br />

– an assembly–specific set of parameters.<br />

In addition, any of the following parameters may be supplied:<br />

– the error message address (two components: user and node) [section 4.6.1.4]


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

39 von/of: 662<br />

– an error message timestamp<br />

– error message extra text [section 4.6.1.8].<br />

This operation returns the following:<br />

– the error message number [section 4.6.1.9].<br />

<strong>CGS</strong>I Error <strong>Service</strong>s provides an additional operation for determining the acknowledgement status of an error<br />

report:<br />

– acknowledgement_status<br />

The invocation of this operation requires the following parameter to be supplied:<br />

– an error message number.<br />

This operation returns the following:<br />

– acknowledged, not acknowledged or null status.<br />

4.6.1.3 Reporting Options<br />

<strong>CGS</strong>I Error <strong>Service</strong>s provide a single operation for the reporting of an error message [report_error, section<br />

4.6.1.2]. However, this operation is provided with two alternative interfaces, to provide flexibility.<br />

The reporting process may choose to construct a complete error message spec, and pass this as a parameter.<br />

This is known as ad hoc error reporting.<br />

Alternatively, the reporting process can simply pass an error message mnemonic. In this case, the Error Reporter<br />

must look up the appropriate error message spec in an Error Message Database, using the error message mnemonic<br />

as an index. This is known as controlled error reporting.<br />

Note: there is nominally one Error Message Database for each <strong>CGS</strong> assembly; any <strong>CGS</strong> assembly intending<br />

to make use of controlled error reporting must provide the requisite Error Message Database<br />

[see sections NO TAG and NO TAG].<br />

4.6.1.4 Addressing the Error Message<br />

The reporting process must specify who should receive the error message. The addressing parameter supplied<br />

to the Error Reporter has two components: user and node.<br />

The reporting process may specify a named user, a ”wild card” user or the default user. The default user is the<br />

user logged in at the workstation on which the reporting process is executing.<br />

The reporting process may specify a named node, a ”wild card” node or the default node. The default node is<br />

the workstation on which the reporting process is executing.<br />

If both the user and the node are specified, the error is reported to the specified workstation only if the specified<br />

user is logged in at that workstation.<br />

If a ”wild card” user is specified, the error is reported to the specified workstation regardless of who may be<br />

logged in at that workstation.<br />

If a ”wild card” node is specified, the error is reported to every workstation at which the specified user is logged<br />

in.<br />

If both user and node are specified as ”wild cards”, the error is reported to every workstation, regardless of who<br />

may be logged in at each one.<br />

4.6.1.5 Displaying and Logging the Error Message<br />

The reporting process must specify how the error message is to be handled once it is received at an addressed<br />

workstation.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

40 von/of: 662<br />

There are two options available. The Error Server can be instructed to simply log the error message on receipt.<br />

Alternatively, the Error Server can be instructed to both log and display the error message on receipt. The option<br />

is specified by a handling parameter.<br />

Error Message Logging<br />

At an addressed workstation, the Error Server logs a received error message by appending a line of text to a<br />

session Error Log. The text corresponds to the constituent parts of the error message (text, severity, time of occurrence,<br />

etc.). If the error message contains any extra text, this is also appended to the session Error Log (on<br />

a separate line).<br />

The session Error Log belongs to the user who is logged in at this workstation. Its name and location are specified<br />

in section 4.6.5.1.1.<br />

Note: a new session Error Log is opened whenever a user logs in to <strong>CGS</strong>.<br />

Error Message Display<br />

At an addressed workstation, <strong>CGS</strong>I displays a received error message [if appropriate] by writing a line of text<br />

to the workstation screen. If the error message contains any extra text, this is also appended to the session Error<br />

Log (on a separate line).<br />

4.6.1.6 Central Logging<br />

Every reported error message is automatically logged in a central Error Log.<br />

There is always an Error Server present on the NIS master server. This particular Error Server ignores the addressing<br />

and handling information contained in a broadcast error message, and simply logs every reported message.<br />

4.6.1.7 Supplying a Timestamp<br />

The reporting process may supply a timestamp applicable to the error being reported. If no timestamp is supplied,<br />

<strong>CGS</strong>I generates its own timestamp from the system date and time obtained at the time that the reporting<br />

process invokes Error <strong>Service</strong>s.<br />

If the reporting process does provide its own timestamp, then this should be obtained through the Calendar <strong>Service</strong>s<br />

interface [section NO TAG].<br />

4.6.1.8 Supplying Extra Text<br />

The reporting process may supply additional text applicable to the error being reported. This error message<br />

extra text is supplied as an optional parameter.<br />

The provision of additional text is particularly relevant to the use of the controlled interface for error reporting.<br />

In this case, the error message spec is predefined (contained within an Error Message Database) – and consequently<br />

the error message text is also predefined.<br />

Extra text, on the other hand, is specified at the time the error is actually reported. Therefore the same error<br />

message text can be reported many times, but each time with different error message extra text.<br />

Typically, extra text will contain the text of an error message received by the reporting process from a commercial<br />

product. The Error Message Database would then contain just one generic error message spec to cover all<br />

errors received from this one commercial product.<br />

4.6.1.9 Error Message Number<br />

When <strong>CGS</strong>I Error <strong>Service</strong>s are invoked for the reporting of an error, the Error Reporter returns an error message<br />

number.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

41 von/of: 662<br />

In the case where the reported error requires to be acknowledged, the reporting process can then subsequently<br />

use this number to determine the acknowledgement status of that error.<br />

If the reported error does not require acknowledgement, this number is of no interest to the reporting process.<br />

4.6.1.10 Error Message Components<br />

An error message spec consists of the following components:<br />

– an error message mnemonic<br />

– a short text string uniquely identifying the error message spec within an Error Message Database<br />

– by convention, the initial part of the string identifies the <strong>CGS</strong> assembly which may report the<br />

error and the remainder of the string suffices to make the mnemonic unique within the Error<br />

Message Database<br />

– the error message severity<br />

– fatal, severe, ordinary or advisory<br />

– the error message text<br />

– a text string containing a concise description of the error<br />

– the error message supplementary text<br />

– a text string containing further information about the error<br />

An error message consists of the following components:<br />

– the error message identifier<br />

– consists of three components:<br />

– the host name of the workstation on which the reporting process is executing<br />

– the process id of the reporting process<br />

– the error message number<br />

– uniquely defines the error report within the network<br />

– an error message spec<br />

– the error message timestamp<br />

– this can be either:<br />

– the time that the error was detected by the <strong>CGS</strong> assembly to which the reporting process<br />

belongs<br />

– or:<br />

– the time that the reporting process reported the error (by invoking <strong>CGS</strong>I Error <strong>Service</strong>s)<br />

– any error message extra text<br />

– a text string containing information relevant to this despatch of the error message spec.<br />

An error packet consists of the following components:<br />

– an error message<br />

– the error message handling<br />

– log_only, log_and_display


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

42 von/of: 662<br />

– the error message tag field<br />

– the first tag specifies the <strong>CGS</strong> assembly to which the reporting process belongs<br />

– the number and type of the remaining tags vary according to the <strong>CGS</strong> assembly specified in the<br />

first tag (can be null)<br />

– these tags, in conjunction with the error message severity (itself an implicit tag) are used by the<br />

Error Manager to determine to which Error Message Windows (if any) to display the error<br />

message<br />

– the error message address<br />

– consists of three components:<br />

– the host name of the workstation to which the error is to be reported (can be a wild card)<br />

– the user name of the <strong>CGS</strong> user to which the error is to be reported (can be a wild card).<br />

4.6.1.11 Handling of Messages<br />

When invoked by a reporting process, report_error performs the following actions:<br />

– the host name of the workstation on which the reporting process is executing is retrieved from the OS<br />

– the process id of the reporting process is retrieved from the OS<br />

– a unique error message number is assigned to the reported error message<br />

– this is a serial number, incremented at each error report<br />

– the host name, process id, error message number together constitute the error message identifier, which<br />

serves to identify the error report uniquely within the network<br />

– if the controlled interface is being used, the error message spec corresponding to the provided error<br />

message mnemonic is retrieved from the appropriate Error Message Database<br />

– if the Error Message Database cannot be accessed for any reason, the exception<br />

ERROR_MESSAGE_DATABASE_UNREADABLE is raised<br />

– if the Error Message Database does not contain an error message spec with the mnemonic provided<br />

by the caller, the exception NO_MATCHING_ERROR_MESSAGE_SPEC is raised<br />

– if the ad hoc interface is being used, the error message spec is provided by the caller<br />

– if no error message timestamp has been provided by the caller, one is constructed from the current system<br />

time (obtained from the OS)<br />

– an error message is constructed by combining the error message identifier and the error message spec<br />

with the error message timestamp and any provided error message extra text<br />

– the error message address is decomposed into a user name and a node name<br />

– if the default user has been specified, the user name is set to the name of the owner of the reporting<br />

process (by reference to the OS)<br />

– if the default node has been specified, the node name is set to the name of the local host (by<br />

reference to the OS)<br />

– an error packet is constructed by combining the error message, the provided error message handling<br />

(log only or log and display) and the error message address<br />

– the error packet is broadcast on the network (using Broadcast RPC)<br />

– if this broadcast operation fails, the exception ERROR_MESSAGE_BROADCA<strong>ST</strong>_FAIL-<br />

URE is raised<br />

– the error message number is appended to the Response Log belonging to the reporting process


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

43 von/of: 662<br />

– if the error message ack flag is ack required, the number is tagged with the status not acknowledged<br />

– if the error message ack flag is ack not required, the number is tagged with the status null<br />

status<br />

– if this write operation fails, the exception RESPONSE_LOG_UNWRITEABLE is raised<br />

– the error message number is returned.<br />

Message Display<br />

When a broadcast error packet is received by at the Message Window, the following actions are performed:<br />

– if the user name is not a ”wild card”, it is checked, by reference to the OS, against the name of the owner<br />

of the Error Manager (equality => success)<br />

– if the user name is a ”wild card”, no check is made (i.e. implicit success)<br />

– if the node name is not a ”wild card”, it is checked, by reference to the OS, against the name of the local<br />

host (equality => success)<br />

– if the node name is a ”wild card”, no check is made (i.e. implicit success)<br />

– if either of the preceding checks fails, the Error Server rejects the error packet and no further processing<br />

on it is performed<br />

– if both the preceding checks are successful, the error message is extracted from the error packet and<br />

the error message handling is inspected:<br />

– if the error message handling is specified as LOG_ONLY, the error message is logged to the<br />

user’s session Error Log<br />

– if the error message handling is specified as LOG_AND_DISPLAY, the error message is<br />

logged to the user’s session Error Log and displayed to the local workstation screen.<br />

– the user may specify in the message display window a filter that specifies the various fields of an message.<br />

Only those messages matching the filter will be displayed.<br />

– if the severity level equals or exceeds ’severe’, or the acknowledge flag is given,<br />

the workstation beeps<br />

Message Logging<br />

– the user’s name is used to locate the user’s session Error Log<br />

– the session Error Log is located within the user’s home directory<br />

– if the user’s home directory cannot be accessed, logging is abandoned at this point


Space Infrastructure<br />

4.6.2 Error Report Package<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

See section 4.6.1 for a general description of the TLUI provided Error <strong>Service</strong>s.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

44 von/of: 662<br />

The functions and procedures in this package are internal to <strong>CGS</strong>I. The package is included in the <strong>CGS</strong>I <strong>ICD</strong><br />

because it is required by the Error <strong>Service</strong>s Package (see section 4.6.3).


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

45 von/of: 662<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– err_report_.a<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT<br />

–– ––––––––<br />

––<br />

–– This file contains the body of the Ada package report_pks.ada<br />

––<br />

–– IDENTIFICATION<br />

–– ––––––––––––––<br />

––<br />

–– Assembly Name : <strong>CGS</strong>I<br />

–– Product Name : <strong>CGS</strong> Top Level User <strong>Interface</strong><br />

–– CI Number : 1234 916<br />

–– Hood Object : Error_Reporter<br />

––<br />

–– CHARACTERI<strong>ST</strong>ICS<br />

–– –––––––––––––––<br />

––<br />

–– Compiler : Alsys Ada Compiler, HP 9000 HP–UX, Version B2425A.05.25<br />

–– Language : Ada<br />

–– Target Machine : HP 9000<br />

–– Target Operating <strong>System</strong> : HP–UX 9.0<br />

–– Machine Dependencies : [NONE]<br />

–– Compiler Dependencies : [NONE]<br />

–– External Dependencies : [NONE]<br />

–– Data Environment : [NONE]<br />

–– Device Input : [NONE]<br />

–– Device Output : [NONE]<br />

––<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V3.1 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: athmann (on host vicos2s)<br />

–– creation date: 02.11.94 18:05:12<br />

–– comment:<br />

–– Remove Acknowledgement service (Response <strong>Service</strong>)<br />

–– acc. to COL–RIBRE–<strong>CGS</strong>I–IRN–2204.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.3 at ERNO ; VICOS AIV<br />

–– creator: aivroot (on host vim_1)<br />

–– creation date: 01.12.93 18:50:31<br />

–– comment:<br />

–– DERIVED FROM 2.1/cgsi_01_SRO_1234916j<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.2 at ERNO;<strong>CGS</strong> Central Repository (development)<br />

–– creator: cgstest (on host vicos_4)<br />

–– creation date: 08.09.93 17:58:09<br />

–– comment:<br />

–– modified for delivery to AIV (<strong>CGS</strong>I V2.0.3)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– ––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

–– –––––––––––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with A_<strong>ST</strong>RINGS;<br />

package ERR_REPORT is


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

PROCESS_ID_MAX : constant := 99999;<br />

ERROR_MESSAGE_NUMBER_MAX : constant := 99999;<br />

ERROR_MESSAGE_MNEMONIC_LEN : constant := 16;<br />

ERROR_MESSAGE_TEXT_LEN : constant := 80;<br />

ERROR_MESSAGE_SUPP_TEXT_LEN : constant := 255;<br />

ERROR_MESSAGE_EXTRA_TEXT_LEN : constant := 80;<br />

ERROR_MESSAGE_TIME<strong>ST</strong>AMP_LEN : constant := 20;<br />

subtype PROCESS_ID is INTEGER range 1..PROCESS_ID_MAX;<br />

subtype ERROR_MESSAGE_NUMBER is INTEGER range 1..ERROR_MESSAGE_NUMBER_MAX;<br />

subtype ERROR_MESSAGE_MNEMONIC is <strong>ST</strong>RING (1..ERROR_MESSAGE_MNEMONIC_LEN);<br />

type ERROR_MESSAGE_SEVERITY is<br />

(FATAL,<br />

SEVERE,<br />

ORDINARY,<br />

ADVISORY);<br />

subtype ERROR_MESSAGE_TEXT is <strong>ST</strong>RING (1..ERROR_MESSAGE_TEXT_LEN);<br />

subtype ERROR_MESSAGE_SUPP_TEXT is <strong>ST</strong>RING (1..ERROR_MESSAGE_SUPP_TEXT_LEN);<br />

type <strong>CGS</strong>_ASSEMBLY is<br />

(SDE,<br />

<strong>CGS</strong>I,<br />

VICOS,<br />

MPS,<br />

CSS,<br />

ALL_ASSEMBLIES);<br />

subtype VICOS_TE<strong>ST</strong>_NODE is A_<strong>ST</strong>RINGS.A_<strong>ST</strong>RING;<br />

subtype VICOS_GROUP_NAME is A_<strong>ST</strong>RINGS.A_<strong>ST</strong>RING;<br />

type VICOS_TAG_FIELD is record<br />

test_node : VICOS_TE<strong>ST</strong>_NODE;<br />

group_name : VICOS_GROUP_NAME;<br />

end record;<br />

type ERROR_MESSAGE_TAG_FIELD (assembly : <strong>CGS</strong>_ASSEMBLY) is record<br />

case assembly is<br />

when VICOS => vicos_tags : VICOS_TAG_FIELD;<br />

when others => null;<br />

end case;<br />

end record;<br />

–– dummy (obsolete); kept to leave interface unchanged<br />

type ERROR_MESSAGE_ACK_FLAG is (ACK_NOT_REQUIRED,ACK_REQUIRED);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

46 von/of: 662<br />

subtype ERROR_MESSAGE_EXTRA_TEXT is <strong>ST</strong>RING (1..ERROR_MESSAGE_EXTRA_TEXT_LEN);<br />

subtype ERROR_MESSAGE_TIME<strong>ST</strong>AMP is <strong>ST</strong>RING (1..ERROR_MESSAGE_TIME<strong>ST</strong>AMP_LEN);<br />

type ERROR_MESSAGE_HANDLING is<br />

(LOG_ONLY,<br />

LOG_AND_DISPLAY);<br />

subtype USER_NAME is A_<strong>ST</strong>RINGS.A_<strong>ST</strong>RING;<br />

subtype NODE_NAME is A_<strong>ST</strong>RINGS.A_<strong>ST</strong>RING;<br />

type ERROR_PACKET (assembly : <strong>CGS</strong>_ASSEMBLY) is record<br />

source_node : NODE_NAME; –– ERROR_MESSAGE_SOURCE<br />

source_pid : PROCESS_ID; –– ERROR_MESSAGE_SOURCE<br />

error_number : ERROR_MESSAGE_NUMBER; –– ERROR_MESSAGE_SOURCE<br />

error_mnemonic : ERROR_MESSAGE_MNEMONIC; –– ERROR_MESSAGE_SPEC<br />

error_severity : ERROR_MESSAGE_SEVERITY; –– ERROR_MESSAGE_SPEC<br />

error_text : ERROR_MESSAGE_TEXT; –– ERROR_MESSAGE_SPEC<br />

error_supp_text : ERROR_MESSAGE_SUPP_TEXT; –– ERROR_MESSAGE_SPEC<br />

error_handling : ERROR_MESSAGE_HANDLING; –– ERROR_MESSAGE_HANDLING<br />

error_tag_field : ERROR_MESSAGE_TAG_FIELD (assembly); –– ERROR_MESSAGE_TAG_FIELD<br />

error_timestamp : ERROR_MESSAGE_TIME<strong>ST</strong>AMP; –– ERROR_MESSAGE_TIME<strong>ST</strong>AMP<br />

error_extra_text : ERROR_MESSAGE_EXTRA_TEXT; –– ERROR_MESSAGE_EXTRA_TEXT<br />

addressed_user : USER_NAME; –– ERROR_MESSAGE_ADDRESS<br />

addressed_node : NODE_NAME; –– ERROR_MESSAGE_ADDRESS<br />

end record;<br />

type ERROR_PACKET_PTR is access ERROR_PACKET;<br />

NULL_TEXT : constant ERROR_MESSAGE_TEXT := (others => ’ ’);<br />

NULL_SUPP_TEXT : constant ERROR_MESSAGE_SUPP_TEXT := (others => ’ ’);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

NULL_EXTRA_TEXT : constant ERROR_MESSAGE_EXTRA_TEXT := (others => ’ ’);<br />

NULL_MNEMONIC : constant ERROR_MESSAGE_MNEMONIC := (others => ’ ’);<br />

NULL_TIME<strong>ST</strong>AMP : constant ERROR_MESSAGE_TIME<strong>ST</strong>AMP := (others => ’ ’);<br />

function to_user (s : <strong>ST</strong>RING) return USER_NAME renames A_<strong>ST</strong>RINGS.to_a;<br />

function to_node (s : <strong>ST</strong>RING) return NODE_NAME renames A_<strong>ST</strong>RINGS.to_a;<br />

WILD_CARD_USER : constant USER_NAME := to_user (”*”);<br />

WILD_CARD_NODE : constant NODE_NAME := to_node (”*”);<br />

type ERROR_MESSAGE_ACK_<strong>ST</strong>ATUS is<br />

(NULL_<strong>ST</strong>ATUS,<br />

NOT_ACKNOWLEDGED,<br />

ACKNOWLEDGED);<br />

procedure despatch_error (error_pkt : ERROR_PACKET_PTR);<br />

UNABLE_TO_DESPATCH_ERROR : exception;<br />

end ERR_REPORT;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

47 von/of: 662


Space Infrastructure<br />

4.6.3 Error <strong>Service</strong>s Package<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

See section 4.6.1 for a general description of the TLUI provided Error <strong>Service</strong>s.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

48 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

49 von/of: 662<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– error_services_.a<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT<br />

–– ––––––––<br />

––<br />

–– This file contains the spec of the Ada package ERROR_SERVICES<br />

––<br />

–– IDENTIFICATION<br />

–– ––––––––––––––<br />

––<br />

–– Assembly Name : <strong>CGS</strong>I<br />

–– Product Name : <strong>CGS</strong> Top Level User <strong>Interface</strong><br />

–– CI Number : 1234 916<br />

–– Hood Object : Error_Reporter<br />

––<br />

–– CHARACTERI<strong>ST</strong>ICS<br />

–– –––––––––––––––<br />

––<br />

–– Compiler : Alsys Ada Compiler, HP 9000 HP–UX, Version B2425A.05.25<br />

–– : SUN Ada 1.1<br />

–– Language : Ada<br />

–– Target Machine : HP 9000<br />

–– Target Operating <strong>System</strong> : HP–UX A.08.02 / SUN OS 4.1.3<br />

–– Machine Dependencies : [NONE]<br />

–– Compiler Dependencies : [NONE]<br />

–– External Dependencies : [NONE]<br />

–– Data Environment : [NONE]<br />

–– Device Input : [NONE]<br />

–– Device Output : [NONE]<br />

––<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.1 at Central Repository at DASA RI<br />

–– creator: schipper (on host ada_s)<br />

–– creation date: 05.07.96 13:49:44<br />

–– comment:<br />

–– Solaris Port<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.1 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: athmann (on host vicos2s)<br />

–– creation date: 02.11.94 18:06:13<br />

–– comment:<br />

–– Remove Acknowledgement service (Response <strong>Service</strong>)<br />

–– acc. to COL–RIBRE–<strong>CGS</strong>I–IRN–2204:<br />

–– – remove function acknowledgment_status<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.3 at ERNO ; VICOS AIV<br />

–– creator: aivroot (on host vim_1)<br />

–– creation date: 01.12.93 18:51:23<br />

–– comment:<br />

–– DERIVED FROM 2.1/cgsi_01_SRO_1234916j<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.2 at ERNO;<strong>CGS</strong> Central Repository (development)<br />

–– creator: cgstest (on host vicos_4)<br />

–– creation date: 08.09.93 18:00:24<br />

–– comment:<br />

–– modified for delivery to AIV (<strong>CGS</strong>I V2.0.3)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– ––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

50 von/of: 662<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

–– –––––––––––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with Err_report;<br />

package Error_services is<br />

SPEC_VERSION : constant <strong>ST</strong>RING := ”@(#) ERROR_SERVICES 4.3.1 spec”;<br />

type Error_message_spec is record<br />

Error_mnemonic : Err_report.Error_message_mnemonic;<br />

Error_severity : Err_report.Error_message_severity;<br />

Error_text : Err_report.Error_message_text;<br />

Error_supp_text : Err_report.Error_message_supp_text;<br />

Error_ack_flag : Err_report.Error_message_ack_flag; –– dummy (obsolete)<br />

end record;<br />

type Scope_of_target_user is<br />

(Default_user,<br />

Named_user);<br />

type Scope_of_target_node is<br />

(Default_node,<br />

Named_node);<br />

type Target_user (Scope : Scope_of_target_user := Default_user) is record<br />

case Scope is<br />

when Default_user => null;<br />

when Named_user => Name : Err_report.User_name;<br />

end case;<br />

end record;<br />

type Target_node (Scope : Scope_of_target_node := Default_node) is record<br />

case Scope is<br />

when Default_node => null;<br />

when Named_node => Name : Err_report.Node_name;<br />

end case;<br />

end record;<br />

type Error_message_source is record<br />

Source_node : Err_report.Node_name;<br />

Source_pid : Err_report.Process_id;<br />

Error_number : Err_report.Error_message_number;<br />

end record;<br />

procedure Report_error<br />

(Error_spec : in Error_message_spec;<br />

Handling : in Err_report.Error_message_handling;<br />

Tags : in Err_report.Error_message_tag_field;<br />

User : in Target_user := (Scope => Default_user);<br />

Node : in Target_node := (Scope => Default_node);<br />

Timestamp : in Err_report.Error_message_timestamp :=<br />

Err_report.Null_timestamp;<br />

Extra_text : in Err_report.Error_message_extra_text :=<br />

Err_report.Null_extra_text;<br />

Error_number : out Err_report.Error_message_number);<br />

procedure Report_error<br />

(Error_mnemonic : in Err_report.Error_message_mnemonic;<br />

Handling : in Err_report.Error_message_handling;<br />

Tags : in Err_report.Error_message_tag_field;<br />

User : in Target_user := (Scope => Default_user);<br />

Node : in Target_node := (Scope => Default_node);<br />

Timestamp : in Err_report.Error_message_timestamp :=<br />

Err_report.Null_timestamp;<br />

Extra_text : in Err_report.Error_message_extra_text :=<br />

Err_report.Null_extra_text;<br />

Error_number : out Err_report.Error_message_number);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

51 von/of: 662<br />

function Send<br />

(User : in String := ””; –– Empty is filled with the same user, * is all<br />

Host : in String := ””; –– Empty is filled with localhost, * is broadcast<br />

Handling : in Boolean := TRUE; –– Display the message (not only log it).<br />

Assembly : in Err_report.<strong>CGS</strong>_ASSEMBLY;<br />

Source : in String := ””; –– VICOS node / application<br />

Group : in String := ””; –– VICOS group ???<br />

Class : in Err_report.ERROR_MESSAGE_SEVERITY := Err_report.ORDINARY;<br />

Timestamp : in String := ””; –– Empty is filled with actual local time<br />

Mnemonic : in String := ””; –– Look for message in a database<br />

Text : in String; –– The message !<br />

Extra_text : in String := ””;<br />

Support_text : in String := ””;<br />

Ack_flag : in Boolean := FALSE)–– Application wants acknowledge<br />

return Integer; –– the error number, unique per UNIX process<br />

function Acknowledgement_status<br />

(Host : in String := ””;<br />

error_number : in Integer)<br />

return ERR_REPORT.ERROR_MESSAGE_ACK_<strong>ST</strong>ATUS;<br />

function TO_SEVERITY (CHECKOUT_TYPE : in <strong>ST</strong>RING) return ERR_REPORT.ERROR_MESSAGE_SEVERITY;<br />

–– DESCRIPTION<br />

–– Converts the Checkout log/error type to error services severity class.<br />

–– The conversion is<br />

–– VICOS_DEFINITIONS.INFO_MESSAGE_TYPE : ERR_REPORT.ADVISORY<br />

–– VICOS_DEFINITIONS.GENERAL_MESSAGE_TYPE : ERR_REPORT.ADVISORY<br />

–– VICOS_DEFINITIONS.ERROR_MESSAGE_TYPE : ERR_REPORT.ORDINARY<br />

–– VICOS_DEFINITIONS.WARNING_MESSAGE_TYPE : ERR_REPORT.ADVISORY<br />

–– VICOS_DEFINITIONS.EXCEPTION_MESSAGE_TYPE: ERR_REPORT.SEVERE<br />

–– VICOS_DEFINITIONS.ALARM_MESSAGE_TYPE : ERR_REPORT.FATAL<br />

–– any other string : ERR_REPORT.ADVISORY<br />

Error_message_database_unreadable : exception;<br />

No_matching_error_message_spec : exception;<br />

Error_message_broadcast_failure : exception;<br />

No_matching_error_number : exception;<br />

end Error_services;


Space Infrastructure<br />

4.6.4 Timestamp <strong>Service</strong>s Package<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

52 von/of: 662<br />

An operation is provided which converts the current system time (obtained through a call to the operation<br />

date_and_time_now) to a fixed length string:<br />

– time_stamp_str<br />

The returned string has the following format:<br />

– YYYYMmm DD hh:mm:ss<br />

This is the format required, for example, of a timestamp in the TLUI provided Error <strong>Service</strong>s interface.<br />

Object code is made available to those products using the Timestamp <strong>Service</strong>s provided interface.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

53 von/of: 662<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– timestamp_pks.ada<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT<br />

–– ––––––––<br />

––<br />

–– This file contains the body of the Ada package timestamp_pks.ada<br />

––<br />

–– IDENTIFICATION<br />

–– ––––––––––––––<br />

––<br />

–– Assembly Name : <strong>CGS</strong>I<br />

–– Product Name : <strong>CGS</strong> Top Level User <strong>Interface</strong><br />

–– CI Number : 1234 916<br />

–– Hood Object : Calendar<br />

––<br />

–– CHARACTERI<strong>ST</strong>ICS<br />

–– –––––––––––––––<br />

––<br />

–– Compiler : Alsys Ada Compiler, HP 9000 HP–UX, Version B2425A.05.25<br />

–– Language : Ada<br />

–– Target Machine : HP 9000<br />

–– Target Operating <strong>System</strong> : HP–UX A.08.02<br />

–– Machine Dependencies : [NONE]<br />

–– Compiler Dependencies : [NONE]<br />

–– External Dependencies : [NONE]<br />

–– Data Environment : [NONE]<br />

–– Device Input : [NONE]<br />

–– Device Output : [NONE]<br />

––<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V3.1 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: reproot (on host vicos_4)<br />

–– creation date: 05.07.95 21:16:50<br />

–– comment:<br />

–– transfered from version 2.3<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.3 at ERNO ; VICOS AIV<br />

–– creator: aivroot (on host vim_1)<br />

–– creation date: 01.12.93 18:53:22<br />

–– comment:<br />

–– DERIVED FROM 2.1/cgsi_01_SRO_1234916j<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.2 at ERNO;<strong>CGS</strong> Central Repository (development)<br />

–– creator: cgstest (on host vicos_4)<br />

–– creation date: 08.09.93 18:06:06<br />

–– comment:<br />

–– modified for delivery to AIV (<strong>CGS</strong>I V2.0.3)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– ––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

–– –––––––––––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with <strong>CGS</strong>_CALENDAR;<br />

package TIME<strong>ST</strong>AMP is<br />

TIME_<strong>ST</strong>AMP_LEN : constant := 20;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

54 von/of: 662<br />

subtype TIME_<strong>ST</strong>AMP is <strong>ST</strong>RING (1..TIME_<strong>ST</strong>AMP_LEN);<br />

function time_stamp_str (date_and_time : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME) return<br />

TIME_<strong>ST</strong>AMP;<br />

end TIME<strong>ST</strong>AMP;


Space Infrastructure<br />

4.6.5 File Information<br />

4.6.5.1 File Names and Locations<br />

4.6.5.1.1 Session Error Log<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

55 von/of: 662<br />

<strong>CGS</strong>I creates a Session Error Log which is found in the directory $<strong>CGS</strong>_HOME/data/log under the following<br />

name:<br />

– ..log<br />

– is the host name of the workstation at which the user is logging in<br />

– is specified n <br />

4.6.5.1.2 Process Response Log<br />

<strong>CGS</strong>I creates a log of all responses (Acks) which is found in the directory $<strong>CGS</strong>_HOME/data/log under the<br />

following name:<br />

– ..ack<br />

– is the host name of the workstation at which the user is logging in<br />

– is specified n


Space Infrastructure<br />

4.6.6 Installation Registry<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

56 von/of: 662<br />

<strong>CGS</strong> (<strong>CGS</strong>I) provides an interface to enter or update entries in a specific registry table, called Version ID Table.<br />

It allows for registering a software item (e.g. version of a software package, a patch or update etc)<br />

The table is located in the $GSAF_HOME file system and is owned by the <strong>CGS</strong> Administrator user.<br />

A program vit_manager is available under $<strong>CGS</strong>I_HOME/bin/sun5 which can be called on any SUN node<br />

having visibility to $GSAF_HOME as the <strong>CGS</strong> Administrator user with the following parameters:<br />

Version ID Table Manangement: List or modify the Version ID Table (VIT).<br />

vit_manager –help | –list | –upd_item |<br />

–add_item | –del_item |<br />

–query {|ALL} [–format format–list]<br />

Parameters:<br />

–help<br />

–– get help info<br />

–list<br />

–– List the contents of the VIT<br />

–upd_item <br />

–– update of with . Entry is tametagged with actual time.<br />

–upd_entry <br />

–– update of with . Entry is tametagged with actual time.<br />

–add_item <br />

–– Add a new entry (at the bottom) to the VIT. Entry is tametagged with actual time.<br />

–del_item <br />

–– Delete the entry with name = from the VIT<br />

–query |ALL [–format format–list]<br />

–– query the VIT for a given SW item/product or all items<br />

–– the output can be formatted according to an optional format–list<br />

–– format–list must be a single parameter with a comma<br />

–– or blank separated list of format identifier<br />

–– legal format identifier are<br />

–– product,version,host,date,time,path<br />

where :<br />

: Name of SW item (max. 20 characters)<br />

may be<br />

’SW_ITEM’ : Name of SW item (max. 20 characters)<br />

’VERSION’ : Version of SW item (max. 20 characters)<br />

’HO<strong>ST</strong>’ : Host where SW item is installed (max. 20 characters)<br />

’PATH’ : Directory where SW item is installed (max. 255 characters)<br />

: Number of entry in the VIT Table


Space Infrastructure<br />

4.7 Other Commercial Products Version<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

57 von/of: 662<br />

This section specifies the versions and revision levels of other commercial software products used within a <strong>CGS</strong><br />

version.<br />

Note 1: The compilers used for development of <strong>CGS</strong> are listed to describe the development baseline, neglecting<br />

the fact that the items are not included in the <strong>CGS</strong>I product.<br />

Product Platform Commercial Product Version<br />

Development SUN VADSself (RATIONAL) 6.2.3d<br />

Products incl. Ada XVIEWS Bindings<br />

XView Runtime <strong>System</strong> patch<br />

(COL–RIBRE–SRO–119)<br />

SUN Sun (ANSI C) Compiler 4.2<br />

SUN VisualWorks 3.0<br />

SUN MATRIXx 4.1<br />

SUN SAMMI 3.0.12 (***)<br />

HP Alsys Ada (Thompson Prod.) 5.5.4<br />

plus patches:<br />

0062V554–U1<br />

0062V554–U2<br />

0062V554–U3<br />

0062V554–U4<br />

0062V554–G1<br />

HP HP C–Compiler (ANSI–C)<br />

FORCE VADSself (RATIONAL) 6.2.3c plus<br />

Patch 81275<br />

FORCE SUN (ANSI–C) Compiler 3.0.1<br />

Runtime Products SUN NTP Version 3 (*)<br />

HP NTP Version 3 (**)<br />

SUN TCL 7.5 (****)<br />

SUN TCLX 7.5.2 (****)<br />

SUN TK 4.1 (****)<br />

SUN oratcl 2.4b3 (****)<br />

(*) Products so marked are an integral part of SOLARIS (Solaris 2.6 Server)<br />

(**) Products so marked are an integral part of HP–UX<br />

(***) Products so marked require runtime licenses for RTE and FE parts<br />

(****) Tcl/Tk is delivered as part of the <strong>CGS</strong> installation; no license is required


Space Infrastructure<br />

4.8 <strong>CGS</strong>_Library<br />

4.8.1 Informal <strong>Interface</strong><br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

58 von/of: 662<br />

The <strong>CGS</strong>_Library is a set of re–usable Ada packages that provide services in the following areas:<br />

– Abstract Data Types<br />

Ada Type definitions and Utility packages These packages provide re–usable implementation of data<br />

structures such as lists, stacks, maps, tables, streams, sets, queues, buffers, strings, time etc.<br />

– Operating <strong>System</strong> <strong>Interface</strong> in Ada.<br />

The interface to selected UNIX services is provided<br />

– Mathematical <strong>Service</strong>s<br />

Mathematical packages providing operations on elements such as matrix and complex numbers are provided.<br />

4.8.2 Formal <strong>Interface</strong><br />

For the formal definition of the packages refer to AD 2.1.4.1 .


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 5 :<br />

SOFTWARE<br />

DEVELOPMENT<br />

INTERFACES<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

59 von/of: 662


Space Infrastructure<br />

5.1 Documentation Format<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

60 von/of: 662<br />

This interface defines the conventions that the external documents must follow in order for the SDE to be able<br />

to incorporate them into its data bank and thereby put them under version control.<br />

The conventions can be divided into three categories: format, location and filename conventions.<br />

The format conventions contain mandatory and optional conventions. The mandatory format conventions specify<br />

general format conventions (ie the document must be in TPS ASCII format) and, in case of book and binder<br />

documents, the organisation of the documents. The optional format conventions specify a number of DOCT<br />

component conventions that must be followed if the tables of contents of the target document must include items<br />

from the imported document.<br />

The filename conventions specifies the name and directory conventions that the document file(s) must follow.<br />

The location conventions specify where the document files must be located.<br />

If a document meets the above mentioned conventions, then it is possible within the SDE to incorporate it into<br />

the SDE data bank.<br />

Documents will be imported into the SDE database via the DOCT MMI.<br />

Documents to be imported can be located anywhere in the file system. Via the DOCT MMI, the user can copy<br />

these documents into the clipboard and then from the clipboard into an existing IPSE controlled book or binder<br />

and notify the IPSE that the documents have been pasted. The IPSE will then read the contents of the book or<br />

binder, create corresponding objects in the SDE data bank, if necessary, and read in the new document contents.<br />

In any case, the IPSE MMI forbids the pasting of documents in a checked–in document object. This implies that<br />

the document must be checked–out if pasting is required.<br />

Formal <strong>Interface</strong> Description<br />

The conventions for documents format, document location and document file names are described in applicable<br />

document 2.1.5.4.


Space Infrastructure<br />

5.1.1 Format of Imported Documents<br />

5.1.1.1 <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

61 von/of: 662<br />

This interface describes the conventions that documents must followed in order to be imported into a SDE document.<br />

These conventions can be summarized as follows:<br />

• Documents must comply with the Interleaf ASCII format and file naming conventions.<br />

• In addition to this, the templates for standard SDE Interleaf documents will define (in Interleaf catalogues)<br />

the masters for a pre–defined set of components in order to:<br />

• comply with the lay-out style in the rest of the book, concerning for instance page headers and<br />

footers and section headers;<br />

• define section headers and other items that will later be inserted in the ”tables of contents” of<br />

the Interleaf book (via the normal Interleaf facilities)<br />

5.1.1.2 <strong>Interface</strong> Definition<br />

5.1.1.2.1 Document Location Conventions<br />

A document which is to be imported shall be located in an existing directory in the file system.<br />

5.1.1.2.2 Document Filename Conventions<br />

In this section, the following definition applies: An importable document is either an Interleaf BOOK, an Interleaf<br />

BINDER, an Interleaf DOCUMENT or an Interleaf CATALOGUE. The BOOK, BINDER, DOCUMENT<br />

and CATALOGUE shall have file names as described in AD [2.1.5.4].<br />

The user must have read access to all document files which are to be imported.<br />

The structure of importable documents must comply with the following definition:<br />

• A document which is of Interleaf BOOK type shall contain zero or more sub–BOOKs, zero or more<br />

BINDERs, zero or more CATALOGUEs and zero or more DOCUMENTs<br />

• A document which is of type Interleaf type BINDER shall contain zero or more sub–BINDERs and zero<br />

or more CATALOGUEs<br />

• A document which is of type INTERLEAF CATALOGUE shall contain one or more COMPONENTs.<br />

This is further described below.<br />

• A document which is of Interleaf type DOCUMENT shall contain one or more COMPONENTs. This<br />

is further described below.<br />

There must not exist a cyclic containment relation between BOOKs and sub–BOOKs and between BINDERs<br />

and sub–BINDERs. This means that a BOOK must not contain (a reference to) itself through any of its sub–<br />

BOOKs (Interleaf permits cyclic containment, through UNIX soft links, of containers in general because a container<br />

is implemented as a UNIX directory). A similar restriction holds for BINDERs.<br />

5.1.1.2.3 Importable DOCUMENT Contents<br />

The contents of DOCUMENTS and BINDERS to be imported in SDE documents shall comply to the format<br />

defined in AD [2.1.5.4].


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

62 von/of: 662<br />

In addition, all chapter and section header components in a DOCUMENT that are meant to be inserted in the<br />

”table of contents” documents shall obey the following restrictions:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

All appendix and sub–appendix headers that are meant to be inserted in the ”table of contents” document shall<br />

be TPS components with one of the following names:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

All figures and headers that are meant to be inserted in the ”table of figures” document shall be TPS components<br />

with one of the following names:<br />

<br />

<br />

<br />

<br />

All tables that are meant to be inserted in the ”table of tables” document shall be TPS components with the following<br />

name:<br />

<br />

The following TPS frame shall be used to establish the header and footer of the document:<br />

<br />

Except for , each provided Interleaf master component whose name can be found in the lists above<br />

defines a name for the associated ”table of contents” document. An instance of the predefined master component<br />

will be written to this document upon user request (the TOC generation operation). The component’s associated<br />

”table of contents” document is defined through the value of the component’s TOC Doc Name property field<br />

of its Custom sheet for the component’s property sheet. For any of the predefined masters the value for the<br />

TOC Doc Name property field is one of: contents, figures and tables.<br />

The names of all other components which are not meant to be inserted into the above mentioned documents shall<br />

be different from those listed above and each component’s TOC Doc Name property field shall be distinct from<br />

any of the a.m. TOC Doc Name values.<br />

The masters for all the components listed in this section will be provided in a catalogue within each of the standard<br />

SDE document templates.


Space Infrastructure<br />

5.2 Generic Compiler <strong>Interface</strong><br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

63 von/of: 662<br />

This chapter comprises interfaces which are used if new compiler environments for Ada or C are to be integrated<br />

into the SDE. The aim is to allow a compiler environment integrator to implement commands on top of any compiler<br />

system to be integrated into the SDE such that an SDE user may be able to utilize these compiler systems<br />

without being forced to leave the SDE. Thereby input as well as output data shall be version controlled on user<br />

request.<br />

An integrator will implement specified commands externally to the SDE such that this SDE external interface<br />

will consist of a specific ’generic’ command protocol (language) whichs syntax and semantic is known by the<br />

SDE.<br />

5.2.1 Generic C Compiler Environment Integration <strong>Interface</strong><br />

See applicable document 2.1.5.1.<br />

5.2.2 Generic Ada Compiler Environment Integration <strong>Interface</strong><br />

See applicable document 2.1.5.2.


Space Infrastructure<br />

5.3 Generic Tool <strong>Interface</strong><br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

64 von/of: 662<br />

This section comprises interfaces which are used if new tools/commercial software are to be integrated into the<br />

SDE. The aim is to allow a tool integrator to implement commands on top of any tool to be integrated into the<br />

SDE such that an SDE user may be able to utilize these tools without being forced to leave the SDE. Thereby<br />

input as well as output data shall be version controlled on user request.<br />

An integrator will implement specified commands externally to the SDE such that this SDE external interface<br />

will consist of a protocol (language) whichs syntax and semantic is known by the SDE.<br />

Formal <strong>Interface</strong> Description<br />

See applicable document 2.1.5.3.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 6 :<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

65 von/of: 662<br />

MISSION PREPARATION<br />

INTERFACES


Space Infrastructure<br />

6.1 Package MPS_DEFINITIONS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

66 von/of: 662<br />

Please note that this package is not allowed outside <strong>CGS</strong> by other Products than CMAS !!!<br />

6.1.1 Exceptions<br />

6.1.1.1 Exceptions due to internal MDB / ORACLE errors<br />

– MDB_ERROR<br />

This exception is raised if an operation cannot be completed because of an internal error in MPS–provided<br />

procedures<br />

– ORACLE_ERROR<br />

This exception is raised if an operation cannot be completed because of a malfunction of the Oracle<br />

DBMS (e.g. database is not available)<br />

6.1.1.2 SID_ERROR<br />

The SID does not exist in the current context, i.e. within the scope of the currently selected CCU version. The<br />

CCU version is specified by the procedure MDB_SESSION.SET_LOCAL_DEFAULT.<br />

All procedures having the ‘in parameter’ SID can raise this exception.<br />

6.1.1.3 AUTHORIZATION_ERROR<br />

This exception is raised if an operation cannot be executed due to the fact that a user<br />

has insufficient privilege.<br />

In general this exception is raised if<br />

– the user is not owner of the item specified by SID<br />

– the status of the item is FROZEN<br />

– the status of the item is REVIEW and the user has no configuration management privilege<br />

6.1.1.4 USE_ERROR<br />

This exception is raised if an operation is incorrect in the current context.<br />

Examples:<br />

* try to call procedures without being connected to the MDB<br />

* try to open the MDB when it is already open<br />

6.1.1.5 ENVIRONMENT_ERROR , CDU/CCU_ERROR<br />

– ENVIRONMENT_ERROR<br />

This exception is raised if an operation cannot be completed because of wrong or invalid mission–,system<br />

tree–, flight–configuration– identifiers.<br />

– CDU_ERROR<br />

This exception is raised if an operation cannot be completed because of wrong or invalid CDU/ CDU–<br />

version identifiers<br />

– CCU_ERROR<br />

This exception is raised if an operation cannot be completed because of wrong or invalid CCU/CCU–<br />

version identifiers


Space Infrastructure<br />

6.1.1.6 PARAMETER_ERROR<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

67 von/of: 662<br />

This exception is raised if an operation cannot be completed because of wrong or invalid input parameter<br />

(in all cases where the input parameter is not related to SID’s, CDU’s, CCU’s or Environment)<br />

6.1.1.7 CONSI<strong>ST</strong>ENCY_ERROR<br />

This exception is raised if an attempt is made to access an item that is in an ”inconsistent” state (i.e. doesn’t<br />

satisfy the predefined integrity/consistency rules)


Space Infrastructure<br />

6.1.2 Formal Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– MPS_DEFINITIONS<br />

––<br />

–– This package contains all MPS specific types and definitions used by <strong>CGS</strong><br />

–– in addition to the standard ADA types.<br />

––<br />

–– Unit : Package specification<br />

––<br />

–– Special features : The package NUMERIC_TYPES is directly visible<br />

–– because the ’use’ clause is used.<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– History of changes<br />

––<br />

–– Authorizing document : COL–<strong>CGS</strong>–IRN–3020B<br />

–– Date : May 1995<br />

–– Change summary : – Introduction of HLCL sequences,<br />

–– – Introduction of exception LOCKING_PROBLEM<br />

–– – Simplification of the header<br />

–– – Introduction of CSS specific SW type<br />

–– definition<br />

–– – Introduction of <strong>CGS</strong> spcific end item type<br />

–– definitions<br />

–– – Deletion of unused EGSE end item types<br />

–– Author : E. Herrmann<br />

––<br />

–– Authorizing document : COL–RIBRE–IRN–<strong>CGS</strong>–4002<br />

–– Date : Feb 1996<br />

–– Change summary : <strong>CGS</strong> V3.1 Baseline definition:<br />

–– CPL & SW Commanding<br />

–– Authors : F.Kruse, A.Werkman, C.Seelhorst<br />

––<br />

–– Authorizing document : COL–RIBRE–IRN–<strong>CGS</strong>–4002a<br />

–– Date : July 1996<br />

–– Change summary : Use T_SW_VALUE instead of T_SW_SCALAR_VALUE<br />

–– in T_FORMAL_PARAMETER, introduce new type<br />

–– T_SW_VALUE_<strong>ST</strong>REAM.<br />

–– Add ASSIGN for T_SW_VALUE<br />

–– and DEALLOCATE for T_ACCESS_SW_VALUE.<br />

–– Add support for ADT_PACKING mechanism :<br />

–– provide procedures PACK and UNPACK<br />

–– and function SIZE_NEEDED.<br />

––<br />

–– Authorizing document : COL–RIBRE–IRN–<strong>CGS</strong>–4002b<br />

–– Date : September 1996<br />

–– Change summary : Initialize type T_ENGINEERING_UNIT with<br />

–– default values<br />

–– Authors : A. Werkman<br />

––<br />

–– Date : May 1997<br />

–– Change summary : Remove Fault Management related types<br />

–– Authors : W. St.Luce<br />

––<br />

––<br />

–– Authorizing document : PIRN–7064<br />

–– Date : 02.02.1998<br />

–– Change summary : Procedures<br />

–– DEALLOCATE(GARBAGE :<br />

–– in out T_ACCESS_FORMAL_PARAMETER)<br />

–– and<br />

–– CLEAR(<strong>ST</strong>REAM : in out T_FORMAL_PARAMETER_LI<strong>ST</strong>)<br />

–– inserted<br />

–– Author : I. Lenz<br />

––<br />

–– Authorizing document : COL–RIBRE–IRN–8079<br />

–– Date : 03.08.1999<br />

–– Change summary : Add new end item types EGSE_XXX_DERIVED_VALUE<br />

–– Author : I. Lenz<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

68 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Repository History tracking:<br />

––<br />

–– HI<strong>ST</strong>ORY<br />

––<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–4002 : <strong>CGS</strong> V3.1 Baseline definition<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–4002a : change in T_FORMAL_PARAMETER<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–4002b : change in type T_ENGINEERING_UNIT<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–5007 : add constants for bytestream/eng. valuetype<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–6002 : add ASSIGN procedure for T_SW_TYPE_DESCR<br />

–– add type EGSE_BINARY_PACKET<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–7005 : remove fault management related types<br />

–– New enditem type: Response Packet<br />

–– New domain: USER_DEF_SIDS<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with <strong>ST</strong>ATIC_<strong>ST</strong>RINGS;<br />

with DYNAMIC_<strong>ST</strong>RINGS;<br />

with <strong>ST</strong>REAMS;<br />

with LIMITED_<strong>ST</strong>REAMS;<br />

with <strong>ST</strong>RING_POINTERS;<br />

with UNITS;<br />

with ADT_PACKING;<br />

with NUMERIC_TYPES; use NUMERIC_TYPES;<br />

––––––––––––––––––––––––––––––––––––––––––<br />

package MPS_DEFINITIONS is<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– EXCEPTIONS<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Exceptions due to internal MDB / ORACLE errors:<br />

ORACLE_ERROR, –– This exception is raised if an operation cannot be<br />

–– completed because of a malfunction of the Oracle<br />

–– DBMS (e.g. database is not available)<br />

MDB_ERROR, –– This exception is raised if an operation cannot be<br />

–– completed because of an internal error in<br />

–– MDA–provided procedures<br />

CONSI<strong>ST</strong>ENCY_ERROR, –– This exception is raised if an attempt is made to<br />

–– access an item that is in an ”inconsistent” state<br />

–– (i.e. doesn’t satisfy the predefined integrity or<br />

–– consistency rules)<br />

–– Exceptions due to illegal or incorrect use of provided procedures:<br />

USE_ERROR, –– This exception is raised if an operation is<br />

–– incorrect in the current context.<br />

–– Examples:<br />

–– * try to call procedures without being connected<br />

–– to the MDB<br />

–– * try to open the MDB when it is already open<br />

–– * try to close the MDB without being connected<br />

–– * try to call READ_ITEM procedure where the<br />

–– item–type of the sid doesn’t match.<br />

–– * try to call <strong>ST</strong>ORE_ITEM without calling<br />

–– LOCK_ITEM previously<br />

SID_ERROR, –– This exception is raised if the MDB item denoted by<br />

–– the SID doesn’t exist in the current context,<br />

–– i.e. within the scope of the currently selected CCU<br />

–– version.<br />

AUTHORIZATION_ERROR, –– This exception is raised if an operation cannot be<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

69 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– executed because of the fact that a user has<br />

–– insufficient privileges<br />

–– Examples:<br />

–– * try to lock an item for update purposes which<br />

–– is in a frozen CDU version<br />

–– * try to lock an item which the status REVIEW<br />

–– without having configuration management<br />

–– privilege.<br />

–– * try to lock an item for update purposes which<br />

–– belongs to another user<br />

PARAMETER_ERROR, –– This exception is raised if an operation cannot be<br />

–– completed because of wrong or invalid input<br />

–– parameter (in all cases where the input parameter<br />

–– is not related to SID’s, CDU’s, CCU’s or<br />

–– Environment)<br />

ENVIRONMENT_ERROR, –– wrong element, mission or systemtree version<br />

–– identifier<br />

CCU_ERROR, –– wrong or invalid CCU/,CCU–version identifier<br />

CDU_ERROR, –– wrong or invalid CDU/, CDU–version identifier<br />

LOCKING_PROBLEM –– Some procedures of the packages MDB_UCL<br />

–– and MDB_WDU_GROUND have to re–lock the updated<br />

–– and committed item.<br />

–– If this lock fails because item is locked<br />

–– by another user the exception LOCKING_PROBLEM is<br />

–– raised.<br />

: exception;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Types and Constants :<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

–– strings<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

type DYNAMIC_<strong>ST</strong>RING is new DYNAMIC_<strong>ST</strong>RINGS.DYNAMIC_<strong>ST</strong>RING;<br />

package <strong>ST</strong>ATIC_<strong>ST</strong>RINGS80 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS(80);<br />

type <strong>ST</strong>ATIC_<strong>ST</strong>RING80 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS80.<strong>ST</strong>ATIC_<strong>ST</strong>RING;<br />

package <strong>ST</strong>ATIC_<strong>ST</strong>RINGS256 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS(256);<br />

type <strong>ST</strong>ATIC_<strong>ST</strong>RING256 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS256.<strong>ST</strong>ATIC_<strong>ST</strong>RING;<br />

package <strong>ST</strong>ATIC_<strong>ST</strong>RINGS1024 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS(1024);<br />

type <strong>ST</strong>ATIC_<strong>ST</strong>RING1024 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS1024.<strong>ST</strong>ATIC_<strong>ST</strong>RING;<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

–– byte stream<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

package BYTE_<strong>ST</strong>REAMS is new <strong>ST</strong>REAMS (BYTE,<br />

BYTE_ARRAY);<br />

type T_BYTE_<strong>ST</strong>REAM is new BYTE_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

–– using this type in other packages there must be specified<br />

–– the average number of items(BYTE) for space allocation purposes<br />

–– Example:<br />

–– subtype MY_BYTE_<strong>ST</strong>REAM is MPS_DEFINITIONS.T_BYTE_<strong>ST</strong>REAM(20)<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

–– character stream<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

package CHAR_<strong>ST</strong>REAMS is new <strong>ST</strong>REAMS (CHARACTER,<br />

<strong>ST</strong>RING);<br />

type T_CHAR_<strong>ST</strong>REAM is new CHAR_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

–– using this type in other packages there must be specified<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

70 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– the average number of items (CHARACTER) for space allocation purposes<br />

–– Example:<br />

–– subtype MY_CHAR_<strong>ST</strong>REAM is MPS_DEFINITIONS.T_CHAR_<strong>ST</strong>REAM(20)<br />

––––––––––––––––––<br />

–– MPS constants<br />

––––––––––––––––––<br />

MAX_VERSION : constant := 999; –– maximal version number<br />

MAX_NAME_LENGTH : constant := 16;<br />

––––––––––––––––––––––––––––<br />

–– Operating Sytem User Name<br />

––––––––––––––––––––––––––––<br />

USER_NAME_LEN : constant := 30;<br />

subtype USER_NAME_INDEX is INTEGER range 1 .. USER_NAME_LEN;<br />

subtype USERNAME is <strong>ST</strong>RING (USER_NAME_INDEX);<br />

––––––––––––––––––––––––––––––––––––––<br />

–– Long Identifier (Pathname) for Item<br />

––––––––––––––––––––––––––––––––––––––<br />

NULL_PATHNAME : constant <strong>ST</strong>RING := ””;<br />

ROOT_PATHNAME : constant <strong>ST</strong>RING := ”\”;<br />

NODE_NAME_SEPARATOR : constant <strong>ST</strong>RING := ”\”;<br />

––––––––––––––––––––––––––––––––––<br />

–– Short Identifier (SID) for Item<br />

––––––––––––––––––––––––––––––––––<br />

type SID is new UNSIGNED_INTEGER32;<br />

–– NULL_SID is set in all cases where a pathname does not exist<br />

NULL_SID : constant SID := 0;<br />

–– this is the parent’s sid of the element configuration (i.e. APM or MTFF)<br />

ROOT_SID : constant SID := 1;<br />

type T_SID_ARRAY is array (POSITIVE range ) of SID;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Long Identifier (Pathname, Subitem_Name) for Subitem<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

subtype T_SUBITEM_NAME is <strong>ST</strong>RING (1 .. MAX_NAME_LENGTH);<br />

NULL_SUBITEM_NAME : constant T_SUBITEM_NAME := (others => ’ ’);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Short Identifier (SID, Subitem_Id) for Subitem<br />

–––––––––––––––––––––––––––––––––––––––––––––––––<br />

type SUBITEM_ID is new UNSIGNED_INTEGER32;<br />

NULL_SUBITEM_ID : constant SUBITEM_ID := 0;<br />

––––––––<br />

–– Names<br />

––––––––<br />

subtype T_NAME is <strong>ST</strong>RING (1 .. MAX_NAME_LENGTH);<br />

subtype T_ELEMENT_CONFIGURATION_NAME is T_NAME;<br />

type T_ELEMENT_CONFIGURATION_ARRAY is array (POSITIVE range ) of<br />

T_ELEMENT_CONFIGURATION_NAME;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

71 von/of: 662


Space Infrastructure<br />

subtype T_MISSION_NAME is T_NAME;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_MISSION_ARRAY is array (POSITIVE range ) of T_MISSION_NAME;<br />

subtype T_CONFIGURATION_NAME is <strong>ST</strong>RING (1 .. MAX_NAME_LENGTH);<br />

subtype T_ITEM_NAME is T_NAME;<br />

subtype T_MDB_IN<strong>ST</strong>ANCE is T_NAME;<br />

–––––––––––––––––––––––––––––––––<br />

–– SY<strong>ST</strong>EM– / CDU– / CCU– Version<br />

–––––––––––––––––––––––––––––––––<br />

subtype T_VERSION_NUMBER is INTEGER range 0 .. MAX_VERSION;<br />

type T_SY<strong>ST</strong>EMTREE_VERSION_ARRAY is array (POSITIVE range ) of<br />

T_VERSION_NUMBER;<br />

type T_VERSION is<br />

record<br />

VERSION : T_VERSION_NUMBER;<br />

ISSUE : T_VERSION_NUMBER;<br />

REVISION : T_VERSION_NUMBER;<br />

end record;<br />

NO_VERSION : constant T_VERSION := (0,0,0);<br />

type T_CDU_VERSION(TE<strong>ST</strong> : BOOLEAN := FALSE) is<br />

record<br />

VERSION : T_VERSION;<br />

case TE<strong>ST</strong> is<br />

when TRUE =><br />

TE<strong>ST</strong>VERSION : T_VERSION_NUMBER;<br />

MDB_IN<strong>ST</strong>ANCE : T_MDB_IN<strong>ST</strong>ANCE;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

NO_CDU_VERSION : constant T_CDU_VERSION := (FALSE,VERSION => (0,0,0));<br />

type T_VERSION_<strong>ST</strong>ATUS is (NONE,<br />

REVIEW,<br />

DEVELOPMENT,<br />

FROZEN);<br />

type T_CONSI<strong>ST</strong>ENCY_<strong>ST</strong>ATUS is (NONE,<br />

LOCAL_INVALID,<br />

LOCAL_VALID,<br />

GLOBAL_VALID);<br />

–––––––––––––<br />

–– CDU Domain<br />

–––––––––––––<br />

type T_CDU_DOMAIN is (NONE,<br />

<strong>CGS</strong>,<br />

EGSE,<br />

CSS,<br />

UCL_LIBRARY,<br />

SYMBOL_LIBRARY,<br />

USER_DEF_SIDS,<br />

SDDF);<br />

–––––––––––––<br />

–– Item Types<br />

–––––––––––––<br />

type T_ITEM_TYPE is (NONE,<br />

–– EGSE specific types<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

72 von/of: 662


Space Infrastructure<br />

–– measurements:<br />

EGSE_INTEGER_MEASUREMENT,<br />

EGSE_FLOAT_MEASUREMENT,<br />

EGSE_DISCRETE_MEASUREMENT,<br />

EGSE_BYTE_<strong>ST</strong>REAM_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_DISCRETE_SW_VARIABLE,<br />

EGSE_BYTE_<strong>ST</strong>REAM_SW_VARIABLE,<br />

–– derived values:<br />

EGSE_INTEGER_DERIVED_VALUE,<br />

EGSE_FLOAT_DERIVED_VALUE,<br />

EGSE_DISCRETE_DERIVED_VALUE,<br />

EGSE_<strong>ST</strong>RING_DERIVED_VALUE,<br />

–– stimuli / predefined TC:<br />

EGSE_ANALOG_<strong>ST</strong>IMULUS,<br />

EGSE_DISCRETE_<strong>ST</strong>IMULUS,<br />

EGSE_PREDEFINED_TC,<br />

EGSE_BINARY_PACKET,<br />

–– others:<br />

–– CSS specific types<br />

–– item types<br />

EGSE_MONITOR_LI<strong>ST</strong>,<br />

GDU_DESCRIPTION_LI<strong>ST</strong>,<br />

ADU_DESCRIPTION,<br />

SIMULATED_ADU_DESCRIPTION,<br />

EGSE_USER_MESSAGE,<br />

EGSE_NODE,<br />

EGSE_TE<strong>ST</strong>_CONFIGURATION,<br />

EGSE_SOFTWARE,<br />

TOPLEVEL_COMPOSITE_FB,<br />

COMPOSITE_FB,<br />

–– end item types<br />

CON<strong>ST</strong>ANT_FB,<br />

ASYNCHRONOUS_FB,<br />

SYNCHRONOUS_FB,<br />

–– common types<br />

DOUBLE_FLOAT_MEASUREMENT,<br />

BOOLEAN_MEASUREMENT,<br />

UNSIGNED_INTEGER_MEASUREMENT,<br />

DOUBLE_FLOAT_SW_VARIABLE,<br />

BOOLEAN_SW_VARIABLE,<br />

UNSIGNED_INTEGER_SW_VARIABLE,<br />

DOUBLE_FLOAT_<strong>ST</strong>IMULUS,<br />

BOOLEAN_<strong>ST</strong>IMULUS,<br />

UNSIGNED_INTEGER_<strong>ST</strong>IMULUS,<br />

INTEGER_<strong>ST</strong>IMULUS,<br />

PULSE_<strong>ST</strong>IMULUS,<br />

BUR<strong>ST</strong>_PULSE_<strong>ST</strong>IMULUS,<br />

VIRTUAL,<br />

CDU,<br />

GENERAL_PURPOSES,<br />

SWEU,<br />

SWRU,<br />

INTEGER_CON<strong>ST</strong>ANT,<br />

REAL_CON<strong>ST</strong>ANT,<br />

<strong>ST</strong>RING_CON<strong>ST</strong>ANT,<br />

UCL_AUTOMATED_PROCEDURE,<br />

UCL_USER_LIBRARY,<br />

UCL_SY<strong>ST</strong>EM_LIBRARY,<br />

HLCL_COMMAND_SEQUENCE,<br />

CPL_SCRIPT,<br />

SWOP_COMMAND,<br />

RESPONSE_PACKET,<br />

APID,<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

73 von/of: 662


Space Infrastructure<br />

CCSDS_END_POINT,<br />

WDU_GROUND_SYMBOL,<br />

WDU_GROUND_SYNOPTIC_DISPLAY,<br />

OTHER);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_ITEM_TYPE_SET is array (MPS_DEFINITIONS.T_ITEM_TYPE) of BOOLEAN;<br />

–––––––––––––––––––––––––––––––<br />

–– Subitem Types (for CSS)<br />

–––––––––––––––––––––––––––––––<br />

type T_SUBITEM_TYPE is (NONE,<br />

FB_IO_INPUT,<br />

FB_IO_OUTPUT);<br />

type T_SUBITEM_TYPE_SET is array (MPS_DEFINITIONS.T_SUBITEM_TYPE) of BOOLEAN;<br />

––––––––––––––<br />

–– State Code<br />

––––––––––––––<br />

type <strong>ST</strong>ATE_CODE is new <strong>ST</strong>RING (1..8);<br />

type T_<strong>ST</strong>ATE_CODE_ARRAY is array (POSITIVE range ) of <strong>ST</strong>ATE_CODE;<br />

package <strong>ST</strong>ATE_CODE_<strong>ST</strong>REAMS is new <strong>ST</strong>REAMS (<strong>ST</strong>ATE_CODE,<br />

T_<strong>ST</strong>ATE_CODE_ARRAY);<br />

type T_<strong>ST</strong>ATE_CODE_LI<strong>ST</strong> is new <strong>ST</strong>ATE_CODE_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

–– using this type in other packages there must be specified<br />

–– the average number of items (<strong>ST</strong>ATE_CODE) for space allocation purposes.<br />

–– Example:<br />

–– subtype MY_<strong>ST</strong>ATE_CODE_LI<strong>ST</strong> is MPS_DEFINITIONS.T_<strong>ST</strong>ATE_CODE_LI<strong>ST</strong>(20)<br />

––––––––––––––<br />

–– Bytestream/String engineering value type<br />

––––––––––––––<br />

MAX_ENGINEERING_<strong>ST</strong>RING_LENGTH : constant := 256;<br />

–– sets the upper limit of a engineering string value<br />

MAX_RAW_<strong>ST</strong>RING_LENGTH: constant := 255;<br />

–– sets the upper limit of a byte stream value<br />

–– Please note that these two values should be equal<br />

–– they are kept like this for historical reasons<br />

–– They will be changed to be the same in the future<br />

–– The redundant definition in must also be changed<br />

–– to comply with this value<br />

subtype T_RAW_<strong>ST</strong>RING is <strong>ST</strong>RING(1..MAX_RAW_<strong>ST</strong>RING_LENGTH);<br />

subtype T_ENGINEERING_<strong>ST</strong>RING is <strong>ST</strong>RING(1..MAX_ENGINEERING_<strong>ST</strong>RING_LENGTH);<br />

––––––––––––––––––––<br />

–– UCL specific Time<br />

––––––––––––––––––––<br />

type UCL_TIME is<br />

record<br />

DAY : NATURAL range 0 .. 31 := 0;<br />

MONTH : NATURAL range 0 .. 12 := 0;<br />

YEAR : NATURAL range 0 .. 2099 := 1;<br />

SECONDS : SINGLE_FLOAT range 0.0 .. 86_400.0 := 0.0;<br />

end record;<br />

for UCL_TIME use<br />

record at mod 8;<br />

DAY at 0*4 range 0 .. 7;<br />

MONTH at 0*4 range 8 .. 15;<br />

YEAR at 0*4 range 16 .. 31;<br />

SECONDS at 1*4 range 0 .. 31;<br />

end record;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

74 von/of: 662


Space Infrastructure<br />

for UCL_TIME’SIZE use 64;<br />

MIN_TIME: constant UCL_TIME := (YEAR => 1901,<br />

MONTH => 1,<br />

DAY => 1,<br />

SECONDS => 0.0);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

MAX_TIME: constant UCL_TIME := (YEAR => 2099,<br />

MONTH => 12,<br />

DAY => 31,<br />

SECONDS => 86400.0 – 2#0.000_000_1#);<br />

–– last in a day<br />

NO_TIME: constant UCL_TIME := (YEAR => 1, –– ~.~<br />

MONTH => 0,<br />

DAY => 0,<br />

SECONDS => 0.0);<br />

–––––––––––––––––––––<br />

–– Engineering Units<br />

–––––––––––––––––––––<br />

package BASE_UNITS is new UNITS(DOUBLE_FLOAT);<br />

subtype T_UNIT is BASE_UNITS.UNIT;<br />

type T_ENGINEERING_UNIT is<br />

record<br />

EXPRESSION : <strong>ST</strong>ATIC_<strong>ST</strong>RING80 := <strong>ST</strong>ATIC (””);<br />

UNIT : T_UNIT := BASE_UNITS.NO_UNIT;<br />

end record;<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

–– Cross Reference List<br />

–––––––––––––––––––––––––––––––––––––––––––<br />

type T_XREF is<br />

record<br />

PATH_NAME : DYNAMIC_<strong>ST</strong>RING;<br />

SHORT_ID : SID;<br />

end record;<br />

type T_XREF_ARRAY is array (POSITIVE range ) of T_XREF;<br />

procedure ASSIGN (TARGET: in out T_XREF; SOURCE: T_XREF);<br />

function ”=” (LEFT, RIGHT: T_XREF) return BOOLEAN ;<br />

procedure DEALLOCATE (GARBAGE : in out T_XREF);<br />

package XREF_<strong>ST</strong>REAMS is new LIMITED_<strong>ST</strong>REAMS (T_XREF,<br />

T_XREF_ARRAY,<br />

ASSIGN,<br />

”=”);<br />

type T_XREF_LI<strong>ST</strong> is new XREF_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

–– using this type in other packages there must be specified<br />

–– the average number of items (T_XREF) for space allocation purposes.<br />

–– Example:<br />

–– subtype MY_XREF_LI<strong>ST</strong> is MPS_DEFINITIONS.T_XREF_LI<strong>ST</strong>(20)<br />

procedure DEALLOCATE (GARBAGE : in out T_XREF_LI<strong>ST</strong>);<br />

–––––––––––––––––––––––––––––––––––––<br />

–– Software Variables Access Classes<br />

–––––––––––––––––––––––––––––––––––––<br />

type T_SW_ACCESS_CLASS is (NONE,<br />

READ,<br />

READ_WRITE,<br />

EXECUTE,<br />

SEND,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

75 von/of: 662


Space Infrastructure<br />

–––––––––––––––––––<br />

–– Completion Code<br />

–––––––––––––––––––<br />

type COMPLETION_CODE is (SUCCESS,<br />

FAILURE,<br />

NONE);<br />

–––––––––––––––––––––––––<br />

–– SW_TYPE related types<br />

–––––––––––––––––––––––––<br />

IMPORT,<br />

PATH_SELECT,<br />

NODE_SELECT);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– The following descriptors make up a UCL type declaration.<br />

–– They describe the software type of database items and formal parameters.<br />

–– For a description of the UCL type concept refer to the UCL Reference<br />

–– Manual and the HLCL Reference Manual.<br />

––<br />

–– Only a subset of the UCL types is supported, the following restrictions<br />

–– apply:<br />

––<br />

–– enumeration types: only predefined COMPLETION_CODE<br />

––<br />

–– array types: max. 3 dimensions<br />

–– index type must be INTEGER<br />

–– lower bounds must be 1<br />

––<br />

–– record types: not allowed<br />

––<br />

–– set types: only predefined BITSET<br />

–– 1. Type classes<br />

––––––––––––––––––<br />

–– These define the basic scalar type class.<br />

–– Further information is needed for arrays, constrained and unitized types.<br />

type T_SW_TYPE is (NONE,<br />

<strong>ST</strong>RING_TYPE,<br />

<strong>ST</strong>ATE_CODE_TYPE,<br />

INTEGER_TYPE,<br />

REAL_TYPE,<br />

BOOLEAN_TYPE,<br />

BITSET_TYPE,<br />

CHARACTER_TYPE,<br />

WORD_TYPE,<br />

PATHNAME_TYPE,<br />

TIME_TYPE,<br />

DURATION_TYPE,<br />

COMPLETION_CODE_TYPE,<br />

SUBITEM_PATHNAME_TYPE,<br />

PULSE_TYPE,<br />

BUR<strong>ST</strong>_PULSE_TYPE,<br />

UNSIGNED_INTEGER_TYPE,<br />

LONG_REAL_TYPE);<br />

–– 2. Type constraints<br />

––––––––––––––––––––––<br />

–– These descriptors define constraints for various UCL types.<br />

–– The discriminant CON<strong>ST</strong>RAINED defines whether there is a constraint<br />

–– or not. Each descriptor is headed with an example in UCL that might<br />

–– be represented withe the descriptor:<br />

type T_INTEGER_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : INTEGER32 := INTEGER32’FIR<strong>ST</strong>;<br />

LA<strong>ST</strong> : INTEGER32 := INTEGER32’LA<strong>ST</strong>;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

76 von/of: 662


Space Infrastructure<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: INTEGER (0 .. 1024)<br />

type T_UNSIGNED_INTEGER_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : UNSIGNED_INTEGER32 := 0;<br />

LA<strong>ST</strong> : UNSIGNED_INTEGER32 := UNSIGNED_INTEGER32’LA<strong>ST</strong>;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: UNSIGNED_INTEGER (0 .. 1024)<br />

type T_REAL_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : SINGLE_FLOAT := SINGLE_FLOAT’FIR<strong>ST</strong>;<br />

LA<strong>ST</strong> : SINGLE_FLOAT := SINGLE_FLOAT’LA<strong>ST</strong>;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: REAL (0.0 .. 1.0)<br />

type T_LONG_REAL_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : DOUBLE_FLOAT := DOUBLE_FLOAT’FIR<strong>ST</strong>;<br />

LA<strong>ST</strong> : DOUBLE_FLOAT := DOUBLE_FLOAT’LA<strong>ST</strong>;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: LONG_REAL (0.0 .. 1.0)<br />

type T_DURATION_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : DOUBLE_FLOAT := 0.0;<br />

LA<strong>ST</strong> : DOUBLE_FLOAT := DOUBLE_FLOAT’LA<strong>ST</strong>;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: DURATION (0.0 [s] .. 1.0 [s])<br />

type T_CHARACTER_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : CHARACTER := CHARACTER’FIR<strong>ST</strong>;<br />

LA<strong>ST</strong> : CHARACTER := CHARACTER’LA<strong>ST</strong>;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: CHARACTER (’a’ .. ’z’)<br />

type T_BOOLEAN_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

77 von/of: 662


Space Infrastructure<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : BOOLEAN := BOOLEAN’FIR<strong>ST</strong>;<br />

LA<strong>ST</strong> : BOOLEAN := BOOLEAN’LA<strong>ST</strong>;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: BOOLEAN (FALSE .. FALSE)<br />

type T_TIME_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : UCL_TIME := MIN_TIME;<br />

LA<strong>ST</strong> : UCL_TIME := MAX_TIME;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: TIME (01.01.1990 12:00:00 .. 31.12.1995 12:00:00)<br />

type T_COMPLETION_CODE_RANGE (CON<strong>ST</strong>RAINED: BOOLEAN := FALSE) is<br />

record<br />

case CON<strong>ST</strong>RAINED is<br />

when TRUE =><br />

FIR<strong>ST</strong> : COMPLETION_CODE := SUCCESS;<br />

LA<strong>ST</strong> : COMPLETION_CODE := FAILURE;<br />

when FALSE =><br />

null;<br />

end case;<br />

end record;<br />

–– Example: COMPLETION_CODE (SUCCESS .. SUCCESS)<br />

–– 3. Array dimensions<br />

––––––––––––––––––––––<br />

–– These types serve to define arrays up to 3 dimensions.<br />

type T_SW_DIMENSIONS is range 0 .. 3;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_SW_INDEX_LI<strong>ST</strong> is array (T_SW_DIMENSIONS range ) of POSITIVE;<br />

–– 4. Software type descriptor<br />

––––––––––––––––––––––––––––––<br />

–– This defines the type. The SW_TYPE discriminant defines the type<br />

–– class, for arrays the type class of the element type.<br />

–– The DIMENSION discriminant defines the array dimension.<br />

–– DIMENSION = 0 defines a scalar type.<br />

–– For each array dimension the BOUNDS field contains the upper bound.<br />

–– The lower bound is understood to be 1. The index type is always INTEGER.<br />

––<br />

–– Each case branch is followed by a UCL example that might be represented<br />

–– with the branch.<br />

type T_SW_TYPE_DESCRIPTOR (SW_TYPE : T_SW_TYPE := NONE;<br />

DIMENSION : T_SW_DIMENSIONS := 0) is<br />

record<br />

BOUNDS: T_SW_INDEX_LI<strong>ST</strong> (1 .. DIMENSION);<br />

case SW_TYPE is<br />

when NONE =><br />

null;<br />

when <strong>ST</strong>RING_TYPE =><br />

<strong>ST</strong>RING_SIZE : NATURAL;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

78 von/of: 662


Space Infrastructure<br />

–– Example: X : string (80);<br />

when <strong>ST</strong>ATE_CODE_TYPE =><br />

<strong>ST</strong>ATE_CODE_LI<strong>ST</strong> : T_<strong>ST</strong>ATE_CODE_LI<strong>ST</strong> (5);<br />

–– Example: X : statecode;<br />

–– X : statecode ($LOW, $MEDIUM, $HIGH);<br />

when INTEGER_TYPE =><br />

INTEGER_RANGE : T_INTEGER_RANGE;<br />

–– Example: X : INTEGER;<br />

–– X : INTEGER (0 .. 255);<br />

when REAL_TYPE =><br />

REAL_UNIT : T_ENGINEERING_UNIT;<br />

REAL_RANGE : T_REAL_RANGE;<br />

–– Example: non–unitized reals:<br />

–– X : REAL;<br />

–– X : REAL (0.0 .. 1.0);<br />

–– Example: unitized reals:<br />

–– X : REAL [m/s];<br />

–– X : REAL (0.0 .. 1.0) [m/s];<br />

when DURATION_TYPE =><br />

DURATION_RANGE : T_DURATION_RANGE;<br />

–– Example: X : DURATION;<br />

–– X : DURATION (0.0 [s] .. 1.0 [s]);<br />

when BOOLEAN_TYPE =><br />

BOOLEAN_RANGE : T_BOOLEAN_RANGE;<br />

–– Example: X : BOOLEAN;<br />

–– X : BOOLEAN (FALSE .. FALSE);<br />

when BITSET_TYPE =><br />

null;<br />

–– Example: X : BITSET;<br />

when CHARACTER_TYPE =><br />

CHARACTER_RANGE : T_CHARACTER_RANGE;<br />

–– Example: X : CHARACTER;<br />

–– X : CHARACTER (’a’ .. ’z’);<br />

when WORD_TYPE =><br />

null;<br />

–– Example: X : WORD;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

when PATHNAME_TYPE =><br />

ITEM_TYPES : T_ITEM_TYPE_SET; –– predefined<br />

OTHER_ITEM_TYPES : <strong>ST</strong>RING_POINTERS.<strong>ST</strong>RING_<strong>ST</strong>REAM(2); –– user defined<br />

PARAMETERIZED : BOOLEAN;<br />

–– Example: non–parameterized pathnames:<br />

–– X : pathname;<br />

–– X : pathname (ANALOG_MEASUREMENT, DISCRETE_MEASUREMENT);<br />

–– Example: parameterized pathnames:<br />

–– X : pathname ();<br />

–– X : pathname (ANALOG_MEASUREMENT, DISCRETE_MEASUREMENT) ();<br />

when SUBITEM_PATHNAME_TYPE =><br />

SUBITEM_TYPES : T_SUBITEM_TYPE_SET;<br />

–– Example: X : pathname.*;<br />

–– X : pathname.* (FB_IO_INPUT);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

79 von/of: 662


Space Infrastructure<br />

end case;<br />

end record;<br />

when TIME_TYPE =><br />

TIME_RANGE : T_TIME_RANGE;<br />

–– Example: X : TIME;<br />

–– X : TIME (00:00:00 .. 12:00:00);<br />

when COMPLETION_CODE_TYPE =><br />

COMPLETION_CODE_RANGE : T_COMPLETION_CODE_RANGE;<br />

–– Example: X : COMPLETION_CODE (SUCCESS .. SUCCESS);<br />

when PULSE_TYPE =><br />

null;<br />

–– Example: X : PULSE;<br />

when BUR<strong>ST</strong>_PULSE_TYPE =><br />

null;<br />

–– Example: X : BUR<strong>ST</strong>_PULSE;<br />

when UNSIGNED_INTEGER_TYPE =><br />

UNSIGNED_INTEGER_RANGE : T_UNSIGNED_INTEGER_RANGE;<br />

–– Example: X : UNSIGNED_INTEGER;<br />

–– X : UNSIGNED_INTEGER (0 .. 255);<br />

when LONG_REAL_TYPE =><br />

LONG_REAL_UNIT : T_ENGINEERING_UNIT;<br />

LONG_REAL_RANGE : T_LONG_REAL_RANGE;<br />

–– Example: non–unitized long reals:<br />

–– X : LONG_REAL;<br />

–– X : LONG_REAL (0.0 .. 1.0);<br />

–– Example: unitized long reals:<br />

–– X : LONG_REAL [m/s];<br />

–– X : LONG_REAL (0.0 .. 1.0) [m/s];<br />

type SW_TYPE_INFO is access T_SW_TYPE_DESCRIPTOR;<br />

procedure DEALLOCATE(GARBAGE : in out T_SW_TYPE_DESCRIPTOR) ;<br />

procedure DEALLOCATE(GARBAGE : in out SW_TYPE_INFO) ;<br />

procedure ASSIGN(TARGET : in out SW_TYPE_INFO;<br />

SOURCE : in SW_TYPE_INFO) ;<br />

procedure ASSIGN(TARGET : in out T_SW_TYPE_DESCRIPTOR;<br />

SOURCE : in T_SW_TYPE_DESCRIPTOR) ;<br />

function ”=” (LEFT,<br />

RIGHT : in T_SW_TYPE_DESCRIPTOR)<br />

return BOOLEAN ;<br />

function EQUAL (LEFT,<br />

RIGHT : in SW_TYPE_INFO)<br />

return BOOLEAN ;<br />

––––––––––––––––––<br />

–– Software Values<br />

––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– The following descriptors describe scalar or structured values.<br />

–– Value descriptors are used to express the value of a database item<br />

–– or the default value of a formal parameter.<br />

–– 1. Scalar value<br />

––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

80 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– A scalar value is represented by its type class (T_SW_TYPE) and a<br />

–– value of the respective type.<br />

type T_SW_SCALAR_VALUE (SW_TYPE: T_SW_TYPE := NONE) is<br />

record<br />

case SW_TYPE is<br />

when NONE => null;<br />

when <strong>ST</strong>RING_TYPE => <strong>ST</strong>RING_VALUE : <strong>ST</strong>ATIC_<strong>ST</strong>RING256;<br />

when <strong>ST</strong>ATE_CODE_TYPE => <strong>ST</strong>ATE_CODE_VALUE : <strong>ST</strong>ATE_CODE;<br />

when INTEGER_TYPE => INTEGER_VALUE : INTEGER32;<br />

when REAL_TYPE => REAL_VALUE : SINGLE_FLOAT;<br />

when BOOLEAN_TYPE => BOOLEAN_VALUE : BOOLEAN;<br />

when BITSET_TYPE => BITSET_VALUE : BITSET;<br />

when CHARACTER_TYPE => CHARACTER_VALUE : CHARACTER;<br />

when WORD_TYPE => WORD_VALUE : UNSIGNED_INTEGER32;<br />

when PATHNAME_TYPE => PATHNAME_VALUE : SID;<br />

when TIME_TYPE => TIME_VALUE : UCL_TIME;<br />

when DURATION_TYPE => DURATION_VALUE : DOUBLE_FLOAT;<br />

when COMPLETION_CODE_TYPE => COMPLETION_CODE_VALUE : COMPLETION_CODE;<br />

when SUBITEM_PATHNAME_TYPE => ITEM_VALUE : SID;<br />

SUBITEM_VALUE : SUBITEM_ID;<br />

when PULSE_TYPE => PULSE_VALUE :BOOLEAN;<br />

when BUR<strong>ST</strong>_PULSE_TYPE => BUR<strong>ST</strong>_PULSE_VALUE : UNSIGNED_INTEGER32;<br />

when UNSIGNED_INTEGER_TYPE => UNSIGNED_INTEGER_VALUE : UNSIGNED_INTEGER32;<br />

when LONG_REAL_TYPE => LONG_REAL_VALUE : DOUBLE_FLOAT;<br />

end case;<br />

end record;<br />

–– Provide T_SW_SCALAR_VALUE’s own packing procedures to support the<br />

–– ADT_PACKING mechanism.<br />

–– They are needed to pach T_SW_VALUE below.<br />

function SIZE_NEEDED (VALUE : T_SW_SCALAR_VALUE)<br />

return ADT_PACKING.T_PACK_INDEX;<br />

procedure PACK (VALUE : in T_SW_SCALAR_VALUE;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

procedure UNPACK (BLOCK : in out ADT_PACKING.T_BLOCK;<br />

VALUE : in out T_SW_SCALAR_VALUE);<br />

–– 2. General value<br />

–––––––––––––––––––<br />

–– The descriptor T_SW_VALUE describes a value of any of the types<br />

–– comprised by the type descriptor T_SW_TYPE_DESCRIPTOR. It covers<br />

–– scalar values and arrays of these values up to 3 dimensions.<br />

type T_SW_VALUE (SW_TYPE : T_SW_TYPE := NONE;<br />

DIMENSION : T_SW_DIMENSIONS := 0) is limited private;<br />

–– The following operations create and destroy values and access the<br />

–– scalar components of a (possibly structured) type.<br />

procedure CREATE (OBJECT : in out T_SW_VALUE;<br />

SW_TYPE : in T_SW_TYPE);<br />

procedure CREATE (OBJECT : in out T_SW_VALUE;<br />

SW_TYPE : in T_SW_TYPE;<br />

BOUNDS : in T_SW_INDEX_LI<strong>ST</strong>);<br />

procedure DE<strong>ST</strong>ROY (OBJECT : in out T_SW_VALUE);<br />

procedure SET_VALUE (OBJECT : in out T_SW_VALUE;<br />

VALUE : in T_SW_SCALAR_VALUE);<br />

procedure SET_VALUE (OBJECT : in out T_SW_VALUE;<br />

INDEX : in T_SW_INDEX_LI<strong>ST</strong>;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

81 von/of: 662


Space Infrastructure<br />

VALUE : in T_SW_SCALAR_VALUE);<br />

procedure GET_VALUE (OBJECT : in T_SW_VALUE;<br />

VALUE : in out T_SW_SCALAR_VALUE);<br />

procedure GET_VALUE (OBJECT : in T_SW_VALUE;<br />

INDEX : in T_SW_INDEX_LI<strong>ST</strong>;<br />

VALUE : in out T_SW_SCALAR_VALUE);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function BOUNDS_OF (OBJECT : in T_SW_VALUE) return T_SW_INDEX_LI<strong>ST</strong>;<br />

procedure ASSIGN (TARGET: in out T_SW_VALUE;<br />

SOURCE: in T_SW_VALUE);<br />

–– As T_SW_VALUE is private and internally uses access types, it is neces–<br />

–– sary to provide its own packing procedures to support the ADT_PACKING<br />

–– mechanism.<br />

function SIZE_NEEDED (VALUE : T_SW_VALUE) return ADT_PACKING.T_PACK_INDEX;<br />

procedure PACK (SW_VALUE : in T_SW_VALUE;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

procedure UNPACK (BLOCK : in out ADT_PACKING.T_BLOCK;<br />

SW_VALUE : in out T_SW_VALUE);<br />

type T_ACCESS_SW_VALUE is access T_SW_VALUE;<br />

procedure DEALLOCATE (GARBAGE : in out T_ACCESS_SW_VALUE);<br />

type T_SW_VALUE_ARRAY is array (POSITIVE range ) of T_ACCESS_SW_VALUE;<br />

package SW_VALUE_<strong>ST</strong>REAMS is new<br />

<strong>ST</strong>REAMS (T_ACCESS_SW_VALUE,<br />

T_SW_VALUE_ARRAY);<br />

type T_SW_VALUE_<strong>ST</strong>REAM is new SW_VALUE_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

type T_SW_SCALAR_VALUE_ARRAY is array (POSITIVE range ) of<br />

T_SW_SCALAR_VALUE;<br />

procedure ASSIGN (TARGET: in out T_SW_SCALAR_VALUE;<br />

SOURCE: in T_SW_SCALAR_VALUE);<br />

package SW_SCALAR_VALUE_<strong>ST</strong>REAMS is new<br />

LIMITED_<strong>ST</strong>REAMS (T_SW_SCALAR_VALUE,<br />

T_SW_SCALAR_VALUE_ARRAY,<br />

ASSIGN);<br />

type T_SW_SCALAR_VALUE_<strong>ST</strong>REAM is new SW_SCALAR_VALUE_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

–––––––––––––––––––––––––––––––––––––––––<br />

–– Formal Parameter List<br />

–––––––––––––––––––––––––––––––––––––––––<br />

–– The following descriptors describe formal parameter lists of<br />

–– database items. For the formal parameter list concept refer to<br />

–– the UCL Reference Manual and the HLCL Reference Manual.<br />

–– 1. Parameter mode<br />

––––––––––––––––––––<br />

type T_FORMAL_PARAMETER_MODE is (NONE,<br />

IN_MODE,<br />

OUT_MODE,<br />

IN_OUT_MODE);<br />

–– 2. Single parameter<br />

––––––––––––––––––––––<br />

–– This describes a single parameter with its name, its mode, its type<br />

–– and its default value, if optional.<br />

––<br />

–– A parameter has a name by which it can be identified in UCL/HLCL.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

82 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Parameter names are identifiers as defined in UCL.<br />

––<br />

–– A parameter may require a single value (LI<strong>ST</strong> = FALSE) or an open<br />

–– list of values (LI<strong>ST</strong> = TRUE). A list of values corresponds to an<br />

–– open array:<br />

–– X : array of <br />

––<br />

–– Parameters may be mandatory (OPTIONAL = FALSE) or optional<br />

–– (OPTIONAL = TRUE). Optional parameters require a default value<br />

–– described with a T_SW_VALUE descriptor.<br />

–– A single value (LI<strong>ST</strong> = FALSE) is represented with a single value<br />

–– descriptor, a list of values (LI<strong>ST</strong> = TRUE) is represented with<br />

–– a stream of single value descriptors.<br />

type T_FORMAL_PARAMETER<br />

(SW_TYPE : T_SW_TYPE := NONE;<br />

DIMENSION : T_SW_DIMENSIONS := 0;<br />

OPTIONAL : BOOLEAN := FALSE;<br />

LI<strong>ST</strong> : BOOLEAN := FALSE)<br />

is<br />

record<br />

TYPE_INFO : SW_TYPE_INFO (SW_TYPE, DIMENSION);<br />

MODE : T_FORMAL_PARAMETER_MODE;<br />

NAME : <strong>ST</strong>ATIC_<strong>ST</strong>RING80;<br />

case OPTIONAL is<br />

when FALSE => null;<br />

when TRUE =><br />

case LI<strong>ST</strong> is<br />

when FALSE => SW_VALUE : T_SW_VALUE (SW_TYPE,<br />

DIMENSION);<br />

when TRUE => SW_VALUE_LI<strong>ST</strong> : T_SW_VALUE_<strong>ST</strong>REAM(2);<br />

end case;<br />

end case;<br />

end record;<br />

type T_ACCESS_FORMAL_PARAMETER is access T_FORMAL_PARAMETER;<br />

–– This operation deallocates memory of T_ACCESS_FORMAL_PARAMETER<br />

–– variable and all included structures.<br />

procedure DEALLOCATE(GARBAGE : in out T_ACCESS_FORMAL_PARAMETER);<br />

–– 3. Parameter list<br />

––––––––––––––––––––<br />

–– A parameter list is represented as a stream of single parameter<br />

–– descriptors.<br />

type T_FORMAL_PARAMETER_ARRAY is array (POSITIVE range ) of<br />

T_ACCESS_FORMAL_PARAMETER;<br />

procedure ASSIGN (TARGET: in out T_ACCESS_FORMAL_PARAMETER;<br />

SOURCE: in T_ACCESS_FORMAL_PARAMETER);<br />

package FORMAL_PARAMETER_<strong>ST</strong>REAMS is new<br />

LIMITED_<strong>ST</strong>REAMS (T_ACCESS_FORMAL_PARAMETER,<br />

T_FORMAL_PARAMETER_ARRAY,<br />

ASSIGN);<br />

type T_FORMAL_PARAMETER_LI<strong>ST</strong> is new FORMAL_PARAMETER_<strong>ST</strong>REAMS.<strong>ST</strong>REAM;<br />

–– This operation deallocates a stream of type T_FORMAL_PARAMETER_LI<strong>ST</strong><br />

–– and all included structures.<br />

procedure CLEAR (<strong>ST</strong>REAM : in out T_FORMAL_PARAMETER_LI<strong>ST</strong>);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PRIVATE PART<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

private<br />

type T_VALUE_ARRAY is array (POSITIVE range ) of T_SW_SCALAR_VALUE;<br />

type T_ACCESS_VALUE_ARRAY is access T_VALUE_ARRAY;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

83 von/of: 662


Space Infrastructure<br />

type T_SW_VALUE (SW_TYPE: T_SW_TYPE := NONE;<br />

DIMENSION: T_SW_DIMENSIONS := 0) is<br />

record<br />

BOUNDS: T_SW_INDEX_LI<strong>ST</strong> (1 .. DIMENSION);<br />

VALUE: T_ACCESS_VALUE_ARRAY;<br />

end record;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

end MPS_DEFINITIONS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

84 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

6.2 MDB Standard Entities and Application Programmer <strong>Interface</strong><br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

85 von/of: 662<br />

The excact definition is specified in applicable document ”MDB Standard Entities and Application Programmer<br />

<strong>Interface</strong>”, ref. 2.1.6.1.


Space Infrastructure<br />

6.3 CLS Global<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

86 von/of: 662<br />

The CLS Global section comprises Ada packages that contain global CLS definitions. They form the basis of<br />

other CLS packages:<br />

6.3.1 General CLS Definitions<br />

The package CLS contains global declarations referenced by all CLS components, e.g. special control<br />

characters, options, all exceptions raised by any of the CLS components.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CLS<br />

––<br />

–– Global CLS declarations:<br />

–– Special control characters.<br />

–– Options for all CLS components.<br />

–– All exceptions raised by any of the CLS components.<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Unit: Package specification<br />

––<br />

–– Author: Franz Kruse, ERNO<br />

––<br />

–– Document:<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Version Date Author SPR Change description<br />

–– ––––––– –––––––– –––––––––– –––– –––––––––––––––––––––––––––––––––––––––––<br />

–– 3.0.0 11.01.94 F. Kruse First issue for V3<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

package CLS is<br />

–– Source formatting characters<br />

–––––––––––––––––––––––––––––––<br />

TAB_CHAR: constant CHARACTER := ASCII.HT; –– Tabulator<br />

SPACE_CHAR: constant CHARACTER := ASCII.US; –– Hard space<br />

SYNC_CHAR: constant CHARACTER := ASCII.SYN; –– Synchronization point<br />

LINE_CHAR: constant CHARACTER := ASCII.LF; –– End of line character<br />

PAGE_CHAR: constant CHARACTER := ASCII.FF; –– End of page character<br />

END_CHAR: constant CHARACTER := ASCII.NUL; –– End of text character<br />

–– Compiler options<br />

–––––––––––––––––––<br />

type OPTIONS is (LI<strong>ST</strong>_COMPILATION_DATE,<br />

LI<strong>ST</strong>_OWNER_NAME,<br />

LI<strong>ST</strong>_SIZE_INFORMATION,<br />

LI<strong>ST</strong>_DATABASE_ITEMS,<br />

LI<strong>ST</strong>_SIDS,<br />

LI<strong>ST</strong>_CROSS_REFERENCE,<br />

LI<strong>ST</strong>_UNCALLED_PROCEDURES,<br />

LI<strong>ST</strong>_UNUSED_VARIABLES,<br />

OPTIMIZE);<br />

type OPTION_LI<strong>ST</strong> is array (OPTIONS) of BOOLEAN;<br />

DEFAULT_OPTIONS: constant OPTION_LI<strong>ST</strong> := (others => FALSE);<br />

–– CLS Exceptions<br />

–––––––––––––––––<br />

USE_ERROR: exception; –– invalid sequence of calls<br />

PARAMETER_ERROR: exception; –– invalid parameter constellation<br />

DEFINITION_ERROR: exception; –– invalid definition (of commands etc.)<br />

TYPE_ERROR: exception; –– invalid type indication<br />

RANGE_ERROR: exception; –– range violation<br />

FATAL_ERROR: exception; –– fatal internal error, abort<br />

end CLS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

87 von/of: 662


Space Infrastructure<br />

6.3.2 Runtime Representation of UCL Types<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

88 von/of: 662<br />

The Ada package defines the runtime representation of all UCL type classes, together with the<br />

UCL operations on them, and conversion functions between UCL and standard Ada types where necessary or<br />

appropriate. This representation is used in the Virtual Stack Machine (see 6.7.3) and the HLCL Interpreter (see<br />

NO TAG).<br />

All scalar types are represented as one or two 4–byte data words, resp., independently of the range of values<br />

covered by the type. Structured types are represented by a sequence of as many data words as needed to cover<br />

the complete structure. Any UCL object is allocated as a multiple of full data words, even if it occupies only<br />

part of the last data word.<br />

Here is a description of the type classes in detail:<br />

<br />

1–word scalar type. Values are represented as signed numbers in 2’s complement.<br />

<br />

1–word scalar type. Values are represented as unsigned integers. Due to implementation restrictions, only bits<br />

0 .. 30 are used to represent a value, bit 31 is always 0.<br />

<br />

1–word scalar type. Values are represented as contiguous unsigned integers in the order of their declaration, the<br />

first enumeration value starting at 0.<br />

<br />

1–word scalar type, represented as an enumeration type with two values: = 0, = 1.<br />

<br />

1–word scalar type, represented as an enumeration type with two values: = 0, = 1.<br />

<br />

1–word scalar type. Values are represented by unsigned integers in the range 0 .. 255, where the subrange 0 ..<br />

127 is the ASCII character set.<br />

<br />

1–word scalar type. Values are represented in IEEE single floating point format.<br />

<br />

2–word sclar type. Values are represented in IEEE double floating point format.<br />

<br />

1–word scalar type, represented like . The range is restricted to one day (–86400.0 .. 86400.0).


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

89 von/of: 662<br />

2–word scalar type. Values are stored in a packed record. The first word stores the date, the second word stores<br />

the seconds since midnight in DURATION format. The date is stored in the following format: the first byte is<br />

the day in the range 1 .. 31, the second byte is the month in the range 1 .. 12, the remaining two bytes hold the<br />

year in the range 1901 .. 2099.<br />

Times without a date (i.e. the date is to be ignored in time operations) are represented with the complete date<br />

word = 0.<br />

The constant ~:~ (no time) is represented with a date word of the form: day = 0, month = 0, year = 1.<br />

<br />

Pathname types fall in two classes:<br />

• Non–parameterized pathnames are 1–word scalar values represented by the SID of the corresponding<br />

database item. It is represented in format. The constant \\ (no pathname) is<br />

represented by SID 0.<br />

• Parameterized pathnames are structured values. Their representation is defined by the internal<br />

encoding scheme described in chapter 4.9.3.2.<br />

<br />

2–word scalar types. A statecode value is represented as 8 characters packed in two words, the first bytes<br />

containing the name of the statecode literal, and the unused bytes filled with spaces.<br />

<br />

Structured types. A set is represented by a number of bits packed in one or more words, one bit for each possible<br />

member of the set. A member is present in the set, if its bit is set, it is absent otherwise.<br />

<br />

1–word scalar type. is a special set with members 0 .. 31, each bit of the word representing one of the<br />

members.<br />

<br />

Structured types. A string is represented as one word holding the actual length of the string as an unsigned<br />

integer, followed by zero or more words holding a byte array with 4 bytes (i.e. characters) packed in one word.<br />

The number of bytes covers the maximum length of the string, filled up to a multiple of four.<br />

<br />

Structured types. An array is represented as a sequence of its elements in their respective representation. Arrays<br />

with more than one dimension store their elements in an order that for all index positions i and i+1 indices on<br />

position i+1 vary faster than on position i.<br />

<br />

Structured types. A record is represented as a sequence of its fields in their respective representation.<br />

<br />

Scalar type. Values of type simply occupy a word of 32 bits, without any interpretation of the bits<br />

themselves.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CLS_TYPES<br />

––<br />

–– Basic UCL datatypes in UCL representation<br />

––<br />

–– This package defines the runtime representation of all UCL/HLCL datatypes<br />

–– with their operations.<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Author: Norbert Fritsch, DASA RI<br />

––<br />

–– Document:<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Date Author Change description<br />

–– –––––––– –––––––––––– –––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– 01.02.95 N. Fritsch #<strong>CGS</strong>: V2.2<br />

–– 15.02.95 Franz Kruse #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–3002a<br />

–– 27.06.95 I. Semrau #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–3076<br />

–– use NUMERIC_TYPES;<br />

–– 29.09.95 Franz Kruse #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–3077<br />

–– UCL_UNSIGNED_INTEGER constrained to 0 .. 2**31–1.<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with CALENDAR;<br />

with NUMERIC_TYPES; use NUMERIC_TYPES;<br />

with MPS_DEFINITIONS;<br />

package CLS_TYPES is<br />

–– UCL types sizes<br />

––––––––––––––––––<br />

WORD_SIZE : constant := 32; –– bits per UCL storage unit<br />

–– UCL types<br />

––––––––––––<br />

type UCL_BOOLEAN is new NUMERIC_TYPES.INTEGER32 range 0 .. 1;<br />

type UCL_CHARACTER is new NUMERIC_TYPES.INTEGER32 range 0 .. 255;<br />

subtype UCL_INTEGER is NUMERIC_TYPES.INTEGER32;<br />

subtype UCL_UNSIGNED_INTEGER is NUMERIC_TYPES.UNSIGNED_INTEGER32<br />

range 0 .. NUMERIC_TYPES.UNSIGNED_INTEGER32’LA<strong>ST</strong>;<br />

subtype UCL_ENUMERATION is UCL_UNSIGNED_INTEGER;<br />

subtype UCL_REAL is NUMERIC_TYPES.SINGLE_FLOAT;<br />

subtype UCL_LONG_REAL is NUMERIC_TYPES.DOUBLE_FLOAT;<br />

type UCL_DURATION is new UCL_REAL range –86_400.0 .. 86_400.0;<br />

subtype UCL_TIME is MPS_DEFINITIONS.UCL_TIME;<br />

type UCL_WORD is new NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

subtype UCL_PATHNAME is MPS_DEFINITIONS.SID;<br />

type UCL_SUBITEM_PATHNAME is<br />

record<br />

ITEM: MPS_DEFINITIONS.SID;<br />

SUBITEM: MPS_DEFINITIONS.SUBITEM_ID;<br />

end record;<br />

subtype UCL_<strong>ST</strong>ATECODE is MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

type PACKED_BOOLEAN is new BOOLEAN;<br />

for PACKED_BOOLEAN’SIZE use 1;<br />

type UCL_SET is array (UCL_INTEGER range )<br />

of PACKED_BOOLEAN;<br />

pragma PACK (UCL_SET);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

90 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

subtype UCL_BITSET is UCL_SET (0..31);<br />

type PACKED_UCL_CHARACTER is new NUMERIC_TYPES.INTEGER32 range 0 .. 255;<br />

for PACKED_UCL_CHARACTER’SIZE use NUMERIC_TYPES.BYTE’SIZE;<br />

type PACKED_UCL_CHARACTER_ARRAY is array (UCL_INTEGER range )<br />

of PACKED_UCL_CHARACTER;<br />

pragma PACK (PACKED_UCL_CHARACTER_ARRAY);<br />

type UCL_<strong>ST</strong>RING (MAX_LENGTH: UCL_INTEGER) is<br />

record<br />

LENGTH: UCL_INTEGER := 0;<br />

TEXT: PACKED_UCL_CHARACTER_ARRAY (1 .. MAX_LENGTH);<br />

end record;<br />

–– Constants<br />

–––––––––––––––––––––––<br />

UCL_TRUE: constant UCL_BOOLEAN := UCL_BOOLEAN (BOOLEAN’POS (TRUE));<br />

UCL_FALSE: constant UCL_BOOLEAN := UCL_BOOLEAN (BOOLEAN’POS (FALSE));<br />

NO_TIME: constant UCL_TIME := (DAY => 0,<br />

MONTH => 0,<br />

YEAR => 1,<br />

SECONDS => 0.0);<br />

–– Conversion functions<br />

–––––––––––––––––––––––<br />

function IMAGE (ITEM: UCL_BOOLEAN) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_CHARACTER) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_INTEGER) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_UNSIGNED_INTEGER) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_REAL) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_LONG_REAL) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_DURATION) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_WORD) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_TIME) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_<strong>ST</strong>ATECODE) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_PATHNAME) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_SUBITEM_PATHNAME) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_BITSET) return <strong>ST</strong>RING;<br />

function IMAGE (ITEM: UCL_<strong>ST</strong>RING) return <strong>ST</strong>RING;<br />

–– Return the image of the given value<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_BOOLEAN;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_CHARACTER;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_INTEGER;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_UNSIGNED_INTEGER;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_REAL;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_LONG_REAL;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_DURATION;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_WORD;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_TIME;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_<strong>ST</strong>ATECODE;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_PATHNAME;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_SUBITEM_PATHNAME;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_BITSET;<br />

function VALUE (ITEM: <strong>ST</strong>RING) return UCL_<strong>ST</strong>RING;<br />

–– Return the UCL value of the given string.<br />

–– Raise CLS.PARAMETER_ERROR if the given string is invalid.<br />

function UCL_<strong>ST</strong>RING_VALUE (ITEM: CHARACTER) return UCL_<strong>ST</strong>RING;<br />

function UCL_<strong>ST</strong>RING_VALUE (ITEM: UCL_CHARACTER) return UCL_<strong>ST</strong>RING;<br />

–– Return the UCL string of the given character.<br />

function UCL_BOOLEAN_VALUE (ITEM: BOOLEAN) return UCL_BOOLEAN;<br />

function UCL_CHARACTER_VALUE (ITEM: CHARACTER) return UCL_CHARACTER;<br />

function UCL_<strong>ST</strong>RING_VALUE (ITEM: <strong>ST</strong>RING) return UCL_<strong>ST</strong>RING;<br />

–– Return the UCL value of the given ADA value.<br />

function BOOLEAN_VALUE (ITEM: UCL_BOOLEAN) return BOOLEAN;<br />

function CHARACTER_VALUE (ITEM: UCL_CHARACTER) return CHARACTER;<br />

function <strong>ST</strong>RING_VALUE (ITEM: UCL_<strong>ST</strong>RING) return <strong>ST</strong>RING;<br />

–– Return the ADA value of the given UCL value.<br />

–– Raise CLS.RANGE_ERROR if a UCL character value is out of the<br />

–– ASCII character set.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

91 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function UCL_TIME_VALUE (ITEM: CALENDAR.TIME) return UCL_TIME;<br />

function TIME_VALUE (ITEM: UCL_TIME) return CALENDAR.TIME;<br />

–– Convert UCL_TIME to TIME and vice versa.<br />

function UCL_BITSET_VALUE (ITEM: NUMERIC_TYPES.BITSET) return UCL_BITSET;<br />

function BITSET_VALUE (ITEM: UCL_BITSET) return NUMERIC_TYPES.<br />

BITSET;<br />

–– Convert UCL_BITSET to BITSET and vice versa.<br />

–– UCL arithmetic functions on the UCL types<br />

––––––––––––––––––––––––––––––––––––––––––––<br />

function ”not” (ITEM: UCL_BOOLEAN) return UCL_BOOLEAN;<br />

function ”and” (LEFT: UCL_BOOLEAN; RIGHT: UCL_BOOLEAN) return UCL_BOOLEAN;<br />

function ”or” (LEFT: UCL_BOOLEAN; RIGHT: UCL_BOOLEAN) return UCL_BOOLEAN;<br />

–– Operations on UCL boolean.<br />

function POWER (LEFT: UCL_INTEGER;<br />

RIGHT: UCL_INTEGER) return UCL_INTEGER;<br />

function POWER (LEFT: UCL_UNSIGNED_INTEGER;<br />

RIGHT: UCL_INTEGER) return UCL_UNSIGNED_INTEGER;<br />

function POWER (LEFT: UCL_REAL;<br />

RIGHT: UCL_INTEGER) return UCL_REAL;<br />

function POWER (LEFT: UCL_LONG_REAL;<br />

RIGHT: UCL_INTEGER) return UCL_LONG_REAL;<br />

function POWER (LEFT: UCL_INTEGER;<br />

RIGHT: UCL_UNSIGNED_INTEGER) return UCL_INTEGER;<br />

function POWER (LEFT: UCL_UNSIGNED_INTEGER;<br />

RIGHT: UCL_UNSIGNED_INTEGER) return UCL_UNSIGNED_INTEGER;<br />

function POWER (LEFT: UCL_REAL;<br />

RIGHT: UCL_UNSIGNED_INTEGER) return UCL_REAL;<br />

function POWER (LEFT: UCL_LONG_REAL;<br />

RIGHT: UCL_UNSIGNED_INTEGER) return UCL_LONG_REAL;<br />

–– Exponentiation operations.<br />

–– Raise CLS.PARAMETER_ERROR if RIGHT is less than 0.<br />

–– Raise CLS.RANGE_ERROR if the required operation<br />

–– yields an invalid result.<br />

function ”+” (LEFT: UCL_DURATION; RIGHT: UCL_TIME) return UCL_TIME;<br />

function ”+” (LEFT: UCL_TIME; RIGHT: UCL_DURATION) return UCL_TIME;<br />

function ”–” (LEFT: UCL_TIME; RIGHT: UCL_DURATION) return UCL_TIME;<br />

function ”–” (LEFT: UCL_TIME; RIGHT: UCL_TIME) return UCL_DURATION;<br />

function ”=” (LEFT: UCL_TIME; RIGHT: UCL_TIME) return BOOLEAN;<br />

–– Operations on time and duration.<br />

–– Raise CLS.RANGE_ERROR if the required operation<br />

–– yields an invalid result.<br />

–– Raise CLS.PARAMETER_ERROR if a parameter has the value NO_TIME (~:~)<br />

function ”+” (LEFT, RIGHT: UCL_SET) return UCL_SET;<br />

function ”–” (LEFT, RIGHT: UCL_SET) return UCL_SET;<br />

function ”*” (LEFT, RIGHT: UCL_SET) return UCL_SET;<br />

function ”/” (LEFT, RIGHT: UCL_SET) return UCL_SET;<br />

function ”


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Operations on string.<br />

function ELEMENT (S: UCL_<strong>ST</strong>RING; INDEX: UCL_INTEGER) return CHARACTER;<br />

function ELEMENT (S: UCL_<strong>ST</strong>RING; INDEX: UCL_INTEGER) return UCL_CHARACTER;<br />

–– Read string components.<br />

–– Raise CLS.RANGE_ERROR if the given index is out of bounds.<br />

procedure ASSIGN (TARGET: in out UCL_<strong>ST</strong>RING;<br />

SOURCE: UCL_<strong>ST</strong>RING);<br />

–– Assign a UCL String.<br />

–– Raise CLS.RANGE_ERROR if the actual length of SOURCE is greater<br />

–– than the max. length of TARGET.<br />

procedure ASSIGN (TARGET: in out UCL_<strong>ST</strong>RING;<br />

SOURCE: CHARACTER;<br />

INDEX: UCL_INTEGER);<br />

procedure ASSIGN (TARGET: in out UCL_<strong>ST</strong>RING;<br />

SOURCE: UCL_CHARACTER;<br />

INDEX: UCL_INTEGER);<br />

–– Assign a string component.<br />

–– Raise CLS.RANGE_ERROR if the given index is out of bounds.<br />

end CLS_TYPES;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

93 von/of: 662


Space Infrastructure<br />

6.4 Flexible Tool Invocation <strong>Interface</strong><br />

Informal <strong>Interface</strong> Description<br />

This service is provided to start external tools from I_MDB.<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

94 von/of: 662<br />

The detailed description of this interface is defined in the MDA Users Reference Manual, applicable document<br />

2.1.5.5, section 4.6.


Space Infrastructure<br />

6.5 Foreign Key Support / PUI Support<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

95 von/of: 662<br />

The detailed description of this interface is defined in the MDA Users Reference Manual, applicable document<br />

2.1.5.5, section 4.5.


Space Infrastructure<br />

6.6 MDB Batch Data Entry Format<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

96 von/of: 662<br />

The detailed description of this interface is defined in the MDA Users Reference Manual, applicable document<br />

NO TAG, section 13.


Space Infrastructure<br />

6.7 I–Code Definition<br />

6.7.1 Functional Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

97 von/of: 662<br />

I–Code (for “Intermediate Code”) is the object code produced by the UCL compiler. It has binary format and<br />

is directly executable by the I–Code interpreters, on–board (in DMS) as well as on ground (in VICOS and CSS).<br />

The I–Code has identical format and is interchangeable between ground and on–board.<br />

Each I–Code instruction is an unsigned byte, possibly followed by one or two instruction specific parameters.<br />

I–Code can be regarded as the instruction set of a Virtual Stack Machine which is implemented by the I–Code<br />

interpreters. A stack machine is characterized by the fact that instructions do not address their operands directly<br />

but access them via the Expression Stack. Prior to instruction execution, all operands needed must be explicitly<br />

loaded from their memory locations onto the stack. Each instruction pops its input operands from the stack and<br />

pushes its result operands back onto the stack where they are available as input to subsequent instructions. Dedicated<br />

Load and Store instructions move data items from memory onto the stack and from the stack into memory,<br />

respectively.<br />

The architecture of the stack machine and the I–Code instructions with their parameters and semantics are described<br />

in detail in the following sections.<br />

Note that UCL I–Code and the underlying stack machine architecture are based on N. Wirth’s Modula–2 M–<br />

Code and the Lilith architecture, but appropriately redesigned and extended with respect to software interpretation<br />

and the specific needs of UCL.


Space Infrastructure<br />

6.7.2 I–Code Record Layout<br />

Figure 6.7–1 I–Code Record<br />

Import list size<br />

Code size<br />

Global data size<br />

Constant area size<br />

Relocation table size<br />

Conversion table size<br />

Source ref. table size<br />

Import list<br />

Code<br />

Constant area<br />

Relocation table<br />

Conversion table<br />

Source reference table<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

WORD<br />

WORD<br />

WORD<br />

WORD<br />

WORD<br />

WORD<br />

WORD<br />

WORDS<br />

BYTES<br />

WORDS<br />

WORDS<br />

WORDS<br />

WORDS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

98 von/of: 662<br />

The I–Code record is generated by the UCL compiler and kept in the database. On the other hand, small<br />

(pseudo–)APs may be generated by the HLCL interpreters in the HCI and directly sent via message over the<br />

network.<br />

The I–Code record, when retrieved from the database or received via message, is decomposed by the interpreter<br />

into global data and code parts. Actual parameters delivered with an activation request are copied into the first<br />

few global data words before start of the I–Code interpretation.<br />

The I–Code record format shown above is mapped into a byte array. The size indications in the header, however,<br />

count actual items, i.e. bytes in the code part, words in the other parts.


Space Infrastructure<br />

6.7.3 I–Code Record Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

99 von/of: 662<br />

Header<br />

The header consists of the following 7 items. Each item is stored in one word (4 bytes). The header size is thus<br />

7 words:<br />

• The size of the import list in words<br />

• The size of the code in bytes<br />

• The size of the global data area in words<br />

• The size of the constant area in words<br />

• The size of the relocation table in words<br />

• The size of the conversion table in words<br />

• The size of the source reference table in words<br />

Import list<br />

The import list lists the SIDs of all imported user libraries. The user library with the external reference number<br />

1 (i.e. the first library in the source module’s import list) is the first entry in this import list, the library 2 the<br />

second, and so on. Each library SID occupies one word of storage.<br />

Code<br />

The code area is a byte–oriented stream of the I–code. It is copied into the stack machine’s code buffer at program<br />

load time (see also code buffer description later in this document). After copying the code area into the code<br />

buffer, all external library calls have to be relocated.<br />

Constant area<br />

The constant area holds long constants referenced in the I–code, e.g. strings or state codes. It may also contain<br />

integer or real values, e.g. to reduce the storage required by often used values. Each constant will be word–<br />

aligned.<br />

Relocation table<br />

The relocation table is used to relocate the references to external (i.e. imported) libraries. Each instruction referencing<br />

user libraries references the called library using a number, the library’s SID is then found via the import<br />

list. Different modules may use different numbers in referencing the same library, depending on the order (and/or<br />

number) of imported libraries. The relocation step assigns then the same number for the same library to each<br />

“external” instruction. Each entry in the relocation table is one word long and points into the code buffer, giving<br />

the address of the library number to be relocated.<br />

Conversion table<br />

The conversion table is intended to support conversion of numeric values of different types in the I–Code record<br />

to different physical representations for different target computers. It contains references to all numeric values<br />

that are subject to such conversion.<br />

The detailed structure of the conversion table is TBD.<br />

Source reference table<br />

The source reference table maps code positions (PCs) on source line numbers. It is a list of pairs (PC, line<br />

number), where the PC defines the start of the source line. The end of the source line is given by the PC of the<br />

next pair minus one, or by the end of the list, respectively.<br />

6.7.4 Architecture of the Stack Machine<br />

Module Base Table


Space Infrastructure<br />

Code Buffer<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

100 von/of: 662<br />

A byte structured data area that contains the I–Code of the program to be executed. The main procedure and each<br />

imported (user) library have a separate frame in the Code Buffer, with the main procedure as frame 0 and the<br />

library frames numbered by the order of imports. The Module Base Table contains a pointer to each global data<br />

frame, which contains a pointer to the corresponding frame in the Code Buffer. Each frame is headed by an Entry<br />

Table whose 2–byte entries contain the relative start addresses of the procedures and functions of that frame,<br />

with the main program as procedure 0.<br />

Memory (Data Stack)<br />

The memory of the Stack Machine that stores all data processed by the machine. The memory is word structured,<br />

data contained in the memory is represented as stated in chapter 6.3.2.<br />

The memory is organized as a Data Stack holding “frames” of data.<br />

• A global data frame for the main procedure (frame 0).<br />

• A global data frame for each imported library (frames 1 .. n, numbered by the order of imports).<br />

• A procedure frame for each active procedure/function. Each procedure call pushes a procedure frame<br />

on the Data Stack, and each return from a procedure pops its frame from the stack.<br />

The Module Base Table contains a pointer to each of the global data frames.<br />

Expression Stack<br />

A word structured stack that contains operands of I–Code operations. All arithmetic is performed on the Expression<br />

Stack: operands are popped from the stack, and the result is pushed on the stack again.<br />

The expression stack is organized in 4–byte words. Values on the stack are represented as stated in chapter 6.3.2.<br />

• For one–word scalar values the value itself is pushed on the stack, occupying one word.<br />

• For two–word scalar values the value itself is pushed on the stack, occupying two words.<br />

• For fixed structured values an address pointing to the start of the value in memory is pushed on the stack,<br />

occupying one word.<br />

• For open array parameters and open string parameters first an address pointing to the data in memory<br />

and then the upper bound are pushed on the stack, each occupying one word.


Space Infrastructure<br />

Registers<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

101 von/of: 662<br />

The registers contain pointers to locations in the above–mentioned data areas. They are implicitly manipulated<br />

by I–Code instructions.<br />

SP “Stack Pointer” –> Expression Stack<br />

points to the value on top of the stack.<br />

MP “Memory Pointer” –> Data Stack (Memory)<br />

points to the first free position in the Data Stack.<br />

GP “Global Data Pointer” –> Data Stack (Memory)<br />

points to the start of the current global data frame.<br />

FP “Frame pointer” –> Data Stack (Memory)<br />

points to the procedure frame of the currently executed procedure/function.<br />

CP “Code pointer” –> Code Buffer<br />

points to the start of the current code frame.<br />

PC “Program Counter” –> Code Buffer<br />

points to the I–Code instruction currently executed.


Space Infrastructure<br />

BASE<br />

Module 0: Main procedure<br />

Module 1: library 1<br />

Module 2: library 2<br />

Pointer to global data frame<br />

GP<br />

FP<br />

MP<br />

–3<br />

–2<br />

–1<br />

0<br />

n<br />

–3<br />

–2<br />

–1<br />

0<br />

n<br />

MEMORY<br />

Global data frame 0<br />

Global data frame 1<br />

Initialization flag<br />

Pointer to code frame<br />

Pointer to constant area<br />

AP parameters<br />

(1 or 2 words per parameter)<br />

Scalar: the value<br />

Structured: the address<br />

Global variables<br />

(1 or 2 words for each variable)<br />

Scalar: the value<br />

Structured: a pointer to<br />

the allocated data structure<br />

Constant area<br />

(Contents addressed via pointer<br />

to constant area)<br />

Global data structures<br />

(referenced by pointers<br />

in the global data frames)<br />

Procedure frame<br />

Procedure frame<br />

Global link<br />

(missing for local calls)<br />

Dynamic link<br />

Return address<br />

Parameters<br />

(1 or 2 words per parameter)<br />

Scalar: value or addr. (VAR parameter)<br />

Structured: always the address<br />

Local variables<br />

(1 or 2 words for each variable)<br />

Scalar: the value<br />

Structured: a pointer to<br />

the allocated data structure<br />

Allocated data structures<br />

(referenced by pointers<br />

in the current procedure frame)<br />

Temporarily allocated data<br />

free memory<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

102 von/of: 662<br />

CODE<br />

Code frame 0<br />

Code frame 1<br />

Global data frame 2 Code frame 2<br />

Figure 6.7–2 Stack Machine Runtime Layout<br />

6.7.5 I–Code Instructions<br />

0<br />

Entry list:<br />

Offsets to start of procedures<br />

Procedure 1<br />

Procedure 2<br />

...<br />

Procedure n<br />

Procedure 0 (global code)<br />

LEGEND:<br />

FP<br />

CP<br />

PC<br />

General items<br />

are marked grey<br />

Detailed views<br />

are outlined<br />

In a row of items of the same<br />

kind, the last item is always<br />

shown in detailed view<br />

Stack Machine<br />

registers are shown<br />

using inverse boxes


Space Infrastructure<br />

6.7.5.1 Instruction Format<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

103 von/of: 662<br />

Each I–Code instruction is one byte, possibly followed by one or two parameters. The instruction currently executed<br />

is pointed to by the program counter register (PC). Each instruction moves the PC to the instruction that<br />

is to be executed next, this is normally the following instruction, unless the control flow is to be explicitly altered<br />

(jumps, procedure calls etc.).<br />

All instructions access their input and output operands (if any) via the expression stack: operands read by the<br />

instruction are popped off the stack, results produced by the instruction are pushed on the stack.<br />

For some very frequent Load, Store and Call instructions with a parameter in the range 0 .. 15 additional short<br />

forms have been introduced to avoid the explicit parameter and thus to obtain more compact code: e.g. the 1–byte<br />

(parameterless) instructions LOAD_C.0, LOAD_C.1, LOAD_C.2 etc. have the same meaning as the 2–byte<br />

(parameterized) instructions LOAD_C.b 0, LOAD_C.b 1, LOAD_C.b 2 etc.<br />

The following table contains a detailed description of all I–Code instructions. For each instruction the following<br />

details are given:<br />

• the binary code: a value in the range 00 .. FF.<br />

• the mnemonic: a suggestive symbolic name indicating the function performed by the instruction. Variations<br />

of a function are denoted by different suffixes to the basic name, separated by an underscore. If<br />

different instructions perform the same function with a difference only in the in the size of the operands,<br />

their names consist of the basic name plus a suffix separated by a dot (”.b” for byte operands, ”.h” for<br />

halfword operands and ”.w” for word operands). The suffix will be, by convention, written in lower<br />

case. For instructions with implied operands, the suffix denotes the implied value, e.g. ”.0”, ”.1”, etc.<br />

• the parameters of the instruction. Parameters may be one to four bytes long, the length is indicated with<br />

each parameter. The parameters are interpreted signed or unsigned, depending on the instruction.<br />

• the modes in which the instruction might be executed. The Stack Machine distinguishes between three<br />

instruction modes:<br />

“normal” This is the normal mode of the Stack Machine. After each instruction the Stack Machine<br />

is reset into this mode.<br />

“double” This mode is used to switch from single word to double word operation of the Stack<br />

Machine. Double word I–code operations are currently supported only for 64 bit<br />

reals.The Stack Machine is switched into this mode by prefixing the next I–code<br />

instruction with a DOUBLE instruction.<br />

“multi” This mode is used for multiple word operations. The Stack Machine is switched into<br />

this mode by prefixing the next I–code instruction with a MULTI instruction.<br />

• If an instruction is not allowed to be executed in a particular mode, then no explanation is given in the<br />

following instruction table, as a result the instruction causes a run–time trap.<br />

• the instruction title (a short informal description).


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

104 von/of: 662<br />

• the effect on the expression stack (given in brackets after the title): the “=>” sign separates input items<br />

popped off the stack (left) and output items pushed onto the stack (right):<br />

[ x, y => z ]<br />

states that the instruction pops x and y from the stack and, as a result, pushes z on the stack. Optional<br />

items are enclosed in parentheses.<br />

• a semantics specification given as a piece of Ada–like pseudo–code. These pieces of pseudo–code are<br />

not to be understood as optimized algorithms, but rather as an easy–to–understand semantics description.<br />

Note that a different semantic is associated with each instruction mode.<br />

6.7.5.2 Conventions<br />

The following conventions are applied in the I–Code description:<br />

• Data representation of UCL runtime values is according to the conventions stated in chapter 6.3.2.<br />

(two bullets deleted)<br />

• The term “halfword” and “word” denote 2–byte and 4–byte values, respectively.<br />

The term “double word” denotes an 8–byte value.<br />

• The parameters are interpreted signed or unsigned, depending on the instruction.<br />

• The PC is assumed to point to the code byte of the instruction currently executed. It is not explicitly<br />

shown that each instruction implicitly advances the PC to the next instruction (PC := PC + 1 + parameter<br />

length), if it does not explicitly alter the control flow.<br />

• Distances used to calculate a new PC value are offsets to the current PC.<br />

• The registers of the stack machine (SP, MP, FP, GP, PC) are used as variables.<br />

• Auxiliary variables are used in a suggestive manner:<br />

A denotes an address,<br />

B denotes a boolean value,<br />

D denotes a duration,<br />

T denotes a time,<br />

I, L, N stand for integer numbers,<br />

X, Y denote arithmetic operands of the type imposed by the instruction, sets are regarded as<br />

boolean arrays of 32 bits packed in a word<br />

• The Module Base Table is regarded as an array of words, named BASE, pointing to the start of the global<br />

data frame of a module.<br />

• The Code Buffer is regarded as an array of bytes, named CODE.<br />

• The Memory is regarded as an array of words, named MEMORY.<br />

• The expression stack is regarded as an array of words, named <strong>ST</strong>ACK, where the SP points to the element<br />

on top of the stack. Stack manipulations are indicated with calls to the procedures PUSH and<br />

POP for words and PUSHD and POPD for double words defined as:<br />

PUSH (X) => SP := SP + 1; <strong>ST</strong>ACK(SP) := X;<br />

PUSHD (X) => SP := SP + 2; <strong>ST</strong>ACK(SP–1 .. SP) := X;<br />

POP (X) => X := <strong>ST</strong>ACK(SP); SP := SP – 1;<br />

POPD (X) => X := <strong>ST</strong>ACK(SP–1 .. SP); SP := SP – 2;<br />

• The following functions are used to obtain control information from the Memory and the Code Buffer:<br />

CON<strong>ST</strong>_ADR (A) address of constant at offset A in constant area of current global data<br />

frame<br />

=> return MEMORY(GP–1) + A;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

105 von/of: 662<br />

PROC (N) entry point of procedure N in current code frame<br />

=> return CP + VALUE (CODE(CP+N*2 .. CP+N*2 + 1));<br />

SIZE (SID) size (in words) of data value associated with database object designated<br />

by SID.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

106 von/of: 662<br />

• The following procedures and functions are used to denote Stack Machine system services:<br />

SET_BYTE (i, W, X) set i–th byte in word W to value X<br />

BYTE (i, W) extract i–th byte from word W<br />

VALUE (bytes) compute numerical value from byte array<br />

<strong>ST</strong>RING (A) return the string stored under address A<br />

SY<strong>ST</strong>EM (L, P) call system service P in system library L<br />

READ (SID, TYPE, X) read end item value for SID of SW type TYPE into variable X<br />

READD (SID, TYPE, X) read end item value for SID of SW type TYPE into double word<br />

variable X<br />

READM (SID, TYPE, A) read multiple–word value for SID of SW type TYPE to address A<br />

WRITE (SID, TYPE, X) write end item value for SID of SW type TYPE from variable X<br />

WRITED (SID, TYPE, X) write end item value for SID of SW type TYPE from double word<br />

variable X<br />

WRITEM (SID, TYPE, A) write multiple–word value for SID of SW type TYPE from address A<br />

ERROR (E) abort with runtime error E<br />

TRAP (T) abort with runtime error trap T<br />

HALT (S) stop execution and return success code S (0 = success, 1 = failure)


Space Infrastructure<br />

6.7.5.3 Detailed I–code Instructions Table<br />

6.7.5.3.1 Instructions with implied parameter<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

107 von/of: 662<br />

These instructions are special cases of the corresponding instructions with explicit parameter. They have been<br />

introduced for optimization, since these instructions (particularly with small range parameters) cover a great<br />

percentage of every program.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

00 | LOAD_C.0 | | | Load constant 0 .. 15 [ => val ]<br />

01 | LOAD_C.1 | | |<br />

02 | LOAD_C.2 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

03 | LOAD_C.3 | | |<br />

04 | LOAD_C.4 | | Normal | PUSH (n); –– n = 0 .. 15<br />

05 | LOAD_C.5 | | |<br />

06 | LOAD_C.6 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

07 | LOAD_C.7 | | |<br />

08 | LOAD_C.8 | | Double | PUSHD (n); –– n = 0 .. 15<br />

09 | LOAD_C.9 | | |<br />

0A | LOAD_C.10 | | |<br />

0B | LOAD_C.11 | | |<br />

0C | LOAD_C.12 | | |<br />

0D | LOAD_C.13 | | |<br />

0E | LOAD_C.14 | | |<br />

0F | LOAD_C.15 | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

10 | LOAD_L.0 | | | Load local variable [ => val ]<br />

11 | LOAD_L.1 | | | from address 0 .. 15<br />

12 | LOAD_L.2 | | |<br />

13 | LOAD_L.3 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

14 | LOAD_L.4 | | |<br />

15 | LOAD_L.5 | | Normal | PUSH (MEMORY(FP + n));<br />

16 | LOAD_L.6 | | |<br />

17 | LOAD_L.7 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

18 | LOAD_L.8 | | |<br />

19 | LOAD_L.9 | | Double | PUSHD (MEMORY(FP + n .. FP + n + 1));<br />

1A | LOAD_L.10 | | |<br />

1B | LOAD_L.11 | | |<br />

1C | LOAD_L.12 | | |<br />

1D | LOAD_L.13 | | |<br />

1E | LOAD_L.14 | | |<br />

1F | LOAD_L.15 | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

108 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

20 | LOAD_G.0 | | | Load global variable [ => val ]<br />

21 | LOAD_G.1 | | | from address 0 .. 15<br />

22 | LOAD_G.2 | | |<br />

23 | LOAD_G.3 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

24 | LOAD_G.4 | | |<br />

25 | LOAD_G.5 | | Normal | PUSH (MEMORY(GP + n));<br />

26 | LOAD_G.6 | | |<br />

27 | LOAD_G.7 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

28 | LOAD_G.8 | | |<br />

29 | LOAD_G.9 | | Double | PUSHD (MEMORY(GP + n .. GP + n + 1));<br />

2A | LOAD_G.10 | | |<br />

2B | LOAD_G.11 | | |<br />

2C | LOAD_G.12 | | |<br />

2D | LOAD_G.13 | | |<br />

2E | LOAD_G.14 | | |<br />

2F | LOAD_G.15 | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

30 | LOAD_F.0 | | | Load offsetted variable [ adr => val ]<br />

31 | LOAD_F.1 | | | from address 0 .. 15<br />

32 | LOAD_F.2 | | |<br />

33 | LOAD_F.3 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

34 | LOAD_F.4 | | |<br />

35 | LOAD_F.5 | | Normal | POP (A);<br />

36 | LOAD_F.6 | | | PUSH (MEMORY(A + n));<br />

37 | LOAD_F.7 | | |<br />

38 | LOAD_F.8 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

39 | LOAD_F.9 | | |<br />

3A | LOAD_F.10 | | Double | POP (A);<br />

3B | LOAD_F.11 | | | PUSHD (MEMORY(A + n .. A + n + 1));<br />

3C | LOAD_F.12 | | |<br />

3D | LOAD_F.13 | | |<br />

3E | LOAD_F.14 | | |<br />

3F | LOAD_F.15 | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

40 | <strong>ST</strong>OR_L.0 | | | Store local variable [ val => ]<br />

41 | <strong>ST</strong>OR_L.1 | | | at address 0 .. 15<br />

42 | <strong>ST</strong>OR_L.2 | | |<br />

43 | <strong>ST</strong>OR_L.3 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

44 | <strong>ST</strong>OR_L.4 | | |<br />

45 | <strong>ST</strong>OR_L.5 | | Normal | POP (X);<br />

46 | <strong>ST</strong>OR_L.6 | | | MEMORY(FP + n) := X;<br />

47 | <strong>ST</strong>OR_L.7 | | |<br />

48 | <strong>ST</strong>OR_L.8 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

49 | <strong>ST</strong>OR_L.9 | | |<br />

4A | <strong>ST</strong>OR_L.10 | | Double | POPD (X);<br />

4B | <strong>ST</strong>OR_L.11 | | | MEMORY(FP + n .. FP + n + 1) := X;<br />

4C | <strong>ST</strong>OR_L.12 | | |<br />

4D | <strong>ST</strong>OR_L.13 | | |<br />

4E | <strong>ST</strong>OR_L.14 | | |<br />

4F | <strong>ST</strong>OR_L.15 | | |


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

109 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

50 | <strong>ST</strong>OR_G.0 | | | Store global variable [ val => ]<br />

51 | <strong>ST</strong>OR_G.1 | | | at address 0 .. 15<br />

52 | <strong>ST</strong>OR_G.2 | | |<br />

53 | <strong>ST</strong>OR_G.3 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

54 | <strong>ST</strong>OR_G.4 | | |<br />

55 | <strong>ST</strong>OR_G.5 | | Normal | POP (X);<br />

56 | <strong>ST</strong>OR_G.6 | | | MEMORY(GP + n) := X;<br />

57 | <strong>ST</strong>OR_G.7 | | |<br />

58 | <strong>ST</strong>OR_G.8 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

59 | <strong>ST</strong>OR_G.9 | | |<br />

5A | <strong>ST</strong>OR_G.10 | | Double | POPD (X);<br />

5B | <strong>ST</strong>OR_G.11 | | | MEMORY(GP + n .. GP + n + 1) := X;<br />

5C | <strong>ST</strong>OR_G.12 | | |<br />

5D | <strong>ST</strong>OR_G.13 | | |<br />

5E | <strong>ST</strong>OR_G.14 | | |<br />

5F | <strong>ST</strong>OR_G.15 | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

60 | <strong>ST</strong>OR_F.0 | | | Store offsetted variable [ adr, val => ]<br />

61 | <strong>ST</strong>OR_F.1 | | | at address 0 .. 15<br />

62 | <strong>ST</strong>OR_F.2 | | |<br />

63 | <strong>ST</strong>OR_F.3 | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

64 | <strong>ST</strong>OR_F.4 | | |<br />

65 | <strong>ST</strong>OR_F.5 | | Normal | POP (X);<br />

66 | <strong>ST</strong>OR_F.6 | | | POP (A);<br />

67 | <strong>ST</strong>OR_F.7 | | | MEMORY(A + n) := X;<br />

68 | <strong>ST</strong>OR_F.8 | | |<br />

69 | <strong>ST</strong>OR_F.9 | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

6A | <strong>ST</strong>OR_F.10 | | |<br />

6B | <strong>ST</strong>OR_F.11 | | Double | POPD (X);<br />

6C | <strong>ST</strong>OR_F.12 | | | POP (A);<br />

6D | <strong>ST</strong>OR_F.13 | | | MEMORY(A + n .. A + n + 1) := X;<br />

6E | <strong>ST</strong>OR_F.14 | | |<br />

6F | <strong>ST</strong>OR_F.15 | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

70 | ––– | | |<br />

71 | CALL.1 | | Normal | Call procedure/function 1 .. 15 [ ]<br />

72 | CALL.2 | | |<br />

73 | CALL.3 | | | MEMORY (MP) := FP; –– save dynamic link<br />

74 | CALL.4 | | | MEMORY (MP+1) := PC+1; –– save return addr.<br />

75 | CALL.5 | | |<br />

76 | CALL.6 | | | MP := MP + 2;<br />

77 | CALL.7 | | | FP := MP; –– mark stack frame<br />

78 | CALL.8 | | | PC := PROC (n); –– jump<br />

79 | CALL.9 | | | –– n = 1 .. 15<br />

7A | CALL.10 | | |<br />

7B | CALL.11 | | |<br />

7C | CALL.12 | | | Note: There is no CALL.0 instruction.<br />

7D | CALL.13 | | | A main program cannot call itself.<br />

7E | CALL.14 | | |<br />

7F | CALL.15 | | |


Space Infrastructure<br />

6.7.5.3.2 Load Instructions<br />

These instructions push data from the Memory onto the Expression Stack.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

110 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

80 | LOAD_T.b | offs 1 | | Load constant from table [ => val ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (MEMORY(CON<strong>ST</strong>_ADR(offs)));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (MEMORY(CON<strong>ST</strong>_ADR(offs) ..<br />

| | | | CON<strong>ST</strong>_ADR(offs) + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

81 | LOAD_T.h | offs 2 | | Load constant with halfword [ => val ]<br />

| | unsigned| | offset from table<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (MEMORY(CON<strong>ST</strong>_ADR(offs)));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (MEMORY(CON<strong>ST</strong>_ADR(offs) ..<br />

| | | | CON<strong>ST</strong>_ADR(offs) + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

82 | LOAD_C.b | val 1 | | Load byte constant [ => val ]<br />

| | signed | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (val);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (val);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

111 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

83 | LOAD_C.h | val 2 | | Load halfword (2–byte) constant [ => val ]<br />

| | signed | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (val);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (val);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

84 | LOAD_C.w | val 4 | | Load word (4–byte) constant [ => val ]<br />

| | signed | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (val);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (val);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

85 | LOAD_L.b | adr 1 | | Load local variable [ => val ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (MEMORY(FP + adr));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (MEMORY(FP + adr .. FP + adr + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

86 | LOAD_G.b | adr 1 | | Load global variable [ => val ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | PUSH (MEMORY(GP + adr));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (MEMORY(GP + adr .. GP + adr + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

112 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

87 | LOAD_F.b | offs 1 | | Load offsetted variable [ adr => val ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (A);<br />

| | | | PUSH (MEMORY(A + offs));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POP (A);<br />

| | | | PUSHD (MEMORY(A + offs .. A + offs + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

88 | LOAD_F.h | offs 2 | | Load offsetted variable [ adr => val ]<br />

| | unsigned| | with halfword offset<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (A);<br />

| | | | PUSH (MEMORY(A + offs));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POP (A);<br />

| | | | PUSHD (MEMORY(A + offs .. A + offs + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

89 | LOAD_E | lib 1 | | Load external variable [ => val ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | adr 1 | |<br />

| | unsigned| Normal | PUSH (MEMORY(BASE(lib) + adr));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | PUSHD (MEMORY(BASE(lib) + adr ..<br />

| | | | BASE(lib) + adr + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

8A | LOAD_X_C | | Normal | Load indexed character [ adr, inx => val ]<br />

| | | |<br />

| | | | POP (I);<br />

| | | | POP (A);<br />

| | | | I := I – 1;<br />

| | | | if I < 0 or I >= MEMORY(A) then<br />

| | | | TRAP (range_error);<br />

| | | | else<br />

| | | | PUSH (BYTE(I mod 4, MEMORY(A + 1 + I/4)));<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

113 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

8B | LOAD_X_V | | | Load indexed variable [ adr, inx => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (I);<br />

| | | | POP (A);<br />

| | | | PUSH (MEMORY(A + I));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POP (I);<br />

| | | | POP (A);<br />

| | | | PUSHD (MEMORY(A + I * 2) ..<br />

| | | | MEMORY(A + I * 2 + 1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

8C | ––– | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.3 Load Address Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

These instructions push the Memory address of data on the Expression Stack.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

114 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

8D | LOAD_A_L.b | adr 1 | Normal | Load local address [ => adr ]<br />

| | unsigned| |<br />

| | | | PUSH (FP + adr);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

8E | LOAD_A_G.b | adr 1 | Normal | Load global address [ => adr ]<br />

| | unsigned| |<br />

| | | | PUSH (GP + adr);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

8F | LOAD_A_F.b | offs 1 | Normal | Load offsetted address [ adr => adr ]<br />

| | unsigned| |<br />

| | | | POP (A);<br />

| | | | PUSH (A + offs);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

90 | LOAD_A_F.h | offs 2 | Normal | Load offsetted address [ adr => adr ]<br />

| | unsigned| | with halfword offset<br />

| | | |<br />

| | | | POP (A);<br />

| | | | PUSH (A + offs);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

91 | LOAD_A_E | lib 1 | Normal | Load external address [ => adr ]<br />

| | unsigned| |<br />

| | | | PUSH (BASE(lib) + adr);<br />

| | adr 1 | |<br />

| | unsigned| |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

92 | LOAD_A_T.b | offs 1 | Normal | Load address of constant in [ => adr ]<br />

| | unsigned| | constant table<br />

| | | |<br />

| | | | PUSH (CON<strong>ST</strong>_ADR(offs));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

93 | LOAD_A_T.h | offs 2 | Normal | Load address of constant in [ => adr ]<br />

| | unsigned| | constant table with halfword offset<br />

| | | |<br />

| | | | PUSH (CON<strong>ST</strong>_ADR(offs));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.4 Store Instructions<br />

Theses instructions pop data from the Expression Stack into the Memory.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

115 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

94 | <strong>ST</strong>OR_L.b | adr 1 | | Store local variable [ val => ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | MEMORY(FP + adr) := X;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | MEMORY(FP + adr .. FP + adr + 1) := X;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

95 | <strong>ST</strong>OR_G.b | adr 1 | | Store global variable [ val => ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | MEMORY(GP + adr) := X;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | MEMORY(GP + adr .. GP + adr + 1) := X;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

96 | <strong>ST</strong>OR_F.b | offs 1 | | Store offsetted variable [ adr, val => ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + offs) := X;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + offs .. A + offs + 1) := X;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

116 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

97 | <strong>ST</strong>OR_F.h | offs 2 | | Store offsetted variable [ adr, val => ]<br />

| | unsigned| | with halfword offset<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + offs) := X;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + offs .. A + offs + 1) := X;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

98 | <strong>ST</strong>OR_E | lib 1 | | Store external variable [ val => ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | adr 1 | |<br />

| | unsigned| Normal | POP (X);<br />

| | | | MEMORY(BASE(lib) + adr) := X;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | MEMORY(BASE(lib) + adr ..<br />

| | | | BASE(lib) + adr + 1) := X;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

99 | <strong>ST</strong>OR_X_C | | Normal | Store indexed character [ adr, inx, val => ]<br />

| | | |<br />

| | | | POP (X);<br />

| | | | POP (I);<br />

| | | | POP (A);<br />

| | | | I := I – 1;<br />

| | | | if I < 0 or I >= MEMORY(A) then<br />

| | | | TRAP (range_error);<br />

| | | | else<br />

| | | | SET_BYTE (I mod 4, MEMORY(A + 1 + I/4), X);<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

117 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

9A | <strong>ST</strong>OR_X_V | | | Store indexed variable [ adr, inx, val => ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | POP (I);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + I) := X;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | POP (I);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + I * 2 .. A + I * 2 + 1) := X;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.5 MOVE and CAT Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

The MOVE instruction copies multiple–word data between Memory locations.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

118 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––<br />

9B | MOVE | | Normal | Move block of data [ adr, adr, len ]<br />

| | | |<br />

| | | | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | MEMORY(A1 .. A1+L–1) := MEMORY(A2 .. A2+L–1);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––<br />

The CAT instruction concatenates two strings.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––<br />

9C | CAT | | Normal | String concatenation [ adr, adr, size => adr ]<br />

| | | |<br />

| | | | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MP);<br />

| | | |<br />

| | | | L1 := MEMORY(A1); –– length of first string<br />

| | | | L2 := MEMORY(A2); –– length of second string<br />

| | | | MEMORY (MP) := L1 + L2; –– resultant length<br />

| | | |<br />

| | | | MEMORY (MP + 1 .. MP + L – 1) :=<br />

| | | | <strong>ST</strong>RING (A1) & <strong>ST</strong>RING (A2); –– concatenation<br />

| | | |<br />

| | | | MP := MP + L;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.6 Stack Instructions<br />

These instructions manipulate the Expression Stack only.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

119 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

9D | COPY | | | Copy top of stack [ val => val, val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X); PUSH (X); PUSH (X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X); PUSHD (X); PUSHD (X);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

9E | POP | n 1 | | Remove n items from top [ val (,...) => ]<br />

| | unsigned| | of stack<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | SP := SP – n;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | SP := SP – 2 * n;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

9F | SWAP | | | Swap data on top [ val, val => val, val ]<br />

| | | | of stack<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | POP (Y);<br />

| | | | PUSH (X);<br />

| | | | PUSH (Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | POPD (Y);<br />

| | | | PUSHD (X);<br />

| | | | PUSHD (Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.7 Numerical Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

120 von/of: 662<br />

These instructions perform different numerical operations, they usually pop their operands from the Expression<br />

Stack and push their result back on the Expression Stack.<br />

a) INTEGER operations<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A0 | ADD_I | | Normal | Add integers [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X + Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A1 | SUB_I | | Normal | Subtract integers [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X – Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A2 | MUL_I | | Normal | Multiply integers [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X * Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A3 | DIV_I | | Normal | Divide integers [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X / Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A4 | EXP_I | | Normal | Exponentiate integer [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X ** Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A5 | MOD_I | | Normal | Modulus [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X mod Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

121 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A6 | NEG_I | | Normal | Negate integer [ val => val ]<br />

| | | |<br />

| | | | POP (X);<br />

| | | | PUSH (–X);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A7 | ABS_I | | Normal | Absolute integer value [ val => val ]<br />

| | | |<br />

| | | | POP (X);<br />

| | | | PUSH (abs X);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

b) UNSIGNED_INTEGER operations<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

122 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A8 | ADD_U | | Normal | Add unsigned [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X + Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

A9 | SUB_U | | Normal | Subtract unsigned [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X – Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

AA | MUL_U | | Normal | Multiply unsigned [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X * Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

AB | DIV_U | | Normal | Divide unsigned [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X / Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

AC | EXP_U | | Normal | Exponentiate unsigned [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X ** Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

AD | MOD_U | | Normal | Unsigned modulus [ val, val => val ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X mod Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

c) REAL operations<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

123 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

AE | ADD_R | | | Add reals [ val, val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X + Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSHD (X + Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

AF | SUB_R | | | Subtract reals [ val, val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X – Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSHD (X – Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B0 | MUL_R | | | Multiply reals [ val, val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X * Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSHD (X * Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

124 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B1 | DIV_R | | | Divide reals [ val, val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X / Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSHD (X / Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B2 | EXP_R | | | Exponentiate real [ val, val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X ** Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POP (Y);<br />

| | | | POPD (X);<br />

| | | | PUSHD (X ** Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B3 | NEG_R | | | Negate real [ val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | PUSH (–X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | PUSHD (–X);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

125 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B4 | ABS_R | | | Absolute real value [ val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | PUSH (abs X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | PUSHD (abs X);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

d) TIME and DURATION operations<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

126 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B5 | ADD_D | | Normal | Add time and duration [ val, val => val ]<br />

| | | |<br />

| | | | POP (D);<br />

| | | | POPD (T);<br />

| | | | PUSHD (T + D);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B6 | SUB_D | | Normal | Subtract duration [ val, val => val ]<br />

| | | | from time<br />

| | | |<br />

| | | | POP (D);<br />

| | | | POPD (T);<br />

| | | | PUSHD (T – D);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B7 | SUB_T | | Normal | Subtract times [ val, val => val ]<br />

| | | |<br />

| | | | POPD (T2);<br />

| | | | POPD (T1);<br />

| | | | PUSH (T1 – T2);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

127 von/of: 662<br />

e) SET operations<br />

These instructions perform operations on sets. A set is regarded as a packed array of bits (BOOLEAN). A distinction<br />

is made between 1–word and multiple–word sets: For 1–word sets the set value is directly manipulated via<br />

the Expression Stack like any numeric value. Multiple–word sets are manipulated via their addresses on the Expression<br />

Stack. Note that instructions that generate a multiple–word stack result implicitly allocate memory for<br />

the result and push the address of the result on the Expression Stack.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B8 | ADD_S | | | Set union<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ set, set => set ]<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X or Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => adr ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MP);<br />

| | | | MEMORY (MP..MP+L–1) :=<br />

| | | | MEMORY(A1..A1+L–1) or MEMORY(A2..A2+L–1);<br />

| | | | MP := MP + L;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

128 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

B9 | SUB_S | | | Set difference<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ set, set => set ]<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X and not Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => adr ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MP);<br />

| | | | MEMORY (MP..MP+L–1) :=<br />

| | | | MEMORY(A1..A1+L–1) and not<br />

| | | | MEMORY(A2..A2+L–1);<br />

| | | | MP := MP + L;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

BA | MUL_S | | | Set intersection<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ set, set => set ]<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X and Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => adr ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MP);<br />

| | | | MEMORY (MP..MP+L–1) :=<br />

| | | | MEMORY(A1..A1+L–1) and MEMORY(A2..A2+L–1);<br />

| | | | MP := MP + L;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

129 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

BB | DIV_S | | | Symmetric set difference<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ set, set => set ]<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X xor Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => adr ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MP);<br />

| | | | MEMORY (MP..MP+L–1) :=<br />

| | | | MEMORY(A1..A1+L–1) xor MEMORY(A2..A2+L–1);<br />

| | | | MP := MP + L;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

BC | INCL | | Normal | Include element in set [ adr, num => ]<br />

| | | |<br />

| | | | POP (N);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + N/32)(N mod 32) := TRUE;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

BD | EXCL | | Normal | Exclude element from set [ adr, num => ]<br />

| | | |<br />

| | | | POP (N);<br />

| | | | POP (A);<br />

| | | | MEMORY(A + N/32)(N mod 32) := FALSE;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.8 Comparison Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

130 von/of: 662<br />

These instructions perform comparisons on operands on the Expression Stack. They push a boolean value as<br />

a result back on the Expression Stack. The multiple–word comparison instructions operate on data in the Memory<br />

pointed by addresses on the Expression Stack.<br />

a) GENERAL comparisons<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

BE | EQU | | | Test equal [ val, val => bool ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X = Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSH (X = Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => bool ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MEMORY(A1..A1+L–1) =<br />

| | | | MEMORY(A2..A2+L–1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

131 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

BF | NEQ | | | Test not equal [ val, val => bool ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X /= Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSH (X /= Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => bool ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (MEMORY(A1..A1+L–1) /=<br />

| | | | MEMORY(A2..A2+L–1));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

b) INTEGER comparisons<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

132 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C0 | LES_I | | Normal | Test less (int) [ val, val => bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X < Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C1 | GRT_I | | Normal | Test greater (int) [ val, val => bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X > Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C2 | LEQ_I | | Normal | Test less/equal (int) [ val, val => bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X >= Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

c) UNSIGNED_INTEGER comparisons<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

133 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C4 | LES_U | | Normal | Test less (unsig) [ val, val => bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X < Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C5 | GRT_U | | Normal | Test greater (unsig) [ val, val => bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X > Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C6 | LEQ_U | | Normal | Test less/equal (unsig) [ val, val => bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X bool ]<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X >= Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

d) REAL comparisons<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

134 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C8 | LES_R | | | Test less (real) [ val, val => bool ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X < Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSH (X < Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

C9 | GRT_R | | | Test greater (real) [ val, val => bool ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X > Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSH (X > Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

CA | LEQ_R | | | Test less/equal (real) [ val, val => bool ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

135 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

CB | GEQ_R | | | Test great./equ. (real) [ val, val => bool ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH (X >= Y);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | PUSH (X >= Y);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

e) TIME comparisons<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

136 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

CC | LES_T | | Normal | Test less (time) [ val, val => bool ]<br />

| | | |<br />

| | | | POPD (T2);<br />

| | | | POPD (T1);<br />

| | | | PUSH (T1 < T2);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

CD | GRT_T | | Normal | Test greater (time) [ val, val => bool ]<br />

| | | |<br />

| | | | POPD (T2);<br />

| | | | POPD (T1);<br />

| | | | PUSH (T1 > T2);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

CE | LEQ_T | | Normal | Test less/equal (time) [ val, val => bool ]<br />

| | | |<br />

| | | | POPD (T2);<br />

| | | | POPD (T1);<br />

| | | | PUSH (T1 bool ]<br />

| | | |<br />

| | | | POPD (T2);<br />

| | | | POPD (T1);<br />

| | | | PUSH (T1 >= T2);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

137 von/of: 662<br />

f) SET comparisons<br />

These instructions perform comparisons on sets. 1–Word sets are manipulated directly via the Expression stack,<br />

like any numeric value, multiple–word sets are manipulated indirectly via addresses on the Expression Stack.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D0 | LEQ_S | | | Test set inclusion<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ set, set => bool ]<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH ((X and not Y) = (others => FALSE));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => bool ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH ((MEMORY(A1..A1+L–1) and not<br />

| | | | MEMORY(A2..A2+L–1))<br />

| | | | = (others => FALSE));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D1 | GEQ_S | | | Test set inclusion<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ set, set => bool ]<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | PUSH ((Y and not X) = (others => FALSE));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ adr, adr, size => bool ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH ((MEMORY(A2..A2+L–1) and not<br />

| | | | MEMORY(A1..A1+L–1))<br />

| | | | = (others => FALSE));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

138 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D2 | TE<strong>ST</strong> | | | Test set membership<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ num, set => bool ]<br />

| | | Normal | POP (S);<br />

| | | | POP (N);<br />

| | | | IF N < 0 OR N >= 32 THEN<br />

| | | | PUSH (FALSE);<br />

| | | | ELSE<br />

| | | | PUSH (S(N));<br />

| | | | END IF;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ num, adr, len => bool ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A);<br />

| | | | POP (N);<br />

| | | | IF N < 0 OR N >= L * 32 THEN<br />

| | | | PUSH (FALSE);<br />

| | | | ELSE<br />

| | | | PUSH (MEMORY(A + N/32)(N mod 32));<br />

| | | | END IF;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

g) <strong>ST</strong>RING comparisons<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

139 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D3 | LES_A | | Normal | Test less (ASCII) [ adr, adr => bool ]<br />

| | | |<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (<strong>ST</strong>RING(A1) < <strong>ST</strong>RING(A2));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D4 | GRT_A | | Normal | Test greater (ASCII) [ adr, adr => bool ]<br />

| | | |<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (<strong>ST</strong>RING(A1) > <strong>ST</strong>RING(A2));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D5 | LEQ_A | | Normal | Test less/equal (ASCII) [ adr, adr => bool ]<br />

| | | |<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (<strong>ST</strong>RING(A1) bool ]<br />

| | | |<br />

| | | | POP (A2);<br />

| | | | POP (A1);<br />

| | | | PUSH (<strong>ST</strong>RING(A1) >= <strong>ST</strong>RING(A2));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.9 BOOLEAN negation<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

140 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––<br />

D7 | NEG | | Normal | Boolean NOT [ bool => bool ]<br />

| | | |<br />

| | | | POP (B);<br />

| | | | PUSH (not B);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––<br />

6.7.5.3.10 Allocation Instructions<br />

These instructions allocate space in memory and free allocated space. Note that allocation and deallocation follow<br />

strict stack semantics.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D8 | ALLOC | | Normal | Allocate space in memory [ size => adr ]<br />

| | | |<br />

| | | | POP (L);<br />

| | | | PUSH (MP);<br />

| | | | MP := MP + L;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

D9 | FREE | | Normal | Free allocated space in memory [ size => ]<br />

| | | |<br />

| | | | POP (L);<br />

| | | | MP := MP – L;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.11 Jump Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

141 von/of: 662<br />

These instructions perform jumps to locations in the code frame. The target location is indicated relatively as<br />

a distance from the current PC. Conditional jumps test a condition (a boolean value) on the Expression Stack,<br />

the jump is performed if the condition is FALSE.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

DA | JUMP.b | dist 1 | Normal | Jump (short distance) [ ]<br />

| | signed | |<br />

| | | | PC := PC + dist;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

DB | JUMP.h | dist 2 | Normal | Jump (long distance) [ ]<br />

| | signed | |<br />

| | | | PC := PC + dist;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

DC | JUMP_C.b | dist 1 | Normal | Conditional jump (short dist.) [ bool => ]<br />

| | signed | |<br />

| | | | POP (B);<br />

| | | | if not B then<br />

| | | | PC := PC + dist;<br />

| | | | else<br />

| | | | PC := PC + 2;<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

DD | JUMP_C.h | dist 2 | Normal | Conditional jump (long distance) [ bool => ]<br />

| | signed | |<br />

| | | | POP (B);<br />

| | | | if not B then<br />

| | | | PC := PC + dist;<br />

| | | | else<br />

| | | | PC := PC + 3;<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.12 Special Jump Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

These instructions implement the UCL short–circuit OR (”|”) and AND (”&”) operations.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

142 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

DE | JUMP_T.b | dist 1 | Normal | Jump if true (OR) [ bool => (bool) ]<br />

| | unsigned| |<br />

| | | | POP (B);<br />

| | | | if B then<br />

| | | | PUSH (B);<br />

| | | | PC := PC + dist;<br />

| | | | else<br />

| | | | PC := PC + 2;<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

DF | JUMP_F.b | dist 1 | Normal | Jump if false (AND) [ bool => (bool) ]<br />

| | unsigned| |<br />

| | | | POP (B);<br />

| | | | if not B then<br />

| | | | PUSH (B);<br />

| | | | PC := PC + dist;<br />

| | | | else<br />

| | | | PC := PC + 2;<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.13 Iterative Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

143 von/of: 662<br />

These instructions implement the UCL FOR loop. A FOR loop is bracketed by an ITER/NEXT instruction pair<br />

that communicate via the Expression Stack.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E0 | ITER | dist 2 | Normal | Iterative loop prolog<br />

| | unsigned| | [ adr, first, last, step =><br />

| | | | (adr, first, last, step, label) ]<br />

| | | |<br />

| | | | S := <strong>ST</strong>ACK(SP); –– step<br />

| | | | L := <strong>ST</strong>ACK(SP–1); –– last loop value<br />

| | | | F := <strong>ST</strong>ACK(SP–2); –– first loop value<br />

| | | | A := <strong>ST</strong>ACK(SP–3); –– addr. of loop variable<br />

| | | |<br />

| | | | if (S > 0 and then F > L) or<br />

| | | | (S < 0 and then F < L) then<br />

| | | | SP := SP – 4; –– pop 4 stack items<br />

| | | | PC := PC + dist; –– exit from loop<br />

| | | | else<br />

| | | | MEMORY(A) := F; –– init. loop variable<br />

| | | | PC := PC + 3;<br />

| | | | PUSH (PC); –– loop entry label<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E1 | NEXT | | Normal | Iterative loop epilog<br />

| | | | [ adr, first, last, step, label =><br />

| | | | (adr, first, last, step, label) ]<br />

| | | |<br />

| | | | S := <strong>ST</strong>ACK(SP–1); –– step<br />

| | | | L := <strong>ST</strong>ACK(SP–2); –– last loop value<br />

| | | | A := <strong>ST</strong>ACK(SP–4); –– addr. of loop variable<br />

| | | |<br />

| | | | MEMORY(A) := MEMORY(A) + S; –– inc. loop var<br />

| | | |<br />

| | | | if (S > 0 and MEMORY(A) > L)<br />

| | | | or (S < 0 and MEMORY(A) < L) then<br />

| | | | SP := SP – 5; –– pop 5 stack items<br />

| | | | PC := PC + 1; –– leave loop<br />

| | | | else<br />

| | | | PC := <strong>ST</strong>ACK(SP); –– next loop cycle<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.14 Switch Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

144 von/of: 662<br />

These instructions implement the UCL CASE statement. Two alternative instructions perform the jump to the<br />

according case branch via a jump table and a search table, respectively.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E2 | SWITCH | n 2 | Normal | Switch to CASE branch [ val => label ]<br />

| | unsigned| | via jump table<br />

| | | |<br />

| | | | Z := VALUE (CODE(PC+3..PC+4));–– exit label<br />

| | | | E := VALUE (CODE(PC+5..PC+6));–– ELSE branch<br />

| | | | T := PC + 7; –– Pointer to jump table<br />

| | | |<br />

| | | | POP (X); –– case selector<br />

| | | | PUSH (PC + Z); –– push exit label<br />

| | | |<br />

| | | | if X < 0 or X > n then<br />

| | | | PC := PC + E; –– jump to ELSE<br />

| | | | else<br />

| | | | I := T + 2*X; –– jump tab. index<br />

| | | | PC := PC + VALUE (CODE(I..I+1)); –– jump<br />

| | | | end if;<br />

| | | |<br />

| | | | –– SWITCH is followed by a jump table:<br />

| | | | ––<br />

| | | | –– halfword 1: distance to end of case<br />

| | | | –– halfword 2: distance to ELSE part<br />

| | | | ––<br />

| | | | –– halfwords 3 .. 3+n:<br />

| | | | distances to the branches<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

145 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E3 | SWITCH_X | n 2 | Normal | Switch to CASE branch [ val => label ]<br />

| | unsigned| | via search table<br />

| | | |<br />

| | | | Z := VALUE (CODE(PC+3..PC+4));–– exit label<br />

| | | | E := VALUE (CODE(PC+5..PC+6));–– ELSE branch<br />

| | | |<br />

| | | | POP (X); –– case selector<br />

| | | | PUSH (PC + Z); –– push exit label<br />

| | | |<br />

| | | | D := {distance to branch searched in table}<br />

| | | |<br />

| | | | if D = 0 then –– not found<br />

| | | | PC := PC + E; –– jump to ELSE<br />

| | | | else<br />

| | | | PC := PC + D; –– jump to branch<br />

| | | | end if;<br />

| | | |<br />

| | | | –– SWITCH_X is followed by a search table:<br />

| | | | ––<br />

| | | | –– halfword: distance to end of case<br />

| | | | –– halfword: distance to ELSE part<br />

| | | | ––<br />

| | | | –– range 1 .. range n<br />

| | | | ––<br />

| | | | –– (Each ”range” consists of:<br />

| | | | –– o lower bound of the range (word)<br />

| | | | –– o upper bound of the range (word)<br />

| | | | –– o distance to branch (halfword)<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E4 | LEAVE | | Normal | Exit from SWITCH [ label => ]<br />

| | | |<br />

| | | | POP (PC); –– jump to end of case statement<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.15 Procedure/Function Call Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

146 von/of: 662<br />

These instructions perform procedure/function calls, entry and return operations. Note that the ENTER instruction<br />

unstacks the actual parameters and moves them to locations in the Memory.<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E5 | CALL.b | proc 1 | Normal | Call procedure/function [ ]<br />

| | unsigned| |<br />

| | | | MEMORY (MP) := FP; –– save dynamic link<br />

| | | | MEMORY (MP+1) := PC+2; –– save return addr.<br />

| | | | MP := MP + 2;<br />

| | | | FP := MP; –– mark stack frame<br />

| | | | PC := PROC (proc); –– jump<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E6 | CALL_E | lib 1 | Normal | Call external procedure/function [ ]<br />

| | unsigned| |<br />

| | | | MEMORY(MP) := GP; –– save global link<br />

| | proc 1 | | MEMORY(MP+1) := FP; –– save dynamic link<br />

| | unsigned| | MEMORY(MP+2) := –(PC+3);–– save return addr.<br />

| | | | MP := MP + 3;<br />

| | | | FP := MP; –– mark stack frame<br />

| | | | GP := BASE (lib); –– new global frame<br />

| | | | CP := MEMORY(GP–2); –– new code frame<br />

| | | | PC := PROC (proc); –– jump<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E7 | INIT | | Normal | Enter library initialization part [ ]<br />

| | | |<br />

| | | | if not MEMORY(GP–3) then –– if not yet init.<br />

| | | | MEMORY(GP–3) := TRUE; –– mark as init.<br />

| | | | else –– else<br />

| | | | PC := – MEMORY (FP–1); –– return from<br />

| | | | MP := FP – 3; –– external call<br />

| | | | GP := MEMORY (MP);<br />

| | | | FP := MEMORY (MP+1);<br />

| | | | CP := MEMORY (GP–2);<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E8 | ENTER | par 1 | Normal | Enter procedure/funct. [ val, ..., val => ]<br />

| | unsigned| |<br />

| | | | –– unstack parameters:<br />

| | dat 1 | | MEMORY(MP..MP+par–1) := <strong>ST</strong>ACK(SP–par+1..SP);<br />

| | unsigned| | SP := SP – par;<br />

| | | |<br />

| | | | –– allocate space for local data:<br />

| | | | MP := MP + par + dat;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

147 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

E9 | RTN | | Normal | Return from procedure/function [ ]<br />

| | | |<br />

| | | | PC := MEMORY (FP–1);<br />

| | | | if PC > 0 THEN –– local call<br />

| | | | MP := FP – 2;<br />

| | | | FP := MEMORY(MP);<br />

| | | | else –– external call<br />

| | | | MP := FP – 3;<br />

| | | | GP := MEMORY(MP);<br />

| | | | FP := MEMORY(MP+1);<br />

| | | | CP := MEMORY(GP–2);<br />

| | | | PC := –PC;<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.16 Conversion Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

148 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

EA | TRUNC | | | Truncate real to integer [ val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | PUSH (INTEGER(X));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | PUSH (INTEGER(X));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

EB | REAL | | | Convert integer to real [ val => val ]<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | PUSH (FLOAT(X));<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POP (X);<br />

| | | | PUSHD (FLOAT(X));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

EC | SHORT_R | | Normal | Convert double word real [ val => val ]<br />

| | | | to word real<br />

| | | |<br />

| | | | POPD (X);<br />

| | | | PUSH (SHORT_FLOAT(X));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

ED | LONG_R | | Normal | Convert word real [ val => val ]<br />

| | | | to double word real<br />

| | | |<br />

| | | | POP (X);<br />

| | | | PUSHD (FLOAT(X));<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

149 von/of: 662<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

EE | <strong>ST</strong>R | | Normal | Convert character to string [ val => adr ]<br />

| | | |<br />

| | | | POP (X);<br />

| | | | PUSH (MP);<br />

| | | | MEMORY (MP) := 1;<br />

| | | | MEMORY (MP+1) := X;<br />

| | | | MP := MP + 2;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

EF | –– | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.17 Miscellaneous Instructions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

150 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F0 | INC_I | | Normal | Increment integer variable [ adr => ]<br />

| | | |<br />

| | | | POP (A);<br />

| | | | MEMORY(A) := MEMORY(A) + 1;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F1 | DEC_I | | Normal | Decrement integer variable [ adr => ]<br />

| | | |<br />

| | | | POP (A);<br />

| | | | MEMORY(A) := MEMORY(A) – 1;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F2 | INC_U | | Normal | Increment unsigned variable [ adr => ]<br />

| | | |<br />

| | | | POP (A);<br />

| | | | MEMORY(A) := MEMORY(A) + 1;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F3 | DEC_U | | Normal | Decrement unsigned variable [ adr => ]<br />

| | | |<br />

| | | | POP (A);<br />

| | | | MEMORY(A) := MEMORY(A) – 1;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.18 <strong>System</strong> Instructions<br />

These instructions perform different system specific operations.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

151 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F4 | SYS | lib 1 | Normal | <strong>System</strong> call [ ]<br />

| | unsigned| |<br />

| | | | SY<strong>ST</strong>EM (lib, proc);<br />

| | proc 1 | |<br />

| | unsigned| |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F5 | DOUBLE | | Normal | Interpret next instruction as double [ ]<br />

| | | | word instruction<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F6 | MULTI | | Normal | Interpret next instruction as multiple [ ]<br />

| | | | word instruction<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

152 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F7 | READ | type 1 | | Read DB end item value [ sid => val ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (SID);<br />

| | | | READ (SID, type, X);<br />

| | | | PUSH (X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POP (SID);<br />

| | | | READD (SID, type, X);<br />

| | | | PUSHD (X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ sid, size => adr ]<br />

| | | Multi | POP (L);<br />

| | | | POP (SID);<br />

| | | | PUSH (MP);<br />

| | | | READM (SID, type, MP);<br />

| | | | MP := MP + L;<br />

| | | |<br />

| | | | –– This instruction implicitly allocates<br />

| | | | –– space in memory<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F8 | WRITE | type 1 | | Write DB end item value [ sid, val => ]<br />

| | unsigned| |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (X);<br />

| | | | POP (SID);<br />

| | | | WRITE (SID, type, X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (X);<br />

| | | | POP (SID);<br />

| | | | WRITED (SID, type, X);<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | | [ sid, adr, size => ]<br />

| | | Multi | POP (L);<br />

| | | | POP (A);<br />

| | | | POP (SID);<br />

| | | | WRITEM (SID, type, A);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

153 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

F9 | CHECK_I | | Normal | Check integer range [ val, min, max => val ]<br />

| | | | n .. m<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | if <strong>ST</strong>ACK(SP) < X or <strong>ST</strong>ACK(SP) > Y then<br />

| | | | TRAP (range_error);<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

FA | CHECK_0 | | Normal | Check range 0 .. m [ val, max => val ]<br />

| | | |<br />

| | | | POP (X);<br />

| | | | if <strong>ST</strong>ACK(SP) < 0 or <strong>ST</strong>ACK(SP) > X then<br />

| | | | TRAP (range_error);<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

FB | CHECK_U | | Normal | Check unsigned [ val, min, max => val ]<br />

| | | | range n .. m<br />

| | | |<br />

| | | | POP (Y);<br />

| | | | POP (X);<br />

| | | | if <strong>ST</strong>ACK(SP) < X or <strong>ST</strong>ACK(SP) > Y then<br />

| | | | TRAP (range_error);<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

FC | CHECK_R | | | Check real range [ val, min, max => val ]<br />

| | | | n .. m<br />

| | | |<br />

| | | |–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Normal | POP (Y);<br />

| | | | POP (X);<br />

| | | | if <strong>ST</strong>ACK(SP) < X or <strong>ST</strong>ACK(SP) > Y then<br />

| | | | TRAP (range_error);<br />

| | | | end if;<br />

| | | |<br />

| | |––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

| | | |<br />

| | | Double | POPD (Y);<br />

| | | | POPD (X);<br />

| | | | if <strong>ST</strong>ACK(SP–1..SP) < X or<br />

| | | | <strong>ST</strong>ACK(SP–1..SP) > Y then<br />

| | | | TRAP (range_error);<br />

| | | | end if;<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

154 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

FD | ERROR | err 1 | Normal | Runtime error trap [ ]<br />

| | unsigned| |<br />

| | | | ERROR (err);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––<br />

FE | HALT | | Normal | Stop program and return [ code => ]<br />

| | | | completion code<br />

| | | |<br />

| | | | POP (X);<br />

| | | | HALT (X);<br />

| | | |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.5.3.19 No–operation Instruction<br />

This instruction does not perform any operation.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

155 von/of: 662<br />

Hex | Mnemonic | Param. | Mode | Semantics<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––<br />

FF | NOP | | any | No operation [ ]<br />

| | | mode |<br />

––––+––––––––––––+–––––––––+––––––––+–––––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

6.7.6 Sample AP and Corresponding I–Code<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

156 von/of: 662<br />

This example shows the translation of the following AP into I–code. For an example of the generated Debug<br />

Table, see the following chapter.<br />

Source code:<br />

1 PROCEDURE Example;<br />

2<br />

3 IMPORT \SY<strong>ST</strong>EM\IO_Library; –– system library (Get/Put procedures)<br />

4<br />

5 VARIABLE Sum: INTEGER; –– global address 0<br />

6 VARIABLE N: INTEGER; –– global address 1<br />

7<br />

8<br />

9 PROCEDURE Add (X: INTEGER); –– procedure 1<br />

10 BEGIN<br />

11 Sum := Sum + X;<br />

12 INC (N);<br />

13 END Add;<br />

14<br />

15<br />

16 FUNCTION Mean (): INTEGER; –– procedure 2<br />

17 BEGIN<br />

18 IF N = 0 THEN<br />

19 RETURN 0;<br />

20 ELSE<br />

21 RETURN Sum / N;<br />

22 END IF;<br />

23 END Mean;<br />

24<br />

25<br />

26 BEGIN<br />

27 Sum := 0; –– initialize counters<br />

28 N := 0;<br />

29<br />

30 FOR i := 1 TO 10 DO –– i implicitly on global address 2<br />

31 Add (i); –– local procedure call<br />

32 END FOR;<br />

33<br />

34<br />

35 Put_String (”Mean value = ”); –– procedure 6 from system library<br />

36 Put_Integer (Mean()); –– procedure 7 from system library<br />

37 New_Line; –– procedure 9 from system library<br />

38<br />

39 END Example;


Space Infrastructure<br />

I–code in assembly language:<br />

.PROCEDURE example<br />

.IMPORT ; Size: 0<br />

.DATA 3<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

157 von/of: 662<br />

.CODE ; Size: 72 ; PC Code dump<br />

.MAIN ; 6<br />

JUMP.h L3 ; 34 ; 6: DB 00 22<br />

.ENTRY P1 ; 9<br />

ENTER 1, 0 ; 9: E8 01 00<br />

LOAD_G.0 ; 12: 20<br />

LOAD_L.0 ; 13: 10<br />

ADD_I ; 14: A0<br />

<strong>ST</strong>OR_G.0 ; 15: 50<br />

LOAD_A_G.b 1 ; 16: 8E 01<br />

INC_I ; 18: F0<br />

RTN ; 19: E9<br />

.ENTRY P2 ; 20<br />

L1:<br />

L2:<br />

L3:<br />

ENTER 0, 0 ; 20: E8 00 00<br />

LOAD_G.1 ; 23: 21<br />

LOAD_C.0 ; 24: 00<br />

EQU ; 25: BE<br />

JUMP_C.h L1 ; 8 ; 26: DD 00 08<br />

LOAD_C.0 ; 29: 00<br />

RTN ; 30: E9<br />

JUMP.h L2 ; 7 ; 31: DB 00 07<br />

LOAD_G.0 ; 34: 20<br />

LOAD_G.1 ; 35: 21<br />

DIV_I ; 36: A3<br />

RTN ; 37: E9<br />

ERROR 9 ; 38: FD 09<br />

LOAD_C.0 ; 40: 00<br />

<strong>ST</strong>OR_G.0 ; 41: 50<br />

LOAD_C.0 ; 42: 00<br />

<strong>ST</strong>OR_G.1 ; 43: 51<br />

LOAD_A_G.b 2 ; 44: 8E 02<br />

LOAD_C.1 ; 46: 01<br />

LOAD_C.10 ; 47: 0A<br />

LOAD_C.1 ; 48: 01<br />

ITER L4 ; 6 ; 49: E0 00 06<br />

LOAD_G.2 ; 52: 22<br />

CALL.1 ; 53: 71<br />

NEXT ; 54: E1


Space Infrastructure<br />

L4:<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

158 von/of: 662<br />

LOAD_A_T.b D1 ; 0 ; 55: 92 00<br />

LOAD_C.13 ; 57: 0D<br />

LOAD_C.0 ; 58: 00<br />

SYS 1, 6 ; 59: F4 01 06<br />

CALL.2 ; 62: 72<br />

LOAD_C.1 ; 63: 01<br />

SYS 1, 7 ; 64: F4 01 07<br />

SYS 1, 9 ; 67: F4 01 09<br />

LOAD_C.0 ; 70: 00<br />

HALT ; 71: FE<br />

.CON<strong>ST</strong>ANT ; Size: 4<br />

D1: 1298489710, ; 16#4D65616E# Mean<br />

544629100, ; 16#2076616C# val<br />

1969561661, ; 16#7565203D# ue =<br />

536870912 ; 16#20000000# ...<br />

; Library relocation list: Size: 0<br />

; Real conversion list: Size: 0<br />

.END


Space Infrastructure<br />

6.7.7 Procedural <strong>Interface</strong><br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

159 von/of: 662<br />

Generation and interpretation of I–Code is supported by the Ada package . It contains<br />

the I–Code definition as an enumeration type, together with operations to convert between textual, binary and<br />

logical representation of I–Code.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– I_CODE_DEFINITION<br />

––<br />

–– Definition of UCL I–Code<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Unit: Generic package specification<br />

––<br />

–– Author: Ulf Schmidt, Franz Kruse, ERNO<br />

––<br />

–– Document: <strong>ICD</strong> 1216 404 001, CLS to <strong>System</strong> <strong>ICD</strong><br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Vers. Date Author Company SPR Change description<br />

–– ––––– –––––––– ––––––––––––––– –––––––– –––– ––––––––––––––––––––––––<br />

–– 3.0.0 22.04.94 F. Kruse ERNO First issue for V3<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with NUMERIC_TYPES; use NUMERIC_TYPES;<br />

package I_CODE_DEFINITION is<br />

–– I–Code definition<br />

––––––––––––––––––––<br />

type I_CODE is (LOAD_C_0, –– Load constant 0 .. 15<br />

LOAD_C_1,<br />

LOAD_C_2,<br />

LOAD_C_3,<br />

LOAD_C_4,<br />

LOAD_C_5,<br />

LOAD_C_6,<br />

LOAD_C_7,<br />

LOAD_C_8,<br />

LOAD_C_9,<br />

LOAD_C_10,<br />

LOAD_C_11,<br />

LOAD_C_12,<br />

LOAD_C_13,<br />

LOAD_C_14,<br />

LOAD_C_15,<br />

LOAD_L_0, –– Load local variable from address 0 .. 15<br />

LOAD_L_1,<br />

LOAD_L_2,<br />

LOAD_L_3,<br />

LOAD_L_4,<br />

LOAD_L_5,<br />

LOAD_L_6,<br />

LOAD_L_7,<br />

LOAD_L_8,<br />

LOAD_L_9,<br />

LOAD_L_10,<br />

LOAD_L_11,<br />

LOAD_L_12,<br />

LOAD_L_13,<br />

LOAD_L_14,<br />

LOAD_L_15,<br />

LOAD_G_0, –– Load global variable from address 0 .. 15<br />

LOAD_G_1,<br />

LOAD_G_2,<br />

LOAD_G_3,<br />

LOAD_G_4,<br />

LOAD_G_5,<br />

LOAD_G_6,<br />

LOAD_G_7,<br />

LOAD_G_8,<br />

LOAD_G_9,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

160 von/of: 662


Space Infrastructure<br />

LOAD_G_10,<br />

LOAD_G_11,<br />

LOAD_G_12,<br />

LOAD_G_13,<br />

LOAD_G_14,<br />

LOAD_G_15,<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

LOAD_F_0, –– Load offsetted variable from address 0 .. 15<br />

LOAD_F_1,<br />

LOAD_F_2,<br />

LOAD_F_3,<br />

LOAD_F_4,<br />

LOAD_F_5,<br />

LOAD_F_6,<br />

LOAD_F_7,<br />

LOAD_F_8,<br />

LOAD_F_9,<br />

LOAD_F_10,<br />

LOAD_F_11,<br />

LOAD_F_12,<br />

LOAD_F_13,<br />

LOAD_F_14,<br />

LOAD_F_15,<br />

<strong>ST</strong>OR_L_0, –– Store local variable at address 0 .. 15<br />

<strong>ST</strong>OR_L_1,<br />

<strong>ST</strong>OR_L_2,<br />

<strong>ST</strong>OR_L_3,<br />

<strong>ST</strong>OR_L_4,<br />

<strong>ST</strong>OR_L_5,<br />

<strong>ST</strong>OR_L_6,<br />

<strong>ST</strong>OR_L_7,<br />

<strong>ST</strong>OR_L_8,<br />

<strong>ST</strong>OR_L_9,<br />

<strong>ST</strong>OR_L_10,<br />

<strong>ST</strong>OR_L_11,<br />

<strong>ST</strong>OR_L_12,<br />

<strong>ST</strong>OR_L_13,<br />

<strong>ST</strong>OR_L_14,<br />

<strong>ST</strong>OR_L_15,<br />

<strong>ST</strong>OR_G_0, –– Store global variable at address 0 .. 15<br />

<strong>ST</strong>OR_G_1,<br />

<strong>ST</strong>OR_G_2,<br />

<strong>ST</strong>OR_G_3,<br />

<strong>ST</strong>OR_G_4,<br />

<strong>ST</strong>OR_G_5,<br />

<strong>ST</strong>OR_G_6,<br />

<strong>ST</strong>OR_G_7,<br />

<strong>ST</strong>OR_G_8,<br />

<strong>ST</strong>OR_G_9,<br />

<strong>ST</strong>OR_G_10,<br />

<strong>ST</strong>OR_G_11,<br />

<strong>ST</strong>OR_G_12,<br />

<strong>ST</strong>OR_G_13,<br />

<strong>ST</strong>OR_G_14,<br />

<strong>ST</strong>OR_G_15,<br />

<strong>ST</strong>OR_F_0, –– Store offsetted variable at address 0 .. 15<br />

<strong>ST</strong>OR_F_1,<br />

<strong>ST</strong>OR_F_2,<br />

<strong>ST</strong>OR_F_3,<br />

<strong>ST</strong>OR_F_4,<br />

<strong>ST</strong>OR_F_5,<br />

<strong>ST</strong>OR_F_6,<br />

<strong>ST</strong>OR_F_7,<br />

<strong>ST</strong>OR_F_8,<br />

<strong>ST</strong>OR_F_9,<br />

<strong>ST</strong>OR_F_10,<br />

<strong>ST</strong>OR_F_11,<br />

<strong>ST</strong>OR_F_12,<br />

<strong>ST</strong>OR_F_13,<br />

<strong>ST</strong>OR_F_14,<br />

<strong>ST</strong>OR_F_15,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

161 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CALL_1, –– Call local/global procedure/function 1 .. 15<br />

CALL_2,<br />

CALL_3,<br />

CALL_4,<br />

CALL_5,<br />

CALL_6,<br />

CALL_7,<br />

CALL_8,<br />

CALL_9,<br />

CALL_10,<br />

CALL_11,<br />

CALL_12,<br />

CALL_13,<br />

CALL_14,<br />

CALL_15,<br />

LOAD_T_b, –– Load constant from table<br />

LOAD_T_h,<br />

LOAD_C_b, –– Load constant<br />

LOAD_C_h,<br />

LOAD_C_w,<br />

LOAD_L_b, –– Load local variable<br />

LOAD_G_b, –– Load global variable<br />

LOAD_F_b, –– Load offsetted variable<br />

LOAD_F_h,<br />

LOAD_E, –– Load external variable<br />

LOAD_X_C, –– Load indexed character<br />

LOAD_X_V, –– Load indexed variable<br />

LOAD_A_L_b, –– Load local address<br />

LOAD_A_G_b, –– Load global address<br />

LOAD_A_F_b, –– Load offsetted address<br />

LOAD_A_F_h,<br />

LOAD_A_E, –– Load external address<br />

LOAD_A_T_b, –– Load address of constant<br />

LOAD_A_T_h,<br />

<strong>ST</strong>OR_L_b, –– Store local variable<br />

<strong>ST</strong>OR_G_b, –– Store global variable<br />

<strong>ST</strong>OR_F_b, –– Store offsetted variable<br />

<strong>ST</strong>OR_F_h,<br />

<strong>ST</strong>OR_E, –– Store external variable<br />

<strong>ST</strong>OR_X_C, –– Store indexed character<br />

<strong>ST</strong>OR_X_V, –– Store indexed variable<br />

MOVE, –– Move block of data<br />

CAT, –– String catenation<br />

COPY, –– Copy top of stack<br />

POP, –– Remove n items from top of stack<br />

SWAP, –– Swap data on top of stack<br />

ADD_I, –– Add integers<br />

SUB_I, –– Subtract integers<br />

MUL_I, –– Multiply integers<br />

DIV_I, –– Divide integers<br />

EXP_I, –– Integer exponentiation<br />

MOD_I, –– Modulus<br />

NEG_I, –– Negate integer<br />

ABS_I, –– Absolute integer value<br />

ADD_U, –– Add unsigned<br />

SUB_U, –– Subtract unsigned<br />

MUL_U, –– Multiply unsigned<br />

DIV_U, –– Divide unsigned<br />

EXP_U, –– Exponentiate unsigned<br />

MOD_U, –– Unsigned modulus<br />

ADD_R, –– Add reals<br />

SUB_R, –– Subtract reals<br />

MUL_R, –– Multiply reals<br />

DIV_R, –– Divide reals<br />

EXP_R, –– Real exponentiation<br />

NEG_R, –– Negate real<br />

ABS_R, –– Absolute real value<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

162 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

ADD_D, –– Add time and duration<br />

SUB_D, –– Subtract duration from time<br />

SUB_T, –– Subtract times<br />

ADD_S, –– Set union<br />

SUB_S, –– Set difference<br />

MUL_S, –– Set intersection<br />

DIV_S, –– Symmetric set difference<br />

INCL, –– Include element in set<br />

EXCL, –– Exclude element from set<br />

EQU, –– Test equal<br />

NEQ, –– Test not equal<br />

LES_I, –– Test less (integer)<br />

GRT_I, –– Test greater (integer)<br />

LEQ_I, –– Test less or equal (integer)<br />

GEQ_I, –– Test greater or equal (integer)<br />

LES_U, –– Test less (unsigned)<br />

GRT_U, –– Test greater (unsigned)<br />

LEQ_U, –– Test less or equal (unsigned)<br />

GEQ_U, –– Test greater or equal (unsigned)<br />

LES_R, –– Test less (real)<br />

GRT_R, –– Test greater (real)<br />

LEQ_R, –– Test less or equal (real)<br />

GEQ_R, –– Test greater or equal (real)<br />

LES_T, –– Test less (time)<br />

GRT_T, –– Test greater (time)<br />

LEQ_T, –– Test less or equal (time)<br />

GEQ_T, –– Test greater or equal (time)<br />

LEQ_S, –– Test set inclusion<br />

GEQ_S, –– Test set inclusion<br />

TE<strong>ST</strong>, –– Test set membership<br />

LES_A, –– Test less (ASCII)<br />

GRT_A, –– Test greater (ASCII)<br />

LEQ_A, –– Test less or equal (ASCII)<br />

GEQ_A, –– Test greater or equal (ASCII)<br />

NEG, –– Boolean NOT<br />

ALLOC, –– Allocate space in memory<br />

FREE, –– Free allocated space in memory<br />

JUMP_b, –– Jump (short distance)<br />

JUMP_h, –– Jump (long distance)<br />

JUMP_C_b, –– Conditional jump (short distance)<br />

JUMP_C_h, –– Conditional jump (long distance)<br />

JUMP_T_b, –– Jump if true (OR)<br />

JUMP_F_b, –– Jump if false (AND)<br />

ITER, –– Iterative loop prolog<br />

NEXT, –– Iterative loop epilog<br />

SWITCH, –– Switch to CASE branch via jump table<br />

SWITCH_X, –– Switch to CASE branch via search table<br />

LEAVE, –– Exit from CASE branch<br />

CALL_b, –– Call local/global procedure/function<br />

CALL_E, –– Call external function<br />

INIT, –– Enter library initialization part<br />

ENTER, –– Enter procedure/function<br />

RTN, –– Return from procedure/function<br />

TRUNC, –– Truncate real to integer<br />

REAL, –– Convert integer to real<br />

SHORT_R, –– Convert double word real to word real<br />

LONG_R, –– Convert word real to double word real<br />

<strong>ST</strong>R, –– Convert character to string<br />

INC_I, –– Increment integer variable<br />

DEC_I, –– Decrement integer variable<br />

INC_U, –– Increment unsigned variable<br />

DEC_U, –– Decrement unsigned variable<br />

SYS, –– <strong>System</strong> call<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

163 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

D_PREFIX, –– Next instruction in Double–Mode<br />

M_PREFIX, –– Next instruction in Multi–Mode<br />

READ, –– Read database end item value<br />

WRITE, –– Write database end item value<br />

CHECK_I, –– Check integer range n .. m<br />

CHECK_0, –– Check range 0 .. m<br />

CHECK_U, –– Check unsigned range n .. m<br />

CHECK_R, –– Check real range n .. m<br />

ERROR, –– Runtime error trap<br />

HALT, –– Stop program and return success code<br />

NOP); –– No operation<br />

type GENERIC_I_CODE is –– implied_____byte________halfword____word____<br />

( LOAD_C, –– LOAD_C.# LOAD_C.b LOAD_C.h LOAD_C.w<br />

LOAD_L, –– LOAD_L.# LOAD_L.b<br />

LOAD_G, –– LOAD_G.# LOAD_G.b<br />

LOAD_F, –– LOAD_F.# LOAD_F.b LOAD_F.h<br />

LOAD_T, –– LOAD_T.b LOAD_T.h<br />

LOAD_A_L, –– LOAD_A_L.b<br />

LOAD_A_G, –– LOAD_A_G.b<br />

LOAD_A_F, –– LOAD_A_F.b LOAD_A_F.h<br />

LOAD_A_T, –– LOAD_A_T.b LOAD_A_T.h<br />

<strong>ST</strong>OR_L, –– <strong>ST</strong>OR_L.# <strong>ST</strong>OR_L.b<br />

<strong>ST</strong>OR_G, –– <strong>ST</strong>OR_G.# <strong>ST</strong>OR_G.b<br />

<strong>ST</strong>OR_F, –– <strong>ST</strong>OR_F.# <strong>ST</strong>OR_F.b <strong>ST</strong>OR_F.h<br />

CALL, –– CALL.# CALL.b<br />

JUMP, –– JUMP.b JUMP.h<br />

JUMP_C, –– JUMP_C.b JUMP_C.h<br />

JUMP_T, –– JUMP_T.b<br />

JUMP_F, –– JUMP_F.b<br />

NON_GENERIC);<br />

–– Trap numbers used for ERROR instruction<br />

NO_RETURN_FROM_FUNCTION: constant NATURAL := 0;<br />

<strong>ST</strong>RING_ASSIGNMENT_OVERFLOW: constant NATURAL := 1;<br />

OTHER_ERROR: constant NATURAL := 255;<br />

type I_CODE_SET is array (I_CODE) of BOOLEAN;<br />

type IN<strong>ST</strong>RUCTION is<br />

record<br />

EXI<strong>ST</strong>S: BOOLEAN;<br />

VALUE: I_CODE;<br />

end record;<br />

type IMPLIED_IN<strong>ST</strong>RUCTION is<br />

array (0..15) of IN<strong>ST</strong>RUCTION;<br />

type I_CODE_GROUP (IS_GENERIC: BOOLEAN := FALSE) is<br />

record<br />

case IS_GENERIC is<br />

when FALSE => NON_GENERIC: IN<strong>ST</strong>RUCTION;<br />

when TRUE => CLASS: GENERIC_I_CODE;<br />

IMPLIED: IMPLIED_IN<strong>ST</strong>RUCTION;<br />

BYTE: IN<strong>ST</strong>RUCTION;<br />

HALFWORD: IN<strong>ST</strong>RUCTION;<br />

WORD: IN<strong>ST</strong>RUCTION;<br />

end case;<br />

end record;<br />

–– exception<br />

––––––––––––<br />

I_CODE_ERROR: exception;<br />

–– conversion functions<br />

–––––––––––––––––––––––<br />

function VALUE (TEXT: <strong>ST</strong>RING) return I_CODE;<br />

function VALUE (TEXT: <strong>ST</strong>RING) return I_CODE_GROUP;<br />

function VALUE (CODE: BYTE) return I_CODE;<br />

function MNEMONIC (VALUE: I_CODE) return <strong>ST</strong>RING;<br />

function MNEMONIC (CODE: BYTE) return <strong>ST</strong>RING;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

164 von/of: 662


Space Infrastructure<br />

function CODE (TEXT: <strong>ST</strong>RING) return BYTE;<br />

function CODE (VALUE: I_CODE) return BYTE;<br />

private<br />

for I_CODE’SIZE use 8;<br />

for I_CODE use (LOAD_C_0 => 16#00#,<br />

LOAD_C_1 => 16#01#,<br />

LOAD_C_2 => 16#02#,<br />

LOAD_C_3 => 16#03#,<br />

LOAD_C_4 => 16#04#,<br />

LOAD_C_5 => 16#05#,<br />

LOAD_C_6 => 16#06#,<br />

LOAD_C_7 => 16#07#,<br />

LOAD_C_8 => 16#08#,<br />

LOAD_C_9 => 16#09#,<br />

LOAD_C_10 => 16#0A#,<br />

LOAD_C_11 => 16#0B#,<br />

LOAD_C_12 => 16#0C#,<br />

LOAD_C_13 => 16#0D#,<br />

LOAD_C_14 => 16#0E#,<br />

LOAD_C_15 => 16#0F#,<br />

LOAD_L_0 => 16#10#,<br />

LOAD_L_1 => 16#11#,<br />

LOAD_L_2 => 16#12#,<br />

LOAD_L_3 => 16#13#,<br />

LOAD_L_4 => 16#14#,<br />

LOAD_L_5 => 16#15#,<br />

LOAD_L_6 => 16#16#,<br />

LOAD_L_7 => 16#17#,<br />

LOAD_L_8 => 16#18#,<br />

LOAD_L_9 => 16#19#,<br />

LOAD_L_10 => 16#1A#,<br />

LOAD_L_11 => 16#1B#,<br />

LOAD_L_12 => 16#1C#,<br />

LOAD_L_13 => 16#1D#,<br />

LOAD_L_14 => 16#1E#,<br />

LOAD_L_15 => 16#1F#,<br />

LOAD_G_0 => 16#20#,<br />

LOAD_G_1 => 16#21#,<br />

LOAD_G_2 => 16#22#,<br />

LOAD_G_3 => 16#23#,<br />

LOAD_G_4 => 16#24#,<br />

LOAD_G_5 => 16#25#,<br />

LOAD_G_6 => 16#26#,<br />

LOAD_G_7 => 16#27#,<br />

LOAD_G_8 => 16#28#,<br />

LOAD_G_9 => 16#29#,<br />

LOAD_G_10 => 16#2A#,<br />

LOAD_G_11 => 16#2B#,<br />

LOAD_G_12 => 16#2C#,<br />

LOAD_G_13 => 16#2D#,<br />

LOAD_G_14 => 16#2E#,<br />

LOAD_G_15 => 16#2F#,<br />

LOAD_F_0 => 16#30#,<br />

LOAD_F_1 => 16#31#,<br />

LOAD_F_2 => 16#32#,<br />

LOAD_F_3 => 16#33#,<br />

LOAD_F_4 => 16#34#,<br />

LOAD_F_5 => 16#35#,<br />

LOAD_F_6 => 16#36#,<br />

LOAD_F_7 => 16#37#,<br />

LOAD_F_8 => 16#38#,<br />

LOAD_F_9 => 16#39#,<br />

LOAD_F_10 => 16#3A#,<br />

LOAD_F_11 => 16#3B#,<br />

LOAD_F_12 => 16#3C#,<br />

LOAD_F_13 => 16#3D#,<br />

LOAD_F_14 => 16#3E#,<br />

LOAD_F_15 => 16#3F#,<br />

<strong>ST</strong>OR_L_0 => 16#40#,<br />

<strong>ST</strong>OR_L_1 => 16#41#,<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

165 von/of: 662


Space Infrastructure<br />

<strong>ST</strong>OR_L_2 => 16#42#,<br />

<strong>ST</strong>OR_L_3 => 16#43#,<br />

<strong>ST</strong>OR_L_4 => 16#44#,<br />

<strong>ST</strong>OR_L_5 => 16#45#,<br />

<strong>ST</strong>OR_L_6 => 16#46#,<br />

<strong>ST</strong>OR_L_7 => 16#47#,<br />

<strong>ST</strong>OR_L_8 => 16#48#,<br />

<strong>ST</strong>OR_L_9 => 16#49#,<br />

<strong>ST</strong>OR_L_10 => 16#4A#,<br />

<strong>ST</strong>OR_L_11 => 16#4B#,<br />

<strong>ST</strong>OR_L_12 => 16#4C#,<br />

<strong>ST</strong>OR_L_13 => 16#4D#,<br />

<strong>ST</strong>OR_L_14 => 16#4E#,<br />

<strong>ST</strong>OR_L_15 => 16#4F#,<br />

<strong>ST</strong>OR_G_0 => 16#50#,<br />

<strong>ST</strong>OR_G_1 => 16#51#,<br />

<strong>ST</strong>OR_G_2 => 16#52#,<br />

<strong>ST</strong>OR_G_3 => 16#53#,<br />

<strong>ST</strong>OR_G_4 => 16#54#,<br />

<strong>ST</strong>OR_G_5 => 16#55#,<br />

<strong>ST</strong>OR_G_6 => 16#56#,<br />

<strong>ST</strong>OR_G_7 => 16#57#,<br />

<strong>ST</strong>OR_G_8 => 16#58#,<br />

<strong>ST</strong>OR_G_9 => 16#59#,<br />

<strong>ST</strong>OR_G_10 => 16#5A#,<br />

<strong>ST</strong>OR_G_11 => 16#5B#,<br />

<strong>ST</strong>OR_G_12 => 16#5C#,<br />

<strong>ST</strong>OR_G_13 => 16#5D#,<br />

<strong>ST</strong>OR_G_14 => 16#5E#,<br />

<strong>ST</strong>OR_G_15 => 16#5F#,<br />

<strong>ST</strong>OR_F_0 => 16#60#,<br />

<strong>ST</strong>OR_F_1 => 16#61#,<br />

<strong>ST</strong>OR_F_2 => 16#62#,<br />

<strong>ST</strong>OR_F_3 => 16#63#,<br />

<strong>ST</strong>OR_F_4 => 16#64#,<br />

<strong>ST</strong>OR_F_5 => 16#65#,<br />

<strong>ST</strong>OR_F_6 => 16#66#,<br />

<strong>ST</strong>OR_F_7 => 16#67#,<br />

<strong>ST</strong>OR_F_8 => 16#68#,<br />

<strong>ST</strong>OR_F_9 => 16#69#,<br />

<strong>ST</strong>OR_F_10 => 16#6A#,<br />

<strong>ST</strong>OR_F_11 => 16#6B#,<br />

<strong>ST</strong>OR_F_12 => 16#6C#,<br />

<strong>ST</strong>OR_F_13 => 16#6D#,<br />

<strong>ST</strong>OR_F_14 => 16#6E#,<br />

<strong>ST</strong>OR_F_15 => 16#6F#,<br />

––– => 16#70#,<br />

CALL_1 => 16#71#,<br />

CALL_2 => 16#72#,<br />

CALL_3 => 16#73#,<br />

CALL_4 => 16#74#,<br />

CALL_5 => 16#75#,<br />

CALL_6 => 16#76#,<br />

CALL_7 => 16#77#,<br />

CALL_8 => 16#78#,<br />

CALL_9 => 16#79#,<br />

CALL_10 => 16#7A#,<br />

CALL_11 => 16#7B#,<br />

CALL_12 => 16#7C#,<br />

CALL_13 => 16#7D#,<br />

CALL_14 => 16#7E#,<br />

CALL_15 => 16#7F#,<br />

LOAD_T_b => 16#80#,<br />

LOAD_T_h => 16#81#,<br />

LOAD_C_b => 16#82#,<br />

LOAD_C_h => 16#83#,<br />

LOAD_C_w => 16#84#,<br />

LOAD_L_b => 16#85#,<br />

LOAD_G_b => 16#86#,<br />

LOAD_F_b => 16#87#,<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

166 von/of: 662


Space Infrastructure<br />

LOAD_F_h => 16#88#,<br />

LOAD_E => 16#89#,<br />

LOAD_X_C => 16#8A#,<br />

LOAD_X_V => 16#8B#,<br />

––– => 16#8C#,<br />

LOAD_A_L_b => 16#8D#,<br />

LOAD_A_G_b => 16#8E#,<br />

LOAD_A_F_b => 16#8F#,<br />

LOAD_A_F_h => 16#90#,<br />

LOAD_A_E => 16#91#,<br />

LOAD_A_T_b => 16#92#,<br />

LOAD_A_T_h => 16#93#,<br />

<strong>ST</strong>OR_L_b => 16#94#,<br />

<strong>ST</strong>OR_G_b => 16#95#,<br />

<strong>ST</strong>OR_F_b => 16#96#,<br />

<strong>ST</strong>OR_F_h => 16#97#,<br />

<strong>ST</strong>OR_E => 16#98#,<br />

<strong>ST</strong>OR_X_C => 16#99#,<br />

<strong>ST</strong>OR_X_V => 16#9A#,<br />

MOVE => 16#9B#,<br />

CAT => 16#9C#,<br />

COPY => 16#9D#,<br />

POP => 16#9E#,<br />

SWAP => 16#9F#,<br />

ADD_I => 16#A0#,<br />

SUB_I => 16#A1#,<br />

MUL_I => 16#A2#,<br />

DIV_I => 16#A3#,<br />

EXP_I => 16#A4#,<br />

MOD_I => 16#A5#,<br />

NEG_I => 16#A6#,<br />

ABS_I => 16#A7#,<br />

ADD_U => 16#A8#,<br />

SUB_U => 16#A9#,<br />

MUL_U => 16#AA#,<br />

DIV_U => 16#AB#,<br />

EXP_U => 16#AC#,<br />

MOD_U => 16#AD#,<br />

ADD_R => 16#AE#,<br />

SUB_R => 16#AF#,<br />

MUL_R => 16#B0#,<br />

DIV_R => 16#B1#,<br />

EXP_R => 16#B2#,<br />

NEG_R => 16#B3#,<br />

ABS_R => 16#B4#,<br />

ADD_D => 16#B5#,<br />

SUB_D => 16#B6#,<br />

SUB_T => 16#B7#,<br />

ADD_S => 16#B8#,<br />

SUB_S => 16#B9#,<br />

MUL_S => 16#BA#,<br />

DIV_S => 16#BB#,<br />

INCL => 16#BC#,<br />

EXCL => 16#BD#,<br />

EQU => 16#BE#,<br />

NEQ => 16#BF#,<br />

LES_I => 16#C0#,<br />

GRT_I => 16#C1#,<br />

LEQ_I => 16#C2#,<br />

GEQ_I => 16#C3#,<br />

LES_U => 16#C4#,<br />

GRT_U => 16#C5#,<br />

LEQ_U => 16#C6#,<br />

GEQ_U => 16#C7#,<br />

LES_R => 16#C8#,<br />

GRT_R => 16#C9#,<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

167 von/of: 662


Space Infrastructure<br />

LEQ_R => 16#CA#,<br />

GEQ_R => 16#CB#,<br />

LES_T => 16#CC#,<br />

GRT_T => 16#CD#,<br />

LEQ_T => 16#CE#,<br />

GEQ_T => 16#CF#,<br />

LEQ_S => 16#D0#,<br />

GEQ_S => 16#D1#,<br />

TE<strong>ST</strong> => 16#D2#,<br />

LES_A => 16#D3#,<br />

GRT_A => 16#D4#,<br />

LEQ_A => 16#D5#,<br />

GEQ_A => 16#D6#,<br />

NEG => 16#D7#,<br />

ALLOC => 16#D8#,<br />

FREE => 16#D9#,<br />

JUMP_b => 16#DA#,<br />

JUMP_h => 16#DB#,<br />

JUMP_C_b => 16#DC#,<br />

JUMP_C_h => 16#DD#,<br />

JUMP_T_b => 16#DE#,<br />

JUMP_F_b => 16#DF#,<br />

ITER => 16#E0#,<br />

NEXT => 16#E1#,<br />

SWITCH => 16#E2#,<br />

SWITCH_X => 16#E3#,<br />

LEAVE => 16#E4#,<br />

CALL_b => 16#E5#,<br />

CALL_E => 16#E6#,<br />

INIT => 16#E7#,<br />

ENTER => 16#E8#,<br />

RTN => 16#E9#,<br />

TRUNC => 16#EA#,<br />

REAL => 16#EB#,<br />

SHORT_R => 16#EC#,<br />

LONG_R => 16#ED#,<br />

<strong>ST</strong>R => 16#EE#,<br />

––– => 16#EF#,<br />

INC_I => 16#F0#,<br />

DEC_I => 16#F1#,<br />

INC_U => 16#F2#,<br />

DEC_U => 16#F3#,<br />

SYS => 16#F4#,<br />

D_PREFIX => 16#F5#,<br />

M_PREFIX => 16#F6#,<br />

READ => 16#F7#,<br />

WRITE => 16#F8#,<br />

CHECK_I => 16#F9#,<br />

CHECK_0 => 16#FA#,<br />

CHECK_U => 16#FB#,<br />

CHECK_R => 16#FC#,<br />

ERROR => 16#FD#,<br />

HALT => 16#FE#,<br />

NOP => 16#FF#);<br />

end I_CODE_DEFINITION;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

168 von/of: 662


Space Infrastructure<br />

6.8 Parameter Encoding<br />

6.8.1 Functional Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

169 von/of: 662<br />

When parameter lists are to be transferred via the network (e.g. for activation of an AP, or remote invocation<br />

of a library procedure/function) they must be encoded in a serial stream of words. This is referred to as external<br />

encoding.<br />

When parameter lists of parameterized pathnames are kept in the memory of the stack machine, they are encoded<br />

in an analogous form. This is referred to as internal encoding.<br />

Both external and internal encoding are based on the same encoding scheme.<br />

6.8.2 Parameter Classes<br />

Parameters are classified by mode and type. This classification is coded in the parameter class word, with the<br />

mode in the upper halfword and the type in the lower halfword.<br />

Mode<br />

The parameter mode defines the passing and access mechanism.<br />

0 type<br />

1 type<br />

2 type<br />

Type<br />

IN A value is passed into the called module.<br />

OUT A value is passed out of the called module.<br />

IN OUT A value is passed into and out of the called module.<br />

Parameters may belong to the following type classes.<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

1–word scalar type (INTEGER, REAL, BOOLEAN, BITSET, WORD etc.)<br />

Item is exactly one 32–bit word. Sets that occupy one word or less are classified here, too.<br />

2–word scalar type (LONG_REAL, TIME, <strong>ST</strong>ATECODE)<br />

Item is exactly two 32–bit words.<br />

fixed–size string type<br />

Item is one component consisting of one or more words representing a string.<br />

fixed–size structured type (array, record, set)<br />

Item is one component consisting of zero or more words representing an array, record or set.<br />

open string type (open string parameter)<br />

Item is one component consisting of 1 or more words representing a string.<br />

open structured type (open array parameter)<br />

Item is one component consisting of zero, one or more words representing an array.<br />

parameterized pathname (pathname( ))<br />

Item is a database end item with parameters (AP, stimulus, ...).


Space Infrastructure<br />

6.8.3 Encoding Scheme<br />

6.8.3.1 External Scheme<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

170 von/of: 662<br />

The following defines the external parameter encoding scheme. The parameter stream is prefixed with the size<br />

of the stream in words, then follow the single parameters, each encoded as shown in the picture, and a null word<br />

terminating the stream.<br />

The No. of words indication counts the number of data words only.<br />

The Upper bound indication for open strings and structures is the upper bound according to the UCL view.<br />

For scalars, the Type indication is identical to MPS_DEFINITIONS.T_SW_TYPE’POS<br />

(BITSET_TYPE is used for all sets that occupy one word or less).<br />

Size<br />

in words<br />

Parameter type class<br />

Parameter 1 Parameter 2 . . . Parameter n<br />

parmeterized No. of<br />

pathname<br />

words<br />

open structure<br />

open string<br />

fixed structure<br />

fixed string<br />

2–word scalar<br />

1–word scalar<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

No. of<br />

words<br />

No. of<br />

words<br />

No. of<br />

words<br />

No. of<br />

words<br />

Type<br />

Type<br />

SID<br />

Upper<br />

bound<br />

Upper<br />

bound<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

2<br />

Word<br />

2<br />

Word<br />

2<br />

Word<br />

2<br />

Word<br />

2<br />

Word<br />

2<br />

Word<br />

3<br />

Word<br />

3<br />

Word<br />

3<br />

Word<br />

3<br />

Word<br />

3<br />

data words<br />

... Word<br />

n<br />

... Word<br />

n<br />

... Word<br />

n<br />

Figure 6.8.3–1 External Parameter Encoding Scheme<br />

...<br />

...<br />

Word<br />

n<br />

Word<br />

n<br />

0<br />

Words 1 .. n are the parameter<br />

list of the pathname, encoded<br />

according to these rules.


Space Infrastructure<br />

6.8.3.2 Internal Scheme<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

171 von/of: 662<br />

The following defines the representation of a parameterized pathname item in the memory of the stack machine,<br />

including its actual parameter list. On the expression stack a parameterized item is represented by an address<br />

pointing to the following data structure in memory.<br />

The item is represented by its SID, the size of its actual parameter list, and the parameter list itself, which is encoded<br />

in the internal encoding scheme. The internal encoding scheme is essentially identical to the external<br />

scheme, with the only difference that for non–scalar parameters the actual data words are replaced by an address<br />

pointing to the location in memory where the data words are stored, and for OUT and IN OUT parameters they<br />

are always replaced by an address to the location in memory.<br />

Note that the Size of list in this case denotes the true size of the encoded parameter list with addresses to structures<br />

instead of the actual structured values while the Size in words, nevertheless, counts the data words (and<br />

not the addresses) for the size of its following list, like in the external encoding.<br />

pathname SID<br />

Size<br />

in words<br />

Size of list Encoded list<br />

Parameter 1 Parameter 2 . . . Parameter n<br />

parmeterized<br />

pathname<br />

open structure<br />

open string<br />

fixed structure<br />

fixed string<br />

2–word scalar<br />

IN param.<br />

1–word scalar<br />

IN par.<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

mode<br />

Parameter type class<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

No. of<br />

words<br />

No. of<br />

words<br />

No. of<br />

words<br />

No. of<br />

words<br />

No. of<br />

words<br />

Type<br />

Type<br />

SID<br />

Upper<br />

bound<br />

Upper<br />

bound<br />

Ad–<br />

dress<br />

Ad–<br />

dress<br />

Ad–<br />

dress<br />

Ad–<br />

dress<br />

Ad–<br />

dress<br />

2–word scalar Ad–<br />

(IN) OUT par.<br />

Type<br />

dress<br />

1–word scalar<br />

(IN) OUT par.<br />

mode<br />

mode<br />

2<br />

1<br />

Type<br />

Ad–<br />

dress<br />

Word<br />

1<br />

Word<br />

1<br />

Word<br />

2<br />

data words<br />

Figure 6.8.3–2 Internal Parameter Enoding Scheme<br />

Address of data<br />

instead of the data itself.<br />

mode is OUT or IN OUT<br />

mode is IN<br />

0


Space Infrastructure<br />

6.8.4 Example (Call of a library procedure)<br />

Declaration (UCL):<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure PROC (in NUMBER : INTEGER; -- 1–word scalar<br />

in SWITCH : BOOLEAN; -- 1–word scalar<br />

out DOUBLE : LONG_REAL; -- 2–word scalar<br />

in <strong>ST</strong>ATE : statecode; -- 2–word scalar<br />

in TEXT_1 : <strong>ST</strong>RING_9; -- fix–size string<br />

in TEXT_2 : string; -- open string<br />

in out ARRAY_1: REAL_ARRAY_4; -- fix–size array<br />

in ARRAY_2: array of REAL; -- open array<br />

in PATH_1 : pathname; -- simple pathname<br />

in PATH_2 : pathname() ); -- parameterized pathname<br />

Call (HLCL):<br />

PROC NUMBER : 123, -- 1–word scalar<br />

SWITCH : TRUE, -- 1–word scalar<br />

DOUBLE : some variable -- 2–word scalar<br />

<strong>ST</strong>ATE : $MEDIUM, -- 2–word scalar<br />

TEXT_1 : ”ABCDEFGHI”, -- fix–size string<br />

TEXT_2 : ”ABCDEFGHI”, -- open string<br />

ARRAY_1: some variable, -- fix–size array<br />

ARRAY_2: (1.0, 2.0, 3.0, 4.0), -- open array<br />

PATH_1 : \some_path\X, -- simple pathname<br />

PATH_2 : \some_path\Y (3.14) -- parameterized pathname<br />

Encoded parameter list:<br />

size<br />

of list<br />

NUMBER<br />

SWITCH<br />

DOUBLE<br />

<strong>ST</strong>ATE<br />

TEXT_2<br />

ARRAY_2<br />

end<br />

of list<br />

0<br />

0<br />

1<br />

0<br />

0<br />

52<br />

0<br />

INTEGER<br />

BOOLEAN<br />

LONG_REAL<br />

<strong>ST</strong>ATECODE<br />

4<br />

123<br />

true<br />

TEXT_1 9<br />

0<br />

0<br />

4 3<br />

MEDI UM<br />

PATH_1 PATHNAME 17535<br />

4 ABCDEFGH I<br />

9<br />

9<br />

ABCDEFGH I<br />

ARRAY_1 2 4 4 1.0 2.0 3.0 4.0<br />

0<br />

0<br />

1<br />

1<br />

2<br />

2<br />

3<br />

5<br />

6<br />

1<br />

1.0 2.0 3.0 4.0<br />

PATH_2 0 7 5<br />

4 1 3.14<br />

Figure 6.8.3–1 Encoded Parameter List<br />

0<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

172 von/of: 662<br />

17536 REAL 0


Space Infrastructure<br />

6.8.5 Stack Machine Representation of AP Parameters<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Within the memory of the Stack Machine the parameters are represented as shown in the picture:<br />

GP<br />

MP<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

AP global data frame<br />

1–word scalar value<br />

2–word<br />

scalar<br />

fixed structure address<br />

open<br />

structure<br />

...<br />

...<br />

value<br />

address<br />

contents of<br />

fixed structure<br />

upper bound<br />

param. pathname address<br />

...<br />

contents of<br />

open structure<br />

contents of<br />

parameterized pathname<br />

data parts of<br />

parameterized pathname<br />

Figure 6.8.3–1 Global Data Frame<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

173 von/of: 662<br />

AP parameters are treated<br />

as the first n global variables.<br />

This is analogous to local<br />

procedure parameters.<br />

Addresses are obtained<br />

by allocation of space in<br />

memory for non–scalars.<br />

Non–scalar parameters<br />

are allocated space in<br />

memory and referenced<br />

via their address.<br />

These are the n data words<br />

These are the n data words<br />

This is the SID, the No. of<br />

data words and the encoded<br />

parameter list like defined<br />

here, but with addresses to<br />

structured data, instead of the<br />

data words themselves.


Space Infrastructure<br />

6.9 Flight Synoptic Display Representation Format<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

174 von/of: 662<br />

The flight synoptic displays will be stored in an ASCII based format, as generated by the Sammi fmt_unload<br />

function, which is described in applicable document 2.1.5.6, chapter 7, page 7–6 ff.<br />

The target platform compatible binary format has to be generated from this ASCII format by the complementary<br />

Sammi fmt_load function for the relevant target platform, which is described in the same chapter of above reference.


Space Infrastructure<br />

6.10 FWDU Supported Sammi API <strong>Interface</strong>s<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

175 von/of: 662<br />

The FWDU provides an interface to the Sammi API part of the on–board systems through the formats generated<br />

by the FWDU format editor and text editor. The conventions defined in the following sections must be followed<br />

by the flight specific Support Software (not part of the FWDU) in order for the on–board execution to work<br />

properly.<br />

6.10.1 File Naming Conventions<br />

Many of the FWDU end items (displays and other end items referenced by displays) will at run time be represented<br />

by files. The naming convention for these files has to comply to the one applicable for the Operational<br />

File Transfer (OFT) which is defined as:<br />

Furthermore, the restrictions imposed by Sammi have to be observed (i.e. limitation in length, specific extension<br />

for formats ...)<br />

Therefore, two different file naming conventions in line with the above rule are used depending on the type of<br />

the end item:<br />

Synoptic Display End Items<br />

S__.fmt<br />

where is the decimal representation of the SID with no leading zeros (10 digits max) and is the last part of the pathname (16 characters max).<br />

Other End Item Types<br />

This file naming convention is used because of the limited length of the file names that can be specified in the<br />

Sammi formats.<br />

The file names for all other FWDU end item types referenced within display end items is derived from the SID<br />

of the end item as follows:<br />

S__.<br />

where is the decimal representation of the SID with no leading zeros (10 digits max).<br />

The depends on the end item type according the the following table:<br />

MDB end item type Equivalent Sammi file extension / type<br />

(see Sammi documentation for details)<br />

FWDU_HELP_TEXT *.hlp ASCII help text, displayed in the RTE when a user<br />

clicks the middle mouse button<br />

FWDU_CONVERSION_TEXT *.cnv ASCII conversion table, used by Formatted Numeric<br />

DFD types<br />

FWDU_SYMBOL_TABLE_TEXT *.safs ASCII symbol table or text table, used by the Symbol<br />

/ Text Table DFD types<br />

FWDU_DYNAMIC_OBJECT_TABLE_TEXT *.dobj ASCII dynamic object table, used by the Dynamic<br />

Object DFD type<br />

FWDU_LI<strong>ST</strong>_TEXT *.cmd ASCII standard menu or select file list, used by the<br />

Menu and Select List DFD types<br />

FWDU_DATA_DEF_RECORD_TEXT *.ddr ASCII Data Definition Record, used by the Tabular<br />

DFD type<br />

FWDU_SYMBOL_BITMAP_BINARY *.sym Binary symbol bitmap, used by Symbol Table, Object<br />

Icon, and General Action Button DFD types


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

176 von/of: 662<br />

FWDU_X_BITMAP_BINARY *.xbm Binary bitmap image, used as a background image<br />

on a format; also used by Graphic Data Field and<br />

General Action Button DFD types<br />

FWDU_GIF_BINARY *.gif Binary GIF image, used as background image in a<br />

format; also used by Graphic Data Field and General<br />

Action Button DFD types<br />

FWDU_XWD_BINARY *.xwd Binary X Window Dump image, used as background<br />

image in a format; also used by Graphic<br />

Data Field and General Action Button DFD types<br />

6.10.2 Logical Server Name<br />

The name of the logical server specified in the Sammi formats is set to FWDU_SERVER.


Space Infrastructure<br />

6.10.3 Commands to the On–Board <strong>System</strong><br />

6.10.3.1 Software Commanding<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

177 von/of: 662<br />

The FWDU shall support sending of ASCII command strings via the Sammi Run Time Environment (RTE) to<br />

the on–board data server in accordance to the syntax as defined in the RM for CPL & SW Commanding, applicable<br />

document 2.1.2.3, chapter 5.3.1 (Syntax description) in conjunction with section 5.3.2 (Predefined Items<br />

for the FWDU) with the following amendments:<br />

parameter ::= value<br />

end_item_id ::= ”!” integer_literal<br />

Note: Due to limitations inherent to the underlaying Sammi commercial product the overall length of such an<br />

ASCII command string is restricted to a maximum of 80 characters.<br />

Rule 1: For parameters of type ”system_check” as defined in applicable document 2.1.2.3, chapter 5.3.2. an<br />

empty pathname denoted by ”\\” shall be translated to an end_item_id of ”!0”<br />

Rule 2: The identifier has to be one of the s of the FWDU_SYNOPTIC_DISPLAY end item<br />

containing the command string. The identifier shall comply to the rules specified in applicable document<br />

2.1.2.3 (CPL LRM), section 4.1.2.2.1.<br />

6.10.3.2 Pre–Defined Commands<br />

In addition to Software Commands as defined above, the FWDU shall support sending of fixed ASCII command<br />

strings via the Sammi Run Time Environment (RTE) to the on–board data server.<br />

The commands can be pre–defined by the user in a dedicated list as part of the FWDU environment setup<br />

(FWDU_EQUIPMENT_CON<strong>ST</strong>RAINTS end item type). This list is initially empty. It is user responsibility to<br />

define the set of commands he intends to use.<br />

During display creation time this list is presented to the user on request for selection.<br />

The list has to comply with the following rules:<br />

COMMAND_LI<strong>ST</strong> BEGIN<br />

{ ↵ }<br />

END<br />

where is any sequence printable ASCII characters (excluding quotes) enclosed in quotes (e.g<br />

”ANNOTATE” or ”shutdown $<strong>System</strong>”). The string enclosed in quotes must not exceed 80 characters in length<br />

(Sammi limitation).<br />

As an example, the following list definition would serve the needs for the COF on–board system (according to<br />

the current baseline):<br />

COMMAND_LI<strong>ST</strong> BEGIN<br />

”Annotate”<br />

”HELP”<br />

”EXIT”<br />

”MARK<br />

”MUR”<br />

”LIMITS”<br />

END


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

178 von/of: 662<br />

Note: The case of the commands is preserved, but the case is ignored when the user enters commands manually<br />

in the FWDU, e.g. the commands ”Annotate”, ”annotate”, and ”ANNOTATE” will be interpreted<br />

as the same command. They are sent to the on–board data server as entered by the user (i.e. no case conversion<br />

is performed by the FWDU).<br />

6.10.3.3 Window Association Information (WAF)<br />

The T_FWDU_BIND_RAW aggregate is used to keep track of which data–delivering on–board end items a<br />

DDO refers to. For historical reasons, this information is commonly referred to as ”Window Association File<br />

(WAF)”.<br />

Intended use on–board: When a Synoptic Display is opened the on–board data server will read the associated<br />

WAF information in order to compose the Cyclic Acquisition Table (CAT), which in turn is used to obtain efficient<br />

data acquisition from the DMS <strong>Service</strong>s.<br />

Although the aggregate is of type RAW the WAF information stored in it is line oriented ASCII with the following<br />

syntax:<br />

”H”<br />

”D”<br />

”S”<br />

where denotes the ASCII Space character<br />

denotes the ASCII New Line character (\0a hexadecimal)<br />

Rule 1: The WAF always starts with one ”H” (header) line specifying the total number of DDOs (). If there are no DDOs in a display then = ”0” (zero).<br />

Rule 2: For each DDO containing at least one measurement end item reference, the WAF contains one ”D” line<br />

which specifies the DDO–name and the number of related end–item SIDs () (i.e. if there<br />

are no measurement end items referenced by a DDO no ”D” line will be present for that specific DDO).<br />

Note: For inconsistent / incomplete displays (which may be encountered during Synoptic Display<br />

development time) the might be completely missing.<br />

Rule 3: s must not contain blanks (ASCII space).<br />

Rule 4: Each ”D” line is followed by one or more ”S” lines. Each ”S” line specifies one end–item SID ()<br />

of the <strong>CGS</strong> standard end item types as defined in section 6.11.1 (i.e. references to other end item types<br />

like FWDU_HELP_TEXT are not recorded here). All fields are separated by a single ASCII space character().<br />

The following example WAF informations shall serve as illustration of the above rules:<br />

Example 1: A Synoptic Display contains two output DDOs e.g. TEMP_PLOT, which has three end–items, and<br />

TEMP_METER, which has one end–item. The resulting WAF information would be:<br />

H 2<br />

D TEMP_PLOT 3<br />

S 111224<br />

S 111225<br />

S 111226<br />

D TEMP_METER 1<br />

S 112334<br />

Example 2: If a Synoptic Display contains input DDOs only the resulting WAF information would be:<br />

H 0


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

179 von/of: 662<br />

Example 3: Assume a Synoptic Display containing three DDOs, one input and two output, of which one has no<br />

measurement end item attached (i.e. Rule 2 above applies). Since input DDOs are not recorded the resulting<br />

WAF information would be:<br />

H 1<br />

D A_PLOT 2<br />

S 111224<br />

S 111225<br />

Example 4: Assume the same Synoptic Display as in example 3 with the only difference that the user did not<br />

name the DDO containing the measurement end item references The resulting WAF information would be:<br />

H 1<br />

D 2


Space Infrastructure<br />

6.10.4 FWDU Applied Type Mapping<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

6.10.4.1 Mapping between On–board and <strong>CGS</strong> standard end item types<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

180 von/of: 662<br />

The on–board measurement end items are flight element specific and are defined by the <strong>CGS</strong> user later on.<br />

Therefore, user defined measurement end items have to be mapped to <strong>CGS</strong> standard measurement end item types<br />

(see chapter 3.1 of AD 2.1.6.1] (MDB <strong>ICD</strong>) for details on this mapping concept).<br />

The FWDU allows access to user defined measurement end items by using the V_ENT_EI_TYPE view as defined<br />

in section 7.3.5. ”Retrieval of Type Mapping Information” in conjunction with section 7.3.4.3 ”User–<br />

Tree–Nodes View” of AD 2.1.6.1 (MDB <strong>ICD</strong>). I.e. the FWDU will only accept user defined measurement end<br />

items that map to:<br />

EGSE_INTEGER_MEASUREMENT EGSE_INTEGER_SW_VARIABLE<br />

EGSE_FLOAT_MEASUREMENT EGSE_FLOAT_SW_VARIABLE<br />

EGSE_DISCRETE_MEASUREMENT EGSE_DISCRETE_SW_VARIABLE<br />

UNSIGNED_INTEGER_MEASUREMENT UNSIGNED_INTEGER_SW_VARIABLE<br />

DOUBLE_FLOAT_MEASUREMENT DOUBLE_FLOAT_SW_VARIABLE<br />

BOOLEAN_MEASUREMENT BOOLEAN_SW_VARIABLE<br />

6.10.4.2 Mapping between <strong>CGS</strong> standard end item types and Sammi data types<br />

The following table shows the mapping between MDB end item types and the corresponding Sammi data types.<br />

The logical names mdb_int, mdb_uint, mdb_float, mdb_sfloat, mdb_bool, mdb_discrete are defined corresponding<br />

to <strong>CGS</strong> standard measurement types to be used in the following tables.<br />

MDB<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

data type<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

mdb_uint ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

mdb_sfloat ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

mdb_discrete<br />

<strong>CGS</strong> standard measurement end item<br />

Sammi data type<br />

mdb_int<br />

EGSE_INTEGER_MEASUREMENT<br />

long<br />

mdb_int<br />

EGSE_INTEGER_SW_VARIABLE<br />

long<br />

mdb_uint UNSIGNED_INTEGER_MEASUREMENT long<br />

UNSIGNED_INTEGER_SW_VARIABLE long<br />

EGSE_FLOAT_MEASUREMENT float<br />

mdb_sfloat EGSE_FLOAT_SW_VARIABLE<br />

float<br />

mdb_float DOUBLE_FLOAT_MEASUREMENT<br />

double<br />

mdb_float DOUBLE_FLOAT_SW_VARIABLE<br />

double<br />

mdb_discrete EGSE_DISCRETE_MEASUREMENT text, long (1)<br />

EGSE_DISCRETE_SW_VARIABLE text<br />

mdb_bool BOOLEAN_MEASUREMENT<br />

text,long (1)<br />

mdb_bool BOOLEAN_SW_VARIABLE<br />

text<br />

ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

(1) ÁÁÁ<br />

text: ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

If linked to TEXT display type.<br />

long: ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

If linked to DYNAMIC OBJECT, OBJECT ICON and simular display types via their raw<br />

values (only possible for MEASUREMENTs, since SW VARIABLEs do not have raw<br />

values).<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁ<br />

ÁÁÁ<br />

ÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁ ÁÁÁ ÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁ<br />

ÁÁÁ Á ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

Á ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁ ÁÁÁ<br />

ÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁ


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

181 von/of: 662<br />

The following table shows the names of the Sammi DDOs, their internal types, and the MDB data types that can<br />

be mapped to DDOs. The below mentioned attributes will stay the same for modified DDOs saved in a *.lib<br />

library. For the DDOs where no corresponding MDB data type is specified no mapping is possible.<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

bar ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

barchart ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

Sammi DDO type name<br />

Sammi<br />

internal<br />

DDO type # MDB data type<br />

alarm 5001 mdb_discrete<br />

5011 mdb_int mdb_uint mdb_sfloat mdb_float<br />

5036 mdb_int mdb_uint mdb_sfloat mdb_float<br />

browser<br />

5029<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

button group<br />

5026 ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

equation<br />

ÁÁÁÁÁ<br />

curveset<br />

5017 mdb_sfloat<br />

dynamic object 5021 mdb_int mdb_uint mdb_sfloat mdb_float mdb_discrete mdb_bool<br />

5016<br />

fix–scale meter<br />

5031<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

mdb_int mdb_uint mdb_sfloat mdb_float<br />

formatted numeric ÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

5033 ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

integer<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

mdb_int mdb_uint mdb_sfloat mdb_float<br />

gauge<br />

5019 mdb_int mdb_uint mdb_sfloat mdb_float<br />

graphic date field 5034<br />

5004 mdb_int mdb_uint<br />

menu 5014<br />

meter<br />

5018<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

option ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

mdb_int mdb_uint mdb_sfloat mdb_float<br />

moving scale meter 5032 mdb_int mdb_uint mdb_sfloat mdb_float<br />

object icon 5030 mdb_int mdb_uint mdb_sfloat mdb_float mdb_discrete mdb_bool<br />

5015<br />

pie 5035 mdb_int mdb_uint mdb_sfloat mdb_float<br />

plot<br />

5008<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

mdb_sfloat<br />

pushbutton<br />

5025 ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

scrollbar<br />

ÁÁÁÁÁ<br />

real<br />

5005 mdb_sfloat mdb_float<br />

region 5037 mdb_int mdb_uint<br />

5024 mdb_int mdb_uint<br />

select list<br />

5027<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

slider<br />

5028 ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

time ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

mdb_int mdb_uint mdb_sfloat mdb_float<br />

symbol table<br />

5012 mdb_int mdb_uint mdb_sfloat mdb_float mdb_discrete mdb_bool<br />

tabular 5022 mdb_int mdb_uint mdb_sfloat mdb_float<br />

5023<br />

text 5003 mdb_bool, mdb_discrete<br />

text table<br />

5007<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

mdb_int mdb_uint mdb_sfloat mdb_float<br />

trend<br />

5009 mdb_sfloat<br />

ÁÁÁÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁ ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<br />

ÁÁÁÁÁÁÁÁ<br />

The following table shows the Sammi data types, their internal Sammi value and their size.<br />

typeÁÁÁÁ ÁÁÁÁÁ<br />

ÁÁÁÁ ÁÁÁÁÁ<br />

Sammi data Value Size in bits<br />

short 1 16<br />

long<br />

2 32<br />

float<br />

3 32<br />

ÁÁÁÁÁÁ<br />

ÁÁÁÁ ÁÁÁÁÁ<br />

ÁÁÁÁÁÁ ÁÁÁÁ<br />

ÁÁÁÁÁÁ ÁÁÁÁÁ<br />

ÁÁÁÁ ÁÁÁÁÁ<br />

ÁÁÁÁÁÁ<br />

ÁÁÁÁ<br />

ÁÁÁÁ<br />

ÁÁÁÁÁÁ<br />

ÁÁÁÁÁ<br />

ÁÁÁÁÁ


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CHAPTER 7 :<br />

CHECKOUT AND<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

182 von/of: 662<br />

SIMULATION INTERFACES


Space Infrastructure<br />

7.1 Test Setup Invocation <strong>Interface</strong><br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

183 von/of: 662<br />

For the integration of TSCV into <strong>CGS</strong>, TSCV provides interface functions for the invocation of the product.<br />

Two operating modes are provided by TSCV, the interactive mode and the batch mode. In interactive mode,<br />

the test system is controlled by the user providing a graphical user interface. Whereas in batch mode, the<br />

graphical user interface will be suppressed, and the test system is set-up and controlled automatically as<br />

specified by the command line parameters. Depending on the parameter profile, TSCV is invoked in either<br />

mode.<br />

Note only one TSCV instance can be active at any time, regardless of its operating mode.<br />

To run TSCV in interactive mode:<br />

$TSCV_HOME/bin/common/start_tscv<br />

[–Ws ] Initial main window size in pixels<br />

[–Wp ] Initial main window placement in pixels<br />

[–WG [x][++]]<br />

[–geometry [x][++]]<br />

Initial main window size and placement in pixels<br />

[–WP ] Initial icon placement in pixels<br />

[–Wi] or [+Wi] TSCV to come up closed or open (default)<br />

To run TSCV in batch mode:<br />

$TSCV_HOME/bin/common/start_tscv<br />

–mn <br />

–ec <br />

–sv <br />

–sn <br />

–cn <br />

–cv <br />

–tc <br />

[–ts [–fa ] ]<br />

Enable final archiving of test data; disabled by<br />

default<br />

–q quit after starting master AP to provide for later<br />

interactive control<br />

The batch mode command line parameters have the following meaning:<br />

mission_name name of the mission<br />

Example: FLIGHT4711<br />

element_configuration name of the element configuration<br />

Example: APM<br />

system_tree_version identification of the version of the system name tree to be used for the<br />

given mission and element configuration<br />

Example: 5<br />

system_tree_node_name virtual node in the system (name) tree for the selected mission,<br />

element configuration and version of the name tree where the given


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

184 von/of: 662<br />

CCU is looked up<br />

Example: ’\APM\EGSE’<br />

CCU_name name of the CCU in MDB<br />

Example: IF_TE<strong>ST</strong><br />

CCU_version version identification of the given CCU. Note that a full version<br />

identification comprises the version, issue and revision number<br />

Example: 1.1.0<br />

test_configuration pathname of the database enditem of type<br />

EGSE_TE<strong>ST</strong>_CONFIGURATION. This enditem describes how the<br />

setup of the test equipment shall be done<br />

Example: ’\APM\EGSE\SY<strong>ST</strong>EM\IF_TE<strong>ST</strong>\SETUP_3’<br />

test_session_name name of the test session to be created in TRDB for the given test<br />

If the test session name argument ts is omitted, test data will be stored within<br />

TRDB’s default test session. The test session name can consist of capital<br />

letters, digits and underscores only, but starting with a capital letter. Its<br />

length is limited to 20 characters maximum.<br />

Example: IF_TE<strong>ST</strong>_3<br />

The final archive argument fa, i.e. store test data on final archive media, has<br />

only meaning if a test session name argument is provided. By default, final<br />

archiving is disabled.<br />

Note because of backslashes, path names of MDA on the UNIX command line are to be enclosed by single<br />

quotes.<br />

The command will return on command line parameter errors, after starting the designated master AP when<br />

invoked with q option, or after the test is finished, which may take up hours or even days. The final status is<br />

indicated by following return codes:<br />

99 success<br />

100 invalid CCU selection<br />

101 invalid mission name<br />

102 invalid element configuration<br />

103 invalid system tree version<br />

104 invalid CCU name<br />

105 invalid CCU version<br />

106 invalid system tree node name<br />

107 failed to connect to other <strong>CGS</strong> product<br />

108 invalid test configuration<br />

109 failed to set–up test configuration<br />

110 failed to start test execution<br />

111 failed to create test session<br />

112 test configuration already active<br />

113 a node already participates in another active test configuration<br />

114 test session name already in use<br />

115 no final archive device available<br />

116 failed to start master AP<br />

117 another TSCV instance already executing<br />

118 invalid user profile<br />

119 invalid command line parameter profile<br />

120 default test session already in use<br />

121 TSCV internal error<br />

122 Maximum number of test configurations exceeded<br />

123 no replay mode allowed


Space Infrastructure<br />

7.2 VICOS Types Definition<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

185 von/of: 662<br />

A same set of data types are used in the various procedural interfaces provided by VICOS products. In order<br />

to ensure the consistency of their definition and usage through all the interfaces, they are grouped and defined<br />

once, in the current section.<br />

They are ”basic” data types and constants (like numbers, strings, enumerations...) which are accessible directly.<br />

They constitute a type pool and are grouped into a set of Ada packages, according to their nature.<br />

The usage of the basic data types is simple. The desired variable has to be declared with the desired type in the<br />

piece of software which will use it. The access to the content of the variable is done directly, by knowledge of<br />

its Ada structure.<br />

The VICOS_DEFINITIONS package contains type and constant definitions that are :<br />

– specific of VICOS products, i.e. not used by several products of other <strong>CGS</strong> assemblies,<br />

– common in VICOS products, i.e. used or shared by several VICOS provided services,<br />

– of general nature, i.e. not specific to any of these services.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– VICOS_DEFINITIONS (spec)<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package contains type definitions and constants for VICOS global<br />

–– use.<br />

––<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : HCI<br />

–– CI–NUMBER : 1216 878<br />

–– OBJECT NAME : VICOS_DEFINITIONS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 / Alsys Ada 5.5.1<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS: –<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– #IRN 6008:<br />

–– Add GDU Alternative BINARY_PACKET<br />

–– Author: P.Athmann<br />

–– Date: 14.2.97<br />

–– V3.0 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: gehrke (on host mps2s–1)<br />

–– creation date: 15.05.95 15:00:00<br />

–– <strong>CGS</strong> V2 Build 2 baseline, PIRN 3023/E<br />

–– V2.8 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_s)<br />

–– creation date: 26.11.92 16:43:44<br />

–– update representation clause for T_ERROR_MESSAGE<br />

–– V2.7 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_s)<br />

–– creation date: 26.11.92 10:27:57<br />

–– correct representation clauses for T_NAME_<strong>ST</strong>RING<br />

–– V2.6 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 17.11.92 11:37:09<br />

–– adts version 2.0.1: update acc. to PIRN VICOS–2020<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 12:15:22<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 21.07.92 12:15:05<br />

–– Added T_FILE_NAME and NULL_FILE_NAME for several abstract data types.<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 21.07.92 07:31:57<br />

–– Naming of <strong>CGS</strong>_CALENDAR changed to VICOS_CALENDAR<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 10.07.92 15:35:52<br />

–– Update according to VCS SPADM<br />

–– V2.1 at ERNO ; VICOS development<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

186 von/of: 662


Space Infrastructure<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 30.06.92 17:38:05<br />

–– added Standard Header by command create_file<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––****************************************************************************<br />

––<br />

with NUMERIC_TYPES; use NUMERIC_TYPES;<br />

with <strong>CGS</strong>_CALENDAR;<br />

–– type <strong>CGS</strong>_DATE_AND_TIME<br />

package VICOS_DEFINITIONS is<br />

SPEC_VERSION : constant <strong>ST</strong>RING := ”@(#) VICOS_DEFINITIONS 4.3.1 spec”;<br />

––––––––––––––––––––<br />

–– Global Constants<br />

––––––––––––––––––––<br />

MAX_FRAME_LENGTH : constant := 2048;<br />

MAX_LENGTH_OF_FILE_NAME: constant := 256;<br />

–– sets limit for filenames to be<br />

–– stored in VICOS data structures<br />

MAX_LENGTH_OF_DIRECTORY_NAME: constant := 256;<br />

–– sets limit for directory names to be<br />

–– stored in VICOS data structures<br />

MAX_LENGTH_OF_DB_PATHNAME: constant := 256;<br />

–– sets limit for MDB pathnames to be<br />

–– stored in VICOS data structures<br />

–––––––––––––––––––<br />

–– Types for filenames<br />

–––––––––––––––––––<br />

type T_FILE_NAME is<br />

record<br />

THE_<strong>ST</strong>RING : string (1..MAX_LENGTH_OF_FILE_NAME);<br />

LENGTH : integer range 0..MAX_LENGTH_OF_FILE_NAME;<br />

end record;<br />

for T_FILE_NAME use<br />

record<br />

LENGTH at 0 range 0..31;<br />

THE_<strong>ST</strong>RING at 0 range 32..32+((MAX_LENGTH_OF_FILE_NAME*8)–1);<br />

end record;<br />

for T_FILE_NAME’size use MAX_LENGTH_OF_FILE_NAME*8+32;<br />

NULL_FILE_NAME : constant T_FILE_NAME := ((others => ’ ’), 0);<br />

–––––––––––––––––––<br />

–– Types for Names<br />

–––––––––––––––––––<br />

MAX_NAME_LENGTH : constant := 20;<br />

type T_NAME_<strong>ST</strong>RING is<br />

record<br />

THE_<strong>ST</strong>RING : string (1..MAX_NAME_LENGTH);<br />

LENGTH : integer range 0..MAX_NAME_LENGTH;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

187 von/of: 662


Space Infrastructure<br />

end record;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

for T_NAME_<strong>ST</strong>RING use<br />

record<br />

LENGTH at 0 range 0..31;<br />

THE_<strong>ST</strong>RING at 0 range 32..32+((MAX_NAME_LENGTH*8)–1);<br />

end record;<br />

for T_NAME_<strong>ST</strong>RING’size use 32+ MAX_NAME_LENGTH*8;<br />

type T_APPLICATION_TYPE is (<br />

HCI,<br />

TES,<br />

DBS,<br />

TEV,<br />

TSCV,<br />

SAS,<br />

CSS);<br />

–– types of VICOS application processes<br />

subtype T_APPLICATION_NAME is T_NAME_<strong>ST</strong>RING;<br />

subtype T_TE<strong>ST</strong>_SITE is T_NAME_<strong>ST</strong>RING;<br />

MAX_PROC_UNIT_NAME_LEN : constant := MAX_NAME_LENGTH;<br />

–– The max. process unit name<br />

subtype T_PROC_UNIT_NAME is T_NAME_<strong>ST</strong>RING;<br />

–– name of a unit inside a process<br />

EMPTY_NAME_<strong>ST</strong>RING : constant T_NAME_<strong>ST</strong>RING<br />

:= (THE_<strong>ST</strong>RING => (others => ’ ’), LENGTH => 0);<br />

subtype T_SAS_NAME is T_NAME_<strong>ST</strong>RING;<br />

–– SAS short name used in ADU and GDU descriptions<br />

––––––––––––––<br />

–– Identifier<br />

––––––––––––––<br />

type T_HK_ID is new INTEGER;<br />

for T_HK_ID’size use 32;<br />

–– identifier for TES housekeeping variables<br />

subtype T_PRIVATE_ID is string(1..10);<br />

–– ADU and GDU private identifier used by SAS’s.<br />

NULL_PRIVATE_ID : constant T_PRIVATE_ID := (others => ’ ’);<br />

–––––––––––––––––––<br />

–– EGSE nodes and SW types<br />

–––––––––––––––––––<br />

type T_EGSE_NODE_TYPES is<br />

(WORK<strong>ST</strong>ATION,<br />

TE<strong>ST</strong>_NODE,<br />

SIMULATOR,<br />

DATABASE_SERVER,<br />

FRONT_END_EQUIPMENT,<br />

UNIT_UNDER_TE<strong>ST</strong>);<br />

type T_EGSE_NODE is record<br />

The_Type : T_EGSE_NODE_TYPES;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

188 von/of: 662


Space Infrastructure<br />

The_Name : T_NAME_<strong>ST</strong>RING := EMPTY_NAME_<strong>ST</strong>RING;<br />

end record;<br />

type T_EGSE_SW_TYPES is<br />

(SAS,<br />

EXECUTABLE,<br />

DATA_FILE);<br />

type T_EGSE_SW is record<br />

The_Type : T_EGSE_SW_TYPES;<br />

The_Full_Name : T_FILE_NAME;<br />

The_Short_Name: T_NAME_<strong>ST</strong>RING := EMPTY_NAME_<strong>ST</strong>RING;<br />

end record;<br />

––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– VICOS Error Messages and Logging Definitions<br />

––––––––––––––––––––––––––––––––––––––––––––––––<br />

MAX_SHORT_TEXT_LENGTH : constant := 40;<br />

MAX_LONG_TEXT_LENGTH : constant := 255;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

subtype T_LOG_TEXT_SHORT is string(1.. MAX_SHORT_TEXT_LENGTH);<br />

NULL_LOG_TEXT_SHORT : constant T_LOG_TEXT_SHORT:= (others => ’ ’);<br />

subtype T_LOG_TEXT_LONG is string(1.. MAX_LONG_TEXT_LENGTH);<br />

NULL_LOG_TEXT_LONG : constant T_LOG_TEXT_LONG:= (others => ’ ’);<br />

subtype T_LOG_GROUP is <strong>ST</strong>RING(1..4);<br />

NULL_LOG_GROUP : constant T_LOG_GROUP := (others => ’ ’);<br />

subtype T_LOG_TYPE is <strong>ST</strong>RING(1..4);<br />

NULL_LOG_TYPE : constant T_LOG_TYPE := (others => ’ ’);<br />

type T_ERROR_MESSAGE is<br />

record<br />

TIME_TAG_LT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

TIME_TAG_SMT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

NODE : T_APPLICATION_NAME;<br />

GROUP : T_LOG_GROUP;<br />

ERROR_TYPE : T_LOG_TYPE;<br />

MSG_NUMBER : INTEGER; –– message number<br />

SHORT_TEXT : T_LOG_TEXT_SHORT;<br />

LONG_TEXT : T_LOG_TEXT_LONG;<br />

end record;<br />

for T_ERROR_MESSAGE use<br />

record<br />

TIME_TAG_LT at 0 range 0..127;<br />

TIME_TAG_SMT at 0 range 128..255;<br />

NODE at 0 range 256..256+(MAX_NAME_LENGTH*8)+31;<br />

GROUP at 0 range 256+MAX_NAME_LENGTH*8+32..<br />

256+MAX_NAME_LENGTH*8+63;<br />

ERROR_TYPE at 0 range 256+MAX_NAME_LENGTH*8+64..<br />

256+MAX_NAME_LENGTH*8+95;<br />

MSG_NUMBER at 0 range 256+MAX_NAME_LENGTH*8+96..<br />

256+MAX_NAME_LENGTH*8+127;<br />

SHORT_TEXT at 0 range<br />

256+MAX_NAME_LENGTH*8+128..<br />

256+MAX_NAME_LENGTH*8+128+MAX_SHORT_TEXT_LENGTH*8–1;<br />

LONG_TEXT at 0 range<br />

256+MAX_NAME_LENGTH*8+MAX_SHORT_TEXT_LENGTH*8+128..<br />

256+MAX_NAME_LENGTH*8+128+MAX_SHORT_TEXT_LENGTH*8+<br />

MAX_LONG_TEXT_LENGTH*8–1;<br />

end record;<br />

for T_ERROR_MESSAGE’size use 256+128+MAX_NAME_LENGTH*8+<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

189 von/of: 662


Space Infrastructure<br />

MAX_SHORT_TEXT_LENGTH*8+<br />

MAX_LONG_TEXT_LENGTH*8 ;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

USER_EVENT_LOG_GROUP : constant T_LOG_GROUP := ”UEVT”;<br />

SY<strong>ST</strong>EM_LOG_GROUP : constant string := ”SY<strong>ST</strong>”;<br />

TSCV_LOG_GROUP : constant string := ”TSCV”;<br />

HCI_LOG_GROUP : constant string := ”HCI ”;<br />

HLCL_LOG_GROUP : constant string := ”HLCL”;<br />

TES_LOG_GROUP : constant string := ”TES ”;<br />

MONITORING_LOG_GROUP : constant string := ”MON ”;<br />

ACQUISITION_LOG_GROUP : constant string := ”DACQ”;<br />

GENERATION_LOG_GROUP : constant string := ”DGEN”;<br />

ARCHIVING_LOG_GROUP : constant string := ”ARCH”;<br />

COMMAND_LOG_GROUP : constant string := ”CMD ”;<br />

DATA_DISPATCH_LOG_GROUP : constant string := ”DDS ”;<br />

UCL_INTERPRETER_LOG_GROUP : constant string := ”UCLI”;<br />

UCL_CLASS1_LOG_GROUP : constant string := ”UCL1”; –– Stmnts exc the following<br />

UCL_CLASS2_LOG_GROUP : constant string := ”UCL2”; –– Monitoring Statements<br />

UCL_CLASS3_LOG_GROUP : constant string := ”UCL3”; –– Enditem Statements<br />

UCL_CLASS4_LOG_GROUP : constant string := ”UCL4”; –– SAS & UCL Ctrl Statements<br />

UCL_LOG_<strong>ST</strong>MT_LOG_GROUP : constant string := ”LOG ”;<br />

REPLAY_LOG_GROUP : constant string := ”REPL”;<br />

CONF_DB_LOG_GROUP : constant string := ”CDB ”; –– For access to Conf DB<br />

TRDB_LOG_GROUP : constant string := ”TRDB”; –– For access to Result DB<br />

T<strong>ST</strong>_LOG_GROUP : constant string := ”T<strong>ST</strong> ”; –– For test/ debugging<br />

UUT_LOG_GROUP : constant string := ”UUT ”; –– msg received from UUT<br />

SAS_LOG_GROUP : constant string := ”SAS ”; –– msg received from SAS<br />

COND_LOG_GROUP : constant string := ”COND”; –– from conditions<br />

TC_VERIF_LOG_GROUP : constant string := ”DGVF”; –– from GDU verification<br />

–– Remark: when modifying this log (check out) message type<br />

–– section, the operation ERROR_SERVICES.TO_SEVERITY must be updated!<br />

INFO_MESSAGE_TYPE : constant string := ”INFO”;<br />

GENERAL_MESSAGE_TYPE : constant string := ”MSG ”;<br />

ERROR_MESSAGE_TYPE : constant string := ”ERR ”;<br />

WARNING_MESSAGE_TYPE : constant string := ”WRN ”;<br />

EXCEPTION_MESSAGE_TYPE: constant string := ”EXC ”;<br />

ALARM_MESSAGE_TYPE : constant string := ”ALRM”;<br />

––––––––––––––––––––––––––<br />

–– VICOS Mode Definitions<br />

––––––––––––––––––––––––––<br />

type T_VICOS_MODE is (<br />

NONE,<br />

NORMAL,<br />

REPLAY,<br />

SIMULATION,<br />

ANY_MODE);<br />

for T_VICOS_MODE’size use 16;<br />

type T_VICOS_<strong>ST</strong>ATUS is (<br />

IDLE,<br />

RUNNING,<br />

SUSPENDED,<br />

ERROR);<br />

for T_VICOS_<strong>ST</strong>ATUS’size use 16;<br />

–––––––––––––––––––<br />

–– raw value alternatives<br />

–––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

190 von/of: 662


Space Infrastructure<br />

type T_RAW_VALUE_ALTERNATIVES is (UNDEFINED,<br />

SINGLE_BIT,<br />

INT,<br />

U_INT,<br />

FLOAT_EGSE,<br />

BYTE_<strong>ST</strong>REAM);<br />

–– The raw value alternatives indicates if :<br />

–– – the raw value is not set–up, so there is a bug,<br />

–– – the raw value contains a single bit<br />

–– – the raw value contains an integer<br />

–– – the raw value contains an unsigned integer<br />

–– – the raw value contains a float (32 bit)<br />

–– – the raw value contains a byte stream<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

MAX_BYTE_<strong>ST</strong>REAM_LENGTH: constant := 255;<br />

–– sets the upper limit of a byte stream value<br />

–––––––––––––––––––<br />

–– adu alternatives<br />

–––––––––––––––––––<br />

type T_ADU_ALTERNATIVES is (<br />

UNDEFINED,<br />

<strong>ST</strong>RUCTURED,<br />

UN<strong>ST</strong>RUCTURED,<br />

CCSDS_PACKET);<br />

–– The ADU description alternatives indicates if :<br />

–– – the ADU description is a structured adu<br />

–– (a list of measurements sid),<br />

–– – the ADU description is an unstructured adu<br />

–– (a byte array),<br />

–– – the ADU description contains a ccsds packet.<br />

–––––––––––––––––––<br />

–– gdu alternatives<br />

–––––––––––––––––––<br />

type T_GDU_ALTERNATIVES is (<br />

UNDEFINED,<br />

ANALOG_<strong>ST</strong>IMULUS,<br />

DISCRETE_<strong>ST</strong>IMULUS,<br />

BINARY_PACKET,<br />

CCSDS_PACKET);<br />

–– The GDU description alternatives indicate if :<br />

–– – the GDU contains a REAL parameter (ANALOG_<strong>ST</strong>IMULUS)<br />

–– – the GDU contains an INTEGER parameter (DISCRETE_<strong>ST</strong>IMULUS)<br />

–– – the GDU contains a binary packet (byte array)<br />

–– – the GDU contains a CCSDS packet (CCSDS_PACKET)<br />

end VICOS_DEFINITIONS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

191 von/of: 662


Space Infrastructure<br />

7.3 HCI Abstract Data Types<br />

7.3.1 General Concepts<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

192 von/of: 662<br />

A same set of abstract data types related to HCI are used in the VICOS products. In order to ensure the consistency<br />

of their definition and usage through the softwares, they are grouped and defined once, in the current<br />

section.<br />

An ADT specification describes a class of data structures not by an implementation, but by the list of services<br />

available on the data structures and the formal properties of these services. Further, an ADT offers a set of services<br />

to the outside world (other Objects, Applications etc), which is only concerned with the services offered<br />

and not how they are implemented.<br />

An ADT is defined by a formal specification, which is comprised of Types and Functions (Syntax part) and Preconditions<br />

and Axioms (Semantic part).<br />

– The Type part lists the types of the specification (which may be several types or a single type, e.g. a<br />

’stack’).<br />

– The Functions part lists the services available on instances of the type.<br />

– The Axioms part describes semantics of the functions on the data to restrict and more precisely define<br />

the specification.<br />

– The Preconditions part provides applicability conditions for partial functions (functions that cannot be<br />

applied to the ADT implementation in all cases (e.g., when a data type is empty, it may not be useful<br />

to access its contents)).<br />

An abstract data type is a type which Ada structure is hidden (private types) because of its complexity, its varying<br />

size or its implementation dependency on compilers. Their access is possible only through associated operations.<br />

This part of the interface allows pieces of software to manipulate data without knowledge of their Ada representation.<br />

These types are available in the form of separate Ada packages containing at least an abstract data type,<br />

some basic data types related to it and the operations to handle it.<br />

The ADT services provided by HCI contain a number of services applicable to appropriate ADTs. These may<br />

include Create services, used to create the ADT structure, Set services, which set up the data within the ADT<br />

(e.g. for data originally held in the Mission Database or in UNIX files), Get services, which read the data set–up<br />

in the ADT and Delete services which remove the ADT. There are also type specific services which are ADT<br />

specific, these may include services such as Initialise, Copy, Move, Pack and Unpack. The latter Pack and Unpack,<br />

when provided, are particularly important for data transfer to provide a method of packing and unpacking<br />

data into Byte arrays to enable easy data communication.<br />

The usage of the abstract data types is quite sophisticated. The desired variable is declared with the desired type<br />

in the piece of software which will use it. The access to the content of the variable is done by using the associated<br />

operations, because the associated Ada type is not visible. A Create/Construct operation, when provided, is the<br />

first to be used, to instanciate the content of the variable. The Set_values operations can then be used to write<br />

data into the instanciated variable. The Values_of/Get_values operations allow to read data from the instanciated<br />

and filled–up variable. At last the Delete operation, when provided, will free the space allocated to ADT variables<br />

which are not needed any more in the software.<br />

HCI provides a set of ADTs which are used as appropriate by other products, including:<br />

– ADT for packing/unpacking,<br />

– ADT for Physical Address type,<br />

– ADT for CCSDS Packet type,<br />

– ADT for User Profile type,


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

193 von/of: 662<br />

– ADT for User Message type,<br />

– ADT for Version ID Table type,<br />

– ADT for <strong>System</strong> Topology Table type (host logical names, test site name),<br />

– ADT for SID list type.<br />

HCI provides a method of accessing HCI data structures held in the Mission Database without causing performance<br />

problems with continuous database access. A procedure for establishing an ADT based on MDB data is<br />

as follows: the MDA appropriate operation will be called to read appropriate Check–out information. HCI will<br />

provide ADT Create services (if any) to create the ADT in memory and ADT Set services will be used to put<br />

the data from the MDB into the ADT data area. (Note, these services used by MDA) The product requiring ADT<br />

access (maybe another Integration/Qualification product) can then use the HCI provided ADT Get services to<br />

access the ADT data and functions. On completion of use and when provided, HCI ADT Delete services are used<br />

to remove the ADT.<br />

Note that the use of ADTs within <strong>CGS</strong> provides a mechanism for Memory Management, which helps to avoid<br />

the problems of ’Garbage Collection’ that occurs with manipulating data structures within an ’Ada’ Run Time<br />

system. This is particularly useful for tasks performed by Integration/Qualification products which need to<br />

transfer data information between programs.<br />

Some basic types are also defined in ADT packages. They are, most of the time, enumeration types bound to<br />

the ADT defined in that package.<br />

For these enumeration types, the following naming convention has been used :<br />

– types suffixed with _TYPE are enumeration types not determining a particular structure of the ADT;<br />

it can be considered as a normal attribute of the ADT, e.g. INTERPRETATION_TYPE in<br />

ADT_MEASUREMENT_DESCRIPTION.<br />

– types suffixed with _ALTERNATIVES are enumeration types which determine the set of other attributes<br />

the corresponding ADT will contain, e.g. T_ADU_ALTERNATIVES in ADT_ADU_DE-<br />

SCRIPTION.<br />

7.3.2 Operations<br />

This section describes the operations which are available on the previous types.<br />

7.3.2.1 SET Operations<br />

The SET operation(s) will assign the values of the attributes of an ADT. At least one SET operation has to be<br />

provided, but in general there will be several SET operations, one for each of the attributes composing the ADT.<br />

In case the type of the attribute exactly determines the alternative to be set, SET can be a set of overloaded SET<br />

procedures (all having the same name) and the type of attribute to be set will be determined by the type of the<br />

passed parameter. The type of the attribute may be defined in another package, it may be a basic type or an other<br />

ADT. In case several attributes have the same type, different names have to be chosen for the SET operations<br />

(e.g. SET_A, SET_B).<br />

7.3.2.2 GET Operations<br />

The complementary of the SET operation(s) is the GET operation(s). It follows the same rules with respect to<br />

parameters and naming apply as for the SET operation. Most of the time, a function ATTRIBUTE is preferred<br />

to a procedure GET_ATTRIBUTE whenever it is possible, i.e. when no limited private types are returned or<br />

when single attribute is returned.<br />

7.3.2.3 ALTERNATIVE Function<br />

The function ALTERNATIVE returns the value of the alternative a variable of type T_ADT currently has. After<br />

CREATE has been called, the default value of a variable of type T_ADT shall be UNDEFINED. It shall be poss-


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

194 von/of: 662<br />

ible to assign values of any attribute of any alternative to the variable then. This shall, however, then change the<br />

value of the ’discriminent’ to one of the enumeration values in T_ADT_ALTERNATIVES. All attributes belonging<br />

to one alternative of T_ADT_ALTERNATIVES should be assign in one set operation (this is however<br />

not a must, it is a design goal and has to be decided on a case to case basis).<br />

7.3.2.4 PACK Operation<br />

The pack operation packs the contents of a variable of type T_ADT into a block of type T_BLOCK by using<br />

operations of an ADT_PACKING<br />

7.3.2.5 UNPACK Operation<br />

Inversely, UNPACK unpacks a T_BLOCK into a variable of type T_ADT which has been created before.<br />

7.3.2.6 PACKED_SIZE Function<br />

Function PACKED_SIZE returns the maximum number of bytes a packed structure of T_ADT may occupy.<br />

7.3.2.7 ADD Operations<br />

Some complex ADTs use other ADTs (e.g. ADT_ADU) or have a non deterministic memory usage, i.e. they<br />

’use’ varying amounts of memory for a given alternative.<br />

For these ADTs, there exists the possibility to maintain dynamic ’lists’ of attributes or values inside an ADT.<br />

For this purpose, an ADD operation might be provided which then inserts exactly one element to this list.<br />

Examples are the raw values in an ADU in the package ADT_ADU.<br />

This procedure belongs to the specific procedures defined in the frame of a complex ADT. They depend on the<br />

special purpose of the complex ADT and the implementer could add procedures like: get_next_element, read_at<br />

etc.<br />

In most of the cases, these ADD operations can be replaced by a set of SET operations, because the size of the<br />

list is known in advance. For a type T_ADT_ITEM_LI<strong>ST</strong>, the operation SET_SIZE will have to be used first,<br />

and then the operation SET_ITEM, to fill the list at a specified index. Note that the index shall be uniformly<br />

incremented from 1 to the chosen size, with an increment of 1.<br />

7.3.2.8 Operations on tables<br />

The operations defined on T_TABLE follow exactly the same logic as for the ADT itself.<br />

7.3.2.9 Exceptions<br />

The procedures/functions will raise the following standard exceptions :<br />

– <strong>ST</strong>ORAGE_ERROR in case the CREATE operation has not sufficient memory space, independent<br />

of the internal implementation<br />

– NOT_CREATED if an operation is called on a variable which has not been created.<br />

– {PARAMETER}_VALUE_ILLEGAL in case the value of the passed parameter is not legal, e.g. a<br />

NULL_SID value for an SID parameter.<br />

– INDEX_ERROR if the value of the passed index exceeds the size of the specified variable, e.g. it is<br />

raised when trying to write/read the 101st element of an ADU which contains only 100 items.<br />

– {ITEM}_NOT_FOUND when the searched item is not found in the specified list.<br />

– {PARAMETER}_TYPE_MISMATCH when the type of the passed parameter and the expected type<br />

of the formal parameter mismatch.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

195 von/of: 662<br />

On a case by case basis, the operations provided in this interface will also raise specific exceptions which are<br />

documented in the formal interface.<br />

7.3.2.10 Particular Remarks<br />

7.3.2.10.1 On Synchronisation<br />

Certain ADTs (if not all of them) will have the need of performing certain memory management internally. For<br />

security reasons, a synchronised access to the internal memory has to be achieved, but only for the CREATE,<br />

DE<strong>ST</strong>ROY, COPY, UNPACK operations since these have impact on memory management.<br />

At present it is not finally decided, whether the ADT internally has to provide synchronisation or whether the<br />

user should ensure synchronised access. However, this shall not have any impact on the Ada specification.<br />

If internal synchronisation shall be provided, the use of Ada tasking and semaphores is not allowed since this<br />

is in conflict with the current HCI design (due to X–windows !!!). Also, for performance reasons, the Ada ’new’<br />

and ’unchecked_deallocation’ are not recommended.<br />

7.3.2.10.2 On Packing/Unpacking<br />

At present there exists in-house a definition of an ADT_PACKING which uses rather sophisticated techniques<br />

to provide secure and elegant packing. However, it is also rather complex. There are investigation on a simpler<br />

approach currently which would reduce complexity and data overheads.<br />

When finally delivering the Ada specifications of all ADTs to the implementation teams, a version of<br />

ADT_PACKING will be delivered also which shall then be used for implementing the PACK/UNPACK operations<br />

of the individual ADTs.<br />

The principals of packing will be that the ADT_ADT.PACK operation is provided with some kind of input<br />

T_BLOCK. The inside the body of the ADT_ADT.PACK routine, other routines of ADT_PACKING shall be<br />

used to ’add’ a packed version of T_ADT to the block. Memory management inside T_BLOCK will be accomplished<br />

inside the ADT_PACKING provided routines. T_BLOCK is then finally returned as an out parameter<br />

of ADT_ADT.PACK (therefore at least it has to be of mode ’in out’).


Space Infrastructure<br />

7.3.3 ADT Physical Address<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

196 von/of: 662<br />

A Physical Address is the set of information on device physical address and used protocol for transfer of data<br />

between an SAS and the corresponding front–end equipment or device. Each time a request for data acquisition/<br />

generation is addressed, the SAS in charge of this data link has to interpret this information part of an ADU/GDU<br />

Description.<br />

A Physical Address is a composite type containing the following attributes :<br />

– a node address;<br />

– a device type;<br />

– a device address;<br />

– a device subaddress;<br />

– a channel number;<br />

– a function code;<br />

– a protocol identification;<br />

– two commands fields allowing support for addresses coding, which format is different from the<br />

standard provided one.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_PHYSICAL_ADDRESS specification<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package defines and handles types related to physical address<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : HCI<br />

–– CI–NUMBER : 1216 878<br />

–– OBJECT NAME : ADT_PHYSICAL_ADDRESS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER :<br />

–– LANGUAGE :<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V3.0 at ERNO ; <strong>CGS</strong>_ENGINEERING<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 07.03.95 12:00:0<br />

–– Build 2 baseline, PIRN 3050<br />

––<br />

–– V2.9 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_s)<br />

–– creation date: 19.10.93 18:11:04<br />

–– Initialise type T_PHYSICAL_ADDRESS<br />

––<br />

–– V2.8 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 19:56:19<br />

–– COL–CC–VIC–SPR–009 (representation clauses)<br />

–– V2.7 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_s)<br />

–– creation date: 12.01.93 19:47:15<br />

–– remove exception: CON<strong>ST</strong>RAINT_ERROR (not used)<br />

–– V2.6 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 17.11.92 11:30:34<br />

–– adts version 2.0.1: update acc. to PIRN VICOS–2022<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 12:04:12<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 28.07.92 09:33:21<br />

–– Changes: editorial, exceptions<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 20.07.92 08:40:40<br />

–– General layout for ADTs acc. to TN COL_MBER_ZU1_TN_0026_92<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 10.07.92 17:21:43<br />

–– Update acc. to VCS SPADM DNs<br />

––****************************************************************************<br />

––<br />

with VICOS_DEFINITIONS;<br />

with ADT_PACKING;<br />

package ADT_PHYSICAL_ADDRESS is<br />

–––––––––––––––<br />

–– public types<br />

––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

197 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_<strong>ST</strong>RING_80 is<br />

record<br />

THE_<strong>ST</strong>RING: <strong>ST</strong>RING(1..80);<br />

LENGTH: INTEGER;<br />

end record;<br />

for T_<strong>ST</strong>RING_80 use<br />

record<br />

THE_<strong>ST</strong>RING at 4 range 0 .. 639;<br />

LENGTH at 0 range 0 .. 31;<br />

end record;<br />

–––––––––––––<br />

–– adt types<br />

–––––––––––––<br />

type T_PHYSICAL_ADDRESS is private;<br />

–– A physical address is composed of :<br />

–– – a node address,<br />

–– – a bus number<br />

–– – a device type,<br />

–– – a device address,<br />

–– – a device subaddress,<br />

–– – a channel number,<br />

–– – a function code,<br />

–– – a protocol identification,<br />

–– – two commands.<br />

NULL_PHYSICAL_ADDRESS : constant T_PHYSICAL_ADDRESS;<br />

––––––––––––––––––––<br />

–– write operations<br />

––––––––––––––––––––<br />

procedure SET_NODE_ADDRESS (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_NODE_ADDRESS : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– This procedure sets the current node address value of<br />

–– the specified physical address variable.<br />

–– Empty: if string with blank characters or length 0<br />

–– EXCEPTIONS<br />

–– <strong>ST</strong>RING_LENGTH_ERROR: the string is longer than 20 character<br />

procedure SET_BUS_NUMBER (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_BUS_NUMBER : in INTEGER);<br />

–– DESCRIPTION<br />

–– This procedure sets the bus number of<br />

–– the specified physical address variable.<br />

–– Undefined if –1<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_DEVICE_TYPE (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_DEVICE_TYPE : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– This procedure sets the type of the device of<br />

–– the specified physical address variable.<br />

–– Empty: if string with blank characters or length 0<br />

–– EXCEPTIONS<br />

–– <strong>ST</strong>RING_LENGTH_ERROR: the string is longer than 20 character<br />

procedure SET_DEVICE_ADDRESS (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_DEVICE_ADDRESS : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– This procedure sets the address of the device of<br />

–– the specified physical address variable.<br />

–– Empty: if string with blank characters or length 0<br />

–– EXCEPTIONS<br />

–– <strong>ST</strong>RING_LENGTH_ERROR: the string is longer than 20 character<br />

procedure SET_DEVICE_SUBADDRESS (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_DEVICE_SUBADDRESS : in <strong>ST</strong>RING);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

198 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– This procedure sets the subaddress of the device of<br />

–– the specified physical address variable.<br />

–– Empty: if string with blank characters or length 0<br />

–– EXCEPTIONS<br />

–– <strong>ST</strong>RING_LENGTH_ERROR: the string is longer than 20 character<br />

procedure SET_CHANNEL (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_CHANNEL : in INTEGER);<br />

–– DESCRIPTION<br />

–– Set the channel number applicable for<br />

–– the specified physical address variable.<br />

–– Undefined if –1<br />

–– EXCEPTIONS<br />

–– NONE<br />

procedure SET_FUNCTION_CODE (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_FUNCTION_CODE : in INTEGER);<br />

–– DESCRIPTION<br />

–– Set the function code applicable for<br />

–– the specified physical address variable.<br />

–– Undefined if –1<br />

–– EXCEPTIONS<br />

–– NONE<br />

procedure SET_PROTOCOL_ID (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_PROTOCOL_ID : in INTEGER);<br />

–– DESCRIPTION<br />

–– Set the protocol id applicable for the enditem<br />

–– the specified physical address variable.<br />

–– Undefined if –1<br />

–– EXCEPTIONS<br />

–– NONE<br />

procedure SET_CMD1 (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_CMD1 : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– Set the general command strings applicable for<br />

–– the specified physical address variable.<br />

–– Undefined if all blank or length 0<br />

–– EXCEPTIONS<br />

––<strong>ST</strong>RING_LENGTH_ERROR: the string is longer than 80 character<br />

procedure SET_CMD2 (<br />

PHYSICAL_ADDRESS : in out T_PHYSICAL_ADDRESS;<br />

WITH_CMD2 : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– Set the general command strings applicable for<br />

–– the specified physical address variable.<br />

–– Undefined if all blank or length 0<br />

–– EXCEPTIONS<br />

–– <strong>ST</strong>RING_LENGTH_ERROR: the string is longer than 80 character<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

function NODE_ADDRESS (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– This function returns the current node address value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function BUS_NUMBER (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return INTEGER;<br />

–– DESCRIPTION<br />

–– This function returns the bus number of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– none<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

199 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function DEVICE_TYPE (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– This function returns the current device type value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function DEVICE_ADDRESS (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– This function returns the current device address value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function DEVICE_SUBADDRESS (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– This function returns the current device subaddress value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function CHANNEL (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return INTEGER;<br />

–– DESCRIPTION<br />

–– This function returns the current channel value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function FUNCTION_CODE (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return INTEGER;<br />

–– DESCRIPTION<br />

–– This function returns the current function code value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function PROTOCOL_ID (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return INTEGER;<br />

–– DESCRIPTION<br />

–– This function returns the current protocol id value of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function CMD1 (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return T_<strong>ST</strong>RING_80;<br />

–– DESCRIPTION<br />

–– This function returns the 1st command string of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

function CMD2 (<br />

OF_PHYSICAL_ADDRESS : T_PHYSICAL_ADDRESS)<br />

return T_<strong>ST</strong>RING_80;<br />

–– DESCRIPTION<br />

–– This function returns the 2nd command string of<br />

–– the specified physical address variable.<br />

–– EXCEPTIONS<br />

–– NONE<br />

––––––––––––––––––––––<br />

–– packing operations<br />

––––––––––––––––––––––<br />

procedure PACK (<br />

PHYSICAL_ADDRESS : in T_PHYSICAL_ADDRESS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

200 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

–– This procedure packs the specified physical address variable into<br />

–– a contiguous memory block.<br />

–– EXCEPTIONS<br />

–– NONE<br />

procedure UNPACK (<br />

BLOCK : in out ADT_PACKING.T_BLOCK;<br />

PHYSICAL_ADDRESS : out T_PHYSICAL_ADDRESS);<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a physical address variable.<br />

–– The variable must have been created before.<br />

–– EXCEPTIONS<br />

–– NONE<br />

–––––––––––––––––––<br />

–– exceptions<br />

–––––––––––––––––––<br />

<strong>ST</strong>RING_LENGTH_ERROR<br />

private<br />

type T_PHYSICAL_ADDRESS is<br />

record<br />

: exception;<br />

node_address : VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

bus_number : INTEGER := 0;<br />

–– e.g. address on a bus<br />

device_type : VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

device_address : VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

device_subaddress : VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

channel : INTEGER := 0;<br />

function_code : INTEGER := 0;<br />

protocol_id : INTEGER := 0;<br />

command_1 : T_<strong>ST</strong>RING_80<br />

:= ((others => ’ ’),0);<br />

–– any string value<br />

command_2<br />

end record;<br />

: T_<strong>ST</strong>RING_80<br />

:= ((others => ’ ’),0);<br />

–– any string value<br />

–– The physical address of a measurement / stimuli / or ADU<br />

for T_PHYSICAL_ADDRESS use<br />

record<br />

NODE_ADDRESS at 0 range 0 .. 191;<br />

BUS_NUMBER at 24 range 0 .. 31;<br />

DEVICE_TYPE at 28 range 0 .. 191;<br />

DEVICE_ADDRESS at 52 range 0 .. 191;<br />

DEVICE_SUBADDRESS at 76 range 0 .. 191;<br />

CHANNEL at 100 range 0 .. 31;<br />

FUNCTION_CODE at 104 range 0 .. 31;<br />

PROTOCOL_ID at 108 range 0 .. 31;<br />

COMMAND_1 at 112 range 0 .. 671;<br />

COMMAND_2 at 196 range 0 .. 671;<br />

end record;<br />

for T_PHYSICAL_ADDRESS’size use 2240;<br />

NULL_PHYSICAL_ADDRESS : constant T_PHYSICAL_ADDRESS :=<br />

(node_address => VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING,<br />

bus_number => 0,<br />

device_type => VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING,<br />

device_address => VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING,<br />

device_subaddress => VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING,<br />

channel => 0,<br />

function_code => 0,<br />

protocol_id => 0,<br />

command_1 => ((others => ’ ’),0),<br />

command_2 => ((others => ’ ’),0));<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

201 von/of: 662


Space Infrastructure<br />

end ADT_PHYSICAL_ADDRESS;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

202 von/of: 662


Space Infrastructure<br />

7.3.4 ADT CCSDS Packet<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

203 von/of: 662<br />

A CCSDS Packet is the set of information describing the format of the data exchanged between ground and onboard<br />

systems via operational links.<br />

Currently, the definition of the Columbus Telemetry/Telecommand is still under discussion and is pending on<br />

NASA / ESA interoperability meetings.<br />

A precise description should be provided, in form of MDB end–items.<br />

The current assumption of VICOS is that there are two types : a telemetry packet and a telecommand packet<br />

which definition is based on CCSDS packet.<br />

A CCSDS packet is a composite type containing the following attributes :<br />

– a primary header containing :<br />

– a packet id (= application id),<br />

– a packet type,<br />

– a version (fix),<br />

– a secondary header flag (fix),<br />

– a length.<br />

– a sequence control field composed of :<br />

– a sequence flags indicating segmentation,<br />

– a sequence counter.<br />

– a user data area containing :<br />

– a data field header containing :<br />

– a category/sub_category of packet,<br />

– a checksum type,<br />

– an acknowledge indication.<br />

– user data :<br />

– data may contain checksum at the<br />

end (refer to utilisation std).<br />

The checksum field is of 16 bit unsigned integer type. The checksum algorithm is a 16–bit add without carry<br />

sum of the entire packet including primary and secondary headers exclusive of the checksum word itself.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_CCSDS_PACKET<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides definition of CCSDS packets for the path service<br />

–– (TM or TC packets).<br />

–– Definition is based on:<br />

–– CCSDS AOS, Blue Book CCSDS 701.0–B–2<br />

–– and:<br />

–– SSMB to APM <strong>ICD</strong> including IRN 41002–ES–0018E<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : HCI<br />

–– CI–NUMBER : 1216 878<br />

–– OBJECT NAME : ADT_CCSDS_PACKET<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

204 von/of: 662<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 / Alsys Ada 5.5.1<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS: –<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– creator: P.Hartmann<br />

–– creation date: 23.06.99<br />

–– comment:<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–8064, Issue 1/–:<br />

–– Add types and procedures to access header fields as normal<br />

–– parameters<br />

–– SPR–5864: Describe usage of Length field and checksum operation<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– creator: U. Hohnhorst RIO63<br />

–– creation date: 18.06.98<br />

–– comment:<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–8014, Issue 1/A:<br />

–– 1) comment for checksum calculation (change implementation of<br />

–– COMPUTED_CHECKSUM)<br />

–– 2) type T_CCSDS_SECONDARY_HEADER spare bit added<br />

–– 3) operations SET_SPARE_BIT, GET_SPARE_BIT added<br />

–– 4) constants NULL_CCSDS_HEADER, NULL_CCSDS_SECONDARY_HEADER and<br />

–– NULL_CCSDS_PACKET added<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– creator: U. Maron RIO63<br />

–– creation date: 22.09.97<br />

–– comment:<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–7023C: added support for DOUBLE_FLOAT<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– creator: Th. Kendelbacher RIO62<br />

–– creation date: 02.06.97<br />

–– comment:<br />

–– #IRN: COL–RIBRE–IRN–<strong>CGS</strong>–7003: added [SECONDARY_]HEADER_FROM_BYTES


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

205 von/of: 662<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V16.2 at Central Repository at DASA RI<br />

–– creator: hartmann (on host aiv_2)<br />

–– creation date: 16.12.96 12:13:27<br />

–– comment:<br />

–– in operation GET_PARAMETER, change PARAMETER from –out– to –in out–<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V16.1 at Central Repository at DASA RI<br />

–– creator: tommy (on host aiv_3)<br />

–– creation date: 09.12.96 17:08:06<br />

–– comment:<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at CC; <strong>CGS</strong> development<br />

–– creator: ahs (on host sde9)<br />

–– creation date: 12.02.96 21:57:53<br />

–– comment:<br />

–– Patch from DASA + pack/unpack added by CC<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.7 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 24.01.96 10:53:36<br />

–– comment:<br />

–– COL–RIBRE–IRN–3093: change Ada comments to reflect new checksum<br />

–– algorithm and again include changes introduced by COL_RIBRE–SPR–2023<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.6 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: grotheer (on host vicos2–6)<br />

–– creation date: 15.01.96 14:41:29<br />

–– comment: COL–RIBRE–<strong>CGS</strong>–SPR–2023, AT_OFFSET: NATURAL–>POSITIVE<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.2 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: fritsch (on host ada_s)<br />

–– creation date: 20.06.95 12:00:00<br />

–– new constant CCSDS_SECONDARY_HEADER_SIZE<br />

–– new functions (SECONDARY_)HEADER_BYTES, USER_DATA_LENGTH<br />

–– Size clause in private declaration part added<br />

–– Build 2 baseline PIRN 3046d<br />

–– V3.1 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: fritsch (on host ada_s)<br />

–– creation date: 15.06.95 12:00:00<br />

–– Build 2 baseline PIRN 3046c<br />

–– V3.0 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 17.05.95 16:00:00<br />

–– Build 2 baseline PIRN 3046<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 08.12.92 20:18:14<br />

–– update comments / description<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 17.11.92 11:27:50<br />

–– adts version 2.0.1: update acc. to PIRN VICOS–2023<br />

–– V2.2 at ERNO ; VICOS development


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 11:58:12<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

with NUMERIC_TYPES;<br />

with ADT_PACKING;<br />

package ADT_CCSDS_PACKET is<br />

–––––––––––––––––––––––––––<br />

–– ADT types and constants<br />

–––––––––––––––––––––––––––<br />

type T_CCSDS_HEADER is private;<br />

type T_CCSDS_SECONDARY_HEADER is private;<br />

type T_CCSDS_PACKET is private;<br />

NULL_CCSDS_HEADER : constant T_CCSDS_HEADER;<br />

NULL_CCSDS_SECONDARY_HEADER : constant T_CCSDS_SECONDARY_HEADER;<br />

NULL_CCSDS_PACKET : constant T_CCSDS_PACKET;<br />

type T_A_CCSDS_PACKET is access T_CCSDS_PACKET;<br />

–––––––––––––––––––––––––––––<br />

–– public types and constants<br />

–––––––––––––––––––––––––––––<br />

SPEC_VERSION : constant <strong>ST</strong>RING := ”@(#) ADT_CCSDS_PACKET 4.1.1p.1 spec”;<br />

CCSDS_HEADER_SIZE : constant INTEGER := 6;<br />

CCSDS_SECONDARY_HEADER_SIZE : constant INTEGER := 10;<br />

MAX_PACKET_SIZE : constant INTEGER := 4095;<br />

–– maximum packet size excluding<br />

–– the six header octets<br />

–– (i.e. maximum value of the LENGTH item<br />

–– in the primary header)<br />

–– MU<strong>ST</strong> BE AN ODD NUMBER<br />

–– Note: The entire number of ccsds packet<br />

–– octets is CCSDS_HEADER_SIZE<br />

–– + MAX_PACKET_SIZE<br />

–– + 1<br />

MAX_PARAMETER_<strong>ST</strong>RING : constant integer := 255;<br />

subtype T_PARAMETER_<strong>ST</strong>RING is <strong>ST</strong>RING(1..MAX_PARAMETER_<strong>ST</strong>RING);<br />

type T_PACKET_PART is (DATA, PRIMARY_HEADER, SECONDARY_HEADER, CHECKSUM);<br />

––––––––––––––––––––––––––––––––––––<br />

–– Primary header items<br />

––––––––––––––––––––––––––––––––––––<br />

subtype T_CCSDS_VERSION is INTEGER range 0..7;<br />

–– A three bit field<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

206 von/of: 662


Space Infrastructure<br />

–– However, for COLUMBUS purposes only ”0” is allowed,<br />

–– indication CCSDS version 1 packets<br />

CCSDS_VERSION_1_PACKET : constant T_CCSDS_VERSION := 0;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

subtype T_CCSDS_TYPE is INTEGER range 0..1;<br />

–– A one bit field<br />

–– For COLUMBUS purposes this shall be used for routing purposes,<br />

–– however the field is not finally defined.<br />

subtype T_CCSDS_SECONDARY_HEADER_FLAG is INTEGER range 0..1;<br />

–– A one bit field<br />

CCSDS_PACKET_HAS_SECONDARY_HEADER_FLAG :<br />

constant T_CCSDS_SECONDARY_HEADER_FLAG := 1;<br />

CCSDS_PACKET_HAS_NO_SECONDARY_HEADER_FLAG :<br />

constant T_CCSDS_SECONDARY_HEADER_FLAG := 0;<br />

subtype T_CCSDS_APPLICATION_ID is INTEGER range 0..2**11–1;<br />

–– An 11 bit field<br />

subtype T_CCSDS_SEQUENCE_FLAGS is INTEGER range 0..3;<br />

–– A two bit field<br />

–– For COLUMBUS purposes only ”3” will be allowed,<br />

–– indicating an UNSEGMENTED packet<br />

CCSDS_UNSEGMENTED_PACKET : constant T_CCSDS_SEQUENCE_FLAGS := 3;<br />

subtype T_CCSDS_SEQUENCE_COUNT is INTEGER range 0..2**14–1;<br />

–– A 14–bit field<br />

subtype T_CCSDS_LENGTH is INTEGER range 0..MAX_PACKET_SIZE;<br />

–– Originally a 16–bit field but restricted to the maximum length<br />

–– allowed by the implementation of this package<br />

HEADER_FIR<strong>ST</strong>: constant INTEGER := 1;<br />

HEADER_LA<strong>ST</strong>: constant INTEGER := HEADER_FIR<strong>ST</strong> + CCSDS_HEADER_SIZE – 1;<br />

subtype T_HEADER_ARRAY is<br />

NUMERIC_TYPES.BYTE_ARRAY (HEADER_FIR<strong>ST</strong> .. HEADER_LA<strong>ST</strong>);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Secondary header items<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

subtype T_CCSDS_CHECKSUM_INDICATOR is INTEGER range 0..1;<br />

–– A one bit field<br />

CCSDS_PACKET_HAS_CHECKSUM : constant T_CCSDS_CHECKSUM_INDICATOR := 1;<br />

CCSDS_PACKET_HAS_NO_CHECKSUM : constant T_CCSDS_CHECKSUM_INDICATOR := 0;<br />

subtype T_CCSDS_TIME_ID is INTEGER range 0..3;<br />

–– A two bit field<br />

CCSDS_NO_TIME_FIELD : constant T_CCSDS_TIME_ID := 0;<br />

CCSDS_REAL_TIME_COMMAND : constant T_CCSDS_TIME_ID := 1;<br />

CCSDS_TIME_TAG : constant T_CCSDS_TIME_ID := 2;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

207 von/of: 662


Space Infrastructure<br />

CCSDS_TIME_NOT_USED : constant T_CCSDS_TIME_ID := 3;<br />

subtype T_CCSDS_PACKET_TYPE is INTEGER range 0..15;<br />

–– A four bit field<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CCSDS_DEFAULT_PACKET : constant T_CCSDS_PACKET_TYPE := 0;<br />

CCSDS_MEMORY_DUMP_PACKET : constant T_CCSDS_PACKET_TYPE := 1;<br />

CCSDS_DATA_SEGMENT_PACKET : constant T_CCSDS_PACKET_TYPE := 2;<br />

CCSDS_ESSENTIAL_HK_PACKET : constant T_CCSDS_PACKET_TYPE := 3;<br />

CCSDS_SY<strong>ST</strong>EM_HK_PACKET : constant T_CCSDS_PACKET_TYPE := 4;<br />

CCSDS_PAYLOAD_HK_PACKET : constant T_CCSDS_PACKET_TYPE := 5;<br />

CCSDS_SCIENCE_PACKET : constant T_CCSDS_PACKET_TYPE := 6;<br />

CCSDS_SSMB_ANCILLIARY_PACKET : constant T_CCSDS_PACKET_TYPE := 7;<br />

CCSDS_ESSENTIAL_COMMAND_PACKET : constant T_CCSDS_PACKET_TYPE := 8;<br />

CCSDS_SY<strong>ST</strong>EM_COMMAND_PACKET : constant T_CCSDS_PACKET_TYPE := 9;<br />

CCSDS_PAYLOAD_COMMAND_PACKET : constant T_CCSDS_PACKET_TYPE := 10;<br />

CCSDS_MEMORY_LOAD_PACKET : constant T_CCSDS_PACKET_TYPE := 11;<br />

CCSDS_RESPONSE_PACKET : constant T_CCSDS_PACKET_TYPE := 12;<br />

CCSDS_REPORT_PACKET : constant T_CCSDS_PACKET_TYPE := 13;<br />

CCSDS_EXCEPTION_PACKET : constant T_CCSDS_PACKET_TYPE := 14;<br />

CCSDS_ACKNOWLEDGE_PACKET : constant T_CCSDS_PACKET_TYPE := 15;<br />

subtype T_CCSDS_PACKET_ID is NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

subtype T_CCSDS_COARSE_TIME is NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

subtype T_CCSDS_FINE_TIME is INTEGER range 0..2**8–1;<br />

type T_CCSDS_UNSEGMENTED_TIME is record<br />

COARSE_TIME : T_CCSDS_COARSE_TIME;<br />

FINE_TIME : T_CCSDS_FINE_TIME;<br />

end record;<br />

subtype T_CCSDS_CHECKSUM is INTEGER range 0..2**16–1;<br />

–– A 16 bit field<br />

–– Checksums are computed using the CRC16 polynomial<br />

–– applied to the CCSDS packet:<br />

–– x**16 + x**15 + x**2 + 1<br />

–– since version 4.9: 16 bit add without carry<br />

SECOND_HEADER_FIR<strong>ST</strong>: constant INTEGER := HEADER_LA<strong>ST</strong> + 1;<br />

SECOND_HEADER_LA<strong>ST</strong>: constant INTEGER := SECOND_HEADER_FIR<strong>ST</strong><br />

+ CCSDS_SECONDARY_HEADER_SIZE – 1;<br />

subtype T_SECONDARY_HEADER_ARRAY is<br />

NUMERIC_TYPES.BYTE_ARRAY (SECOND_HEADER_FIR<strong>ST</strong> .. SECOND_HEADER_LA<strong>ST</strong>);<br />

–––––––––––––––––––––––––––<br />

–– Clear operations<br />

–––––––––––––––––––––––––––<br />

procedure CLEAR (PACKET: in out T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– Clears a packet, all octets are set to zero<br />

–– Note that this does not result in a valid packet!!<br />

–– EXCEPTIONS<br />

–– none<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

208 von/of: 662


Space Infrastructure<br />

––––––––––––––––––––––––––––––––––––––––––<br />

–– Write Operations for the primary header<br />

––––––––––––––––––––––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

209 von/of: 662<br />

procedure SET_VERSION (PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_VERSION := CCSDS_VERSION_1_PACKET);<br />

–– DESCRIPTION<br />

–– sets the packet version<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_TYPE (PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_TYPE);<br />

–– DESCRIPTION<br />

–– sets the packet type<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SECONDARY_HEADER_FLAG<br />

(PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_SECONDARY_HEADER_FLAG<br />

:= CCSDS_PACKET_HAS_SECONDARY_HEADER_FLAG);<br />

–– DESCRIPTION<br />

–– sets the secondary header flag<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_APPLICATION_ID (PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_APPLICATION_ID);<br />

–– DESCRIPTION<br />

–– sets the application id in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SEQUENCE_FLAGS (PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_SEQUENCE_FLAGS<br />

:= CCSDS_UNSEGMENTED_PACKET);<br />

–– DESCRIPTION<br />

–– sets the packet sequence flags in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SEQUENCE_COUNT (PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_SEQUENCE_COUNT);<br />

–– DESCRIPTION<br />

–– sets the packet sequence count in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_LENGTH (PACKET : in out T_CCSDS_HEADER;<br />

TO : in T_CCSDS_LENGTH);<br />

–– DESCRIPTION<br />

–– Sets the length field in the primary header of the packet.<br />

–– The length field is really a byte count for the<br />

–– user data field, starting with 0 (i.e. the number of bytes minus one).<br />

–– Note: The user data field includes the secondary header (if present),<br />

–– the user data and the checksum (if present).<br />

–– EXCEPTIONS<br />

–– none


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure HEADER_FROM_BYTES (BYTES : in NUMERIC_TYPES.BYTE_ARRAY;<br />

PACKET : out T_CCSDS_HEADER);<br />

–– DESCRIPTION<br />

–– converts the representation bytes into a primary header<br />

–– EXCEPTIONS<br />

–– CON<strong>ST</strong>RAINT_ERROR if BYTES is smaller than the primary header length<br />

–––––––––––––––––––––––––––––––––––––––––<br />

–– read operations primary header<br />

–––––––––––––––––––––––––––––––––––––––––<br />

function VERSION (PACKET: T_CCSDS_HEADER) return T_CCSDS_VERSION;<br />

–– DESCRIPTION<br />

–– returns the CCSDS version of the packet<br />

–– EXCEPTIONS<br />

–– none<br />

function CCSDS_TYPE ( PACKET: T_CCSDS_HEADER) return T_CCSDS_TYPE;<br />

–– DESCRIPTION<br />

–– returns the type of the packet as defined in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

function CCSDS_SECONDARY_HEADER_FLAG (PACKET: T_CCSDS_HEADER)<br />

return T_CCSDS_SECONDARY_HEADER_FLAG;<br />

–– DESCRIPTION<br />

–– returns the secondary header flag of the packet<br />

–– as defined in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

210 von/of: 662<br />

function APPLICATION_ID (PACKET: T_CCSDS_HEADER)<br />

return T_CCSDS_APPLICATION_ID;<br />

–– DESCRIPTION<br />

–– returns the application id of the packet as defined in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

function SEQUENCE_FLAGS (PACKET: T_CCSDS_HEADER)<br />

return T_CCSDS_SEQUENCE_FLAGS;<br />

–– DESCRIPTION<br />

–– returns the packet sequence count of the packet<br />

–– as defined in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

function SEQUENCE_COUNT (PACKET: T_CCSDS_HEADER)<br />

return T_CCSDS_SEQUENCE_COUNT;<br />

–– DESCRIPTION<br />

–– returns the packet sequence count of the packet<br />

–– as defined in the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

function LENGTH (PACKET: T_CCSDS_HEADER) return T_CCSDS_LENGTH;<br />

–– DESCRIPTION<br />

–– returns the length field of the packet as defined in the primary header<br />

–– EXCEPTIONS<br />

–– none


Space Infrastructure<br />

function HEADER_BYTES (PACKET: T_CCSDS_HEADER)<br />

return NUMERIC_TYPES.BYTE_ARRAY;<br />

–– DESCRIPTION<br />

–– returns the representation of the primary header<br />

–– EXCEPTIONS<br />

–– CON<strong>ST</strong>RAINT_ERROR if<br />

–––––––––––––––––––––––––––––––––––––––––<br />

–– write operations secondary header<br />

–––––––––––––––––––––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

211 von/of: 662<br />

procedure SET_CHECKSUM_INDICATOR (PACKET : in out T_CCSDS_SECONDARY_HEADER;<br />

TO : in T_CCSDS_CHECKSUM_INDICATOR<br />

:= CCSDS_PACKET_HAS_NO_CHECKSUM);<br />

–– DESCRIPTION<br />

–– sets the checksum_type in the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_TIME_ID (PACKET : in out T_CCSDS_SECONDARY_HEADER;<br />

TO : in T_CCSDS_TIME_ID := CCSDS_NO_TIME_FIELD);<br />

–– DESCRIPTION<br />

–– sets the time_id in the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_PACKET_TYPE (PACKET : in out T_CCSDS_SECONDARY_HEADER;<br />

TO : in T_CCSDS_PACKET_TYPE<br />

:= CCSDS_DEFAULT_PACKET);<br />

–– DESCRIPTION<br />

–– sets the packet type in the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_PACKET_ID (PACKET : in out T_CCSDS_SECONDARY_HEADER;<br />

TO : in T_CCSDS_PACKET_ID);<br />

–– DESCRIPTION<br />

–– sets the packet id in the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SPARE_BIT (PACKET : in out T_CCSDS_SECONDARY_HEADER;<br />

TO : in NUMERIC_TYPES.BIT := 0);<br />

–– DESCRIPTION<br />

–– sets the spare bit in the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_TIME (PACKET : in out T_CCSDS_SECONDARY_HEADER;<br />

TO : in T_CCSDS_UNSEGMENTED_TIME);<br />

–– DESCRIPTION<br />

–– sets the packet id in the secondary header<br />

–– EXCEPTIONS<br />

–– INVALID_TIME_ID<br />

–– the secondary header time id is wrong<br />

procedure SECONDARY_HEADER_FROM_BYTES<br />

(BYTES : in NUMERIC_TYPES.BYTE_ARRAY;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

PACKET : out T_CCSDS_SECONDARY_HEADER);<br />

–– DESCRIPTION<br />

–– converts the representation bytes into a secondary header<br />

–– EXCEPTIONS<br />

–– CON<strong>ST</strong>RAINT_ERROR if BYTES is smaller than the secondary header length<br />

–––––––––––––––––––––––––––––––––––––––––<br />

–– read operations secondary header<br />

–––––––––––––––––––––––––––––––––––––––––<br />

function CHECKSUM_INDICATOR (PACKET: T_CCSDS_SECONDARY_HEADER)<br />

return T_CCSDS_CHECKSUM_INDICATOR;<br />

–– DESCRIPTION<br />

–– returns the checksum indicator from the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

function TIME_ID (PACKET: T_CCSDS_SECONDARY_HEADER) return T_CCSDS_TIME_ID;<br />

–– DESCRIPTION<br />

–– returns the time id from the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

function PACKET_TYPE (PACKET: T_CCSDS_SECONDARY_HEADER)<br />

return T_CCSDS_PACKET_TYPE;<br />

–– DESCRIPTION<br />

–– returns the packet type from the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

function PACKET_ID (PACKET: T_CCSDS_SECONDARY_HEADER)<br />

return T_CCSDS_PACKET_ID;<br />

–– DESCRIPTION<br />

–– returns the packet ID from the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

function SPARE_BIT (PACKET: T_CCSDS_SECONDARY_HEADER)<br />

return NUMERIC_TYPES.BIT;<br />

–– DESCRIPTION<br />

–– returns the spare bit from the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

function PACKET_TIME (PACKET: T_CCSDS_SECONDARY_HEADER)<br />

return T_CCSDS_UNSEGMENTED_TIME;<br />

–– DESCRIPTION<br />

–– returns the time field from the secondary header<br />

–– EXCEPTIONS<br />

–– INVALID_TIME_ID<br />

–– the secondary header time id is wrong<br />

function SECONDARY_HEADER_BYTES (PACKET: T_CCSDS_SECONDARY_HEADER)<br />

return NUMERIC_TYPES.BYTE_ARRAY;<br />

–– DESCRIPTION<br />

–– returns the representation of the secondary header<br />

–– EXCEPTIONS<br />

–– none<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

212 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– write operations to assemble a packet<br />

–– Note : Packets must be assembled in the following order:<br />

–– The CCSDS primary header,<br />

–– the CCSDS secondary header (if present),<br />

–– the length field in the primary header, if not done in first step<br />

–– the user data,<br />

–– the checksum (if present).<br />

––<br />

–– The length field in the primary header must be set<br />

–– before the checksum is written to avoid placement of<br />

–– the checksum at the wrong place<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure SET_HEADER (PACKET : in out T_CCSDS_PACKET;<br />

TO : in T_CCSDS_HEADER);<br />

–– DESCRIPTION<br />

–– sets the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SECONDARY_HEADER (PACKET : in out T_CCSDS_PACKET;<br />

TO : in T_CCSDS_SECONDARY_HEADER);<br />

–– DESCRIPTION<br />

–– sets the secondary header<br />

–– EXCEPTIONS<br />

–– NO_SECONDARY_HEADER<br />

–– the primary header indicates that there<br />

–– should be no secondary header<br />

procedure SET_DATA (PACKET : in out T_CCSDS_PACKET;<br />

TO : in NUMERIC_TYPES.BYTE_ARRAY);<br />

–– DESCRIPTION<br />

–– Sets the user data to the predefined static pattern<br />

–– defined in MDB.<br />

–– The length of the user data is constrained by the length field<br />

–– in the primary header.<br />

–– EXCEPTIONS<br />

–– INVALID_SIZE<br />

–– if the byte array is too big for the packet<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

TO_VALUE : in NUMERIC_TYPES.BIT);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

NUMBER_OF_BITS : in NATURAL;<br />

TO_VALUE : in NUMERIC_TYPES.BITSET);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

TO_VALUE : in CHARACTER);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

213 von/of: 662


Space Infrastructure<br />

AT_OFFSET : in POSITIVE;<br />

NUMBER_OF_BITS : in NATURAL;<br />

TO_VALUE : in NUMERIC_TYPES.INTEGER32);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

NUMBER_OF_BITS : in NATURAL;<br />

TO_VALUE : in NUMERIC_TYPES.UNSIGNED_INTEGER32);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

TO_VALUE : in NUMERIC_TYPES.SINGLE_FLOAT);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

TO_VALUE : in NUMERIC_TYPES.DOUBLE_FLOAT);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER<br />

(PACKET : in out T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

NUMBER_OF_BYTES : in NATURAL;<br />

TO_VALUE : in NUMERIC_TYPES.BYTE_ARRAY);<br />

–– DESCRIPTION<br />

–– Takes TO_VALUE and substitutes the bits starting at<br />

–– AT_OFFSET in the PACKET.<br />

–– Note: AT_OFFSET counts the bits in the user data, starting with 1.<br />

–– EXCEPTIONS<br />

–– INVALID_SIZE<br />

–– raised if the substitution of the value exceeds the length<br />

–– of the packet<br />

–– or for integer and unsigned integer if the actual value does<br />

–– not fit into the NUMBER_OF_BITS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

214 von/of: 662<br />

function COMPUTED_CHECKSUM (PACKET: T_CCSDS_PACKET) return T_CCSDS_CHECKSUM;<br />

–– DESCRIPTION<br />

–– computes the checksum of the packet.<br />

–– The checksum algorithm is a 16–bit add without carry sum of the entire packet<br />

–– including primary and secondary headers exclusive of the checksum word itself.<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_CHECKSUM (PACKET : in out T_CCSDS_PACKET;<br />

TO : in T_CCSDS_CHECKSUM);<br />

–– DESCRIPTION<br />

–– sets the checksum at the end of a paket<br />

–– EXCEPTIONS<br />

–– NO_CHECKSUM<br />

–– in the secondary header no checksum is defined<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– read operations to get the packet contents<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function HEADER (PACKET: T_CCSDS_PACKET) return T_CCSDS_HEADER;


Space Infrastructure<br />

–– DESCRIPTION<br />

–– returns the primary header<br />

–– EXCEPTIONS<br />

–– none<br />

function SECONDARY_HEADER (PACKET: T_CCSDS_PACKET)<br />

return T_CCSDS_SECONDARY_HEADER;<br />

–– DESCRIPTION<br />

–– returns the secondary header<br />

–– EXCEPTIONS<br />

–– NO_SECONDARY_HEADER<br />

–– the primary header indicates that there<br />

–– is no secondary header<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function USER_DATA (PACKET: T_CCSDS_PACKET) return NUMERIC_TYPES.BYTE_ARRAY;<br />

–– DESCRIPTION<br />

–– returns the user data (excluding secondary header and checksum)<br />

–– from a packet<br />

–– EXCEPTIONS<br />

–– none<br />

function USER_DATA_LENGTH (PACKET: T_CCSDS_PACKET) return T_CCSDS_LENGTH;<br />

–– DESCRIPTION<br />

–– returns the length of the user data (excluding secondary header and<br />

–– checksum) from a packet<br />

–– EXCEPTIONS<br />

–– none<br />

function CHECKSUM (PACKET: T_CCSDS_PACKET) return T_CCSDS_CHECKSUM;<br />

–– DESCRIPTION<br />

–– returns the checksum from a packet<br />

–– EXCEPTIONS<br />

–– NO_CHECKSUM<br />

–– in the secondary header no checksum is defined<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.BIT;<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return CHARACTER;<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.BITSET;<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.INTEGER32;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

215 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

function PARAMETER (PACKET : T_CCSDS_PACKET;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BYTES: NATURAL;<br />

PACKET_PART : T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.BYTE_ARRAY;<br />

–– DESCRIPTION<br />

–– These overloaded functions retrieve a value from a CCSDS packet<br />

–– AT_OFFSET with the given NUMBER_OF_BITS or NUMBER_OF_BYTES.<br />

–– Note: AT_OFFSET counts the bits in the PACKET_PART, starting with 1.<br />

–– EXCEPTIONS<br />

–– DATA_LENGTH_ERROR:<br />

–– raised if the retrieval of the value exceeds the length<br />

–– of the packet<br />

–– using functions returning types that do not fit in a register (>32 bits)<br />

–– causes heap access, use these equivalent procedures for speed<br />

procedure GET_PARAMETER (PACKET : in T_CCSDS_PACKET;<br />

AT_OFFSET : in POSITIVE;<br />

NUMBER_OF_BYTES : in NATURAL;<br />

PARAMETER : in out T_PARAMETER_<strong>ST</strong>RING;<br />

PACKET_PART : in T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA);<br />

–– DESCRIPTION<br />

–– Retrieve a parameter string value from a CCSDS packet<br />

–– AT_OFFSET with the given NUMBER_OF_BYTES.<br />

–– Note: AT_OFFSET counts the bits in the PACKET_PART, starting with 1.<br />

–– EXCEPTIONS<br />

–– DATA_LENGTH_ERROR:<br />

–– raised if the retrieval of the value exceeds the length<br />

–– of the packet<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– operation to put a whole CCSDS packet into an ADT variable or to<br />

–– retreive a CCSDS packet from an ADT variable into a byte array<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

216 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_WHOLE_PACKET (PACKET : out T_CCSDS_PACKET;<br />

EXTERNAL_PACKET : in NUMERIC_TYPES.BYTE_ARRAY;<br />

EXTERNAL_SIZE : in NATURAL);<br />

–– DESCRIPTION<br />

–– This procedure puts a byte array (containing a CCSDS packet)<br />

–– into the ADT variable. The size of the packet (overall) in<br />

–– bytes is given in parameter EXTERNAL_SIZE<br />

–– EXCEPTIONS<br />

–– INVALID_SIZE<br />

–– The size does not fit (either to big or internally inconsistent)<br />

procedure GET_WHOLE_PACKET (PACKET : in T_CCSDS_PACKET;<br />

EXTERNAL_PACKET : out NUMERIC_TYPES.BYTE_ARRAY;<br />

EXTERNAL_SIZE : out NATURAL);<br />

–– DESCRIPTION<br />

–– This procedure returns a byte array (containing a CCSDS packet)<br />

–– from the ADT variable into a user provided byte array.<br />

–– The size of the packet (overall) in bytes is provided in parameter<br />

–– EXTERNAL_SIZE<br />

–– EXCEPTIONS<br />

–– DATA_LENGTH_ERROR<br />

–– The buffer provided by the user is too small<br />

procedure DEALLOCATE (PACKET : in out T_A_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– free memory allocated by new(T_CCSDS_PACKET)<br />

–– EXCEPTIONS<br />

procedure PACK (PACKET : in T_CCSDS_PACKET;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

–– pack the CCSDS_PACKET into a T_BLOCK<br />

–– only used data is packed i.e. the length field of the primary header<br />

–– is used to determine that packed size<br />

–– convert to machine independent format where applicable<br />

–– EXCEPTIONS<br />

procedure UNPACK (BLOCK : in out ADT_PACKING.T_BLOCK;<br />

PACKET : in out T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– unpack the CCSDS from a T_BLOCK<br />

–– convert from machine independent format where applicable<br />

–– EXCEPTIONS<br />

–––––––––––––––––––––––––––––––––––––<br />

–– exceptions<br />

–––––––––––––––––––––––––––––––––––––<br />

NO_SECONDARY_HEADER: exception;<br />

INVALID_TIME_ID: exception;<br />

INVALID_SIZE: exception;<br />

NO_CHECKSUM: exception;<br />

DATA_LENGTH_ERROR: exception;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

private<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

217 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_CCSDS_HEADER is<br />

record<br />

VERSION : T_CCSDS_VERSION := CCSDS_VERSION_1_PACKET;<br />

PTYPE : T_CCSDS_TYPE := 0;<br />

H2FLAG : T_CCSDS_SECONDARY_HEADER_FLAG<br />

:= CCSDS_PACKET_HAS_NO_SECONDARY_HEADER_FLAG;<br />

APID : T_CCSDS_APPLICATION_ID := 0;<br />

SEQFLAG : T_CCSDS_SEQUENCE_FLAGS := CCSDS_UNSEGMENTED_PACKET;<br />

SEQCNT : T_CCSDS_SEQUENCE_COUNT := 0;<br />

LENGTH : T_CCSDS_LENGTH := 0;<br />

end record;<br />

for T_CCSDS_HEADER use<br />

record<br />

VERSION at 0 range 0..2;<br />

PTYPE at 0 range 3..3;<br />

H2FLAG at 0 range 4..4;<br />

APID at 0 range 5..15;<br />

SEQFLAG at 2 range 0..1;<br />

SEQCNT at 2 range 2..15;<br />

LENGTH at 4 range 0..15;<br />

end record;<br />

for T_CCSDS_HEADER’SIZE use 6 * 8;<br />

NULL_CCSDS_HEADER : constant T_CCSDS_HEADER<br />

:= (VERSION => CCSDS_VERSION_1_PACKET,<br />

PTYPE => 0,<br />

H2FLAG => CCSDS_PACKET_HAS_NO_SECONDARY_HEADER_FLAG,<br />

APID => 0,<br />

SEQFLAG => CCSDS_UNSEGMENTED_PACKET,<br />

SEQCNT => 0,<br />

LENGTH => 0);<br />

type T_CCSDS_SECONDARY_HEADER is<br />

record<br />

COARSE_TIME : T_CCSDS_COARSE_TIME := 0;<br />

FINE_TIME : T_CCSDS_FINE_TIME := 0;<br />

TIME_ID : T_CCSDS_TIME_ID := CCSDS_NO_TIME_FIELD;<br />

CS_IND : T_CCSDS_CHECKSUM_INDICATOR := CCSDS_PACKET_HAS_NO_CHECKSUM;<br />

SPARE : NUMERIC_TYPES.BIT := 0;<br />

PACK_TYPE : T_CCSDS_PACKET_TYPE := CCSDS_DEFAULT_PACKET;<br />

PACK_ID : T_CCSDS_PACKET_ID := 0;<br />

end record;<br />

for T_CCSDS_SECONDARY_HEADER use<br />

record<br />

COARSE_TIME at 0 range 0..31;<br />

FINE_TIME at 4 range 0..7;<br />

TIME_ID at 5 range 0..1;<br />

CS_IND at 5 range 2..2;<br />

SPARE at 5 range 3..3;<br />

PACK_TYPE at 5 range 4..7;<br />

PACK_ID at 6 range 0..31;<br />

end record;<br />

for T_CCSDS_SECONDARY_HEADER’SIZE use 10 * 8;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

218 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

NULL_CCSDS_SECONDARY_HEADER : constant T_CCSDS_SECONDARY_HEADER<br />

:= (COARSE_TIME => 0,<br />

FINE_TIME => 0,<br />

TIME_ID => CCSDS_NO_TIME_FIELD,<br />

CS_IND => CCSDS_PACKET_HAS_NO_CHECKSUM,<br />

SPARE => 0,<br />

PACK_TYPE => CCSDS_DEFAULT_PACKET,<br />

PACK_ID => 0);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

219 von/of: 662<br />

type T_CCSDS_PACKET is<br />

new NUMERIC_TYPES.BYTE_ARRAY (1 .. MAX_PACKET_SIZE + 1 + CCSDS_HEADER_SIZE);<br />

NULL_CCSDS_PACKET : constant T_CCSDS_PACKET := (others => 0);<br />

end ADT_CCSDS_PACKET;


Space Infrastructure<br />

7.3.5 Binary Buffer ADT<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

220 von/of: 662<br />

The package ADT_BINARY_BUFFER has been introduced to make conversion between hexadecimal/raw values<br />

and binary values in a safe and uniformed way.<br />

A binary buffer is composed of :<br />

– a length (in bytes),<br />

– a data buffer which can be written/read as :<br />

– raw values stored at a certain location (in bits) with a certain length (in bits) according<br />

to a certain interpretation type;<br />

– hexadecimal values stored at a certain location (in bits) with a certain length (in bits);<br />

– binary values stored at a certain location (in bits).<br />

The following conventions have been adopted :<br />

– the least significant bit is the first on the right in a bit pattern,<br />

– the most significant bit is the first on the left in a bit pattern,<br />

– the bits are numbered from 1 to N*8 in a binary buffer of length n bytes, starting the numeration<br />

with the first bit on the left,<br />

– a value located at position P and with length L in a binary buffer means that the equivalent<br />

bit pattern representing this value starts at bit Pth and finishes at bit (P+L–1) th ,<br />

– in a binary buffer, unused bits are set to 0,<br />

– a single_bit value has a 1bit long bit pattern and can be positioned at any position in the binary<br />

buffer, the value of the single_bit (0 or 1) is simply copied in that bit,<br />

– a bit_set value has a 1 up to 32 bits long bit pattern and can be positioned at any position in<br />

the binary buffer where this bit pattern fits, the value of the bit_set (a list of 0 and 1) is simply<br />

copied in that bit pattern,<br />

– a 1s complement 12 bits integer value has a 12 bits long bit pattern and can be positioned<br />

at any position in the binary buffer where this bit pattern fits, the value of the 1s complement<br />

12 bits integer is converted into a binary value following the 1s complement representation,<br />

e.g. ’2’ is encoded ’000000000010’ and ’–2’ is encoded ’111111111101,<br />

– a 2s complement 12 bits integer value has a 12 bits long bit pattern and can be positioned<br />

at any position in the binary buffer where this bit pattern fits, the value of the 2s complement<br />

12 bits integer is converted into a binary value following the 2s complement representation,<br />

e.g. ’2’ is encoded ’000000000010’ and ’–2’ is encoded ’111111111110<br />

– a 1s complement 16 bits integer value has a 16 bits long bit pattern and can be positioned<br />

at any position in the binary buffer where this bit pattern fits, the value of the 1s complement<br />

16 bits integer is converted into a binary value following the 1s complement representation,<br />

– a 2s complement 16 bits integer value has a 16 bits long bit pattern and can be positioned<br />

at any position in the binary buffer where this bit pattern fits, the value of the 2s comple-


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

221 von/of: 662<br />

ment 16 bits integer is converted into a binary value following the 2s complement representation,<br />

– a 1s complement 32 bits integer value has a 32 bits long bit pattern and can be positioned<br />

at any position in the binary buffer where this bit pattern fits, the value of the 1s complement<br />

32 bits integer is converted into a binary value following the 1s complement representation,<br />

– a 2s complement 32 bits integer value has a 32 bits long bit pattern and can be positioned<br />

at any position in the binary buffer where this bit pattern fits, the value of the 2s complement<br />

32 bits integer is converted into a binary value following the 2s complement representation,<br />

– a float value has a 32 bits long bit pattern and can be positioned at any position in the binary<br />

buffer where this bit pattern fits, the value of the float is converted into a binary value<br />

following the IEEE standard for normalized single–precision–floating–point numbers,<br />

– a byte_stream value has a 1 up to 256 bytes long bit pattern and can be positioned at any<br />

position where this bit pattern fits, the value of the byte_stream (a list of 0 and 1) is simply<br />

copied in that bit pattern,<br />

– a hexadecimal value has a 1 up to 512 nibbles (half byte) long bit pattern and can be positioned<br />

at any position where this bit pattern fits, the value of the hexadecimal number is<br />

converted into a binary value following the standard binary representation, e.g. ’FF’ is encoded<br />

’11111111’.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

222 von/of: 662<br />

––<br />

–– ADT_BINARY_BUFFER spec<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT<br />

––<br />

–– This ADT allows conversion of hexadecimal and raw values into<br />

–– binary buffer and vice versa<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : COLUMBUS VICOS<br />

–– PRODUCT NAME : VCS<br />

–– CI–NUMBER : 1234950<br />

–– OBJECT NAME : ADT_BINARY_BUFFER<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SUN/Verdix Ada<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS: –<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––<br />

–– #IRN 8069/B: modify comments of SUB<strong>ST</strong>ITUTE_PARAMETER operations.<br />

–– Author: P.Hartmann<br />

–– Date: 22.06.99<br />

––<br />

–– #IRN 6020/B: change function PARAMETER into procedure GET_PARAMETER<br />

–– for BYTE_ARRAY parameter and update comments.<br />

–– Author: P.Hartmann<br />

–– Date: 09.04.97<br />

––<br />

–– #IRN 6020: Add new services to store and retrieve parameter (values)<br />

–– Author: P.Athmann<br />

–– Date: 14.2.97<br />

––<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: grotheer (on host vicos_s)<br />

–– creation date: 19.01.94 15:57:43<br />

–– AT_LOCATION aligned with database (first bit=0)<br />

––<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: grotheer (on host vicos_s)<br />

–– creation date: 24.09.93 10:38:52<br />

–– initial version, header added<br />

––<br />

––****************************************************************************<br />

with NUMERIC_TYPES;<br />

with <strong>ST</strong>ATIC_<strong>ST</strong>RINGS;<br />

with ADT_RAW_VALUE;<br />

package ADT_BINARY_BUFFER is<br />

––––––––––––––––––––––––––––––


Space Infrastructure<br />

–– public types and constants<br />

––––––––––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

package <strong>ST</strong>ATIC_<strong>ST</strong>RINGS512 is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS(512);<br />

type T_HEXA_<strong>ST</strong>RING is new <strong>ST</strong>ATIC_<strong>ST</strong>RINGS512.<strong>ST</strong>ATIC_<strong>ST</strong>RING;<br />

––––––––––––––––––––<br />

–– write operations<br />

––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

223 von/of: 662<br />

procedure SET_RAW_VALUE (<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

WITH_RAW_VALUE : in ADT_RAW_VALUE.T_RAW_VALUE;<br />

AT_LOCATION : in NATURAL;<br />

WITH_LENGTH : in POSITIVE);<br />

–– DESCRIPTION<br />

–– This procedure sets the specified raw value in the<br />

–– specified binary buffer at the specified location (0..n bits)<br />

–– with the specified length (in bits). The length is specified by<br />

–– the size of the value itself or by WITH_LENGTH (for bitsets and<br />

integer).<br />

–– EXCEPTIONS<br />

–– VALUE_TYPE_MISMATCH :<br />

–– The type of the specified raw value is not set<br />

–– LENGTH_MISMATCH :<br />

–– Bit location + value length exceeds the buffer size.<br />

–– or if the length is greater than the raw value (case BYTE_<strong>ST</strong>REAM)<br />

–– or for integer and unsigned integer if the actual value does<br />

–– not fit into the NUMBER_OF_BITS<br />

procedure SET_HEXA_VALUE (<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

WITH_HEXA_VALUE : in T_HEXA_<strong>ST</strong>RING;<br />

AT_LOCATION : in NATURAL;<br />

WITH_LENGTH : in POSITIVE);<br />

–– DESCRIPTION<br />

–– This procedure sets the specified hexadecimal value ( text string )<br />

–– in the specified binary buffer at the specified location (0..n bits)<br />

–– with the specified length (in bits). Leading zeros of the hexa–<br />

–– decimal string value are suppressed, but the specified length may<br />

–– add leading zeros. That means: the hexadecimal string ”03” sets only<br />

–– 2 bits (if the specified length is 2), but a given ”3” with the<br />

–– specified length of 8 inserts the bits 00000011.<br />

–– EXCEPTIONS<br />

–– LENGTH_MISMATCH :<br />

–– The specified length is not compatible with the specified<br />

–– hexadecimal value, or the size of the binary buffer is too small.<br />

–– VALUE_TYPE_MISMATCH :<br />

–– The specified string is not an hexadecimal value.<br />

–– The hexadecimal value shall be a string of the characters 0..9,<br />

–– A..F with no blanks in between (blanks may be on either side).<br />

procedure SET_BINARY_BUFFER (<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

WITH_BINARY_BUFFER : in NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_LOCATION : in NATURAL);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

224 von/of: 662<br />

–– DESCRIPTION<br />

–– This procedure sets the binary buffer specified as second<br />

–– parameter into the binary buffer specified as first parameter<br />

–– at the specified location (0..n bits). Byte alignment of the<br />

–– specified location is not required.<br />

–– EXCEPTIONS<br />

–– LENGTH_MISMATCH :<br />

–– The passed binary buffer, at the specified location, does not<br />

–– fit into the binary buffer specified as first parameter.<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

TO_VALUE : NUMERIC_TYPES.BIT);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL;<br />

TO_VALUE : NUMERIC_TYPES.BITSET);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

TO_VALUE : CHARACTER);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL;<br />

TO_VALUE : NUMERIC_TYPES.INTEGER32);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL;<br />

TO_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

TO_VALUE : NUMERIC_TYPES.SINGLE_FLOAT);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

TO_VALUE : NUMERIC_TYPES.DOUBLE_FLOAT);<br />

procedure SUB<strong>ST</strong>ITUTE_PARAMETER(<br />

IN_BUFFER : in out NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BYTES : NATURAL;<br />

TO_VALUE : NUMERIC_TYPES.BYTE_ARRAY);<br />

––DESCRIPTION<br />

––Takes TO_VALUE and substitutes the bits starting at<br />

––AT_OFFSET in the IN_BUFFER.<br />

––AT_OFFSET is the offset to the beginning of the buffer,<br />

–– counted in bits, starting with 1<br />

––EXCEPTIONS<br />

––LENGTH_MISMATCH<br />

––raised if the offset + the length of the value is<br />

––exceeding the length of the IN_BUFFER<br />

––or if the length is greater than TO_VALUE (case BYTE_<strong>ST</strong>REAM)<br />

––or for integer and unsigned integer if the actual value does<br />

––not fit into the NUMBER_OF_BITS


Space Infrastructure<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function BUFFER_SIZE (<br />

OF_BUFFER : NUMERIC_TYPES.BYTE_ARRAY)<br />

return INTEGER;<br />

–– DESCRIPTION<br />

–– This function returns the size of the specified<br />

–– binary buffer (in bytes).<br />

–– EXCEPTIONS<br />

–– None.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

225 von/of: 662<br />

procedure GET_RAW_VALUE (<br />

FROM_BUFFER : in NUMERIC_TYPES.BYTE_ARRAY;<br />

RAW_VALUE : in out ADT_RAW_VALUE.T_RAW_VALUE;<br />

AT_LOCATION : in NATURAL;<br />

WITH_LENGTH : in POSITIVE);<br />

–– DESCRIPTION<br />

–– This procedure returns a raw value out of the<br />

–– specified binary buffer at the specified location (0..n bits)<br />

–– with the specified length (in bits). The length is specified by<br />

–– the size of the value itself or by WITH_LENGTH ( for bitsets and<br />

–– byte streams and integer ).<br />

–– Note that the type of the raw value variable has to be set<br />

–– EXCEPTIONS<br />

–– VALUE_TYPE_MISMATCH :<br />

–– The type of the specified raw value is not set<br />

–– LENGTH_MISMATCH :<br />

–– 1. Bit location + value length exceeds the buffer size<br />

–– 2. WITH_LENGTH exceeds the maximum size of a bitset or stream value<br />

–– 3. WITH_LENGTH is not a multiple of 8 for byte stream values<br />

function HEXA_VALUE (<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_LOCATION : NATURAL;<br />

WITH_LENGTH : POSITIVE)<br />

return T_HEXA_<strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– This function returns the hexadecimal value stored in the<br />

–– specified binary buffer at the specified location (0..n bits)<br />

–– with the specified length (in bits). The hexadecimal string<br />

–– is returned with a minimum of characters ( no leading zeros,<br />

–– no hex–ID like 16#00# or 0x00, all bits 0’s = a single ”0” )<br />

–– EXCEPTIONS<br />

–– LENGTH_MISMATCH :<br />

–– The area defined by the location and length is exceeding<br />

–– the size of the binary buffer or the extracted hexadecimal value<br />

–– exceeds the maximum no. of characters of the return value.<br />

function BINARY_BUFFER (<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_LOCATION : NATURAL;<br />

WITH_LENGTH : POSITIVE)<br />

return NUMERIC_TYPES.BYTE_ARRAY;<br />

–– DESCRIPTION<br />

–– This function returns a binary buffer stored at the<br />

–– specified position out of the binary buffer specified


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

226 von/of: 662<br />

–– as first parameter. Byte alignment of the specified<br />

–– location is not required.<br />

–– Note: A CON<strong>ST</strong>RAINT_ERROR will be raised at the level of the<br />

–– calling program, if the specified length is not excactly<br />

–– 8*(size of return buffer). The validity of WITH_LENGTH can’t<br />

–– be checked in this function.<br />

–– EXCEPTIONS<br />

–– LENGTH_MISMATCH :<br />

–– The area defined by the location and length is exceeding<br />

–– the size of the binary buffer or the specified length is not<br />

–– a multiple of 8 ( byte alignment for destination buffer ).<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE)<br />

return NUMERIC_TYPES.BIT;<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE)<br />

return CHARACTER;<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL)<br />

return NUMERIC_TYPES.BITSET;<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE;<br />

NUMBER_OF_BITS : NATURAL)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

function PARAMETER(<br />

FROM_BUFFER : NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : POSITIVE)<br />

return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

procedure GET_PARAMETER(<br />

FROM_BUFFER : in NUMERIC_TYPES.BYTE_ARRAY;<br />

AT_OFFSET : in POSITIVE;<br />

NUMBER_OF_BYTES : in NATURAL;<br />

BYTE_ARRAY : in out NUMERIC_TYPES.BYTE_ARRAY);<br />

––DESCRIPTION<br />

––These overloaded functions retrieve a value from the buffer<br />

––AT_OFFSET with the given NUMBER_OF_BITS or NUMBER_OF_BYTES.<br />

––Note: AT_OFFSET counts the bits in the buffer, starting with 1.<br />

––EXCEPTIONS<br />

––LENGTH_MISMATCH:<br />

––raised if the offset + the length of the value is<br />

––exceeding the length of the buffer<br />

––or if the length is exceeding the length of the BYTE_<strong>ST</strong>REAM (procedure<br />

––GET_PARAMETER)<br />

–––––––––––––––––––––


Space Infrastructure<br />

–– Exceptions<br />

–––––––––––––––––––––<br />

BUFFER_IS_CON<strong>ST</strong>RAINED : exception;<br />

LENGTH_MISMATCH : exception;<br />

VALUE_TYPE_MISMATCH : exception;<br />

end ADT_BINARY_BUFFER;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

227 von/of: 662


Space Infrastructure<br />

7.4 Calibration<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

228 von/of: 662<br />

Please note that this package is not allowed outside <strong>CGS</strong> by other Products than CMAS !!!<br />

Informal <strong>Interface</strong> Description<br />

The package calibration provides types to contain calibration and decalibration descriptions as well as procedures<br />

to calibrate and decalibrate values based on these descriptions. Four types of (de)calibration mechanisms<br />

are defined :<br />

– conversion of analog values with a polynom (defined by coefficients);<br />

– conversion of analog values with a curve defined by point pairs;<br />

– conversion of discrete values into state codes, with an association table;<br />

– conversion of byte stream values into strings, by extraction of substreams.<br />

A Calibration Description is a composite type containing the following attributes :<br />

– a calibration alternative,<br />

– a list of coefficients, if the calibration is of type polynom,<br />

– a point pairs curve description, if the calibration is of type point pairs, composed of :<br />

– a point pair list size,<br />

– a list of point pairs, composed of :<br />

– a raw value point;<br />

– a calibrated value point;<br />

– an association table when the calibration alternative is DISCRETE, where each element is composed<br />

of :<br />

– a raw value,<br />

– a corresponding state code value.<br />

– an extraction description, if the calibration is of type string extraction, composed of :<br />

– a position (expressed as a number of characters) in the byte stream where<br />

the extraction has to begin,<br />

– a length (expressed as a number of characters) corresponding to the<br />

number of successive characters which have to be extracted from the raw<br />

byte stream.<br />

The calibration description has packing and unpacking operations for machine independent internal representation<br />

and to support inter process communication.<br />

Also, a procedure is provided to internal represent a point pair (de)calibration curve more efficient so that the<br />

(de)calibration of data is performed quicker


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– CALIBRATION spec<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

–– This package provides an abstract data type for the description of<br />

–– how enditem data is to be converted between raw and engineering<br />

–– values plus the procedures to do the transformation.<br />

–– The following operations for calibration and decalibration are provided:<br />

–– 1.) calibration: conversion of raw values –> engineering values<br />

–– (described by point_pairs)<br />

–– 2.) decalibration: conversion of engineering values –> raw values<br />

–– (described by point_pairs)<br />

–– 3.) calibration: conversion of raw values –> engineering values<br />

–– (described by a polynominal curves)<br />

–– 4.) decalibration: conversion of engineering values –> raw values<br />

–– (described by a polynominal curves)<br />

–– 5.) calibration: conversion of Integer32 –> State_Code<br />

–– (described by discrete point pairs)<br />

–– 6.) decalibration: conversion of State_Code –> Integer32<br />

–– (described by discrete point pairs)<br />

–– 7.) calibration: conversion of Dynamic_String –> Dynamic_String<br />

–– (”substrings” argument)<br />

–– 8.) calibration: conversion of BIT/INTEGER32 –> BOOLEAN<br />

–– 9.) decalibration: conversion of BOOLEAN –> BIT/INTEGER32<br />

––10.) calibration: conversion of raw values –> engineering values<br />

–– (described by a identical mapping)<br />

––11.) decalibration: conversion of engineering values –> raw values<br />

–– (described by a identical mapping)<br />

–– The package is a combination of the former VCS packages<br />

–– ADT_CALIBRATION_DESCRIPTION and CALIBRATE. However, since this<br />

–– version is now intended for use in the CSS product also, the data<br />

–– types of raw and enmgineering values have been changed from<br />

–– ADT_RAW_VALUE / ADT_ENGINEERING_VALUE to types provided by<br />

–– NUMERIC_TYPES. Also, the exceptions have been streamlined.<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : HCI<br />

–– CI–NUMBER : 1216878<br />

–– OBJECT NAME : VICOS_ADTS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

229 von/of: 662<br />

––CONTENTS––<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V16.1 at Central Repository at DASA RI<br />

–– creator: tommy (on host aiv_tn2)<br />

–– creation date: 09.12.96 16:56:44<br />

–– comment:<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.7 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: cssproma (on host ada_s)<br />

–– creation date: 09.01.96 16:40:03<br />

–– comment:<br />

–– –– introduced new functions, see PIRN COL–RIBRE–IRN–<strong>CGS</strong>–3091<br />

–– –– adapted comments and body code, see SPR COL–RIBRE–SPR–<strong>CGS</strong>–2051


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

230 von/of: 662<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.6 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: A.Schulz<br />

–– creation date: 08.01.96<br />

–– comment:<br />

–– introduced new functions, see PIRN COL–RIBRE–IRN–<strong>CGS</strong>–3091<br />

–– adapted comments and body code, see SPR COL–RIBRE–SPR–<strong>CGS</strong>–2051<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.5 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: css_test (on host csf_1)<br />

–– creation date: 19.12.95 09:01:11<br />

–– comment:<br />

–– introduced new functions, see PIRN COL–RIBRE–IRN–<strong>CGS</strong>–3091<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: css_test (on host csf_1)<br />

–– creation date: 31.08.95 16:50:52<br />

–– comment:<br />

–– PIRN COL–RIBRE–IRN–<strong>CGS</strong>–3032 1/H<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: css_test (on host csf_1)<br />

–– creation date: 31.08.95<br />

–– comment:<br />

–– new baseline according to PIRN COL–RIBRE–IRN–<strong>CGS</strong>–3032 1/H<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 02.06.95 18:32:03<br />

–– comment:<br />

–– Constant UNDEFINED_MAPPING changed to NULL_CALIBRATION_DECALIBRATION<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: css_test (on host csf_1)<br />

–– creation date: 02.06.95 13:31:06<br />

–– comment:<br />

–– new baseline according to PIRN COL–RIBRE–IRN–<strong>CGS</strong>–3032 1/F<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V1.0 at Central Repository V4 (<strong>CGS</strong> build2 development)<br />

–– creator: gehrke (on host mps2s–1)<br />

–– creation date: 16.05.95 11:00:00<br />

–– comment:<br />

–– COL_RIBRE–IRN–3032/E<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with MPS_DEFINITIONS;<br />

with NUMERIC_TYPES;<br />

with ADT_PACKING;<br />

package CALIBRATION is<br />

–––––––––––––––––––<br />

–– Exceptions<br />

–––––––––––––––––––


Space Infrastructure<br />

––––– due to invalid runtime data –––––––––––––––––––––––<br />

–– raised for invalid input data to (de–)calibrated:<br />

VALUE_OUT_OF_RANGE: exception;<br />

––––– due to invalid configuration data resp. usage –––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– raised by SET_xxx_(DE–)CALIBRATION when SW types are invalid<br />

–– for calibration alternative:<br />

ARGUMENT_ERROR: exception;<br />

–– raised by (DE–)CALIBRATED when calibration description was defined<br />

–– for other direction<br />

ILLEGAL_MAPPING_KIND: exception;<br />

–– raised when input calibration description is incomplete<br />

–– or parameters for SET_xx_(DE)CALIBRATION are invalid:<br />

ILLEGAL_CALIB_DECALIB_DEFINITION: exception;<br />

–– raised by INVERT when inversion is impossible:<br />

NOT_INVERTABLE: exception;<br />

–– raised when description alternative or SW type<br />

–– is illegal for current operation:<br />

CALIBRATION_TYPE_MISMATCH: exception;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Constants<br />

–––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

231 von/of: 662<br />

MAX_POLYNOM_COEFFICIENTS : constant integer := 5;<br />

MAX_POINT_PAIRS : constant integer := 20;<br />

MAX_<strong>ST</strong>ATE_CODES : constant integer := 32;<br />

–– kept for compatibility<br />

MAX_BYTE<strong>ST</strong>REAM : constant integer := MPS_DEFINITION-<br />

S.MAX_RAW_<strong>ST</strong>RING_LENGTH;<br />

–––––––––––––––––––<br />

–– Types<br />

–––––––––––––––––––<br />

type MAPPING_KIND is (CALIBRATION, DECALIBRATION);<br />

type CALIBRATION_ALTERNATIVES is (<br />

UNDEFINED,<br />

POLYNOM,<br />

POINT_PAIRS,<br />

DISCRETE,<br />

BOOLEAN_CAL,<br />

SUB<strong>ST</strong>RING,<br />

CON<strong>ST</strong>ANT_CAL);<br />

–– The calibration alternative indicates how calibration shall be done:<br />

–– – the curve is a polynom,<br />

–– – the curve is a point pairs curve,<br />

–– – a discrete association table is used,<br />

–– – string extraction is used,<br />

–– – default mapping used dependant on type of engineering and raw value<br />

subtype POLYNOM_INDEX is integer range 0 .. MAX_POLYNOM_COEFFICIENTS – 1;<br />

subtype ANALOG_POINT_PAIR_INDEX is integer range 1 .. MAX_POINT_PAIRS;<br />

subtype DISCRETE_POINT_PAIR_INDEX is integer range 1 .. MAX_<strong>ST</strong>ATE_CODES;<br />

subtype BYTE<strong>ST</strong>REAM_INDEX is integer range 1 .. MAX_BYTE<strong>ST</strong>REAM;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type POLYNOM_COEFFICIENTS is array ( POLYNOM_INDEX ) of<br />

NUMERIC_TYPES.DOUBLE_FLOAT;<br />

type ANALOG_POINT_PAIR is record<br />

RAW_POINT : NUMERIC_TYPES.DOUBLE_FLOAT;<br />

CAL_POINT : NUMERIC_TYPES.DOUBLE_FLOAT;<br />

end record;<br />

type ANALOG_POINT_PAIR_ARRAY is array (<br />

ANALOG_POINT_PAIR_INDEX range ) of ANALOG_POINT_PAIR;<br />

type DISCRETE_POINT_PAIR is record<br />

DISCRETE_VALUE : NUMERIC_TYPES.INTEGER32;<br />

<strong>ST</strong>ATECODE_VALUE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

end record;<br />

type DISCRETE_POINT_PAIR_ARRAY is array (<br />

DISCRETE_POINT_PAIR_INDEX range ) of DISCRETE_POINT_PAIR;<br />

type CALIBRATION_DECALIBRATION_TYPE is private;<br />

–– The private type which describes how calibration as well as decalibration<br />

–– shall be done. In favor of brevity, no separate decalibration type is<br />

–– provided since anyhow all internals of calibration/decalibration are<br />

–– the same.<br />

NULL_CALIBRATION_DECALIBRATION:<br />

constant CALIBRATION_DECALIBRATION_TYPE;<br />

–––––––––––––––––––––––––––––––––––––––––––––––<br />

–– write operations<br />

–––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure SET_CON<strong>ST</strong>ANT_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

RAW_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR);<br />

–– DESCRIPTION<br />

–– This procedure sets an identical calibration for all raw and engineering<br />

–– values of type integer, unsigned_integer32, real and long_real :<br />

–– calibrated value = raw value<br />

–– The calibration alternative is set to CON<strong>ST</strong>ANT_CAL internally<br />

–– Also, the allowed ranges for the engineering and raw values as well<br />

–– as their type are set from the input value descriptors.<br />

–– Note that the parameters of type ”MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR”<br />

–– contains a component called ”engineering_unit”, which is not used here.<br />

–– EXCEPTIONS:<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw or engineering type is not legal for constant calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – raw or engineering range is empty (first>=last)<br />

procedure SET_POLYNOM_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

COEFFICIENTS: in POLYNOM_COEFFICIENTS;<br />

RAW_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR);<br />

–– DESCRIPTION<br />

–– This procedure sets the polynom calibration coefficients of<br />

–– the specified calibration description for all raw and engineering<br />

–– values of type integer, unsigned_integer32, real and long_real.<br />

–– The calibration alternative is set to POLYNOM internally<br />

–– Also, the allowed ranges for the engineering and raw values as well<br />

–– as their type are set from the input value descriptors.<br />

–– Note that the parameters of type ”MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR”<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

232 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– contains a component called ”engineering_unit”, which is not used here.<br />

–– EXCEPTIONS<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw or engineering type is not legal for polynom calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – raw or engineering range is empty (first>=last)<br />

procedure SET_POINT_PAIR_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

POINT_PAIRS: in ANALOG_POINT_PAIR_ARRAY;<br />

RAW_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR);<br />

–– DESCRIPTION<br />

–– This procedure sets the analog calibration point pairs of<br />

–– the specified calibration description for all raw and engineering<br />

–– values of type integer, unsigned_integer32, real and long_real.<br />

–– The calibration alternative is set to POINT_PAIRS internally<br />

–– Also, the allowed ranges for the engineering and raw values as well<br />

–– as their type are set from the input value descriptors.<br />

–– Note that the parameters of type ”MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR”<br />

–– contains a component called ”engineering_unit”, which is not used here.<br />

–– EXCEPTIONS<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw or engineering type is not legal for point pair calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – raw or engineering range is empty (first>=last)<br />

–– – less than 2 or more than MAX_POINT_PAIRS point pairs provided<br />

–– – two adjacent raw or engineering values are identical<br />

–– VALUE_OUT_OF_RANGE: raised, if<br />

–– – any raw or engineering value is out of range<br />

procedure SET_DISCRETE_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

POINT_PAIRS: in DISCRETE_POINT_PAIR_ARRAY;<br />

RAW_VALUE_TYPE: in MPS_DEFINITIONS.T_SW_TYPE);<br />

–– DESCRIPTION<br />

–– This procedure sets the discrete calibration point pairs of<br />

–– the specified calibration description for all raw values<br />

–– of type integer and unsigned_integer32.<br />

–– Note that the first entry within the list of state_codes denotes<br />

–– the value which will be returned by the calibration operations<br />

–– in case no valid state_code is found.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to DISCRETE<br />

–– => the raw value descriptor is set dependant<br />

–– on the RAW_VALUE_TYPE:<br />

–– SW_TYPE := RAW_VALUE_TYPE<br />

–– with range: SW_TYPE’FIR<strong>ST</strong>..SW_TYPE’LA<strong>ST</strong><br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := <strong>ST</strong>ATE_CODE_TYPE<br />

–– <strong>ST</strong>ATE_CODE_LI<strong>ST</strong>:= <br />

–– EXCEPTIONS<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw type is not legal for discrete calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – less than 2 or more than MAX_<strong>ST</strong>ATE_CODES point pairs provided<br />

–– – two raw values are identical<br />

procedure SET_BOOLEAN_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

BY_TRUE: in NUMERIC_TYPES.BIT;<br />

BY_FALSE: in NUMERIC_TYPES.BIT);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

233 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– This procedure sets the bit–to–boolean mapping for calibration of<br />

–– the specified calibration description.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to BOOLEAN_CAL<br />

–– => the raw value descriptor is set to<br />

–– SW_TYPE := INTEGER_TYPE<br />

–– with range: 0..1<br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := BOOLEAN_TYPE<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – BY_TRUE and BY_FALSE are identical<br />

procedure SET_BOOLEAN_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

BY_TRUE: in NUMERIC_TYPES.INTEGER32;<br />

BY_FALSE: in NUMERIC_TYPES.INTEGER32);<br />

–– DESCRIPTION<br />

–– This procedure sets the integer32–to–boolean mapping for calibration of<br />

–– the specified calibration description.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to BOOLEAN_CAL<br />

–– => the raw value descriptor is set to<br />

–– SW_TYPE := INTEGER_TYPE<br />

–– with range: 0..2GB<br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := BOOLEAN_TYPE<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – BY_TRUE and BY_FALSE are identical<br />

procedure SET_BYTE<strong>ST</strong>REAM_CALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

<strong>ST</strong>ART_POINT: in BYTE<strong>ST</strong>REAM_INDEX;<br />

SUB<strong>ST</strong>RING_LENGTH: in BYTE<strong>ST</strong>REAM_INDEX);<br />

–– DESCRIPTION<br />

–– This procedure sets the substring start point and length values of<br />

–– the specified calibration description.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to SUB<strong>ST</strong>RING<br />

–– => the raw value descriptor is set to<br />

–– SW_TYPE := <strong>ST</strong>RING_TYPE<br />

–– with <strong>ST</strong>RING_SIZE: <strong>ST</strong>ART_POINT + SUB<strong>ST</strong>RING_LENGTH – 1<br />

–– (minimum length required for calibration)<br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := <strong>ST</strong>RING_TYPE<br />

–– with <strong>ST</strong>RING_SIZE: SUB<strong>ST</strong>RING_LENGTH<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – <strong>ST</strong>ART_POINT + SUB<strong>ST</strong>RING_LENGTH – 1 > MAX_BYTE<strong>ST</strong>REAM<br />

procedure SET_CON<strong>ST</strong>ANT_DECALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

RAW_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR);<br />

–– DESCRIPTION<br />

–– This procedure sets an identical decalibration for all raw and engineering<br />

–– values of type integer, unsigned_integer32, real and long_real :<br />

–– calibrated value = raw value<br />

–– The calibration alternative is set to CON<strong>ST</strong>ANT_CAL internally<br />

–– Also, the allowed ranges for the engineering and raw values as well<br />

–– as their type are set from the input value descriptors.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

234 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Note that the parameters of type ”MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR”<br />

–– contains a component called ”engineering_unit”, which is not used here.<br />

–– EXCEPTIONS:<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw or engineering type is not legal for constant calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – raw or engineering range is empty (first>=last)<br />

procedure SET_POLYNOM_DECALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

COEFFICIENTS: in POLYNOM_COEFFICIENTS;<br />

RAW_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR);<br />

–– DESCRIPTION<br />

–– This procedure sets the polynom decalibration coefficients of<br />

–– the specified calibration description for all raw and engineering<br />

–– values of type integer, unsigned_integer32, real and long_real.<br />

–– The calibration alternative is set to POLYNOM internally<br />

–– Also, the allowed ranges for the engineering and raw values as well<br />

–– as their type are set from the input value descriptors.<br />

–– Note that the parameters of type ”MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR”<br />

–– contains a component called ”engineering_unit”, which is not used here.<br />

–– EXCEPTIONS<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw or engineering type is not legal for polynom calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – raw or engineering range is empty (first>=last)<br />

procedure SET_POINT_PAIR_DECALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

POINT_PAIRS: in ANALOG_POINT_PAIR_ARRAY;<br />

RAW_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR: in MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR);<br />

–– DESCRIPTION<br />

–– This procedure sets the analog decalibration point pairs of<br />

–– the specified calibration description for all raw and engineering<br />

–– values of type integer, unsigned_integer32, real and long_real.<br />

–– The calibration alternative is set to POINT_PAIRS internally<br />

–– Also, the allowed ranges for the engineering and raw values as well<br />

–– as their type are set from the input value descriptors.<br />

–– Note that the parameters of type ”MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR”<br />

–– contains a component called ”engineering_unit”, which is not used here.<br />

–– EXCEPTIONS<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw or engineering type is not legal for point pair calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – raw or engineering range is empty (first>=last)<br />

–– – less than 2 or more than MAX_POINT_PAIRS point pairs provided<br />

–– – two adjacent raw or engineering values are identical<br />

–– VALUE_OUT_OF_RANGE: raised, if<br />

–– – any raw or engineering value is out of range<br />

procedure SET_DISCRETE_DECALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

POINT_PAIRS: in DISCRETE_POINT_PAIR_ARRAY;<br />

RAW_VALUE_TYPE: in MPS_DEFINITIONS.T_SW_TYPE);<br />

–– DESCRIPTION<br />

–– This procedure sets the discrete decalibration point pairs of<br />

–– the specified calibration description for all raw values<br />

–– of type integer and unsigned_integer32.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to DISCRETE<br />

–– => the raw value descriptor is set dependant<br />

–– on the RAW_VALUE_TYPE:<br />

–– SW_TYPE := RAW_VALUE_TYPE<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

235 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– with range: SW_TYPE’FIR<strong>ST</strong>..SW_TYPE’LA<strong>ST</strong><br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := <strong>ST</strong>ATE_CODE_TYPE<br />

–– <strong>ST</strong>ATE_CODE_LI<strong>ST</strong>:= <br />

–– EXCEPTIONS<br />

–– ARGUMENT_ERROR: raised, if<br />

–– – raw type is not legal for discrete calibration<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – less than 2 or more than MAX_<strong>ST</strong>ATE_CODES point pairs provided<br />

–– – two state code values are identical<br />

procedure SET_BOOLEAN_DECALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

BY_TRUE: in NUMERIC_TYPES.BIT;<br />

BY_FALSE: in NUMERIC_TYPES.BIT);<br />

–– DESCRIPTION<br />

–– This procedure sets the bit–to–boolean mapping for decalibration of<br />

–– the specified calibration description.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to BOOLEAN_CAL<br />

–– => the raw value descriptor is set to<br />

–– SW_TYPE := INTEGER_TYPE<br />

–– with range: 0..1<br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := BOOLEAN_TYPE<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – BY_TRUE and BY_FALSE are identical<br />

procedure SET_BOOLEAN_DECALIBRATION (<br />

OF_CAL_DESCR: in out CALIBRATION_DECALIBRATION_TYPE;<br />

BY_TRUE: in NUMERIC_TYPES.INTEGER32;<br />

BY_FALSE: in NUMERIC_TYPES.INTEGER32);<br />

–– DESCRIPTION<br />

–– This procedure sets the integer32–to–boolean mapping for decalibration of<br />

–– the specified calibration description.<br />

–– Internally, the following actions are performed automatically:<br />

–– => the calibration alternative is set to BOOLEAN_CAL<br />

–– => the raw value descriptor is set to<br />

–– SW_TYPE := INTEGER_TYPE<br />

–– with range: 0..2GB<br />

–– => the engineering value descriptor is set to<br />

–– SW_TYPE := BOOLEAN_TYPE<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised, if<br />

–– – BY_TRUE and BY_FALSE are identical<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

236 von/of: 662<br />

procedure DEALLOCATE_CALIB(GARBAGE: in out CALIBRATION_DECALIBRATION_TYPE);<br />

–– DESCRIPTION<br />

–– This procedure removes a previously defined calibration/decalibration description<br />

–– completely.<br />

–– EXCEPTIONS<br />

–– none<br />

––––––––––––––––––––––––––––––––––––––––––––––<br />

–– read operations for calibration attributes<br />

––––––––––––––––––––––––––––––––––––––––––––––<br />

function GET_CALIBRATION_ALTERNATIVE (<br />

OF_CAL_DESCR: CALIBRATION_DECALIBRATION_TYPE)<br />

return CALIBRATION_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the calibration alternative of the<br />

–– specified (de)calibration description; UNDEFINED when empty.<br />

–– When in doubt, call this procedure first to make sure that


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– OF_CAL_DESCR has been defined. All other GET_xxx will raise<br />

–– an exception when OF_CAL_DESCR is empty.<br />

–– EXCEPTIONS<br />

–– None.<br />

function GET_MAPPING_KIND (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return MAPPING_KIND;<br />

–– DESCRIPTION<br />

–– This function returns the mapping kind of the specified (de)calibration<br />

–– description, i.e. whether the provided description may be used for<br />

–– calibration or decalibration<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_RAW_VALUE_DESCRIPTOR (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

–– DESCRIPTION<br />

–– This function returns the raw value descriptor of the<br />

–– specified (de)calibration description containing the type and ranges<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

–– – the raw value descriptor is empty/undefined.<br />

function GET_ENG_VALUE_DESCRIPTOR (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return MPS_DEFINITIONS.T_SW_TYPE_DESCRIPTOR;<br />

–– DESCRIPTION<br />

–– This function returns the engineering value descriptor of the<br />

–– specified (de)calibration description containing the type and ranges<br />

–– EXCEPTIONS<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

–– – the engineering value descriptor is empty/undefined.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

237 von/of: 662<br />

function GET_POLYNOM_COEFFICIENTS (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return POLYNOM_COEFFICIENTS;<br />

–– DESCRIPTION<br />

–– This function returns the polynom coefficients of the<br />

–– specified (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not POLYNOM.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the coefficients array is empty/undefined.<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_ANALOG_POINT_PAIRS (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return ANALOG_POINT_PAIR_ARRAY;<br />

–– DESCRIPTION<br />

–– This function returns the polynom coefficients of the<br />

–– specified (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not POINT_PAIRS.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the point pair array is empty/undefined.<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_DISCRETE_POINT_PAIRS (


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

238 von/of: 662<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return DISCRETE_POINT_PAIR_ARRAY;<br />

–– DESCRIPTION<br />

–– This function returns the discrete point pairs of the<br />

–– specified (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not DISCRETE.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the point pair array is empty/undefined.<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_BOOLEAN_BY_TRUE_VALUE (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.BIT;<br />

–– DESCRIPTION<br />

–– This function returns the bit representation for ”TRUE” of the<br />

–– specified boolean (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not BOOLEAN_TYPE.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_BOOLEAN_BY_TRUE_VALUE (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

–– DESCRIPTION<br />

–– This function returns the integer representation for ”TRUE” of the<br />

–– specified boolean (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not BOOLEAN_TYPE.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_BOOLEAN_BY_FALSE_VALUE (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.BIT;<br />

–– DESCRIPTION<br />

–– This function returns the bit representation for ”FALSE” of the<br />

–– specified boolean (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not BOOLEAN_TYPE.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_BOOLEAN_BY_FALSE_VALUE (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

–– DESCRIPTION<br />

–– This function returns the integer representation for ”FALSE” of the<br />

–– specified boolean (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not BOOLEAN_TYPE.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_<strong>ST</strong>ART_POINT (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return BYTE<strong>ST</strong>REAM_INDEX;<br />

–– DESCRIPTION<br />

–– This function returns the start position of the


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

239 von/of: 662<br />

–– specified bytestream (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not SUB<strong>ST</strong>RING.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

function GET_SUB<strong>ST</strong>RING_LENGTH (<br />

OF_CAL_DESCR: in CALIBRATION_DECALIBRATION_TYPE)<br />

return BYTE<strong>ST</strong>REAM_INDEX;<br />

–– DESCRIPTION<br />

–– This function returns the length of the<br />

–– specified bytestream (de)calibration description.<br />

–– EXCEPTIONS<br />

–– CALIBRATION_TYPE_MISMATCH: raised if<br />

–– – the calibration alternative of the specified description is not SUB<strong>ST</strong>RING.<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – the (de)calibration description is empty/undefined.<br />

–––––––––––––––––––––––––––––––––––––––––<br />

–– Pack & Unpack operations<br />

–––––––––––––––––––––––––––––––––––––––––<br />

procedure PACK (<br />

VALUE: in CALIBRATION_DECALIBRATION_TYPE ;<br />

BLOCK: in out ADT_PACKING.T_BLOCK );<br />

–– DESCRIPTION<br />

–– This procedure packs the specified (de)calibration description<br />

–– variable into a contiguous memory block.<br />

–– EXCEPTIONS<br />

–– CON<strong>ST</strong>RAINT_ERROR: raised if<br />

–– – any mandatory component of the (de)calibration description<br />

–– is empty/undefined.<br />

–– ADT_PACKING Exceptions : NOT_ENOUGH_SPACE<br />

–– BLOCK_READ_ERROR<br />

procedure UNPACK (<br />

BLOCK: in out ADT_PACKING.T_BLOCK ;<br />

VALUE: out CALIBRATION_DECALIBRATION_TYPE );<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a (de)calibration description variable.<br />

–– EXCEPTIONS<br />

–– ADT_PACKING Exceptions : NOT_ENOUGH_PACKED_DATA<br />

–– BLOCK_WRITE_ERROR<br />

–– ADT_ID_CHECK_FAILURE<br />

function SIZE_NEEDED (VALUE : CALIBRATION_DECALIBRATION_TYPE)<br />

return ADT_PACKING.T_PACK_INDEX;<br />

–– DESCRIPTION<br />

–– This function calculates the actual size needed for packing the<br />

–– supplied VALUE<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– operations to calibrate and decalibrate values<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.DOUBLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)


Space Infrastructure<br />

return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.SINGLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

–– The following functions will return the first entry of the list of<br />

–– defined state_codes in case the provided value is not found (i.e. there<br />

–– is no corresponding state_code found for the provided raw value).<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.BIT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.BIT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return BOOLEAN;<br />

function CALIBRATED(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return BOOLEAN;<br />

function CALIBRATED(RAW_VALUE : <strong>ST</strong>RING;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return <strong>ST</strong>RING;<br />

–– using functions returning types that do not fit in a register (>32 bits)<br />

–– causes heap access, use these equivalent procedures for speed<br />

–– The procedures containing a state_code as OUT–parameter will return the<br />

–– first entry of the list of defined state_codes in case the provided value<br />

–– is not found (i.e. there is no correspondent state_code found for the<br />

–– provided raw value).<br />

procedure CALIBRATE(RAW_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE;<br />

CAL_VALUE : out MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE);<br />

procedure CALIBRATE(RAW_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

240 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE;<br />

CAL_VALUE : out MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE);<br />

procedure CALIBRATE(RAW_VALUE : in NUMERIC_TYPES.BIT;<br />

CAL_DESCR : in CALIBRATION_DECALIBRATION_TYPE;<br />

CAL_VALUE : out MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE);<br />

procedure CALIBRATE(RAW_VALUE : in MPS_DEFINITIONS.T_RAW_<strong>ST</strong>RING;<br />

RAW_LENGTH : in natural;<br />

CAL_DESCR : in CALIBRATION_DECALIBRATION_TYPE;<br />

CAL_VALUE : out MPS_DEFINITIONS.T_ENGINEERING_<strong>ST</strong>RING;<br />

CAL_LENGTH : out natural);<br />

–– DESCRIPTION<br />

–– These functions calibrate raw values into engineering values<br />

–– according to a given calibration description:<br />

–– – analog raw values of type FLOAT (integers have to be converted<br />

–– to FLOATs anyhow...) are converted into analog FLOATs<br />

–– – discrete raw values (represented by their integers) are<br />

–– converted into state codes<br />

–– – string raw values are ”substringed”<br />

–– The calibration for polynom is done according to the following<br />

–– formula:<br />

–– Y = a(4)*X**4 + a(3)*X**3 + a(2)*X**2 + a(1)*X + a(0)<br />

–– where X = raw value, Y = calibrated value and<br />

–– a(0) .. a(4) = COEFFICIENTS 0 .. 4<br />

–– For calibration via point pairs linear interpolation<br />

–– is used.<br />

–– EXCEPTIONS:<br />

–– VALUE_OUT_OF_RANGE:<br />

–– – the raw or engineering value is out of range w.r.t. the defined<br />

–– limits of the calibration curve resp. discrete points.<br />

–– ILLEGAL_MAPPING_KIND:<br />

–– – the description was not created using SET_xxx_CALIBRATION<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION:<br />

–– – calibration description is incomplete<br />

–– CALIBRATION_TYPE_MISMATCH:<br />

–– – the calibration description does not match types<br />

–– of function argument and result<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.DOUBLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.DOUBLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.DOUBLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.SINGLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.SINGLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.SINGLE_FLOAT;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

241 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : NUMERIC_TYPES.INTEGER32;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

–– The following functions will raise the exception VALUE_OUT_OF_RANGE in<br />

–– case the provided value is not found (i.e. there<br />

–– is no correspondent raw value found for the provided state_code).<br />

function DECALIBRATED(ENG_VALUE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function DECALIBRATED(ENG_VALUE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.BIT;<br />

function DECALIBRATED(ENG_VALUE : BOOLEAN;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.BIT;<br />

function DECALIBRATED(ENG_VALUE : BOOLEAN;<br />

CAL_DESCR : CALIBRATION_DECALIBRATION_TYPE)<br />

return NUMERIC_TYPES.INTEGER32;<br />

–– DESCRIPTION<br />

–– These functions decalibrate engineering values into raw values<br />

–– according to a given decalibration description:<br />

–– – analog engineering values of type FLOAT (integers have to be converted<br />

–– to FLOATs anyhow...) are converted into analog FLOATs<br />

–– – state code engineering values are<br />

–– converted into integers (representing their discrete raw value)<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

242 von/of: 662<br />

–– The decalibration for polynom is done according to the following<br />

–– formula:<br />

–– Y = a(4)*X**4 + a(3)*X**3 + a(2)*X**2 + a(1)*X + a(0)<br />

–– where X = raw value, Y = calibrated value and<br />

–– a(0) .. a(4) = COEFFICIENTS 0 .. 4<br />

–– For calibration via point pairs linear interpolation<br />

–– shall be used.<br />

–– EXCEPTIONS:<br />

–– VALUE_OUT_OF_RANGE:<br />

–– – the raw or engineering value is out of range w.r.t. the defined<br />

–– limits of the calibration curve resp. discrete points.<br />

–– ILLEGAL_MAPPING_KIND:<br />

–– – the description was not created using SET_xxx_DECALIBRATION<br />

–– – the calibration alternative does not match function argument and result<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION:<br />

–– – calibration description is incomplete<br />

–– – software types of raw and engineering value do not match types<br />

–– of function argument and result<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– operations to invert a calibration curve<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function INVERT (<br />

CAL_DESCR: CALIBRATION_DECALIBRATION_TYPE)<br />

return CALIBRATION_DECALIBRATION_TYPE;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– This function converts a calibration/decalibration description into<br />

–– a decalibration/calibration description as follows:<br />

–– point pairs to point pairs<br />

–– discrete to discrete<br />

–– polynom to polynom or point pairs depending<br />

–– on the degree of the polynom<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

243 von/of: 662<br />

–– EXCEPTION<br />

–– NOT_INVERTABLE: raised if<br />

–– the calibration alternative is set to UNDEFINED or SUB<strong>ST</strong>RING<br />

–– the calibration alternative is set to POINT_PAIRS or POLYNOM and the<br />

–– (de)calibration description is not strictly monotone<br />

–– the calibration alternative is set to DISCRETE and<br />

–– two different arguments have the same image<br />

–– ILLEGAL_CALIB_DECALIB_DEFINITION: raised if<br />

–– – calibration description is incomplete<br />

function IS_INVERTABLE (<br />

CAL_DESCR: CALIBRATION_DECALIBRATION_TYPE)<br />

return boolean;<br />

–– DESCRIPTION<br />

–– This function checks if a (de)calibration mapping<br />

–– can be inverted (i.e. is strictly monotone)<br />

–– If the calibration description is invertable the value ”TRUE” is returned.<br />

–– EXCEPTION<br />

–– none<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

private<br />

type INTERNAL_CALIB_DECALIB_TYPE<br />

( THE_CALIBRATION_ALTERNATIVES: CALIBRATION_ALTERNATIVES);<br />

type CALIBRATION_DECALIBRATION_TYPE is access<br />

INTERNAL_CALIB_DECALIB_TYPE;<br />

NULL_CALIBRATION_DECALIBRATION:<br />

constant CALIBRATION_DECALIBRATION_TYPE := null;<br />

end CALIBRATION;<br />

Impact :<br />

The modifications provide an additional pair of parameters(INTEGER32/BOOLEAN) for calibration/decalibration<br />

as well as the changed description for de–/calibration of discrete values (state_code)<br />

UNSIGNED_INTEGER range for <strong>ST</strong>ATECODE changed from 0..31 to 0..2GB.


Space Infrastructure<br />

7.5 TES DEFINITIONS<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

244 von/of: 662<br />

A same set of data types are used in the various procedural interfaces provided by the TES product. In order to<br />

ensure the consistency of their definition and usage through all the interfaces, they are grouped and defined once,<br />

in the current section.<br />

They are ”basic” data types and constants (like numbers, strings, enumerations...) which are accessible directly.<br />

They constitute a type pool and are grouped into a set of Ada packages, according to their nature.<br />

The usage of the basic data types is simple. The desired variable has to be declared with the desired type in the<br />

piece of software which will use it. The access to the content of the variable is done directly, by knowledge of<br />

its Ada structure.<br />

This TES_DEFINITIONS package contains type and constant definitions that are :<br />

– . specific of TES, i.e. not used or shared by several VICOS products,<br />

– . common in TES, i.e. used or shared by several TES provided services,<br />

– . of general nature, i.e. not specific to any of these services.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– TES_DEFINITIONS<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package defines types and constants for TES<br />

––<br />

––<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : TES_DEFINITIONS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 /Alsys Ada 5.5.1<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS: –<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––<br />

–– creator: U.Maron<br />

–– creation date: 03.09.97<br />

–– comment:<br />

–– #PIRN: COL–RIBRE–IRN–<strong>CGS</strong>–7012 Issue 1/C:<br />

–– New return codes for SW commanding LOAD_SCOE.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– creator: U.Maron<br />

–– creation date: 29.05.97<br />

–– comment:<br />

–– #PIRN: COL–RIBRE–IRN–<strong>CGS</strong>–7012 Issue 1/A:<br />

–– Provide definitions for replay mode.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V5.1.1.1 at Central Repository at DASA RI<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 17.09.96 18:20:14<br />

–– comment:<br />

–– #PIRN: COL–RIBRE–IRN–<strong>CGS</strong>–4014 Issue 1/A:<br />

–– Add new return codes<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V5.1.1.1 at Central Repository at DASA RI<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 17.09.96 18:20:14<br />

–– comment:<br />

–– #PIRN: COL–RIBRE–IRN–<strong>CGS</strong>–4014 Issue 1/A:<br />

–– Add new return codes<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.5 at CC; <strong>CGS</strong> development<br />

–– creator: ahs (on host sde16)<br />

–– creation date: 18.08.95 09:31:19<br />

–– comment:<br />

–– COL–RIBRE–IRN–<strong>CGS</strong>–3067 1/D<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

245 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.1.1.2 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: gehrke (on host mps2s–1)<br />

–– creation date: 16.08.95 14:33:38<br />

–– comment:<br />

–– Build 2 B/L, PIRN 3067D<br />

–– END HI<strong>ST</strong>ORY added to header<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.0 at DASA–RI ; <strong>CGS</strong> Engineering<br />

–– creator: maron (on vicos2–2)<br />

–– creation date: 24.03.95<br />

–– Build 2 baseline, PIRN 3067<br />

–– V2.6 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 12:11:36<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 22.07.92 15:29:47<br />

–– Deleted : T_AP_ID; Added : NULL_IDENTIFIER<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 21.07.92 07:33:10<br />

–– Naming of <strong>CGS</strong>_CALENDAR changed to VICOS_CALENDAR<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: maron (on host vicos_6)<br />

–– creation date: 20.07.92 15:34:26<br />

–– VCS–SPADM<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 10.07.92 16:12:21<br />

–– align TES_EXECUTION_MODE with VICOS_DEFINITIONS<br />

–– V2.1 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_12)<br />

–– creation date: 30.06.92 17:38:03<br />

–– added Standard Header by command create_file<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––<br />

––****************************************************************************<br />

––<br />

with VICOS_DEFINITIONS;<br />

package TES_DEFINITIONS is<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––commonly used identifiers<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_APPLICATION_ID is new NATURAL;<br />

for T_APPLICATION_ID’size use 32;<br />

type T_IDENTIFIER is new NATURAL;<br />

for T_IDENTIFIER’size use 32;<br />

NULL_IDENTIFIER : constant T_IDENTIFIER := 0;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– commonly used return values<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_RETURN_<strong>ST</strong>ATUS is new NATURAL;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

246 von/of: 662


Space Infrastructure<br />

–– Return Codes for TES_RPI and TES_API<br />

SUCCESS : constant T_RETURN_<strong>ST</strong>ATUS := 0;<br />

OTHER_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 1;<br />

COMMUNICATION_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 2;<br />

CURRENT_MODE_WRONG : constant T_RETURN_<strong>ST</strong>ATUS := 3;<br />

INVALID_APPLICATION_ID : constant T_RETURN_<strong>ST</strong>ATUS := 10;<br />

INVALID_VALUE : constant T_RETURN_<strong>ST</strong>ATUS := 11;<br />

INVALID_IDENTIFIER : constant T_RETURN_<strong>ST</strong>ATUS := 12;<br />

ENDITEM_UNKNOWN : constant T_RETURN_<strong>ST</strong>ATUS := 13;<br />

ENDITEM_NOT_ACQUIRED : constant T_RETURN_<strong>ST</strong>ATUS := 14;<br />

AP_NOT_FOUND : constant T_RETURN_<strong>ST</strong>ATUS := 50;<br />

SAS_UNKNOWN : constant T_RETURN_<strong>ST</strong>ATUS := 51;<br />

INVALID_COMMAND_ID : constant T_RETURN_<strong>ST</strong>ATUS := 60;<br />

COMMAND_TIMEOUT : constant T_RETURN_<strong>ST</strong>ATUS := 61;<br />

COMMAND_NEEDS_NO_ACK : constant T_RETURN_<strong>ST</strong>ATUS := 62;<br />

NOT_A_SW_VALUE : constant T_RETURN_<strong>ST</strong>ATUS := 70;<br />

TYPE_MISMATCH : constant T_RETURN_<strong>ST</strong>ATUS := 71;<br />

TSS_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 80;<br />

SMT_RESET : constant T_RETURN_<strong>ST</strong>ATUS := 81;<br />

ADU_SERVICE_ALREADY_ANNOUNCED : constant T_RETURN_<strong>ST</strong>ATUS := 90;<br />

ADU_SERVICE_NOT_ANNOUNCED : constant T_RETURN_<strong>ST</strong>ATUS := 91;<br />

GDU_SERVICE_ALREADY_ANNOUNCED : constant T_RETURN_<strong>ST</strong>ATUS := 92;<br />

GDU_SERVICE_NOT_ANNOUNCED : constant T_RETURN_<strong>ST</strong>ATUS := 93;<br />

NO_SERVER_CONNECTION : constant T_RETURN_<strong>ST</strong>ATUS := 100;<br />

TES_IS_<strong>ST</strong>OPPED : constant T_RETURN_<strong>ST</strong>ATUS := 101;<br />

WRONG_MODE_SELECTED : constant T_RETURN_<strong>ST</strong>ATUS := 102;<br />

TES_BADLY_INITIALISED : constant T_RETURN_<strong>ST</strong>ATUS := 103;<br />

REQUE<strong>ST</strong>_ENDITEM_LI<strong>ST</strong>_FAILED : constant T_RETURN_<strong>ST</strong>ATUS := 104;<br />

DELIVERY_ID_UNKNOWN : constant T_RETURN_<strong>ST</strong>ATUS := 110;<br />

INVALID_LIBRARY_NUMBER : constant T_RETURN_<strong>ST</strong>ATUS := 111;<br />

INVALID_PROCEDURE_NUMBER : constant T_RETURN_<strong>ST</strong>ATUS := 112;<br />

INVALID_AP_ID : constant T_RETURN_<strong>ST</strong>ATUS := 113;<br />

ILLEGAL_FROM_HLCL : constant T_RETURN_<strong>ST</strong>ATUS := 114;<br />

INVALID_PARAMETER : constant T_RETURN_<strong>ST</strong>ATUS := 115;<br />

AP_NOT_<strong>ST</strong>OPPED : constant T_RETURN_<strong>ST</strong>ATUS := 120;<br />

TOO_MANY_APS : constant T_RETURN_<strong>ST</strong>ATUS := 121;<br />

AP_NOT_COMPILED : constant T_RETURN_<strong>ST</strong>ATUS := 122;<br />

TSS_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 130;<br />

AP_TABLE_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 131;<br />

GDU_TABLE_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 132;<br />

MONITOR_LI<strong>ST</strong>_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 133;<br />

UCL_USER_LIB_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 134;<br />

MEASUREMENT_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 135;<br />

ERROR_MESSAGE_INIT_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 136;<br />

DBS_CONNECTION_PROBLEM : constant T_RETURN_<strong>ST</strong>ATUS := 137;<br />

HCI_CONNECTION_PROBLEM : constant T_RETURN_<strong>ST</strong>ATUS := 138;<br />

MDB_CONNECTION_PROBLEM : constant T_RETURN_<strong>ST</strong>ATUS := 139;<br />

DI<strong>ST</strong>RIBUTION_TABLE_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 140;<br />

TOPOLOGY_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 141;<br />

RUNTIME_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 150;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

247 von/of: 662


Space Infrastructure<br />

LOAD_ADT_ERROR_MEASUREMENT_TABLE: constant T_RETURN_<strong>ST</strong>ATUS := 201;<br />

LOAD_ADT_ERROR_GDU_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 202;<br />

LOAD_ADT_ERROR_ADU_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 203;<br />

LOAD_ADT_ERROR_MONITOR_LI<strong>ST</strong> : constant T_RETURN_<strong>ST</strong>ATUS := 204;<br />

LOAD_ADT_ERROR_GDU_LI<strong>ST</strong> : constant T_RETURN_<strong>ST</strong>ATUS := 205;<br />

LOAD_ADT_ERROR_SIM_VALUE_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 206;<br />

LOAD_ADT_ERROR_AP_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 207;<br />

LOAD_ADT_ERROR_USER_LIB_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 208;<br />

LOAD_ADT_ERROR_NODE_LI<strong>ST</strong> : constant T_RETURN_<strong>ST</strong>ATUS := 209;<br />

LOAD_ADT_ERROR_SW_LI<strong>ST</strong> : constant T_RETURN_<strong>ST</strong>ATUS := 210;<br />

LOAD_ADT_ERROR_USR_MSG_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 211;<br />

WRONG_ENVIRONMENT : constant T_RETURN_<strong>ST</strong>ATUS := 212;<br />

MISSING_ENVIRONMENT : constant T_RETURN_<strong>ST</strong>ATUS := 213;<br />

DIRECTORY_CREATION_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 214;<br />

DIRECTORY_DOES_NOT_EXI<strong>ST</strong> : constant T_RETURN_<strong>ST</strong>ATUS := 215;<br />

FILE_OPEN_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 216;<br />

FILE_CLOSE_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 217;<br />

FILE_READ_ERROR : constant T_RETURN_<strong>ST</strong>ATUS := 218;<br />

MISSING_NODE_NAME : constant T_RETURN_<strong>ST</strong>ATUS := 219;<br />

MISSING_LOAD_POINT : constant T_RETURN_<strong>ST</strong>ATUS := 220;<br />

REPLAY_<strong>ST</strong>ART_TIME_WRONG : constant T_RETURN_<strong>ST</strong>ATUS := 250;<br />

WRONG_REPLAY_PERIOD : constant T_RETURN_<strong>ST</strong>ATUS := 251;<br />

CANNOT_READ_ARCHIVE_FILE : constant T_RETURN_<strong>ST</strong>ATUS := 252;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

LOAD_ADT_ERROR_SWOP_CMD_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 253;<br />

LOAD_ADT_ERROR_RESPONSE_PACKET_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 254;<br />

LOAD_ADT_ERROR_APPL_ID_TABLE : constant T_RETURN_<strong>ST</strong>ATUS := 255;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– commonly used mode and state definitions<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

subtype T_EXECUTION_MODE is VICOS_DEFINITIONS.T_VICOS_MODE<br />

range VICOS_DEFINITIONS.NONE .. VICOS_DEFINITIONS.SIMULATION;<br />

type T_LINK_<strong>ST</strong>ATUS is (RESET, INITIALISED, RUNNING, ABORTED);<br />

for T_LINK_<strong>ST</strong>ATUS’size use 8;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– commonly used message definitions<br />

––––––––––––––––––––––––––––––––––––––––––––––––––<br />

MAX_SIZE_OF_AP_MESSAGE : constant NATURAL := 80;<br />

subtype T_AP_MESSAGE is <strong>ST</strong>RING (1 .. MAX_SIZE_OF_AP_MESSAGE);<br />

MAX_SIZE_OF_SAS_MESSAGE : constant NATURAL := 80;<br />

subtype T_SAS_MESSAGE is <strong>ST</strong>RING (1 .. MAX_SIZE_OF_SAS_MESSAGE);<br />

MAX_SIZE_OF_SAS_PARAMETERS : constant NATURAL := 80;<br />

subtype T_SAS_PARAMETERS is <strong>ST</strong>RING (1 .. MAX_SIZE_OF_SAS_PARAMETERS);<br />

end TES_DEFINITIONS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

248 von/of: 662


Space Infrastructure<br />

7.6 TES Abstract Data Types<br />

7.6.1 General Concepts<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

249 von/of: 662<br />

A same set of abstract data types related to TES are used in the VICOS products. In order to ensure the consistency<br />

of their definition and usage through the softwares, they are grouped and defined once, in the current<br />

section.<br />

An ADT specification describes a class of data structures not by an implementation, but by the list of services<br />

available on the data structures and the formal properties of these services. Further, an ADT offers a set of services<br />

to the outside world (other Objects, Applications etc), which is only concerned with the services offered<br />

and not how they are implemented.<br />

An ADT is defined by a formal specification, which is comprised of Types and Functions (Syntax part) and Preconditions<br />

and Axioms (Semantic part).<br />

– The Type part lists the types of the specification (which may be several types or a single type, e.g. a<br />

’stack’).<br />

– The Functions part lists the services available on instances of the type.<br />

– The Axioms part describes semantics of the functions on the data to restrict and more precisely define<br />

the specification.<br />

– The Preconditions part provides applicability conditions for partial functions (functions that cannot be<br />

applied to the ADT implementation in all cases (e.g., when a data type is empty, it may not be useful<br />

to access its contents)).<br />

An abstract data type is a type which Ada structure is hidden (private types) because of its complexity, its varying<br />

size or its implementation dependency on compilers. Their access is possible only through associated operations.<br />

This part of the interface allows pieces of software to manipulate data without knowledge of their Ada representation.<br />

These types are available in the form of separate Ada packages containing at least an abstract data type,<br />

some basic data types related to it and the operations to handle it.<br />

The ADT services provided by TES contain a number of services applicable to appropriate ADTs. These may<br />

include Create services, used to create the ADT structure, Set services, which set up the data within the ADT<br />

(e.g. for data originally held in the Mission Database or in UNIX files), Get services, which read the data set–up<br />

in the ADT and Delete services which remove the ADT. There are also type specific services which are ADT<br />

specific, these may include services such as Initialise, Copy, Move, Pack and Unpack. The latter Pack and Unpack,<br />

when provided, are particularly important for data transfer to provide a method of packing and unpacking<br />

data into Byte arrays to enable easy data communication.<br />

The usage of the abstract data types is quite sophisticated. The desired variable is declared with the desired type<br />

in the piece of software which will use it. The access to the content of the variable is done by using the associated<br />

operations, because the associated Ada type is not visible. A Create/Construct operation, when provided, is the<br />

first to be used, to instanciate the content of the variable. The Set_values operations can then be used to write<br />

data into the instanciated variable. The Values_of/Get_values operations allow to read data from the instanciated<br />

and filled–up variable. At last the Delete operation, when provided, will free the space allocated to ADT variables<br />

which are not needed any more in the software.<br />

TES provides a set of ADTs which are used as appropriate by other products, including:<br />

– ADT for raw value type,<br />

– ADT for engineering value type,<br />

– ADT for ADU description type,<br />

– ADT for ADU type,


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

250 von/of: 662<br />

– ADT for simulated value table type,<br />

– ADT for GDU description type,<br />

– ADT for GDU type,<br />

– ADT for archive file type,<br />

– ADT for calibration description type,<br />

– ADT for calibration services,<br />

– ADT for monitoring description type,<br />

– ADT for measurement description type.<br />

TES provides a method of accessing TES data structures held in the Mission Database without causing performance<br />

problems with continuous database access. A procedure for establishing an ADT based on MDB data is<br />

as follows: the MDA appropriate operation will be called to read appropriate Check–out information. TES will<br />

provide ADT Create services (if any) to create the ADT in memory and ADT Set services will be used to put<br />

the data from the MDB into the ADT data area. (Note, these services used by MDA) The product requiring ADT<br />

access (maybe another Integration/Qualification product) can then use the TES provided ADT Get services to<br />

access the ADT data and functions. On completion of use and when provided, TES ADT Delete services are<br />

used to remove the ADT.<br />

Note that the use of ADTs within <strong>CGS</strong> provides a mechanism for Memory Management, which helps to avoid<br />

the problems of ’Garbage Collection’ that occurs with manipulating data structures within an ’Ada’ Run Time<br />

system. This is particularly useful for tasks performed by Integration/Qualification products which need to<br />

transfer data information between programs.<br />

Some basic types are also defined in ADT packages. They are, most of the time, enumeration types bound to<br />

the ADT defined in that package.<br />

For these enumeration types, the following naming convention has been used :<br />

– types suffixed with _TYPE are enumeration types not determining a particular structure of the ADT;<br />

it can be considered as a normal attribute of the ADT, e.g. INTERPRETATION_TYPE in<br />

ADT_MEASUREMENT_DESCRIPTION.<br />

– types suffixed with _ALTERNATIVES are enumeration types which determine the set of other attributes<br />

the corresponding ADT will contain, e.g. T_ADU_ALTERNATIVES in ADT_ADU_DE-<br />

SCRIPTION.<br />

7.6.2 Operations<br />

This section describes the operations which are available on the previous types.<br />

7.6.2.1 SET Operations<br />

The SET operation(s) will assign the values of the attributes of an ADT. At least one SET operation has to be<br />

provided, but in general there will be several SET operations, one for each of the attributes composing the ADT.<br />

In case the type of the attribute exactly determines the alternative to be set, SET can be a set of overloaded SET<br />

procedures (all having the same name) and the type of attribute to be set will be determined by the type of the<br />

passed parameter. The type of the attribute may be defined in another package, it may be a basic type or an other<br />

ADT. In case several attributes have the same type, different names have to be chosen for the SET operations<br />

(e.g. SET_A, SET_B).<br />

7.6.2.1.1 GET Operations<br />

The complementary of the SET operation(s) is the GET operation(s). It follows the same rules with respect to<br />

parameters and naming apply as for the SET operation. Most of the time, a function ATTRIBUTE is preferred


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

251 von/of: 662<br />

to a procedure GET_ATTRIBUTE whenever it is possible, i.e. when no limited private types are returned or<br />

when single attribute is returned.<br />

7.6.2.1.2 ALTERNATIVE Function<br />

The function ALTERNATIVE returns the value of the alternative a variable of type T_ADT currently has. After<br />

CREATE has been called, the default value of a variable of type T_ADT shall be UNDEFINED. It shall be possible<br />

to assign values of any attribute of any alternative to the variable then. This shall, however, then change the<br />

value of the ’discriminent’ to one of the enumeration values in T_ADT_ALTERNATIVES. All attributes belonging<br />

to one alternative of T_ADT_ALTERNATIVES should be assign in one set operation (this is however<br />

not a must, it is a design goal and has to be decided on a case to case basis).<br />

7.6.2.1.3 PACK Operation<br />

The pack operation packs the contents of a variable of type T_ADT into a block of type T_BLOCK by using<br />

operations of an ADT_PACKING<br />

7.6.2.1.4 UNPACK Operation<br />

Inversely, UNPACK unpacks a T_BLOCK into a variable of type T_ADT which has been created before.<br />

7.6.2.1.5 PACKED_SIZE Function<br />

Function PACKED_SIZE returns the maximum number of bytes a packed structure of T_ADT may occupy.<br />

7.6.2.1.6 ADD Operations<br />

Some complex ADTs use other ADTs (e.g. ADT_ADU) or have a non deterministic memory usage, i.e. they<br />

’use’ varying amounts of memory for a given alternative.<br />

For these ADTs, there exists the possibility to maintain dynamic ’lists’ of attributes or values inside an ADT.<br />

For this purpose, an ADD operation might be provided which then inserts exactly one element to this list.<br />

Examples are the raw values in an ADU in the package ADT_ADU.<br />

This procedure belongs to the specific procedures defined in the frame of a complex ADT. They depend on the<br />

special purpose of the complex ADT and the implementer could add procedures like: get_next_element, read_at<br />

etc.<br />

In most of the cases, these ADD operations can be replaced by a set of SET operations, because the size of the<br />

list is known in advance. For a type T_ADT_ITEM_LI<strong>ST</strong>, the operation SET_SIZE will have to be used first,<br />

and then the operation SET_ITEM, to fill the list at a specified index. Note that the index shall be uniformly<br />

incremented from 1 to the chosen size, with an increment of 1.<br />

7.6.2.1.7 Operations on tables<br />

The operations defined on T_TABLE follow exactly the same logic as for the ADT itself.<br />

7.6.2.1.8 Exceptions<br />

The procedures/functions will raise the following standard exceptions :<br />

– <strong>ST</strong>ORAGE_ERROR in case the CREATE operation has not sufficient memory space, independent<br />

of the internal implementation<br />

– NOT_CREATED if an operation is called on a variable which has not been created.<br />

– {PARAMETER}_VALUE_ILLEGAL in case the value of the passed parameter is not legal, e.g. a<br />

NULL_SID value for an SID parameter.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

252 von/of: 662<br />

– INDEX_ERROR if the value of the passed index exceeds the size of the specified variable, e.g. it is<br />

raised when trying to write/read the 101st element of an ADU which contains only 100 items.<br />

– {ITEM}_NOT_FOUND when the searched item is not found in the specified list.<br />

– {PARAMETER}_TYPE_MISMATCH when the type of the passed parameter and the expected type<br />

of the formal parameter mismatch.<br />

On a case by case basis, the operations provided in this interface will also raise specific exceptions which are<br />

documented in the formal interface.<br />

7.6.2.1.9 Particular Remarks<br />

7.6.2.1.10 On Synchronisation<br />

Certain ADTs (if not all of them) will have the need of performing certain memory management internally. For<br />

security reasons, a synchronised access to the internal memory has to be achieved, but only for the CREATE,<br />

DE<strong>ST</strong>ROY, COPY, UNPACK operations since these have impact on memory management.<br />

At present it is not finally decided, whether the ADT internally has to provide synchronisation or whether the<br />

user should ensure synchronised access. However, this shall not have any impact on the Ada specification.<br />

If internal synchronisation shall be provided, the use of Ada tasking and semaphores is not allowed since this<br />

is in conflict with the current TES design (due to X–windows !!!). Also, for performance reasons, the Ada ’new’<br />

and ’unchecked_deallocation’ are not recommended.<br />

7.6.2.1.11 On Packing/Unpacking<br />

At present there exists in-house a definition of an ADT_PACKING which uses rather sophisticated techniques<br />

to provide secure and elegant packing. However, it is also rather complex. There are investigation on a simpler<br />

approach currently which would reduce complexity and data overheads.<br />

When finally delivering the Ada specifications of all ADTs to the implementation teams, a version of<br />

ADT_PACKING will be delivered also which shall then be used for implementing the PACK/UNPACK operations<br />

of the individual ADTs.<br />

The principals of packing will be that the ADT_ADT.PACK operation is provided with some kind of input<br />

T_BLOCK. The inside the body of the ADT_ADT.PACK routine, other routines of ADT_PACKING shall be<br />

used to ’add’ a packed version of T_ADT to the block. Memory management inside T_BLOCK will be accomplished<br />

inside the ADT_PACKING provided routines. T_BLOCK is then finally returned as an out parameter<br />

of ADT_ADT.PACK (therefore at least it has to be of mode ’in out’).


Space Infrastructure<br />

7.6.3 ADT Raw Value<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

253 von/of: 662<br />

A Raw Value is an typed objet which, depending on the alternative it is attributed, contains a value of the same<br />

type.<br />

A Raw Value is a composite type containing the following attributes :<br />

– an raw value alternative type;<br />

– a single bit, when alternative is SINGLE_BIT;<br />

– a group of bits, when alternative is GROUP_OF_BITS;<br />

– an integer, when alternative is INT;<br />

– a float, when alternative is FLOAT_EGSE;<br />

– a byte stream, when alternative is BYTE_<strong>ST</strong>REAM.<br />

A Table type is also provided, which allows to define indexed lists of this ADT.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

254 von/of: 662<br />

––<br />

––<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides definition of a raw value of different type:<br />

–– – INTEGER<br />

–– – FLOAT<br />

–– – SINGLE_BIT<br />

–– – U_INT<br />

–– – BYTE<strong>ST</strong>REAM<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : ADT_RAW_VALUE<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1/Alsys Ada 5.5.1<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS: –<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.4 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: grotheer (on host vicos2–6)<br />

–– creation date: 29.06.95 14:06:39<br />

–– comment:<br />

–– MAX_BYTE_<strong>ST</strong>REAM_LENGTH identical to VICOS_DEFINITIONS<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: grotheer (on host vicos2–6)<br />

–– creation date: 15.06.95 17:04:13<br />

–– comment:<br />

–– Header correted (End History)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.0 at ERNO ; VICOS development<br />

–– creator: gehrke (on host mps2s–1)<br />

–– creation date: 22.05.95 12:00:00<br />

–– <strong>CGS</strong> V2 Build 2 baseline definition, PIRN 3040/A<br />

––<br />

–– V2.9 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 07.05.93 16:35:41<br />

–– Define new type T_SCALAR_RAW_VALUE<br />

––<br />

–– V2.8 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 19:52:39<br />

–– Version as delivered by SRO1216843b (IK ADTs) + COL–SPR–SBI–0043<br />

––<br />

–– V2.7 at ERNO ; VICOS development<br />

–– creator: satthoff (on host vicos_4)<br />

–– creation date: 25.11.92 10:26:30<br />

–– corrupted header/established new from IK version.<br />

–– V2.6 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 17.11.92 11:30:49<br />

–– adts version 2.0.1: update acc. to PIRN VICOS–2021<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 12:05:49<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 28.07.92 09:35:52


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Changes : editorial, exceptions, operation names<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 20.07.92 10:52:53<br />

–– General layout for ADTs acc. to TN COL_MBER_ZU1_TN_0026_92<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 10.07.92 17:49:28<br />

–– Update Header<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with VICOS_DEFINITIONS;<br />

–– T_RAW_VALUE_ALTERNATIVES<br />

with ADT_PACKING;<br />

–– type T_BLOCK<br />

with NUMERIC_TYPES;<br />

–– type BYTE<br />

–– type BIT<br />

–– type BITSET<br />

package ADT_RAW_VALUE is<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

255 von/of: 662<br />

––––––––––––––––––––––––––––––<br />

–– public types and constants<br />

––––––––––––––––––––––––––––––<br />

subtype T_SCALAR_RAW_VALUE_ALTERNATIVES is<br />

VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES range VICOS_DEFINITIONS.UNDEFINED ..<br />

VICOS_DEFINITIONS.FLOAT_EGSE;<br />

–– defines a subtype for scalar raw values (i.e. no byte streams)<br />

MAX_BYTE_<strong>ST</strong>REAM_LENGTH : constant := VICOS_DEFINITIONS.MAX_BYTE_<strong>ST</strong>REAM_LENGTH;<br />

type T_BYTE_<strong>ST</strong>REAM is<br />

record<br />

LENGTH : NATURAL := 0;<br />

<strong>ST</strong>REAM : NUMERIC_TYPES.BYTE_ARRAY(1 .. MAX_BYTE_<strong>ST</strong>REAM_LENGTH);<br />

end record;<br />

for T_BYTE_<strong>ST</strong>REAM use<br />

record<br />

LENGTH at 0 range 0 .. 31;<br />

<strong>ST</strong>REAM at 4 range 0 .. MAX_BYTE_<strong>ST</strong>REAM_LENGTH*8–1;<br />

end record;<br />

for T_BYTE_<strong>ST</strong>REAM’SIZE use MAX_BYTE_<strong>ST</strong>REAM_LENGTH*8+32;<br />

–––––––––––––<br />

–– adt types<br />

–––––––––––––<br />

type T_RAW_VALUE (RAW_TYPE : VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES := VICOS_DE-<br />

FINITIONS.UNDEFINED)<br />

is private;<br />

–– A raw value is composed of :<br />

–– – an raw value alternative type,<br />

–– – a single bit,<br />

–– – an unsigned integer,<br />

–– – an integer,<br />

–– – a float,<br />

–– – a byte stream.<br />

type T_SCALAR_RAW_VALUE (RAW_TYPE : T_SCALAR_RAW_VALUE_ALTERNATIVES<br />

:= VICOS_DEFINITIONS.UNDEFINED)<br />

is private;<br />

–– A scalar raw value is composed of :<br />

–– – an raw value alternative type,<br />

–– – a single bit,<br />

–– – a unsigned integer,<br />

–– – an integer,<br />

–– – a float,<br />

––––––––––––––––––––<br />

–– write operations<br />

––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

256 von/of: 662<br />

procedure SET_ALTERNATIVE(VALUE : in out T_RAW_VALUE;<br />

RAW_TYPE : in VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– Sets the alternative of a raw value<br />

–– EXCEPTION<br />

–– RAW_VALUE_IS_CON<strong>ST</strong>RAINED<br />

–– Raised when trying to change discriminant of<br />

–– a constrained raw value<br />

–– DESCRIPTION (for all following write operations)<br />

–– This procedure sets the current value of the specified<br />

–– raw value variable.<br />

–– EXCEPTIONS (for all following read operations)<br />

–– RAW_VALUE_TYPE_MISMATCH :<br />

–– the current alternative of the passed variable<br />

–– and the type of the formal parameter mismatch.<br />

procedure SET_BIT_VALUE<br />

(<br />

OF_VALUE: in out T_RAW_VALUE;<br />

WITH_BIT: in NUMERIC_TYPES.BIT<br />

);<br />

procedure SET_BITSET_VALUE<br />

(<br />

OF_VALUE: in out T_RAW_VALUE;<br />

WITH_BITSET: in NUMERIC_TYPES.UNSIGNED_INTEGER32<br />

);<br />

procedure SET_INTEGER_VALUE<br />

(<br />

OF_VALUE: in out T_RAW_VALUE;<br />

WITH_INTEGER: in INTEGER<br />

);<br />

procedure SET_FLOAT_VALUE<br />

(<br />

OF_VALUE: in out T_RAW_VALUE;<br />

WITH_FLOAT: in FLOAT<br />

);<br />

procedure SET_BYTE_<strong>ST</strong>REAM_VALUE<br />

(<br />

OF_VALUE: in out T_RAW_VALUE;<br />

WITH_BYTE_<strong>ST</strong>REAM: in T_BYTE_<strong>ST</strong>REAM<br />

);<br />

–– Overloaded Operations for scalar raw values<br />

procedure SET_ALTERNATIVE<br />

(VALUE : in out T_SCALAR_RAW_VALUE;<br />

RAW_TYPE : in T_SCALAR_RAW_VALUE_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– Sets the alternative of a scalar raw value<br />

–– EXCEPTION<br />

–– RAW_VALUE_IS_CON<strong>ST</strong>RAINED<br />

–– Raised when trying to change discriminant of<br />

–– a constrained raw value<br />

procedure SET_BIT_VALUE<br />

(<br />

OF_VALUE: in out T_SCALAR_RAW_VALUE;<br />

WITH_BIT: in NUMERIC_TYPES.BIT<br />

);<br />

procedure SET_BITSET_VALUE<br />

(<br />

OF_VALUE: in out T_SCALAR_RAW_VALUE;<br />

WITH_BITSET: in NUMERIC_TYPES.UNSIGNED_INTEGER32<br />

);<br />

procedure SET_INTEGER_VALUE<br />

(<br />

OF_VALUE: in out T_SCALAR_RAW_VALUE;<br />

WITH_INTEGER: in INTEGER


Space Infrastructure<br />

);<br />

procedure SET_FLOAT_VALUE<br />

(<br />

OF_VALUE: in out T_SCALAR_RAW_VALUE;<br />

WITH_FLOAT: in FLOAT<br />

);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

function ALTERNATIVE<br />

(<br />

OF_VALUE: T_RAW_VALUE<br />

)<br />

return VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the current alternative of<br />

–– the specified raw value variable.<br />

–– DESCRIPTION (for all following read operations)<br />

–– This function returns the current value of<br />

–– the specified raw value variable.<br />

–– EXCEPTIONS (for all following read operations)<br />

–– RAW_VALUE_TYPE_MISMATCH :<br />

–– the current alternative of the passed variable<br />

–– and the type of the formal parameter mismatch.<br />

function BIT_VALUE<br />

(<br />

OF_VALUE: T_RAW_VALUE<br />

) return NUMERIC_TYPES.BIT;<br />

function BITSET_VALUE<br />

(<br />

OF_VALUE: T_RAW_VALUE<br />

) return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function INTEGER_VALUE<br />

(<br />

OF_VALUE: T_RAW_VALUE<br />

) return INTEGER;<br />

function FLOAT_VALUE<br />

(<br />

OF_VALUE: T_RAW_VALUE<br />

) return FLOAT;<br />

function BYTE_<strong>ST</strong>REAM_VALUE<br />

(<br />

OF_VALUE: T_RAW_VALUE<br />

) return T_BYTE_<strong>ST</strong>REAM;<br />

–– Overloaded Operations for scalar raw values<br />

function ALTERNATIVE<br />

(<br />

OF_VALUE: T_SCALAR_RAW_VALUE<br />

)<br />

return T_SCALAR_RAW_VALUE_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the current alternative of<br />

–– the specified raw value variable.<br />

–– DESCRIPTION (for all following read operations)<br />

–– This function returns the current value of<br />

–– the specified raw value variable.<br />

–– EXCEPTIONS (for all following read operations)<br />

–– RAW_VALUE_TYPE_MISMATCH :<br />

–– the current alternative of the passed variable<br />

–– and the type of the formal parameter mismatch.<br />

function BIT_VALUE<br />

(<br />

OF_VALUE: T_SCALAR_RAW_VALUE<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

257 von/of: 662


Space Infrastructure<br />

) return NUMERIC_TYPES.BIT;<br />

function BITSET_VALUE<br />

(<br />

OF_VALUE: T_SCALAR_RAW_VALUE<br />

) return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function INTEGER_VALUE<br />

(<br />

OF_VALUE: T_SCALAR_RAW_VALUE<br />

) return INTEGER;<br />

function FLOAT_VALUE<br />

(<br />

OF_VALUE: T_SCALAR_RAW_VALUE<br />

) return FLOAT;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––<br />

–– ’type conversion’ (assignment) operations<br />

–––––––––––––––––––––––––––––––––––––––––––––<br />

function ASSIGN (SCALAR_VALUE: T_SCALAR_RAW_VALUE)<br />

return T_RAW_VALUE;<br />

–– DESCRIPTION<br />

–– Assign a scalar value to a value of type T_RAW_VALUE<br />

–– EXCEPTIONS<br />

–– none<br />

function ASSIGN (RAW_VALUE: T_RAW_VALUE)<br />

return T_SCALAR_RAW_VALUE;<br />

–– DESCRIPTION<br />

–– Assign a raw value to a value of type T_SCALAR_RAW_VALUE<br />

–– EXCEPTIONS<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– the type of the RAW_VALUE was BYTE_<strong>ST</strong>REAM<br />

––––––––––––––––––––––<br />

–– packing operations<br />

––––––––––––––––––––––<br />

procedure PACK<br />

(<br />

VALUE: in T_RAW_VALUE;<br />

BLOCK: in out ADT_PACKING.T_BLOCK<br />

);<br />

–– DESCRIPTION<br />

–– This procedure packs the specified raw value variable into<br />

–– a contiguous memory block.<br />

procedure UNPACK<br />

(<br />

BLOCK: in out ADT_PACKING.T_BLOCK;<br />

VALUE: out T_RAW_VALUE<br />

);<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a raw value variable.<br />

–– Overloaded Operations for scalar raw values:<br />

procedure PACK<br />

(<br />

VALUE: in T_SCALAR_RAW_VALUE;<br />

BLOCK: in out ADT_PACKING.T_BLOCK<br />

);<br />

–– DESCRIPTION<br />

–– This procedure packs the specified raw value variable into<br />

–– a contiguous memory block.<br />

procedure UNPACK<br />

(<br />

BLOCK: in out ADT_PACKING.T_BLOCK;<br />

VALUE: out T_SCALAR_RAW_VALUE<br />

);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

258 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a raw value variable.<br />

–––––––––––––––––––<br />

–– exceptions<br />

–––––––––––––––––––<br />

RAW_VALUE_TYPE_MISMATCH : exception;<br />

RAW_VALUE_IS_CON<strong>ST</strong>RAINED : exception;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

259 von/of: 662<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

private<br />

type T_RAW_VALUE (RAW_TYPE : VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES := VICOS_DEFINI-<br />

TIONS.UNDEFINED) is<br />

record<br />

case RAW_TYPE is<br />

when VICOS_DEFINITIONS.SINGLE_BIT =><br />

BIT_VALUE : NUMERIC_TYPES.BIT;<br />

BYTE_PAD : NUMERIC_TYPES.BYTE_ARRAY(1..3);<br />

when VICOS_DEFINITIONS. U_INT =><br />

BITSET_VALUE : NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

when VICOS_DEFINITIONS.INT =><br />

INTEGER_VALUE : NUMERIC_TYPES.INTEGER32;<br />

when VICOS_DEFINITIONS.FLOAT_EGSE =><br />

FLOAT_VALUE : NUMERIC_TYPES.SINGLE_FLOAT;<br />

when VICOS_DEFINITIONS.BYTE_<strong>ST</strong>REAM =><br />

BYTE_<strong>ST</strong>REAM_VALUE : T_BYTE_<strong>ST</strong>REAM;<br />

when VICOS_DEFINITIONS.UNDEFINED =><br />

null;<br />

end case ;<br />

end record;<br />

for T_RAW_VALUE use<br />

record<br />

RAW_TYPE at 0 range 0 .. 5;<br />

BYTE_<strong>ST</strong>REAM_VALUE at 0 range 32 .. 32+MAX_BYTE_<strong>ST</strong>REAM_LENGTH*8–1+32;<br />

BIT_VALUE at 0 range 32 .. 32;<br />

BYTE_PAD at 0 range 40 .. 63;<br />

BITSET_VALUE at 0 range 32 .. 63;<br />

INTEGER_VALUE at 0 range 32 .. 63;<br />

FLOAT_VALUE at 0 range 32 .. 63;<br />

end record;<br />

for T_RAW_VALUE’size use MAX_BYTE_<strong>ST</strong>REAM_LENGTH*8+32+32;<br />

–– for T_RAW_VALUE’size use 2112;<br />

type T_SCALAR_RAW_VALUE (RAW_TYPE : T_SCALAR_RAW_VALUE_ALTERNATIVES<br />

:= VICOS_DEFINITIONS.UNDEFINED) is<br />

record<br />

case RAW_TYPE is<br />

when VICOS_DEFINITIONS.SINGLE_BIT =><br />

BIT_VALUE : NUMERIC_TYPES.BIT;<br />

BYTE_PAD : NUMERIC_TYPES.BYTE_ARRAY(1..3);<br />

when VICOS_DEFINITIONS. U_INT =><br />

BITSET_VALUE : NUMERIC_TYPES. UNSIGNED_INTEGER32;<br />

when VICOS_DEFINITIONS.INT =><br />

INTEGER_VALUE : NUMERIC_TYPES.INTEGER32;<br />

when VICOS_DEFINITIONS.FLOAT_EGSE =><br />

FLOAT_VALUE : NUMERIC_TYPES.SINGLE_FLOAT;<br />

when VICOS_DEFINITIONS.UNDEFINED =><br />

null;<br />

end case ;<br />

end record;<br />

for T_SCALAR_RAW_VALUE use<br />

record<br />

RAW_TYPE at 0 range 0 .. 5;<br />

BIT_VALUE at 0 range 32 .. 32;<br />

BYTE_PAD at 0 range 40 .. 63;<br />

BITSET_VALUE at 0 range 32 .. 63;<br />

INTEGER_VALUE at 0 range 32 .. 63;<br />

FLOAT_VALUE at 0 range 32 .. 63;<br />

end record;


Space Infrastructure<br />

end ADT_RAW_VALUE;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

260 von/of: 662


Space Infrastructure<br />

7.6.4 ADT Engineering Value<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

261 von/of: 662<br />

A Engineering Value is an typed objet which, depending on the alternative it is attributed, contains a value of<br />

the same type.<br />

A Engineering Value is a composite type containing the following attributes :<br />

– an engineering value alternative type;<br />

– a state code, when alternative is <strong>ST</strong>ATE_CODE;<br />

– an integer, when alternative is INT;<br />

– a float, when alternative is FLT;<br />

– a string, when alternative is <strong>ST</strong>R.<br />

A Table type is also provided, which allows to define indexed lists of this ADT.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

––<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package defines and handles types related to engineering value<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : COLUMBUS VICOS<br />

–– PRODUCT NAME : VCS<br />

–– CI–NUMBER : 1234 950<br />

–– OBJECT NAME : ADT_ENGINEERING_VALUE<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VADS V 6.0.3(c)<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V3.1 at Central Repository V2.2 (<strong>CGS</strong> V3 development)<br />

–– creator: grotheer (on host vicos2s)<br />

–– creation date: 11.07.94 17:14:56<br />

–– comment:<br />

–– NULL_ENGINEERING_VALUE added, COL–ERNO–<strong>CGS</strong>–SPR–1297<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.7 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 07.05.93 16:33:26<br />

–– Define new type T_SCALAR_ENGINEERING_VALUE<br />

––<br />

–– V2.6 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 19:54:13<br />

–– Version as delivered by SRO1216843b (IK ADTs)<br />

––<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 17.11.92 11:28:09<br />

–– adts version 2.0.1: update acc. to PIRN VICOS–2028<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 11:59:08<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 28.07.92 09:28:51<br />

–– Changes : editorial, exceptions, operation names<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 20.07.92 10:00:21<br />

–– General layout for ADTs acc. to TN COL_MBER_ZU1_TN_0026_92<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with ADT_PACKING;<br />

–– type T_BLOCK<br />

with MPS_DEFINITIONS;<br />

–– type <strong>ST</strong>ATE_CODE<br />

package ADT_ENGINEERING_VALUE is<br />

––––––––––––––––––––––––––––––<br />

–– public types and constants<br />

––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

262 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_ENGINEERING_VALUE_ALTERNATIVES is (<br />

UNDEFINED,<br />

<strong>ST</strong>ATE_CODE,<br />

INT,<br />

FLT,<br />

<strong>ST</strong>R);<br />

–– The engineering value alternatives indicates if :<br />

–– – the engineering value is not set–up<br />

–– – the engineering value contains a state code<br />

–– – the engineering value contains an integer<br />

–– – the engineering value contains a float<br />

–– – the engineering value contains a string<br />

subtype T_SCALAR_ENGINEERING_VALUE_ALTERNATIVES is<br />

T_ENGINEERING_VALUE_ALTERNATIVES range UNDEFINED .. FLT;<br />

–– defines a subtype for scalar raw values (i.e. no strings)<br />

MAX_CALIBRATED_<strong>ST</strong>RING_LENGTH : constant := 256;<br />

type T_CALIBRATED_<strong>ST</strong>RING is<br />

record<br />

<strong>ST</strong>R : <strong>ST</strong>RING (1..MAX_CALIBRATED_<strong>ST</strong>RING_LENGTH);<br />

LENGTH : INTEGER range 0..MAX_CALIBRATED_<strong>ST</strong>RING_LENGTH := 0;<br />

end record;<br />

–––––––––––––<br />

–– adt type<br />

–––––––––––––<br />

type T_ENGINEERING_VALUE (<br />

VALUE_ALTERNATIVE : T_ENGINEERING_VALUE_ALTERNATIVES := UNDEFINED) is<br />

private;<br />

–– A engineering value is composed of :<br />

–– – an engineering value alternative,<br />

–– – a state code, when alternative is <strong>ST</strong>ATE_CODE.<br />

–– – an integer, when alternative is INT.<br />

–– – a float, when alternative is FLT.<br />

–– – a string, when alternative is <strong>ST</strong>R.<br />

NULL_ENGINEERING_VALUE : constant T_ENGINEERING_VALUE ;<br />

type T_SCALAR_ENGINEERING_VALUE (<br />

VALUE_ALTERNATIVE : T_SCALAR_ENGINEERING_VALUE_ALTERNATIVES := UNDEFINED)<br />

is private;<br />

–– A scalar engineering value is composed of :<br />

–– – an engineering value alternative,<br />

–– – a state code, when alternative is <strong>ST</strong>ATE_CODE.<br />

–– – an integer, when alternative is INT.<br />

–– – a float, when alternative is FLT.<br />

––––––––––––––––––––<br />

–– write operations<br />

––––––––––––––––––––<br />

procedure SET_ENGINEERING_VALUE_ALTERNATIVE (<br />

OF_VALUE : in out T_ENGINEERING_VALUE;<br />

WITH_ALTER : in T_ENGINEERING_VALUE_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– This procedure sets the engineering value alternative<br />

–– of the given value.<br />

–– EXCEPTIONS<br />

–– VALUE_IS_CON<strong>ST</strong>RAINED :<br />

–– – The provided engineering value is constrained and<br />

–– the type can therefore not be changed.<br />

–– DESCRIPTION (for all following write operations)<br />

–– This procedure sets the current value of the specified<br />

–– engineering value variable.<br />

–– EXCEPTIONS (for all following write operations)<br />

–– VALUE_TYPE_MISMATCH :<br />

–– – The operation is invalid for the given value<br />

–– of the engineering value alternative.<br />

procedure SET_<strong>ST</strong>ATE_CODE_VALUE (<br />

OF_VALUE : in out T_ENGINEERING_VALUE;<br />

WITH_<strong>ST</strong>ATE_CODE : in MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE);<br />

procedure SET_INTEGER_VALUE (<br />

OF_VALUE : in out T_ENGINEERING_VALUE;<br />

WITH_INTEGER : in INTEGER);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

263 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_FLOAT_VALUE (<br />

OF_VALUE : in out T_ENGINEERING_VALUE;<br />

WITH_FLOAT : in FLOAT);<br />

procedure SET_<strong>ST</strong>RING_VALUE (<br />

OF_VALUE : in out T_ENGINEERING_VALUE;<br />

WITH_<strong>ST</strong>RING : in T_CALIBRATED_<strong>ST</strong>RING);<br />

––––– overloaded operations for T_SCALAR_ENGINEERING_VALUE ––––––––––––––––<br />

procedure SET_ENGINEERING_VALUE_ALTERNATIVE (<br />

OF_VALUE : in out T_SCALAR_ENGINEERING_VALUE;<br />

WITH_ALTER : in T_SCALAR_ENGINEERING_VALUE_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– This procedure sets the engineering value alternative<br />

–– of the given value.<br />

–– EXCEPTIONS<br />

–– VALUE_IS_CON<strong>ST</strong>RAINED :<br />

–– – The provided engineering value is constrained and<br />

–– the type can therefore not be changed.<br />

–– DESCRIPTION (for all following write operations)<br />

–– This procedure sets the current value of the specified<br />

–– engineering value variable.<br />

–– EXCEPTIONS (for all following write operations)<br />

–– VALUE_TYPE_MISMATCH :<br />

–– – The operation is invalid for the given value<br />

–– of the engineering value alternative.<br />

procedure SET_<strong>ST</strong>ATE_CODE_VALUE (<br />

OF_VALUE : in out T_SCALAR_ENGINEERING_VALUE;<br />

WITH_<strong>ST</strong>ATE_CODE : in MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE);<br />

procedure SET_INTEGER_VALUE (<br />

OF_VALUE : in out T_SCALAR_ENGINEERING_VALUE;<br />

WITH_INTEGER : in INTEGER);<br />

procedure SET_FLOAT_VALUE (<br />

OF_VALUE : in out T_SCALAR_ENGINEERING_VALUE;<br />

WITH_FLOAT : in FLOAT);<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

function ALTERNATIVE (<br />

OF_VALUE : T_ENGINEERING_VALUE)<br />

return T_ENGINEERING_VALUE_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the current alternative of<br />

–– the specified engineering value variable.<br />

–– EXCEPTIONS<br />

–– None.<br />

–– DESCRIPTION (for all following read operations)<br />

–– This function returns the current value of<br />

–– the specified engineering value variable.<br />

–– EXCEPTIONS (for all following read operations)<br />

–– VALUE_TYPE_MISMATCH :<br />

–– the current alternative of the passed variable<br />

–– and the type of the formal parameter mismatch.<br />

function <strong>ST</strong>ATE_CODE_VALUE (<br />

OF_VALUE : T_ENGINEERING_VALUE)<br />

return MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

function INTEGER_VALUE (<br />

OF_VALUE : T_ENGINEERING_VALUE)<br />

return INTEGER;<br />

function FLOAT_VALUE (<br />

OF_VALUE : T_ENGINEERING_VALUE)<br />

return FLOAT;<br />

function <strong>ST</strong>RING_VALUE (<br />

OF_VALUE : T_ENGINEERING_VALUE)<br />

return T_CALIBRATED_<strong>ST</strong>RING;<br />

––––– overloaded operations for T_SCALAR_ENGINEERING_VALUE ––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

264 von/of: 662


Space Infrastructure<br />

function ALTERNATIVE (<br />

OF_VALUE : T_SCALAR_ENGINEERING_VALUE)<br />

return T_SCALAR_ENGINEERING_VALUE_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the current alternative of<br />

–– the specified engineering value variable.<br />

–– EXCEPTIONS<br />

–– None.<br />

–– DESCRIPTION (for all following read operations)<br />

–– This function returns the current value of<br />

–– the specified engineering value variable.<br />

–– EXCEPTIONS (for all following read operations)<br />

–– VALUE_TYPE_MISMATCH :<br />

–– the current alternative of the passed variable<br />

–– and the type of the formal parameter mismatch.<br />

function <strong>ST</strong>ATE_CODE_VALUE (<br />

OF_VALUE : T_SCALAR_ENGINEERING_VALUE)<br />

return MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

function INTEGER_VALUE (<br />

OF_VALUE : T_SCALAR_ENGINEERING_VALUE)<br />

return INTEGER;<br />

function FLOAT_VALUE (<br />

OF_VALUE : T_SCALAR_ENGINEERING_VALUE)<br />

return FLOAT;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––<br />

–– ’type conversion’ (assignment) operations<br />

–––––––––––––––––––––––––––––––––––––––––––––<br />

function ASSIGN (SCALAR_VALUE: T_SCALAR_ENGINEERING_VALUE)<br />

return T_ENGINEERING_VALUE;<br />

–– DESCRIPTION<br />

–– Assign a scalar value to a value of type T_ENGINEERING_VALUE<br />

–– EXCEPTIONS<br />

–– none<br />

function ASSIGN (ENGINEERING_VALUE: T_ENGINEERING_VALUE)<br />

return T_SCALAR_ENGINEERING_VALUE;<br />

–– DESCRIPTION<br />

–– Assign a raw value to a value of type<br />

–– T_SCALAR_ENGINEERING_VALUE<br />

–– EXCEPTIONS<br />

–– VALUE_TYPE_MISMATCH<br />

–– the type of the ENGINEERING_VALUE was <strong>ST</strong>R<br />

––––––––––––––––––––––<br />

–– packing operations<br />

––––––––––––––––––––––<br />

procedure PACK (<br />

VALUE : in T_ENGINEERING_VALUE;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

–– This procedure packs the specified engineering value variable into<br />

–– a contiguous memory block.<br />

–– EXCEPTIONS<br />

–– None.<br />

procedure UNPACK (<br />

BLOCK : in out ADT_PACKING.T_BLOCK;<br />

VALUE : out T_ENGINEERING_VALUE);<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– an engineering value variable.<br />

–– EXCEPTIONS<br />

–– None.<br />

––––– overloaded operations for T_SCALAR_ENGINEERING_VALUE ––––––––––––––––<br />

procedure PACK (<br />

VALUE : in T_SCALAR_ENGINEERING_VALUE;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

265 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– This procedure packs the specified engineering value variable into<br />

–– a contiguous memory block.<br />

–– EXCEPTIONS<br />

–– None.<br />

procedure UNPACK (<br />

BLOCK : in out ADT_PACKING.T_BLOCK;<br />

VALUE : out T_SCALAR_ENGINEERING_VALUE);<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– an engineering value variable.<br />

–– EXCEPTIONS<br />

–– None.<br />

–––––––––––––––––––<br />

–– exceptions<br />

–––––––––––––––––––<br />

VALUE_TYPE_MISMATCH : exception;<br />

VALUE_IS_CON<strong>ST</strong>RAINED : exception;<br />

private<br />

type T_ENGINEERING_VALUE(<br />

VALUE_ALTERNATIVE : T_ENGINEERING_VALUE_ALTERNATIVES := UNDEFINED) is<br />

record<br />

case VALUE_ALTERNATIVE is<br />

when <strong>ST</strong>ATE_CODE =><br />

<strong>ST</strong>ATE_CODE_VALUE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

when INT =><br />

INT_VALUE : INTEGER := 0;<br />

when FLT =><br />

FLT_VALUE : FLOAT := 0.0;<br />

when <strong>ST</strong>R =><br />

<strong>ST</strong>R_VALUE : T_CALIBRATED_<strong>ST</strong>RING;<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

type T_SCALAR_ENGINEERING_VALUE(<br />

VALUE_ALTERNATIVE : T_SCALAR_ENGINEERING_VALUE_ALTERNATIVES<br />

:= UNDEFINED) is<br />

record<br />

case VALUE_ALTERNATIVE is<br />

when <strong>ST</strong>ATE_CODE =><br />

<strong>ST</strong>ATE_CODE_VALUE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

when INT =><br />

INT_VALUE : INTEGER := 0;<br />

when FLT =><br />

FLT_VALUE : FLOAT := 0.0;<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

NULL_ENGINEERING_VALUE : constant T_ENGINEERING_VALUE :=<br />

( VALUE_ALTERNATIVE => UNDEFINED ) ;<br />

end ADT_ENGINEERING_VALUE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

266 von/of: 662


Space Infrastructure<br />

7.6.5 ADT ADU Description<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

267 von/of: 662<br />

A ADU Description is the set of information describing the format of the data acquired by VICOS. It is normally<br />

predefined in the mission/configuration database, and loaded from the corresponding end–item, in test system<br />

configuration and set–up phase. It is then supplied, together with the request for acquisition, by VICOS to the<br />

dedicated SAS at test execution time.<br />

A ADU Description is a composite type containing the following attributes :<br />

– an ADU description alternative, which modifies the structure of this item;<br />

– an database sid, which is the identifier allocated by the MPS when the corresponding end–item is<br />

created;<br />

– a private identifier, which is a identification number specific to VICOS and SASs, allowing reference<br />

to this item without knowledge of the database sid;<br />

– an SAS’s short name i.e. the one in charge of the data transfer (see EGSE Software);<br />

– an acquisition rate, which indicates the frequency of reception of the corresponding ADU;<br />

– a global address, indicating where to acquire the values (see Physical Address);<br />

– an ADU data buffer size;<br />

– a list of measurement references, if ADU is structured composed of :<br />

– a mission database sid,<br />

– a raw value alternative,<br />

– a physical address;<br />

– a list of item description, if ADU is unstructured composed of :<br />

– a measurement sid,<br />

– a location in the data buffer, in bits,<br />

– a length in the data buffer, in bits,<br />

– a ccsds identifier, if ADU is ccsds_packet.<br />

A Table type is also provided, which allows to define indexed lists of this ADT.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_ADU_DESCRIPTION<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package is an abstract data type definition of the<br />

–– ADU_DESCRIPTIONS<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : ADT_ADU_DESCRIPTION<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 /Alsys Ada 5.5.1<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– PIRN 8065<br />

–– creator: P.Hartmann<br />

–– creation date: 23.06.99<br />

–– comment: access to CCSDS header via measurements<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PIRN 8051<br />

–– creator: P.Hartmann<br />

–– creation date: 31.03.99<br />

–– comment: increase MAX_NBR_UN<strong>ST</strong>RUCTURED_ITEMS from 500 to 750<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PIRN 8039<br />

–– creator: P.Hartmann<br />

–– creation date: 05.11.98<br />

–– comment: add physical address flag for structured ADU’s<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PIRN 7061<br />

–– creator: P.Hartmann<br />

–– creation date: 14.01.98<br />

–– comment: increase MAX_NBR_UN<strong>ST</strong>RUCTURED_ITEMS from 250 to 500<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– PIRN 5016<br />

–– creator: P.Hartmann<br />

–– creation date: 17.04.97<br />

–– comment: suppress ”pragma PACK (T__<strong>ST</strong>RUCTURED_DESCRIPTION);”<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

268 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

269 von/of: 662<br />

–– V16.1 at Central Repository at DASA RI<br />

–– creator: tommy (on host aiv_tn2)<br />

–– creation date: 09.12.96 16:55:59<br />

–– comment:<br />

–– access type added<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2–3)<br />

–– creation date: 15.06.95 14:35:29<br />

–– comment:<br />

–– Updated the type definition for T_ADU_DESCRIPTION to be inline with PIRN 3046<br />

C<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2–3)<br />

–– creation date: 15.06.95 11:37:37<br />

–– comment:<br />

–– Build 2 baseline, PIRN 3041 1/D<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.0 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: gehrke (on host mps2s–1)<br />

–– creation date: 22.05.95 13:00:00<br />

–– <strong>CGS</strong> V2 Build 2 baseline, PIRN 3041/C<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––<br />

––****************************************************************************<br />

––<br />

with ADT_PACKING;<br />

–– type T_BLOCK<br />

with MPS_DEFINITIONS;<br />

–– type SID<br />

with VICOS_DEFINITIONS;<br />

–– type T_NAME_<strong>ST</strong>RING<br />

–– type T_RAW_VALUE_ALTERNATIVES<br />

–– type T_ADU_ALTERNATIVES<br />

–– type T_PRIVATE_ID<br />

with ADT_PHYSICAL_ADDRESS;<br />

–– type T_PHYSICAL_ADDRESS<br />

with ADT_CCSDS_PACKET;<br />

–– MAX_PACKET_SIZE<br />

–– CCSDS_HEADER+SIZE<br />

package ADT_ADU_DESCRIPTION is<br />

––––––––––––––––––––––––––––––<br />

–– public types and constants<br />

––––––––––––––––––––––––––––––<br />

MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS : constant INTEGER := 100;


Space Infrastructure<br />

MAX_NBR_UN<strong>ST</strong>RUCTURED_ITEMS : constant INTEGER := 750;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

MAX_NBR_CCSDS_ITEMS : constant INTEGER := MAX_NBR_UN<strong>ST</strong>RUCTURED_ITEMS;<br />

MAX_BINARY_BUFFER_SIZE : constant INTEGER :=<br />

ADT_CCSDS_PACKET.MAX_PACKET_SIZE+ADT_CCSDS_PACKET.CCSDS_HEADER_SIZE+1;<br />

–––––––––––––<br />

–– adt types<br />

–––––––––––––<br />

type T_ADU_DESCRIPTION(ADU_TYPE : VICOS_DEFINITIONS.T_ADU_ALTERNATIVES :=<br />

VICOS_DEFINITIONS.UNDEFINED) is private;<br />

type T_A_ADU_DESCRIPTION is access T_ADU_DESCRIPTION;<br />

––––––––––––––––––––<br />

–– write operations<br />

––––––––––––––––––––<br />

procedure SET_ALTERNATIVE (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_ALTERNATIVE : in VICOS_DEFINITIONS.T_ADU_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– This procedure sets the current alternative value of<br />

–– the specified ADU description variable.<br />

–– Setting the alternative to UNDEFINED internally clears<br />

–– all fields as if the ADU_DESCRIPTION were empty<br />

–– EXCEPTIONS<br />

–– ADU_DESCRIPTION_IS_CON<strong>ST</strong>RAINED<br />

–– Raised when trying to change the ADU description<br />

–– in a constraint way<br />

procedure SET_DB_SID (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_DB_SID : in MPS_DEFINITIONS.SID);<br />

–– DESCRIPTION<br />

–– This procedure sets the current database sid value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– SID_VALUE_ILLEGAL :<br />

–– the passed sid has not a legal value, i.e. NULL_SID.<br />

procedure SET_PRIVATE_ID (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_PRIVATE_ID : in VICOS_DEFINITIONS.T_PRIVATE_ID);<br />

–– DESCRIPTION<br />

–– This procedure sets the current private identifier value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

procedure SET_SAS_NAME (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_SAS_NAME : in VICOS_DEFINITIONS.T_SAS_NAME);<br />

–– DESCRIPTION<br />

–– This procedure sets the current SAS short name value of<br />

–– the specified ADU description variable.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

270 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– EXCEPTIONS<br />

–– SAS_NAME_VALUE_ILLEGAL :<br />

–– the passed name has not a legal value, i.e. EMPTY_NAME_<strong>ST</strong>RING.<br />

procedure SET_ACQUISITION_RATE (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_ACQUISITION_RATE : in NATURAL);<br />

–– DESCRIPTION<br />

–– This procedure sets the current ADU acquisition rate value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

procedure SET_GLOBAL_ADDRESS (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_GLOBAL_ADDRESS : in out ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS);<br />

–– DESCRIPTION<br />

–– This procedure sets the global physical address of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

procedure SET_ITEMS_WITH_PHYSICAL_ADDRESS (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_PYSICAL_ADDRESS : in BOOLEAN);<br />

–– DESCRIPTION<br />

–– This procedure sets the flag indicating for a structured ADU if<br />

–– the items do have a physical address or not.<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– the ADU alternative is not a structured ADU<br />

procedure SET_NBR_ITEMS (<br />

OF_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_NBR_ITEMS : in NATURAL);<br />

–– DESCRIPTION<br />

–– This procedure sets the current number of items of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– SIZE_ERROR<br />

–– the passed number is bigger than the maximum contained items.<br />

–– IS_UNDEFINED<br />

–– the ADU alternative is undefined<br />

procedure SET_ENDITEM_DESCRIPTION (<br />

IN_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_DB_SID : in MPS_DEFINITIONS.SID;<br />

WITH_RAW_VALUE_TYPE : in VICOS_DEFINITIONS.<br />

T_RAW_VALUE_ALTERNATIVES;<br />

AT_INDEX : in POSITIVE;<br />

WITH_PARAMETER_ADDRESS : in ADT_PHYSICAL_ADDRESS.<br />

T_PHYSICAL_ADDRESS);<br />

–– DESCRIPTION<br />

–– This procedure sets the item sid in the specified<br />

–– ADU description variable, at the specified position.<br />

–– EXCEPTIONS<br />

–– INDEX_ERROR :<br />

–– – the specified position is bigger than MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS.<br />

–– SID_VALUE_ILLEGAL :<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

271 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– – the passed sid has not a legal value, i.e. NULL_SID.<br />

–– ADU_TYPE_MISMATCH :<br />

–– – the ADU alternative is not <strong>ST</strong>RUCTURED.<br />

–– SIZE_ERROR :<br />

–– – the number of bytes needed to represent the values in the<br />

–– ADU exceeds MAX_BINARY_BUFFER_SIZE<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

272 von/of: 662<br />

procedure SET_ENDITEM_DESCRIPTION (<br />

IN_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_DB_SID : in MPS_DEFINITIONS.SID;<br />

WITH_BIT_LOCATION : in NATURAL;<br />

WITH_BIT_SIZE : in NATURAL;<br />

WITH_PACKET_PART : in ADT_CCSDS_PACKET.T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA;<br />

AT_INDEX : in POSITIVE);<br />

–– DESCRIPTION<br />

–– This procedure sets the item description in the specified<br />

–– ADU description variable, at the specified position.<br />

–– EXCEPTIONS<br />

–– INDEX_ERROR :<br />

–– – the specified position is bigger than MAX_NBR_UN<strong>ST</strong>RUCTURED_ITEMS.<br />

–– SID_VALUE_ILLEGAL :<br />

–– – the passed sid has not a legal value, i.e. NULL_SID.<br />

–– ADU_TYPE_MISMATCH :<br />

–– – the ADU alternative is not UN<strong>ST</strong>RUCTURED or CCSDS_PACKET.<br />

procedure SET_CCSDS_HEADER (<br />

IN_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_CCSDS_HEADER : in ADT_CCSDS_PACKET.T_CCSDS_HEADER);<br />

–– DESCRIPTION<br />

–– This procedure stores the ccsds primary header of the desired CCSDS<br />

–– packet which should be put into the corresponding ADU<br />

–– in the ADU description variable.<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not CCSDS_PACKET.<br />

procedure SET_CCSDS_2ND_HEADER (<br />

IN_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

WITH_CCSDS_2ND_HEADER : in ADT_CCSDS_PACKET.T_CCSDS_SECONDARY_HEADER);<br />

–– DESCRIPTION<br />

–– This procedure stores the ccsds secondary header of the desired<br />

–– CCSDS packet which should be put into the corresponding ADU<br />

–– in the ADU description variable.<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not CCSDS_PACKET.<br />

procedure SET_ADU_SIZE(<br />

IN_ADU_DESCRIPTION : in out T_ADU_DESCRIPTION;<br />

SIZE : in NATURAL);<br />

–– DESCRIPTION<br />

–– Set the size of the ADU in case it is unstructured<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not UN<strong>ST</strong>RUCTURED<br />

–– SIZE_ERROR :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– the specified position is bigger than the maximum list size.<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

function DB_SID (<br />

OF_ADU_DESCRIPTION : T_ADU_DESCRIPTION)<br />

return MPS_DEFINITIONS.SID;<br />

–– DESCRIPTION<br />

–– This function returns the current database sid value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function PRIVATE_ID (<br />

OF_ADU_DESCRIPTION : T_ADU_DESCRIPTION)<br />

return VICOS_DEFINITIONS.T_PRIVATE_ID;<br />

–– DESCRIPTION<br />

–– This function returns the current private identifier value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function SAS_NAME (<br />

OF_ADU_DESCRIPTION : T_ADU_DESCRIPTION)<br />

return VICOS_DEFINITIONS.T_SAS_NAME;<br />

–– DESCRIPTION<br />

–– This function returns the current SAS short name value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function ACQUISITION_RATE (<br />

OF_ADU_DESCRIPTION : T_ADU_DESCRIPTION)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– This function returns the current ADU acquisition rate value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function GLOBAL_ADDRESS (<br />

OF_ADU_DESCRIPTION : in T_ADU_DESCRIPTION)<br />

return ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

–– DESCRIPTION<br />

–– This procedure returns the current global address value of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

procedure GET_ENDITEM_DESCRIPTION (<br />

OF_ADU_DESCRIPTION : in T_ADU_DESCRIPTION;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

273 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

DB_SID : out MPS_DEFINITIONS.SID;<br />

RAW_VALUE_TYPE : out VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES;<br />

AT_INDEX : in POSITIVE;<br />

PARAMETER_ADDRESS : out ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS);<br />

–– DESCRIPTION<br />

–– This procedure gets the enditem sid of the specified<br />

–– ADU description variable, at the specified position.<br />

–– EXCEPTIONS<br />

–– INDEX_ERROR :<br />

–– – the specified position is bigger than the list size.<br />

–– ADU_TYPE_MISMATCH :<br />

–– – the ADU alternative is not <strong>ST</strong>RUCTURED.<br />

–– IS_UNDEFINED :<br />

–– – the alternative is UNDEFINED<br />

procedure GET_ENDITEM_DESCRIPTION (<br />

OF_ADU_DESCRIPTION : in T_ADU_DESCRIPTION;<br />

DB_SID : out MPS_DEFINITIONS.SID;<br />

BIT_LOCATION : out NATURAL;<br />

BIT_SIZE : out NATURAL;<br />

AT_INDEX : in POSITIVE);<br />

procedure GET_ENDITEM_DESCRIPTION (<br />

OF_ADU_DESCRIPTION : in T_ADU_DESCRIPTION;<br />

DB_SID : out MPS_DEFINITIONS.SID;<br />

BIT_LOCATION : out NATURAL;<br />

BIT_SIZE : out NATURAL;<br />

PACKET_PART : out ADT_CCSDS_PACKET.T_PACKET_PART;<br />

AT_INDEX : in POSITIVE);<br />

–– DESCRIPTION<br />

–– This procedure gets the enditem description of the specified<br />

–– ADU description variable, at the specified position.<br />

–– the first version is kept for compatibility reason but<br />

–– should not be used as now, measurements from CCSDS packets<br />

–– can reference data in the headers/checksum part of the packet<br />

–– EXCEPTIONS<br />

–– INDEX_ERROR :<br />

–– – the specified position is bigger than the list size.<br />

–– ADU_TYPE_MISMATCH :<br />

–– – the ADU alternative is not UN<strong>ST</strong>RUCTURED or CCSDS_PACKET.<br />

–– IS_UNDEFINED :<br />

–– – the alternative is UNDEFINED<br />

function CCSDS_HEADER (<br />

IN_ADU_DESCRIPTION : T_ADU_DESCRIPTION)<br />

return ADT_CCSDS_PACKET.T_CCSDS_HEADER;<br />

–– DESCRIPTION<br />

–– This procedure returns the ccsds primary header of the desired<br />

–– CCSDS packet which should be put into the corresponding ADU<br />

–– in the ADU description variable.<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not CCSDS_PACKET.<br />

function CCSDS_2ND_HEADER (<br />

IN_ADU_DESCRIPTION : T_ADU_DESCRIPTION)<br />

return ADT_CCSDS_PACKET.T_CCSDS_SECONDARY_HEADER;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

274 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– This procedure returns the ccsds secondary header of the<br />

–– desired CCSDS<br />

–– packet which should be put into the corresponding ADU<br />

–– in the ADU description variable.<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not CCSDS_PACKET.<br />

function ALTERNATIVE(ADU_DESCRIPTION : in T_ADU_DESCRIPTION)<br />

return VICOS_DEFINITIONS.T_ADU_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the current alternative of<br />

–– the specified ADU description variable.<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function ITEMS_WITH_PHYSICAL_ADDRESS(ADU_DESCRIPTION : in T_ADU_DESCRIPTION)<br />

return BOOLEAN;<br />

–– DESCRIPTION<br />

–– return the flag indicating for a structured ADU if the items do<br />

–– have a physical address or not.<br />

–– EXCEPTIONS :<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not a structured ADU<br />

function NBR_ITEMS(ADU_DESCRIPTION : in T_ADU_DESCRIPTION)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– return number of items in ADU<br />

–– EXCEPTIONS :<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function ADU_SIZE(ADU_DESCRIPTION : in T_ADU_DESCRIPTION)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– return size of the ADU<br />

–– EXCEPTIONS :<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not UN<strong>ST</strong>RUCTURED<br />

–– IS_UNDEFINED :<br />

–– the alternative is UNDEFINED<br />

function INDEX(<br />

ADU_DESCRIPTION : in T_ADU_DESCRIPTION;<br />

SID : in MPS_DEFINITIONS.SID)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– return the index in the ADU value list of a value with SID<br />

–– EXCEPTIONS :<br />

–– ADU_TYPE_MISMATCH :<br />

–– the ADU alternative is not <strong>ST</strong>RUCTURED or UN<strong>ST</strong>RUCTURED<br />

–– ITEM_NOT_FOUND :<br />

–– no enditem description with the given SID<br />

–– IS_UNDEFINED :<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

275 von/of: 662


Space Infrastructure<br />

–– the alternative is UNDEFINED<br />

––––––––––––––––––––––<br />

–– packing operations<br />

––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure PACK (<br />

ADU_DESCRIPTION : in T_ADU_DESCRIPTION;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

–– This procedure packs the specified ADU description variable into<br />

–– a contiguous memory block.<br />

–– EXCEPTIONS<br />

procedure UNPACK (<br />

BLOCK : in out ADT_PACKING.T_BLOCK;<br />

ADU_DESCRIPTION : out T_ADU_DESCRIPTION);<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a ADU description variable.<br />

–– EXCEPTIONS<br />

function SIZE_NEEDED (<br />

VALUE : T_ADU_DESCRIPTION )<br />

return ADT_PACKING.T_PACK_INDEX;<br />

–– DESCRIPTION<br />

–– This function calculates the actual size needed for packing the supplied<br />

–– VALUE<br />

–– EXCEPTIONS<br />

procedure DEALLOCATE(ADU_DESC : in out T_A_ADU_DESCRIPTION);<br />

–– DESCRIPTION<br />

–– free memory allocated by new(T_ADU_DESCRIPTION)<br />

–– EXCEPTIONS<br />

––<br />

–––––––––––––––––––<br />

–– exceptions<br />

–––––––––––––––––––<br />

SID_VALUE_ILLEGAL : exception;<br />

SAS_NAME_VALUE_ILLEGAL : exception;<br />

ADU_TYPE_MISMATCH : exception;<br />

INDEX_ERROR : exception;<br />

ITEM_NOT_FOUND : exception;<br />

SIZE_ERROR : exception;<br />

ADU_DESCRIPTION_IS_CON<strong>ST</strong>RAINED : exception;<br />

IS_UNDEFINED : exception;<br />

NOT_CREATED : exception;<br />

private<br />

type T_<strong>ST</strong>RUCTURED_DESCRIPTION is<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

276 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

record<br />

SID : MPS_DEFINITIONS.SID;<br />

RAW_VALUE_TYPE : VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES<br />

:= VICOS_DEFINITIONS.UNDEFINED;<br />

PHYSICAL_ADDRESS : ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

end record;<br />

type T_<strong>ST</strong>RUCTURED_DESCRIPTIONS is array (1 .. MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS)<br />

of T_<strong>ST</strong>RUCTURED_DESCRIPTION;<br />

type T_UN<strong>ST</strong>RUCTURED_DESCRIPTION is<br />

record<br />

SID : MPS_DEFINITIONS.SID;<br />

LOCATION : NATURAL;<br />

LENGTH : NATURAL;<br />

PACKET_PART : ADT_CCSDS_PACKET.T_PACKET_PART;<br />

end record;<br />

type T_UN<strong>ST</strong>RUCTURED_DESCRIPTIONS is array (1 .. MAX_NBR_UN<strong>ST</strong>RUCTURED_ITEMS)<br />

of T_UN<strong>ST</strong>RUCTURED_DESCRIPTION;<br />

subtype T_CCSDS_DESCRIPTION is T_UN<strong>ST</strong>RUCTURED_DESCRIPTION;<br />

type T_CCSDS_DESCRIPTIONS is array (1..MAX_NBR_CCSDS_ITEMS)<br />

of T_CCSDS_DESCRIPTION;<br />

type T_ADU_DESCRIPTION(ADU_TYPE : VICOS_DEFINITIONS.T_ADU_ALTERNATIVES :=<br />

VICOS_DEFINITIONS.UNDEFINED) is<br />

record<br />

DB_SID : MPS_DEFINITIONS.SID;<br />

PRIVATE_ID : VICOS_DEFINITIONS.T_PRIVATE_ID;<br />

SAS_NAME : VICOS_DEFINITIONS.T_SAS_NAME;<br />

ACQUISITION_RATE : NATURAL;<br />

GLOBAL_ADDRESS : ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

case ADU_TYPE is<br />

when VICOS_DEFINITIONS.<strong>ST</strong>RUCTURED =><br />

ITEMS_WITH_PHYSICAL_ADDRESS : BOOLEAN := TRUE;<br />

NBR_<strong>ST</strong>RUCTURED_ITEMS : NATURAL := 0;<br />

<strong>ST</strong>RUCTURED_DESCRIPTIONS : T_<strong>ST</strong>RUCTURED_DESCRIPTIONS;<br />

<strong>ST</strong>RUCTURED_BUFFER_SIZE : NATURAL := 0;<br />

when VICOS_DEFINITIONS.UN<strong>ST</strong>RUCTURED =><br />

NBR_UN<strong>ST</strong>RUCTURED_ITEMS : NATURAL := 0;<br />

UN<strong>ST</strong>RUCTURED_DESCRIPTIONS: T_UN<strong>ST</strong>RUCTURED_DESCRIPTIONS;<br />

BUFFER_SIZE : NATURAL := 0;<br />

when VICOS_DEFINITIONS.CCSDS_PACKET =><br />

CCSDS_HEADER : ADT_CCSDS_PACKET.T_CCSDS_HEADER;<br />

CCSDS_SECONDARY_HEADER : ADT_CCSDS_PACKET.T_CCSDS_SECONDARY_HEADER;<br />

NBR_CCSDS_ITEMS : NATURAL := 0;<br />

CCSDS_DESCRIPTIONS : T_CCSDS_DESCRIPTIONS;<br />

when VICOS_DEFINITIONS.UNDEFINED =><br />

null;<br />

end case;<br />

end record;<br />

end ADT_ADU_DESCRIPTION;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

277 von/of: 662


Space Infrastructure<br />

7.6.6 ADT ADU<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

278 von/of: 662<br />

An ADU is the standardized format in which any measurement is received by VICOS. It is a packet of measurement<br />

values which are packed according to the list given in the corresponding ADU Description. ADUs are generated<br />

by SASs and delivered to VICOS together with an ADU header allowing to identify the initial request<br />

for acquisition.<br />

A ADU is a composite type containing the following attributes :<br />

– an ADU alternative, which modifies the structure of this item;<br />

– an database sid, which is the identifier allocated by the MPS when the corresponding ADU Description<br />

end–item is created;<br />

– a time tag, indicating when the values have been acquired;<br />

– a sequence number, which indicates the number of ADUs, with this sid, already acquired, when required<br />

cyclically;<br />

– a data interruption flag, which means, when set to TRUE, that for some reasons, SAS could not acquire<br />

the corresponding data, in the time between the last ADU sent to VICOS and the current one.<br />

VICOS generates then an error message and does not apply the delta monitoring, i.e. it does not<br />

check values against delta limits.<br />

– an SAS’s short name i.e. the one in charge of the data transfer (see EGSE Software);<br />

– an ADU data buffer size;<br />

– a list of item values, if ADU is structured composed of :<br />

– an index,<br />

– a value (see Raw Value),<br />

– a measurement values byte buffer, if ADU is unstructured;<br />

– a telemetry packet, if ADU is ccsds_packet.<br />

A Table type is also provided, which allows to define indexed lists of this ADT.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_ADU<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package defines an abstract data type for ADUs<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : VICOS_ADTS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

279 von/of: 662<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 / Alsys Ada 5.5.1<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– PIRN 8070<br />

–– creator: P.Hartmann<br />

–– creation date: 23.06.99<br />

–– comment: access to CCSDS header via measurements<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V16.3 at Central Repository at DASA RI<br />

–– creator: hartmann (on host aiv_2)<br />

–– creation date: 16.12.96 13:46:08<br />

–– comment:<br />

–– add comments for UNPACK2<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V16.2 at Central Repository at DASA RI<br />

–– creator: hartmann (on host aiv_2)<br />

–– creation date: 16.12.96 13:18:30<br />

–– comment:<br />

–– 1/ GET_RAW_VALUE : make the VALUE –in out– (instead of –out–) and add out<br />

parameter LENGTH (for structured ADU)<br />

–– 2/ remove NUMBER_OF_BITS from functions RAW_VALUE and RAW_CCSDS_VALUE<br />

returning SINGLE_FLOAT<br />

–– 3/ change name for RAW_VALUE and GET_RAW_VALUE to RAW_UN<strong>ST</strong>RUCTURED_VALUE and<br />

GET_RAW_UN<strong>ST</strong>RUCTURED_VALUE (for unstructured ADU)<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V16.1 at Central Repository at DASA RI<br />

–– creator: tommy (on host aiv_tn2)<br />

–– creation date: 09.12.96 16:55:14<br />

–– comment:<br />

–– Fast unpack, access type , extract operation added<br />

––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2–3)<br />

–– creation date: 22.06.95 09:19:35<br />

–– comment:<br />

–– Build 2 baseline<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.1 at CC ;<br />

–– creator: Tommy Jakobsen<br />

–– creation date: 13.06.95 10:00:00<br />

–– Build 2 baseline, PIRN 3042<br />

–– New definition of T_ADU in private part<br />

–– Included missing function raw_value for U_INT<br />

–– Updated description of some functions<br />

––<br />

–– V3.0 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: gehrke (on host mps2s–1)<br />

–– creation date: 19.05.95 10:00:00<br />

–– Build 2 baseline, PIRN 3042<br />

––<br />

–– V2.10 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 28.07.93 12:53:11<br />

–– Set default values for address information for private types<br />

––<br />

–– V2.9 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 20:00:14<br />

–– Version as delivered by SRO1216843b (IK ADTs)<br />

––<br />

–– V2.8 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 15.01.93 15:23:11<br />

–– re–include ADT_type description<br />

–– V2.7 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 08.12.92 20:01:29<br />

–– update comments / descriptions<br />

–– V2.6 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 17.11.92 11:20:00<br />

–– adts version 2.0.1: update acc. to PIRN VICOS–2034<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 11:55:17<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 21.07.92 07:59:31<br />

–– Naming of <strong>CGS</strong>_CALENDAR changed to VICOS_CALENDAR<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: maron (on host vicos_6)<br />

–– creation date: 20.07.92 15:31:10<br />

–– VCS–spadm & COL–MBER–ZU1–TN–0026/92<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

280 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

––****************************************************************************<br />

––<br />

with MPS_DEFINITIONS;<br />

with VICOS_DEFINITIONS;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with NUMERIC_TYPES;<br />

with ADT_PACKING;<br />

with ADT_CCSDS_PACKET;<br />

with ADT_ADU_DESCRIPTION;<br />

package ADT_ADU is<br />

––––––––––––––––––––––––––––––––––––<br />

–– public types and constants types<br />

––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

281 von/of: 662<br />

MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS : constant integer:=<br />

ADT_ADU_DESCRIPTION.MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

MAX_BINARY_BUFFER_SIZE : constant integer<br />

:= ADT_ADU_DESCRIPTION.MAX_BINARY_BUFFER_SIZE;<br />

subtype T_BINARY_BUFFER_SIZE is INTEGER range 0 .. MAX_BINARY_BUFFER_SIZE;<br />

subtype T_NBR_<strong>ST</strong>RUCTURED_ITEMS is INTEGER range 0 .. MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

type T_BINARY_BUFFER is array (T_BINARY_BUFFER_SIZE range ) of<br />

NUMERIC_TYPES.UNSIGNED_INTEGER8;<br />

pragma PACK(T_BINARY_BUFFER);<br />

–––––––––––––––––––––––<br />

–– adt types<br />

–––––––––––––––––––––––<br />

type T_ADU(ALTERNATIVE : VICOS_DEFINITIONS.T_ADU_ALTERNATIVES :=<br />

VICOS_DEFINITIONS.UNDEFINED) is private;<br />

–– An ADU is composed of :<br />

–– – an ADU alternative,<br />

–– – an identifier ( MDB sid),<br />

–– – a time–tag,<br />

–– – a sequence counter,<br />

–– – a data interruption flag,<br />

–– – an SAS short name,<br />

–– – a list of measurement sids and values if ADU is structured,<br />

–– – an array of bytes containing meas. values if ADU is unstructured,<br />

–– – a TM packet, if ADU is a CCSDS packet,<br />

type T_A_ADU is access T_ADU;<br />

–––––––––––––––––––––––<br />

–– Construct operation<br />

–––––––––––––––––––––––<br />

procedure CON<strong>ST</strong>RUCT( ADU : in out T_ADU;<br />

DESCRIPTION : in ADT_ADU_DESCRIPTION.T_ADU_DESCRIPTION);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

282 von/of: 662<br />

–– DESCRIPTION<br />

–– this operation initially sets the ADU alternative<br />

–– and the SID to the values defined in the description<br />

–– the ADU is cleared, i.e. all datafields are set to zero<br />

–– and the sequence count is set to zero and the<br />

–– DATA_INTERRUPTION is reset.<br />

–– WARNING: There is no internal check whether or not the<br />

–– ADU is currently ”in use”.<br />

–– EXCEPTIONS:<br />

–– ADU_TYPE_MISMATCH : the input adu’s constraint contradicts the adu type of<br />

description<br />

–– SIZE_ERROR : there is not enough space in the adu for all enditems<br />

–––––––––––––––––––––<br />

–– Write Operations<br />

–––––––––––––––––––––<br />

procedure SET_ALTERNATIVE(ADU : in out T_ADU;<br />

ALTERNATIVE : in VICOS_DEFINITIONS.T_ADU_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– Set the alternative of the ADU; must be set before values are<br />

–– written to the ADU.<br />

–– EXCEPTIONS<br />

–– CON<strong>ST</strong>RAINT_ERROR : the alternative is already set<br />

procedure SET_TIME_TAG(ADU : in out T_ADU;<br />

LOCAL_TIME : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SMT : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME);<br />

–– DESCRIPTION<br />

–– Sets the time tag of the ADU<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SAS_NAME(ADU : in out T_ADU;<br />

SAS_NAME : in VICOS_DEFINITIONS.T_SAS_NAME);<br />

–– DESCRIPTION<br />

–– This procedure sets the short name of the SAS in charge of<br />

–– the specified ADU variable<br />

–– EXCEPTIONS<br />

–– None<br />

procedure SET_SEQUENCE_NUMBER(ADU : in out T_ADU;<br />

SEQUENCE_NUMBER : in NATURAL);<br />

–– DESCRIPTION<br />

–– Sets the sequence number of the ADU<br />

–– EXCEPTIONS<br />

–– – none<br />

procedure SET_DATA_INTERRUPTION(ADU : in out T_ADU);<br />

–– DESCRIPTION<br />

–– Sets the Data Interruption flag for the ADU<br />

–– EXCEPTIONS<br />

–– none<br />

procedure RESET_DATA_INTERRUPTION(ADU : in out T_ADU);<br />

–– DESCRIPTION


Space Infrastructure<br />

–– Resets the Data Interruption flag for the ADU<br />

–– EXCEPTIONS<br />

–– – none<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_RAW_VALUE(ADU : in out T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

VALUE : in NUMERIC_TYPES.UNSIGNED_INTEGER32);<br />

–– DESCRIPTION<br />

–– Sets a raw value for an <strong>ST</strong>RUCTURED ADU at the given index<br />

–– with an unsigned value if the corresponding RAW_VALUE_ALTERNATIVE<br />

–– in the ADU description was U_INT<br />

–– EXCEPTIONS:<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE on this index is not U_INT<br />

procedure SET_RAW_VALUE(ADU : in out T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

VALUE : in NUMERIC_TYPES.INTEGER32);<br />

–– DESCRIPTION<br />

–– Sets a raw value for an <strong>ST</strong>RUCTURED ADU at the given index<br />

–– with an unsigned value if the corresponding RAW_VALUE_ALTERNATIVE<br />

–– in the ADU description was INT<br />

–– EXCEPTIONS:<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE on this index is not INT<br />

procedure SET_RAW_VALUE(ADU : in out T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

VALUE : in NUMERIC_TYPES.SINGLE_FLOAT);<br />

–– DESCRIPTION<br />

–– Sets a raw value for an <strong>ST</strong>RUCTURED ADU at the given index<br />

–– with an unsigned value if the corresponding RAW_VALUE_ALTERNATIVE<br />

–– in the ADU description was FLOAT_EGSE<br />

–– EXCEPTIONS:<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE onm this index is not FLOAT_EGSE<br />

procedure SET_RAW_VALUE(ADU : in out T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

VALUE : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– Sets a raw value for an <strong>ST</strong>RUCTURED ADU at the given index<br />

–– with an unsigned value if the corresponding RAW_VALUE_ALTERNATIVE<br />

–– in the ADU description was BYTE_<strong>ST</strong>REAM<br />

–– EXCEPTIONS:<br />

–– ADU_TYPE_MISMATCH<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

283 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE on this index is not BYTE_<strong>ST</strong>REAM<br />

procedure SET_BINARY_BUFFER(ADU : in out T_ADU;<br />

BUFFER : in T_BINARY_BUFFER);<br />

–– DESCRIPTION<br />

–– Writes the binary data to the unstructured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not UN<strong>ST</strong>RUCTURED<br />

–– SIZE_ERROR<br />

–– The size of the buffer differs from the binary<br />

–– buffer size of the ADU<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

284 von/of: 662<br />

procedure SET_CCSDS_PACKET(ADU : in out T_ADU;<br />

PACKET : in ADT_CCSDS_PACKET.T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– Writes a complet CCSDS packet to the ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not CCSDS_PACKET<br />

–––––––––––––––––––––<br />

–– Read Operations<br />

–––––––––––––––––––––<br />

function IS_DATA_INTERRUPTION(ADU : in T_ADU) return BOOLEAN;<br />

–– DESCRIPTION<br />

–– Returns TRUE if the DATA_INTERRUPR flag is set,<br />

–– FALSE otherwise<br />

–– EXCEPTIONS<br />

function ID(ADU: in T_ADU) return MPS_DEFINITIONS.SID;<br />

–– DESCRIPTION<br />

–– Get the Identifier of the ADU<br />

–– EXCEPTIONS<br />

function LOCAL_TIME_TAG(ADU: in T_ADU) return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

function SMT_TIME_TAG(ADU: in T_ADU) return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

–– DESCRIPTION<br />

–– Get the time tag of the ADU<br />

–– EXCEPTIONS<br />

function SEQUENCE_NUMBER(ADU: in T_ADU) return NATURAL;<br />

–– DESCRIPTION<br />

–– Get the sequence number of the ADU<br />

–– EXCEPTIONS<br />

function SAS_NAME(ADU: in T_ADU) return VICOS_DEFINITIONS.T_SAS_NAME;<br />

–– DESCRIPTION


Space Infrastructure<br />

–– Get the SAS Name of the ADU<br />

–– EXCEPTIONS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

285 von/of: 662<br />

function ALTERNATIVE(ADU : in T_ADU) return VICOS_DEFINITIONS.T_ADU_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– Get the alternative of the ADU<br />

–– EXCEPTIONS<br />

function NBR_RAW_VALUES(adu : in t_adu) return T_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

–– DESCRIPTION<br />

–– Get the number of raw values contained in the structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

function BINARY_BUFFER_SIZE(ADU : in T_ADU) return T_BINARY_BUFFER_SIZE;<br />

–– DESCRIPTION<br />

–– Get the size of the binary data from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not UN<strong>ST</strong>RUCTURED<br />

function RAW_VALUE(ADU : in T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS) return<br />

NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

–– DESCRIPTION<br />

–– Get a raw value from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE is not U_INT<br />

function RAW_VALUE(ADU : in T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS) return NUMERIC_TYPES.INTEGER32;<br />

–– DESCRIPTION<br />

–– Get a raw value from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE is not INT<br />

function RAW_VALUE(ADU : in T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS) return<br />

NUMERIC_TYPES.SINGLE_FLOAT;<br />

–– DESCRIPTION<br />

–– Get a raw value from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE is not FLOAT_EGSE<br />

function RAW_VALUE(ADU : in T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS) return <strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– Get a raw value from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE is not BYTE_<strong>ST</strong>REAM<br />

procedure GET_RAW_VALUE(ADU : in T_ADU;<br />

INDEX : in T_NBR_<strong>ST</strong>RUCTURED_ITEMS;<br />

LENGTH : out NATURAL;<br />

VALUE : in out MPS_DEFINITIONS.T_RAW_<strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– Get a raw value from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

–– RAW_VALUE_TYPE_MISMATCH<br />

–– The RAW_VALUE is not BYTE_<strong>ST</strong>REAM<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

286 von/of: 662<br />

–– new raw_value operations<br />

function RAW_UN<strong>ST</strong>RUCTURED_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

NUMBER_OF_BITS : in NATURAL) return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function RAW_UN<strong>ST</strong>RUCTURED_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

NUMBER_OF_BITS : in NATURAL) return NUMERIC_TYPES.INTEGER32;<br />

function RAW_UN<strong>ST</strong>RUCTURED_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL) return NUMERIC_TYPES.SINGLE_FLOAT;<br />

procedure GET_RAW_UN<strong>ST</strong>RUCTURED_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

NUMBER_OF_BYTES : in NATURAL;<br />

VALUE : in out MPS_DEFINITIONS.T_RAW_<strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– Get a raw value from an unstructured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not UN<strong>ST</strong>RUCTURED<br />

–– DATA_LENGTH_ERROR<br />

–– raised if the offset + the length of the value is<br />

–– exceeding the length of the packet


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– new raw_value operations<br />

function RAW_CCSDS_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

NUMBER_OF_BITS : in NATURAL;<br />

PACKET_PART : in ADT_CCSDS_PACKET.T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

function RAW_CCSDS_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

NUMBER_OF_BITS : in NATURAL;<br />

PACKET_PART : in ADT_CCSDS_PACKET.T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.INTEGER32;<br />

function RAW_CCSDS_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

PACKET_PART : in ADT_CCSDS_PACKET.T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA)<br />

return NUMERIC_TYPES.SINGLE_FLOAT;<br />

procedure GET_RAW_CCSDS_VALUE<br />

(ADU : in T_ADU;<br />

BIT_LOCATION : in NATURAL;<br />

NUMBER_OF_BYTES : in NATURAL;<br />

VALUE : in out MPS_DEFINITIONS.T_RAW_<strong>ST</strong>RING;<br />

PACKET_PART : in ADT_CCSDS_PACKET.T_PACKET_PART<br />

:= ADT_CCSDS_PACKET.DATA);<br />

–– DESCRIPTION<br />

–– Get a raw value from a CCSDS ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not CCSDS<br />

–– DATA_LENGTH_ERROR<br />

–– raised if the offset + the length of the value is<br />

–– exceeding the length of the packet<br />

function RAW_VALUE_TYPE(ADU : in T_ADU; INDEX : T_NBR_<strong>ST</strong>RUCTURED_ITEMS)<br />

return VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– Get a raw value type from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not <strong>ST</strong>RUCTURED<br />

–– INDEX_ERROR<br />

–– The index is not in the range 1 .. NBR_RAW_VALUES(ADU)<br />

procedure GET_BINARY_BUFFER(ADU : in T_ADU;<br />

BUFFER : in out T_BINARY_BUFFER);<br />

–– DESCRIPTION<br />

–– Get the binary data from a structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not UN<strong>ST</strong>RUCTURED<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

287 von/of: 662


Space Infrastructure<br />

–– SIZE_ERROR<br />

–– The size of the buffer differs from the binary<br />

–– buffer size of the ADU<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

288 von/of: 662<br />

function CCSDS_PACKET(ADU : in T_ADU) return ADT_CCSDS_PACKET.T_CCSDS_PACKET;<br />

–– DESCRIPTION<br />

–– Get a complete CCSDS packet from a<br />

–– structured ADU<br />

–– EXCEPTIONS<br />

–– ADU_TYPE_MISMATCH<br />

–– The ADU alternative is not CCSDS_PACKET<br />

procedure DEALLOCATE(ADU : in out T_A_ADU);<br />

–– DESCRIPTION<br />

–– free memory allocated by new(T_ADU)<br />

–– EXCEPTIONS<br />

––<br />

–––––––––––––––––––––––<br />

–– packing and unpacking operations<br />

–––––––––––––––––––––––<br />

procedure PACK(ADU : in T_ADU;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

–– Pack an ADU into a T_BLOCK; The block must have been<br />

–– initialised before<br />

–– EXCEPTIONS<br />

procedure UNPACK(BLOCK : in out ADT_PACKING.T_BLOCK;<br />

ADU : out T_ADU);<br />

–– DESCRIPTION<br />

–– Unpack a block into an ADU<br />

–– EXCEPTIONS<br />

procedure UNPACK2(BLOCK : in out ADT_PACKING.T_BLOCK;<br />

ADU : in out T_ADU);<br />

–– DESCRIPTION<br />

–– Unpack a block into an ADU<br />

–– Defining the ADU as –in out– parameter allows more efficient<br />

–– unpacking (on HP at least: suppress additional heap usage or<br />

–– memory copy)<br />

–– EXCEPTIONS<br />

–––––––––––––––––––––<br />

–– Exceptions<br />

–––––––––––––––––––––<br />

INDEX_ERROR : exception;<br />

ADU_TYPE_MISMATCH : exception;<br />

SIZE_ERROR : exception;<br />

RAW_VALUE_TYPE_MISMATCH : exception;<br />

DATA_LENGTH_ERROR : exception;<br />

–––––––––––––––––––––<br />

–– Private Part<br />

–––––––––––––––––––––


Space Infrastructure<br />

private<br />

subtype T_POSITION is NUMERIC_TYPES.INTEGER16;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_ITEM is record<br />

POSITION : T_POSITION := 0;<br />

BYTE_PAD1 : NUMERIC_TYPES.UNSIGNED_INTEGER8; –– pad to fill gap<br />

RAW_TYPE : VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES :=<br />

VICOS_DEFINITIONS.UNDEFINED;<br />

end record;<br />

for T_ITEM use record<br />

at mod 2;<br />

POSITION at 0 range 0 .. 15;<br />

BYTE_PAD1 at 2 range 0 .. 7;<br />

RAW_TYPE at 3 range 0 .. 7;<br />

end record;<br />

ITEM_SIZE : constant := 4;<br />

for T_ITEM’SIZE use ITEM_SIZE * 8;<br />

type T_TABLE is array(T_NBR_<strong>ST</strong>RUCTURED_ITEMS range ) of T_ITEM;<br />

–– pragma PACK(T_TABLE);<br />

MAX_RAW_VALUE_SIZE : constant INTEGER :=<br />

VICOS_DEFINITIONS.MAX_BYTE_<strong>ST</strong>REAM_LENGTH + 4;<br />

–– length field<br />

type T_ELEMENT is array(1 .. MAX_RAW_VALUE_SIZE) of<br />

NUMERIC_TYPES.UNSIGNED_INTEGER8;<br />

–– pragma PACK(T_ELEMENT);<br />

type T_RAW_BLOCK is array(NATURAL range ) of<br />

NUMERIC_TYPES.UNSIGNED_INTEGER8;<br />

–– pragma PACK(T_RAW_BLOCK);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

289 von/of: 662<br />

type T_ADU(ALTERNATIVE : VICOS_DEFINITIONS.T_ADU_ALTERNATIVES :=<br />

VICOS_DEFINITIONS.UNDEFINED) is record<br />

ID : MPS_DEFINITIONS.SID;<br />

SAS_NAME : VICOS_DEFINITIONS.T_SAS_NAME;<br />

TIME_TAG_LT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME :=<br />

<strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

TIME_TAG_SMT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME :=<br />

<strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

SEQUENCE_NUMBER : INTEGER := 0;<br />

INTERRUPTION_FLAG : BOOLEAN := FALSE;<br />

BYTE_PAD1 : NUMERIC_TYPES.UNSIGNED_INTEGER8; –– pad to mod 4 address.<br />

required on HP<br />

BYTE_PAD2 : NUMERIC_TYPES.UNSIGNED_INTEGER8;<br />

case ALTERNATIVE is<br />

when VICOS_DEFINITIONS.<strong>ST</strong>RUCTURED =><br />

BLOCK : T_RAW_BLOCK(1 .. ADT_ADU_DESCRIPTION.MAX_BINARY_BUFFER_SIZE);<br />

BLOCK_LENGTH : INTEGER := 0;<br />

TABLE : T_TABLE(1 .. ADT_ADU_DESCRIPTION.MAX_NBR_<strong>ST</strong>RUCTURED_ITEMS);<br />

TABLE_LENGTH : INTEGER := 0;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

290 von/of: 662<br />

BYTE_PAD3 : NUMERIC_TYPES.UNSIGNED_INTEGER8; –– pad to mod 4 size<br />

BYTE_PAD4 : NUMERIC_TYPES.UNSIGNED_INTEGER8;<br />

when VICOS_DEFINITIONS.UN<strong>ST</strong>RUCTURED =><br />

BYTE_BUFFER : T_BINARY_BUFFER(1 ..<br />

ADT_ADU_DESCRIPTION.MAX_BINARY_BUFFER_SIZE);<br />

BUFFER_LENGTH : NATURAL := 33;<br />

when VICOS_DEFINITIONS.CCSDS_PACKET =><br />

PACKET : ADT_CCSDS_PACKET.T_CCSDS_PACKET;<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

–– removes implicit components on HP, genereates warning on SunAda compiler.<br />

–– Ignore warning! this makes the byte pads neccessary<br />

pragma IMPROVE(SPACE, ON => T_ADU);<br />

for T_ADU use<br />

record<br />

at mod 4;<br />

ALTERNATIVE at 64 range 0 .. 7;<br />

ID at 0 range 0 .. 31;<br />

SAS_NAME at 4 range 0 .. 191;<br />

TIME_TAG_LT at 28 range 0 .. 127;<br />

TIME_TAG_SMT at 44 range 0 .. 127;<br />

SEQUENCE_NUMBER at 60 range 0 .. 31;<br />

INTERRUPTION_FLAG at 65 range 0 .. 7;<br />

BYTE_PAD1 at 66 range 0 .. 7;<br />

BYTE_PAD2 at 67 range 0 .. 7;<br />

–– structured<br />

BLOCK at 476 range 0 .. 32815;<br />

BLOCK_LENGTH at 68 range 0 .. 31;<br />

TABLE at 76 range 0 .. 3199;<br />

TABLE_LENGTH at 72 range 0 .. 31;<br />

BYTE_PAD3 at 4578 range 0 .. 7;<br />

BYTE_PAD4 at 4579 range 0 .. 7;<br />

–– unstructured<br />

BYTE_BUFFER at 72 range 0 .. 32815;<br />

BUFFER_LENGTH at 68 range 0 .. 31;<br />

–– ccsds_packet<br />

PACKET at 68 range 0 .. 32815;<br />

end record;<br />

ADU_SIZE : constant := 1145 * 4;<br />

for T_ADU’SIZE use ADU_SIZE * 8;<br />

end ADT_ADU;


Space Infrastructure<br />

7.6.7 ADT GDU Description<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

291 von/of: 662<br />

A GDU Description is the set of information describing the format of the data send by VICOS towards front–end<br />

equipment or UUT. It is normally predefined in the mission/configuration database, and loaded from the corresponding<br />

end–item, in test system configuration and set–up phase. It is then interpreted by VICOS to elaborate<br />

a GDU to be supplied to the dedicated SAS at test execution time.<br />

There are four different classes of GDU descriptions, depending on the target device to be triggered, which are<br />

covered by this ADT :<br />

– a analog stimulus description allows to send data via an analog output line;<br />

– a discrete stimulus description allows to send data via an output line;<br />

– a telecommand description allows to send data via the ground/onboard link;<br />

A GDU Description is a composite type containing the following attributes :<br />

– an GDU description alternative, which modifies the structure of this item;<br />

– an database sid, which is the identifier allocated by the MPS when the corresponding end–item is<br />

created;<br />

– an SAS’s short name i.e. the one in charge of the data transfer (see EGSE Software);<br />

– a physical address, indicating where to generate the data (see Physical Address);<br />

– a number of retries, indicating the number of times the GDU can be resend, in case of previous<br />

transmission failure;<br />

– a priority indicating, if they are buffered, the order in which GDU are to be sent;<br />

– an inhibiting flag indicating whether the GDU has to be explicitly unlocked before sending;<br />

– a default value, if GDU description alternative is <strong>ST</strong>IMULI;<br />

– a TC packet, if GDU description alternative is PREDEFINED_TC;<br />

– a formal parameter list, describing the authorised nature of the actual parameters, which values will<br />

be placed in the GDU.<br />

– a command verification, specifying a value for a TM parameter (measurement) to be verified after<br />

sending as well as associated delays.<br />

A Table type is also provided, which allows to define indexed lists of this ADT.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

292 von/of: 662<br />

––<br />

–– ADT_GDU_DESCRIPTION spec<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

––<br />

–– Provides definition of a GDU description as an ADT<br />

––<br />

–– This ADT describes a stimulus / a packet to be generated by VICOS as a<br />

–– general description of an Generation Data Unit (GDU)<br />

––<br />

–– Due to used structures from other ADTs / MPS_DEFINITIONS, the ADT structure<br />

–– provides a dynamicly allocated datatype !<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : ADT_GDU_DESCRIPTION<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 /Alsys Ada 5.5.1<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS: –<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––<br />

–– #IRN 8085: TC Verification<br />

–– Author: P.Hartmann<br />

–– Date: 25.08.99<br />

––<br />

–– #IRN 8038: allow for 255 parameters in CCSDS and binary packets<br />

–– Author: P.Hartmann<br />

–– Date: 05.11.98<br />

––<br />

–– #IRN 6020/B: modify bynary packet” interface and SPR 2888<br />

–– Author: P.Hartmann<br />

–– Date: 09.04.97<br />

––<br />

–– #IRN 6020: Add new GDU alternative ”binary packet”<br />

–– Author: P.Athmann<br />

–– Date: 8.3.97<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V16.1 at Central Repository at DASA RI<br />

–– creator: tommy (on host aiv_3)<br />

–– creation date: 09.12.96 17:13:58<br />

–– comment:<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V5.3 at Central Repository at DASA RI<br />

–– creator: grotheer (on host mps_s)<br />

–– creation date: 21.11.96 16:41:26<br />

–– comment:<br />

–– COL–RIBRE–IRN–<strong>CGS</strong>–4013: T_ALLOWED_GDU_PARAM_TYPES extended, ENG_VALUE_UNIT<br />

added<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

293 von/of: 662<br />

–– V5.2 at Central Repository at DASA RI<br />

–– creator: grotheer (on host ada_s)<br />

–– creation date: 23.09.96 17:51:49<br />

–– comment:<br />

–– COL–RIBRE–IRN–<strong>CGS</strong>–4013 decalibration added<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2s)<br />

–– creation date: 15.06.95 15:48:22<br />

–– comment:<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2s)<br />

–– creation date: 15.06.95 09:44:33<br />

–– comment:<br />

–– Build 2 basesline, PIRN 3043 1/D<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2–3)<br />

–– creation date: 01.06.95 11:07:52<br />

–– comment:<br />

–– Parameter ALTYRNATIVE in procedure SET_ALTERANTIVE renamed to ALTERNATIVE<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.2 at DASA <strong>CGS</strong> engineering<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 22.05.95 14:00:00<br />

–– comment:<br />

–– Build 2 baseline, PIRN 3043<br />

––<br />

–– V3.1 at Central Repository V2.2 (<strong>CGS</strong> V3 development)<br />

–– creator: grotheer (on host vicos2s)<br />

–– creation date: 29.07.94 14:22:41<br />

–– comment:<br />

–– COL–ERN–VIC–IRN–2125: PACK/UNPACK added<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V2.3 at ERNO ; VICOS development<br />

–– creator: maron (on host vicos_6)<br />

–– creation date: 20.07.92 15:33:08<br />

–– VCS–spadm & COL–MBER–ZU1–TN–0026/92<br />

–– V2.2 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 10.07.92 17:27:11<br />

–– Update ac.. to VCS SPADM DNs<br />

–– V2.1 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_s)<br />

–– creation date: 30.06.92 15:57:27<br />

–– added Standard Header by command create_file<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with NUMERIC_TYPES;<br />

with VICOS_DEFINITIONS;<br />

with MPS_DEFINITIONS;<br />

with ADT_PACKING;<br />

with ADT_PHYSICAL_ADDRESS;<br />

with ADT_CCSDS_PACKET;<br />

with CALIBRATION;<br />

with ADT_ENGINEERING_VALUE;


Space Infrastructure<br />

package ADT_GDU_DESCRIPTION is<br />

–––––––––––––––––––––––––––––<br />

–– public types and constants<br />

–––––––––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

294 von/of: 662<br />

SCCSID_ADS : constant <strong>ST</strong>RING := ”@(#) vcs_adt_gdu_description_.a<br />

/main/solaris–port/cgs_4.0/cgs_4.2/cgs_4.3/3 12/08/99 14:50:38@(#)”;<br />

MAX_GDU_PARAMETER : constant integer:= 255;<br />

–– max number of parameters for<br />

–– GDU of type PREDEFINED_TC<br />

–– GDU of type BINARY_PACKET<br />

MAX_BINARY_PACKET_SIZE : constant integer := 4096;<br />

subtype T_ALLOWED_GDU_PARAM_TYPES is MPS_DEFINITIONS.T_SW_TYPE<br />

range MPS_DEFINITIONS.<strong>ST</strong>RING_TYPE .. MPS_DEFINITIONS.LONG_REAL_TYPE;<br />

type T_GDU_PARAMETER<br />

(SW_TYPE : T_ALLOWED_GDU_PARAM_TYPES := MPS_DEFINITIONS.INTEGER_TYPE;<br />

OPTIONAL : BOOLEAN := FALSE) is private;<br />

type T_GDU_DESCRIPTION (ALTERNATIVE : VICOS_DEFINITIONS.T_GDU_ALTERNATIVES<br />

:= VICOS_DEFINITIONS.UNDEFINED) is private;<br />

type T_A_GDU_DESCRIPTION is access T_GDU_DESCRIPTION;<br />

type T_CHECK<br />

is (EQUAL, NOT_EQUAL, LESS, GREATER, LESS_EQUAL, GREATER_EQUAL, IN_RANGE);<br />

type T_COMMAND_VERIFICATION is<br />

record<br />

SID : MPS_DEFINITIONS.SID;<br />

CHECK : T_CHECK;<br />

VALUE_1 : ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE;<br />

VALUE_2 : ADT_ENGINEERING_VALUE.T_SCALAR_ENGINEERING_VALUE;<br />

end record;<br />

–––––––––––––––––––––––––––––––––––<br />

–– GDU Parameter: Write Operations<br />

–––––––––––––––––––––––––––––––––––<br />

procedure SET_PARAMETER_TYPE( GDU_PARAM : in out T_GDU_PARAMETER;<br />

PARAM_TYPE: in T_ALLOWED_GDU_PARAM_TYPES );<br />

–– DESCRIPTION<br />

–– Sets the type of a GDU parameter<br />

–– EXCEPTIONS<br />

–– GDU_DESCRIPTION_IS_CON<strong>ST</strong>RAINED<br />

procedure SET_OPTIONAL( GDU_PARAM: in out T_GDU_PARAMETER;<br />

OPTIONAL : in BOOLEAN := FALSE );<br />

–– DESCRIPTION<br />

–– Sets the optional / mandatory flag of a GDU parameter<br />

–– EXCEPTIONS<br />

–– GDU_DESCRIPTION_IS_CON<strong>ST</strong>RAINED<br />

procedure SET_BIT_LENGTH( GDU_PARAM : in out T_GDU_PARAMETER;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

NUMBER_OF_BITS: in NATURAL );<br />

–– DESCRIPTION<br />

–– Sets the number of bits to be replaced by the parameter<br />

–– (i.e. in the CCSDS packet data part)<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_BIT_OFFSET( GDU_PARAM: in out T_GDU_PARAMETER;<br />

OFFSET : in NATURAL );<br />

–– DESCRIPTION<br />

–– Sets the offset to the beginning of the data fiels for bits to be<br />

–– replaced by the parameter<br />

–– (i.e. in the CCSDS packet data part)<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_MODE( GDU_PARAM: in out T_GDU_PARAMETER;<br />

MODE : in MPS_DEFINITIONS.T_FORMAL_PARAMETER_MODE );<br />

–– DESCRIPTION<br />

–– Sets the mode (IN, IN_OUT, OUT) of the formal GDU parameter<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_NAME( GDU_PARAM: in out T_GDU_PARAMETER;<br />

NAME : in MPS_DEFINITIONS.<strong>ST</strong>ATIC_<strong>ST</strong>RING80 );<br />

–– DESCRIPTION<br />

–– Sets the name of the formal GDU parameter<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_DECALIBRATION_REQUIRED( GDU_PARAM: in out T_GDU_PARAMETER;<br />

REQUIRED : in BOOLEAN := TRUE );<br />

–– DESCRIPTION<br />

–– Sets the indication, if a parameter’s actual value<br />

–– is to be decalibrated to a raw format before replacement<br />

–– is done<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_DECALIBRATION<br />

(<br />

GDU_PARAM : in out T_GDU_PARAMETER;<br />

DECALIB_INFO: in CALIBRATION.CALIBRATION_DECALIBRATION_TYPE<br />

);<br />

–– DESCRIPTION<br />

–– Sets the information, how decalibration is to be done<br />

–– Info is to be set as expected for the CALIBRATION package<br />

–– EXCEPTIONS<br />

procedure SET_DEFAULT_VALUE<br />

(GDU_PARAM: in out T_GDU_PARAMETER;<br />

SW_VALUE: in MPS_DEFINITIONS.T_SW_SCALAR_VALUE);<br />

–– DESCRIPTION<br />

–– sets the default value to be applied for the parameter, if the<br />

–– parameter is optional, and no value has been given in the command<br />

–– EXCEPTIONS<br />

–– INVALID_TYPE: Parameter is not optional or SW_TYPE’s not equal<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

295 von/of: 662


Space Infrastructure<br />

–––––––––––––––––––––––––––––––––––<br />

–– GDU Parameter: Read Operations<br />

–––––––––––––––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function PARAMETER_TYPE (GDU_PARAM: T_GDU_PARAMETER)<br />

return T_ALLOWED_GDU_PARAM_TYPES;<br />

–– DESCRIPTION<br />

–– Returns the type of a GDU parameter<br />

–– EXCEPTIONS<br />

function OPTIONAL (GDU_PARAM: T_GDU_PARAMETER)<br />

return BOOLEAN;<br />

–– DESCRIPTION<br />

–– Returns the optional / mandatory flag of a GDU parameter<br />

–– EXCEPTIONS<br />

function BIT_LENGTH (GDU_PARAM: T_GDU_PARAMETER)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– Returns the number of bits to be replaced by the parameter<br />

–– (i.e. in the CCSDS packet data part)<br />

–– EXCEPTIONS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

296 von/of: 662<br />

function BIT_OFFSET (GDU_PARAM: T_GDU_PARAMETER)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– Returns the offset to the beginning of the data fiels for bits to be<br />

–– replaced by the parameter<br />

–– (i.e. in the CCSDS packet data part)<br />

–– EXCEPTIONS<br />

function MODE (GDU_PARAM: T_GDU_PARAMETER)<br />

return MPS_DEFINITIONS.T_FORMAL_PARAMETER_MODE;<br />

–– DESCRIPTION<br />

–– Returns the mode (IN, IN_OUT, OUT) of the formal GDU parameter<br />

–– EXCEPTIONS<br />

function NAME (GDU_PARAM: T_GDU_PARAMETER)<br />

return MPS_DEFINITIONS.<strong>ST</strong>ATIC_<strong>ST</strong>RING80;<br />

–– DESCRIPTION<br />

–– Sets the name of the formal GDU parameter<br />

–– EXCEPTIONS<br />

function DECALIBRATION_REQUIRED (GDU_PARAM: T_GDU_PARAMETER)<br />

return BOOLEAN;<br />

–– DESCRIPTION<br />

–– Returns the indication, if a parameter’s actual value<br />

–– is to be decalibrated to a raw format before replacement<br />

–– is done<br />

–– EXCEPTIONS<br />

procedure READ_DECALIBRATION<br />

(GDU_PARAM: in T_GDU_PARAMETER;<br />

DECALIB_INFO: out CALIBRATION.CALIBRATION_DECALIBRATION_TYPE);<br />

–– DESCRIPTION<br />

–– Returns the information, how decalibration is to be done<br />

–– Info is to be set as expected for the CALIBRATION package<br />

–– Note: DECALIB_INFO is a dynamically created structure which<br />

–– must be destroyed after use (see CALIBRATION package)<br />

–– EXCEPTIONS


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function DEFAULT_VALUE<br />

(GDU_PARAM: T_GDU_PARAMETER)<br />

return MPS_DEFINITIONS.T_SW_SCALAR_VALUE;<br />

–– DESCRIPTION<br />

–– Returns the default value to be applied for the parameter, if the<br />

–– parameter is optional, and no value has been given in the command<br />

–– EXCEPTIONS<br />

–– INVALID_TYPE: Parameter is not optional<br />

––––––––––––––––––––––––––––––––––––<br />

–– GDU Description: Write Operations<br />

––––––––––––––––––––––––––––––––––––<br />

procedure SET_ALTERNATIVE (<br />

GDU_DESCRIPTION : in out T_GDU_DESCRIPTION;<br />

ALTERNATIVE: in VICOS_DEFINITIONS.T_GDU_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– Sets the alternative of a GDU description<br />

–– EXCEPTIONS<br />

procedure SET_SID (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

DB_SID: in MPS_DEFINITIONS.SID);<br />

–– DESCRIPTION<br />

–– Sets the SID of the GDU_Description<br />

–– EXCEPTIONS<br />

procedure SET_SAS_NAME (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

SAS: in VICOS_DEFINITIONS.T_APPLICATION_NAME);<br />

–– DESCRIPTION<br />

–– Sets the SAS name in the GDU description<br />

–– EXCEPTIONS<br />

procedure SET_PHYSICAL_ADDRESS (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

PHYSICAL_ADDRESS: in ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS);<br />

–– DESCRIPTION<br />

–– Sets the physical address of the GDU<br />

–– EXCEPTIONS<br />

procedure SET_RETRIES (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

RETRIES: in NATURAL);<br />

–– DESCRIPTION<br />

–– Sets the number of retries applicable for the GDU<br />

–– EXCEPTIONS<br />

procedure SET_INHIBITED (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION);<br />

–– DESCRIPTION<br />

–– Sets the flag that the GDU is currently inhibited for<br />

–– sending<br />

–– EXCEPTIONS<br />

procedure RESET_INHIBITED (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

297 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– Resets the flag that the GDU is currently inhibited for<br />

–– sending<br />

–– EXCEPTIONS<br />

procedure SET_PRIVATE_ID (<br />

GDU_DESCRIPTION : in out T_GDU_DESCRIPTION;<br />

PRIVATE_ID : in VICOS_DEFINITIONS.T_PRIVATE_ID);<br />

–– DESCRIPTION<br />

–– Sets the private ID an SAS can use to obtain the type of<br />

–– GDU description without knowing the SID<br />

–– EXCEPTIONS<br />

procedure SET_PARAMETER_GENERAL_DESCRIPTION (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

AT_INDEX: in POSITIVE;<br />

PARAM: in T_GDU_PARAMETER);<br />

–– DESCRIPTION<br />

–– Sets the formal parameter definition at the specified position.<br />

–– EXCEPTIONS<br />

–– INVALID_INDEX:<br />

–– the value AT_INDEX addresses an undefined parameter:<br />

–– ANALOG_<strong>ST</strong>IMULUS : 1<br />

–– DISCRETE_<strong>ST</strong>IMULUS : 1<br />

–– CCSDS_PACKET : MAX_GDU_PARAMETER<br />

–– GDU_TYPE_MISMATCH:<br />

–– the type in the GDU_DESCRIPTION is not set to<br />

–– CCSDS_PACKET or ANALOG_<strong>ST</strong>IMULUS or DISCRETE_<strong>ST</strong>IMULUS<br />

procedure SET_CCSDS_PACKET_DESCRIPTION (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

CCSDS_PACKET: in ADT_CCSDS_PACKET.T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– Stores a TC packet into the GDU_DESCRIPTION<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the type is not CCSDS_PACKET<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

298 von/of: 662<br />

procedure SET_BINARY_PACKET_LENGTH (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

LENGTH : in NATURAL);<br />

–– DESCRIPTION<br />

–– Set the number of bytes applicable for the length of binary packet within the GDU<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not BINARY_PACKET<br />

procedure SET_BINARY_PACKET (<br />

GDU_DESCRIPTION: in out T_GDU_DESCRIPTION;<br />

BINARY_PACKET: in NUMERIC_TYPES.BYTE_ARRAY);<br />

–– DESCRIPTION<br />

–– Stores a binary packet into the GDU_DESCRIPTION<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the alternative is not BINARY_PACKET<br />

–––––––––––––––––––––––––––<br />

–– TC Verification<br />

–––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_TC_VERIFICATION (<br />

GDU_DESCRIPTION : in out T_GDU_DESCRIPTION;<br />

ACTIVATION_DELAY : in DURATION;<br />

VERIFICATION_TIMEOUT : in DURATION;<br />

NUMBER_ITEMS : in NATURAL);<br />

–– DESCRIPTION<br />

–– Stores the timing information and the number of verifications<br />

–– for the TC verification<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

299 von/of: 662<br />

procedure SET_TC_VERIFICATION_ITEM (<br />

GDU_DESCRIPTION : in out T_GDU_DESCRIPTION;<br />

AT_INDEX : in POSITIVE;<br />

MEASUREMENT : in MPS_DEFINITIONS.SID;<br />

CHECK : in T_CHECK;<br />

VALUE_1 : in ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE;<br />

VALUE_2 : in ADT_ENGINEERING_VALUE.T_SCALAR_ENGINEERING_VALUE);<br />

–– DESCRIPTION<br />

–– Stores one item of the TC verification at the index AT_INDEX<br />

–– The operation SET_TC_VERIFICATION must have been called before<br />

–– EXCEPTIONS<br />

–– INVALID_INDEX : AT_INDEX is bigger than the NUMBER_ITEMS specified<br />

–– during the operation SET_TC_VERIFICATION<br />

–––––––––––––––––––––––––––<br />

–– Read Operations<br />

–––––––––––––––––––––––––––<br />

function ALTERNATIVE (GDU_DESCRIPTION : in T_GDU_DESCRIPTION)<br />

return VICOS_DEFINITIONS.T_GDU_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function returns the GDU alternative of<br />

–– the specified GDU description variable<br />

–– EXCEPTION<br />

function DB_SID (GDU_DESCRIPTION: in T_GDU_DESCRIPTION)<br />

return MPS_DEFINITIONS.SID;<br />

–– DESCRIPTION<br />

–– returns the SID of the GDU_DESCRIPTION<br />

–– EXCEPTIONS<br />

function PRIVATE_ID (GDU_DESCRIPTION: in T_GDU_DESCRIPTION)<br />

return VICOS_DEFINITIONS.T_PRIVATE_ID;<br />

–– DESCRIPTION<br />

–– returns the private ID an SAS can use to obtain the type of<br />

–– GDU description without knowing the SID<br />

–– EXCEPTIONS<br />

function SAS_NAME (GDU_DESCRIPTION: in T_GDU_DESCRIPTION)<br />

return VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

–– DESCRIPTION<br />

–– returns the SAS address of the GDU<br />

–– EXCEPTIONS<br />

function PHYSICAL_ADDRESS (GDU_DESCRIPTION: in T_GDU_DESCRIPTION)<br />

return ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

–– DESCRIPTION<br />

–– returns the physical address of the GDU<br />

–– EXCEPTIONS<br />

–– IS_UNDEFINED<br />

–– – no physical address has been defined


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function RETRIES (GDU_DESCRIPTION: in T_GDU_DESCRIPTION) return NATURAL;<br />

–– DESCRIPTION<br />

–– returns the number of retries of the GDU<br />

–– EXCEPTIONS<br />

function NUMBER_OF_PARAMETERS (GDU_DESCRIPTION: in T_GDU_DESCRIPTION)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– returns the number of parameters defined for the GDU<br />

–– EXCEPTIONS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

300 von/of: 662<br />

function PARAMETER_GENERAL_DESCRIPTION (OF_GDU_DESCRIPTION: in T_GDU_DESCRIPTION;<br />

AT_INDEX: in POSITIVE)<br />

return T_GDU_PARAMETER;<br />

–– DESCRIPTION<br />

–– returns the parameter AT_INDEX from a GDU desription<br />

–– EXCEPTIONS<br />

–– INVALID_INDEX: the value AT_INDEX addresses an undefined parameter<br />

–– <strong>ST</strong>ORAGE_ERROR: there is a heap overrun<br />

function IS_ENABLED(GDU_DESCRIPTION : in T_GDU_DESCRIPTION)<br />

return BOOLEAN;<br />

–– DESCRIPTION<br />

–– returns TRUE if the GDU is enabled for sending<br />

–– EXCEPTIONS<br />

function CCSDS_PACKET_DESCRIPTION (GDU_DESCRIPTION: in T_GDU_DESCRIPTION)<br />

return ADT_CCSDS_PACKET.T_CCSDS_PACKET;<br />

–– DESCRIPTION<br />

–– returns the CCSDS packet description<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the type given is not CCSDS_PACKET<br />

procedure GET_CCSDS_PACKET_DESCRIPTION (<br />

GDU_DESCRIPTION: in T_GDU_DESCRIPTION;<br />

CCSDS_PACKET: in out ADT_CCSDS_PACKET.T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– returns the CCSDS packet description<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the type given is not CCSDS_PACKET<br />

function BINARY_PACKET_LENGTH (GDU_DESCRIPTION: in T_GDU_DESCRIPTION) return NATURAL;<br />

–– DESCRIPTION<br />

–– returns the number of bytes denoting the length of the binary packet<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the alternative of the GDU Desscription is not<br />

BINARY_PACKET<br />

procedure GET_BINARY_PACKET (GDU_DESCRIPTION : in T_GDU_DESCRIPTION;<br />

BINARY_PACKET : in out NUMERIC_TYPES.BYTE_ARRAY);<br />

–– DESCRIPTION<br />

–– returns the the contents of the binary packet<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the type given is not BINARY_PACKET<br />

–– CON<strong>ST</strong>RAINT_ERROR: the actual parameter BINARY_PACKET is not large enough<br />

–––––––––––––––––––––––––––<br />

–– TC Verification


Space Infrastructure<br />

–––––––––––––––––––––––––––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function NB_TC_VERIFICATION_ITEMS (GDU_DESCRIPTION : in T_GDU_DESCRIPTION)<br />

return NATURAL;<br />

–– DESCRIPTION<br />

–– returns the number of items of the TC verification<br />

procedure GET_TC_VERIFICATION_TIME (<br />

GDU_DESCRIPTION : in T_GDU_DESCRIPTION;<br />

ACTIVATION_DELAY : out DURATION;<br />

VERIFICATION_TIMEOUT : out DURATION);<br />

–– DESCRIPTION<br />

–– provides the timing information for the TC verification<br />

procedure GET_TC_VERIFICATION_ITEM (<br />

GDU_DESCRIPTION : in T_GDU_DESCRIPTION;<br />

AT_INDEX : in POSITIVE;<br />

TC_VERIF_ITEM : out T_COMMAND_VERIFICATION);<br />

–– DESCRIPTION<br />

–– provide the item of the TC verification at AT_INDEX.<br />

–– EXCEPTIONS<br />

–– INVALID_INDEX: the value AT_INDEX addresses an undefined item<br />

–––––––––––––––––––––––––––––<br />

–– pack and unpack operations<br />

–––––––––––––––––––––––––––––<br />

procedure PACK( VALUE : in T_GDU_DESCRIPTION ;<br />

BLOCK : in out ADT_PACKING.T_BLOCK );<br />

–– DESCRIPTION<br />

–– This procedure packs the specified GDU description<br />

–– variable into a continguous memory block.<br />

–– EXCEPTIONS<br />

procedure UNPACK( BLOCK : in out ADT_PACKING.T_BLOCK ;<br />

VALUE : out T_GDU_DESCRIPTION );<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a GDU description variable.<br />

–– EXCEPTIONS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

301 von/of: 662<br />

function SIZE_NEEDED (VALUE : T_GDU_DESCRIPTION)<br />

return ADT_PACKING.T_PACK_INDEX;<br />

–– DESCRIPTION<br />

–– This function calculates the actual size needed for packing the supplied<br />

–– VALUE<br />

–– EXCEPTIONS<br />

procedure DEALLOCATE(GDU_DESC : in out T_A_GDU_DESCRIPTION);<br />

–– DESCRIPTION<br />

–– free memory allocated for the GDU description declared as<br />

–– an access type<br />

–– EXCEPTIONS<br />

––<br />

procedure DEALLOCATE(GDU_DESC : in out T_GDU_DESCRIPTION);<br />

–– DESCRIPTION<br />

–– free memory allocated for the GDU description<br />

–– EXCEPTIONS


Space Infrastructure<br />

––<br />

–––––––––––––<br />

–– exceptions<br />

–––––––––––––<br />

GDU_TYPE_MISMATCH : exception;<br />

INVALID_TYPE : exception;<br />

INVALID_INDEX : exception;<br />

GDU_DESCRIPTION_IS_CON<strong>ST</strong>RAINED : exception;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

302 von/of: 662<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

private<br />

type T_GDU_PARAMETER<br />

(SW_TYPE : T_ALLOWED_GDU_PARAM_TYPES := MPS_DEFINITIONS.INTEGER_TYPE;<br />

OPTIONAL : BOOLEAN := FALSE) is<br />

record<br />

BIT_LENGTH : NATURAL;<br />

BIT_OFFSET : NATURAL;<br />

MODE : MPS_DEFINITIONS.T_FORMAL_PARAMETER_MODE;<br />

NAME : MPS_DEFINITIONS.<strong>ST</strong>ATIC_<strong>ST</strong>RING80;<br />

DECALIBRATION_REQUIRED : BOOLEAN := FALSE;<br />

–– indicates if for this parameter decalibration is required<br />

–– if not, the value of the actual parameter has to entered<br />

–– without modification into the GDU/packet<br />

DECALIBRATION : CALIBRATION.CALIBRATION_DECALIBRATION_TYPE;<br />

–– defines the decalibration for a parameter<br />

–– must conform to the parameter type<br />

case OPTIONAL is<br />

when FALSE => null;<br />

when TRUE => SW_VALUE: MPS_DEFINITIONS.T_SW_SCALAR_VALUE(SW_TYPE);<br />

–– holds the default value for an optional parameter<br />

end case ;<br />

end record;<br />

type T_GDU_PARAMETER_ACCESS is access T_GDU_PARAMETER;<br />

type T_GDU_PARAMETER_LI<strong>ST</strong> is array (1 .. MAX_GDU_PARAMETER)<br />

of T_GDU_PARAMETER_ACCESS;<br />

type T_COMMAND_VERIFICATION_ARRAY<br />

is array (INTEGER range ) of T_COMMAND_VERIFICATION;<br />

type T_A_COMMAND_VERIFICATION_ARRAY is access T_COMMAND_VERIFICATION_ARRAY;<br />

type T_GDU_DESCRIPTION (ALTERNATIVE : VICOS_DEFINITIONS.T_GDU_ALTERNATIVES<br />

:= VICOS_DEFINITIONS.UNDEFINED) is<br />

record<br />

DB_SID : MPS_DEFINITIONS.SID;<br />

PRIVATE_ID : VICOS_DEFINITIONS.T_PRIVATE_ID;<br />

SAS_ADDRESS : VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

INHIBITED : BOOLEAN; –– inhibited for sending<br />

RETRIES : NATURAL; –– number of retries in case of failures<br />

PHYSICAL_ADDRESS : ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

NUMBER_OF_PARAMETERS : NATURAL := 0;<br />

ACTIVATION_DELAY : DURATION := 0.0;<br />

VERIFICATION_TIMEOUT : DURATION := 0.0;<br />

COMMAND_VERIFICATION : T_A_COMMAND_VERIFICATION_ARRAY;<br />

case ALTERNATIVE is


Space Infrastructure<br />

when VICOS_DEFINITIONS.ANALOG_<strong>ST</strong>IMULUS =><br />

ANALOG_PARAMETER : T_GDU_PARAMETER;<br />

when VICOS_DEFINITIONS.DISCRETE_<strong>ST</strong>IMULUS =><br />

DISCRETE_PARAMETER : T_GDU_PARAMETER;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

when VICOS_DEFINITIONS.CCSDS_PACKET =><br />

DEFAULT_TC : ADT_CCSDS_PACKET.T_CCSDS_PACKET;<br />

FORMAL_PARAMETERS : T_GDU_PARAMETER_LI<strong>ST</strong> := (others => null);<br />

when VICOS_DEFINITIONS.BINARY_PACKET =><br />

PACKET_LENGTH : NATURAL;<br />

–– defines length of binary packet in bytes<br />

DEFAULT_PACKET : NUMERIC_TYPES.BYTE_ARRAY<br />

(1..MAX_BINARY_PACKET_SIZE);<br />

BINARY_PACKET_PARAMETERS : T_GDU_PARAMETER_LI<strong>ST</strong> := (others => null);<br />

when VICOS_DEFINITIONS.UNDEFINED =><br />

null;<br />

end case ;<br />

end record;<br />

end ADT_GDU_DESCRIPTION;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

303 von/of: 662


Space Infrastructure<br />

7.6.8 ADT GDU<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

304 von/of: 662<br />

An GDU is the standardized format in which any stimuli/TC is send by VICOS. It is a packet of stimulus values<br />

which are packed according to the list given in the corresponding GDU Description. GDUs are generated by<br />

VICOS and delivered to SASs which task is to interpret it for further propagation.<br />

A GDU Description is a composite type containing the following attributes :<br />

– a GDU sid,<br />

– a GDU alternative,<br />

– a time tag, indicating when the stimuli/TC have to be really sent;<br />

– a sequence number, which indicates the number of GDUs, of this type, already sent;<br />

– a priority indicating, if they are buffered, the order in which GDU are to be sent;<br />

– a number of retries, indicating the number of times the GDU can be resend, in case of previous<br />

transmission failure;<br />

– an SAS short name;<br />

– a physical address, indicating where to send the stimuli/TC (see Physical Address);<br />

– a TC packet, if GDU description alternative is PREDEFINED_TC;<br />

– a discrete value if GDU is of type DISCRETE_<strong>ST</strong>IMULI,<br />

– an analog value if GDU is of type ANALOG_<strong>ST</strong>IMULI.<br />

A Table type is also provided, which allows to define indexed lists of this ADT.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_GDU<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package is an abstract data type definition for GDUs<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : ADT_GDU<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 /Alsys Ada 5.5.1<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––<br />

–– #IRN 7062: replacing DOUBLE_FLOAT by SINGLE_FLOAT for ANALOG_<strong>ST</strong>IMULI<br />

–– Author: P.Hartmann<br />

–– Date: 27.01.97<br />

––<br />

–– #IRN 6020/B: interface for the ”bynary packet”<br />

–– Author: P.Hartmann<br />

–– Date: 09.04.97<br />

––<br />

–– #IRN 6020: Add new GDU alternative ”binary packet”<br />

–– Author: P.Athmann<br />

–– Date: 14.2.97<br />

––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Central Repository at DASA RI (<strong>CGS</strong> V3 development)<br />

–– creator: adt_1 (on host vicos2–3)<br />

–– creation date: 15.06.95 15:24:07<br />

–– comment:<br />

–– Build 2 baseline, PIRN 3044 1/C<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V3.0 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 22.05.95 11:00:00<br />

–– Build 2 baseline, PIRN 3044<br />

––<br />

–– V2.8 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 20:06:45<br />

–– Version as delivered by SRO1216843b (IK ADTs)<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––<br />

––****************************************************************************<br />

––<br />

with NUMERIC_TYPES;<br />

with MPS_DEFINITIONS;<br />

with VICOS_DEFINITIONS;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with ADT_PACKING;<br />

with ADT_PHYSICAL_ADDRESS;<br />

with ADT_CCSDS_PACKET;<br />

with ADT_GDU_DESCRIPTION;<br />

package ADT_GDU is<br />

–––––––––––––––––––––––––––<br />

–– ADT Types<br />

–––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

305 von/of: 662


Space Infrastructure<br />

type T_GDU(ALTERNATIVE : VICOS_DEFINITIONS.T_GDU_ALTERNATIVES :=<br />

VICOS_DEFINITIONS.UNDEFINED) is private;<br />

type T_PRIORITY is (HIGH,LOW);<br />

–––––––––––––––––––––––––––<br />

–– Write Operations<br />

–––––––––––––––––––––––––––<br />

procedure SET_ALTERNATIVE(<br />

GDU : in out T_GDU;<br />

ALTERNATIVE : in VICOS_DEFINITIONS.T_GDU_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– Set the alternative of the GDU; must be set before values are<br />

–– written to the GDU.<br />

–– EXCEPTIONS<br />

–– GDU_IS_CON<strong>ST</strong>RAINED<br />

–– alternative is already set<br />

procedure SET_ID(GDU : in out T_GDU;<br />

ID : in MPS_DEFINITIONS.SID);<br />

–– DESCRIPTION<br />

–– Set the identifier for the GDU<br />

–– EXCEPTIONS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_PRIVATE_ID(GDU : in out T_GDU;<br />

ID : in VICOS_DEFINITIONS.T_PRIVATE_ID);<br />

–– DESCRIPTION<br />

–– Set the private identifier for the GDU<br />

–– EXCEPTIONS<br />

procedure SET_TIME_TAG(GDU : in out T_GDU;<br />

TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

TIME_TYPE : in <strong>CGS</strong>_CALENDAR.T_TIME_TYPE);<br />

–– DESCRIPTION<br />

–– Set the time tag of the GDU<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_SEQUENCE_COUNT(<br />

GDU : in out T_GDU;<br />

SEQUENCE_NUMBER : in ADT_CCSDS_PACKET.T_CCSDS_SEQUENCE_COUNT);<br />

–– DESCRIPTION<br />

–– Set the sequence number of a CCSDS packet if the<br />

–– GDU is a CCSDS packet<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not CCSDS_PACKET<br />

procedure SET_PRIORITY(GDU : in out T_GDU;<br />

PRIORITY : in T_PRIORITY);<br />

–– DESCRIPTION<br />

–– Set the priority of the GDU<br />

–– EXCEPTIONS<br />

–– none<br />

procedure SET_RETRIES(GDU : in out T_GDU;<br />

RETRIES : in NATURAL);<br />

–– DESCRIPTION<br />

–– Set the number of retries applicable for the GDU<br />

–– EXCEPTIONS<br />

procedure SET_SAS_NAME(GDU : in out T_GDU;<br />

SAS_NAME : in VICOS_DEFINITIONS.T_SAS_NAME);<br />

–– DESCRIPTION<br />

–– This procedure sets the short name of the SAS in charge of<br />

–– the specified GDU variable<br />

–– EXCEPTIONS<br />

–– None<br />

procedure SET_PHYSICAL_ADDRESS(<br />

GDU : in out T_GDU;<br />

PHYSICAL_ADDRESS : in ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS);<br />

–– DESCRIPTION<br />

–– Set the physical address of the GDU<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

306 von/of: 662


Space Infrastructure<br />

–– EXCEPTIONS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_CCSDS_PACKET(GDU : in out T_GDU;<br />

CCSDS_PACKET : in ADT_CCSDS_PACKET.T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– Write a complete CCSDS packet to the GDU<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not CCSDS_PACKET<br />

procedure SET_BINARY_PACKET_LENGTH (GDU : in out T_GDU;<br />

LENGTH : in NATURAL);<br />

–– DESCRIPTION<br />

–– Set the number of bytes applicable for the length of binary packet within the GDU<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not BINARY_PACKET<br />

procedure SET_BINARY_PACKET(GDU : in out T_GDU;<br />

BINARY_PACKET : in NUMERIC_TYPES.BYTE_ARRAY);<br />

–– DESCRIPTION<br />

–– Write a complete binary packet to the GDU<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not BINARY_PACKET<br />

––––––––––––––––––––––––––––––––––––––––<br />

–– operations for parameter substitution<br />

––––––––––––––––––––––––––––––––––––––––<br />

procedure SET_VALUE(GDU : in out T_GDU;<br />

VALUE : in NUMERIC_TYPES.SINGLE_FLOAT);<br />

–– DESCRIPTION<br />

–– Write an analog value of type FLOAT to the GDU if the<br />

–– alternative is ANALOG_<strong>ST</strong>IMULUS<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not ANALOG_<strong>ST</strong>IMULUS<br />

procedure SET_VALUE(GDU : in out T_GDU;<br />

VALUE : in NUMERIC_TYPES.INTEGER32);<br />

–– DESCRIPTION<br />

–– Write a discrete value to the GDU if the type is<br />

–– DISCRETE_<strong>ST</strong>IMULUS<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not DISCRETE_<strong>ST</strong>IMULUS<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

function ALTERNATIVE(GDU : in T_GDU) return VICOS_DEFINITIONS.T_GDU_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– return the alternative from a GDU<br />

–– EXCEPTIONS<br />

function SHORT_ID(GDU : in T_GDU) return MPS_DEFINITIONS.SID;<br />

–– DESCRIPTION<br />

–– return the identifier for the GDU<br />

–– EXCEPTIONS<br />

function PRIVATE_ID(GDU : in T_GDU) return VICOS_DEFINITIONS.T_PRIVATE_ID;<br />

–– DESCRIPTION<br />

–– return the identifier for the GDU<br />

–– EXCEPTIONS<br />

function PRIORITY(GDU: in T_GDU) return T_PRIORITY;<br />

–– DESCRIPTION<br />

–– return the priority of the GDU<br />

–– EXCEPTIONS<br />

function IS_TIME_TAGGED(GDU: in T_GDU) return boolean;<br />

–– DESCRIPTION<br />

–– return TRUE if a GDU has a time tag, else FALSE<br />

–– EXCEPTIONS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

307 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure GET_TIME_TAG(GDU : in T_GDU;<br />

TIME : out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

TIME_TYPE : out <strong>CGS</strong>_CALENDAR.T_TIME_TYPE);<br />

–– DESCRIPTION<br />

–– return the time_tag from the GDU<br />

–– EXCEPTIONS<br />

function SEQUENCE_COUNT(GDU: in T_GDU) return ADT_CCSDS_PACKET.T_CCSDS_SEQUENCE_COUNT;<br />

–– DESCRIPTION<br />

–– return the sequence count from the GDU<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not CCSDS_PACKET<br />

function RETRIES(GDU: in T_GDU) return NATURAL;<br />

–– DESCRIPTION<br />

–– return the number of retries applicable for the GDU<br />

–– EXCEPTIONS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

308 von/of: 662<br />

function PHYSICAL_ADDRESS(GDU : in T_GDU) return ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

–– DESCRIPTION<br />

–– return the physical address of the GDU<br />

–– EXCEPTIONS<br />

function SAS_NAME(GDU : in T_GDU) return VICOS_DEFINITIONS.T_SAS_NAME;<br />

–– DESCRIPTION<br />

–– return the sas name of the gdu<br />

–– EXCEPTIONS<br />

function CCSDS_PACKET(GDU : in T_GDU) return ADT_CCSDS_PACKET.T_CCSDS_PACKET;<br />

–– DESCRIPTION<br />

–– return a complete CCSDS packet from the GDU<br />

–– all parameters have been substituted<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not CCSDS_PACKET<br />

procedure GET_CCSDS_PACKET(GDU : in T_GDU;<br />

CCSDS_PACKET: in out ADT_CCSDS_PACKET.T_CCSDS_PACKET);<br />

–– DESCRIPTION<br />

–– return a complete CCSDS packet from the GDU<br />

–– all parameters have been substituted<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not CCSDS_PACKET<br />

function BINARY_PACKET_LENGTH (GDU: in T_GDU) return NATURAL;<br />

–– DESCRIPTION<br />

–– returns the number of bytes denoting the length of the binary packet<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH: the alternative of the GDU is not BINARY_PACKET<br />

procedure GET_BINARY_PACKET(GDU : in T_GDU;<br />

BINARY_PACKET : in out NUMERIC_TYPES.BYTE_ARRAY);<br />

–– DESCRIPTION<br />

–– return a complete binary packet from the GDU<br />

–– all parameters have been substituted<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not BINARY_PACKET<br />

–– CON<strong>ST</strong>RAINT_ERROR: the actual parameter BINARY_PACKET is not large enough<br />

function VALUE_OF(GDU : in T_GDU) return NUMERIC_TYPES.SINGLE_FLOAT;<br />

–– DESCRIPTION<br />

–– Returns the analog value of type FLOAT to the GDU if the<br />

–– alternative is ANALOG_<strong>ST</strong>IMULUS<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not ANALOG_<strong>ST</strong>IMULUS<br />

function VALUE_OF(GDU : in T_GDU) return NUMERIC_TYPES.DOUBLE_FLOAT;<br />

–– DESCRIPTION<br />

–– Analog to the previous operation. kept in this version of the ADT<br />

–– for compatibility with the old generated softwares (e.g. SAS).


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– The double float that is returned is a type conversion from the<br />

–– single float data of the GDU.<br />

–– This version will be removed in the future, so any new application<br />

–– should not use it and applications using it should foresee to switch<br />

–– to the single float version of the operation.<br />

function VALUE_OF(GDU : in T_GDU) return NUMERIC_TYPES.INTEGER32;<br />

–– DESCRIPTION<br />

–– Returns the discrete value to the GDU if the type is<br />

–– DISCRETE_<strong>ST</strong>IMULUS<br />

–– EXCEPTIONS<br />

–– GDU_TYPE_MISMATCH<br />

–– The GDU alternative is not DISCRETE_<strong>ST</strong>IMULUS<br />

––––––––––––––––––––––<br />

–– packing operations<br />

––––––––––––––––––––––<br />

procedure PACK(GDU : in T_GDU;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

–– DESCRIPTION<br />

–– pack the GDU into a T_BLOCK<br />

–– convert to machine independent format where applicable<br />

–– EXCEPTIONS<br />

procedure UNPACK(BLOCK : in out ADT_PACKING.T_BLOCK;<br />

GDU : out T_GDU);<br />

–– DESCRIPTION<br />

–– unpack the GDU from a T_BLOCK<br />

–– convert from machine independent format where applicable<br />

–– EXCEPTIONS<br />

procedure UNPACK2(BLOCK : in out ADT_PACKING.T_BLOCK;<br />

GDU : in out T_GDU);<br />

–– DESCRIPTION<br />

–– unpack the GDU from a T_BLOCK<br />

–– convert from machine independent format where applicable<br />

–– EXCEPTIONS<br />

procedure UNPACK_FROM_OLD_ARCHIVE(BLOCK : in out ADT_PACKING.T_BLOCK;<br />

GDU : in out T_GDU);<br />

–– DESCRIPTION<br />

–– This operation is only to be used by the ADT archive file.<br />

–– Its aim is to transform a GDU read from an archive file containing<br />

–– GDU’s from former <strong>CGS</strong> versions into the current GDU structure.<br />

–– EXCEPTIONS<br />

–––––––––––––––––––––––––<br />

–– Exceptions<br />

–––––––––––––––––––––––––<br />

GDU_TYPE_MISMATCH : exception;<br />

GDU_IS_CON<strong>ST</strong>RAINED : exception;<br />

–––––––––––––––––––––––––<br />

–– Private Part<br />

–––––––––––––––––––––––––<br />

private<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

309 von/of: 662<br />

type T_GDU(ALTERNATIVE : VICOS_DEFINITIONS.T_GDU_ALTERNATIVES := VICOS_DEFINITIONS.UNDEFINED) is<br />

record<br />

ID : MPS_DEFINITIONS.SID;<br />

PRIVATE_ID : VICOS_DEFINITIONS.T_PRIVATE_ID;<br />

SAS_NAME : VICOS_DEFINITIONS.T_SAS_NAME;<br />

TIME_TAG : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME := <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

TIME_TYPE : <strong>CGS</strong>_CALENDAR.T_TIME_TYPE;<br />

RETRIES : NATURAL;<br />

PRIORITY : T_PRIORITY;<br />

PHYSICAL_ADDRESS : ADT_PHYSICAL_ADDRESS.T_PHYSICAL_ADDRESS;<br />

BYTE_PAD1 : NUMERIC_TYPES.UNSIGNED_INTEGER8 := 255; –– pad to mod 4 address.<br />

BYTE_PAD2 : NUMERIC_TYPES.UNSIGNED_INTEGER8 := 255;<br />

BYTE_PAD3 : NUMERIC_TYPES.UNSIGNED_INTEGER8 := 255;<br />

case ALTERNATIVE is<br />

when VICOS_DEFINITIONS.ANALOG_<strong>ST</strong>IMULUS =>


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

310 von/of: 662<br />

ANALOG_VALUE : NUMERIC_TYPES.SINGLE_FLOAT := 0.0;<br />

when VICOS_DEFINITIONS.DISCRETE_<strong>ST</strong>IMULUS =><br />

DISCRETE_VALUE : NUMERIC_TYPES.INTEGER32 := 0;<br />

when VICOS_DEFINITIONS.CCSDS_PACKET =><br />

CCSDS_PACKET : ADT_CCSDS_PACKET.T_CCSDS_PACKET;<br />

BYTE_PAD4 : NUMERIC_TYPES.UNSIGNED_INTEGER8 := 255; –– pad to mod 4 size<br />

BYTE_PAD5 : NUMERIC_TYPES.UNSIGNED_INTEGER8 := 255;<br />

when VICOS_DEFINITIONS.BINARY_PACKET =><br />

PACKET_LENGTH : NATURAL := 0; –– length of binary packet in bytes<br />

BINARY_PACKET : NUMERIC_TYPES.BYTE_ARRAY<br />

(1..ADT_GDU_DESCRIPTION.MAX_BINARY_PACKET_SIZE);<br />

when VICOS_DEFINITIONS.UNDEFINED =><br />

null;<br />

end case;<br />

end record;<br />

–– removes implicit components on HP, generates warning on SunAda compiler.<br />

–– Ignore warning! this makes the byte pads neccessary<br />

pragma IMPROVE(SPACE, ON => T_GDU);<br />

for T_GDU use<br />

record at mod 4;<br />

ALTERNATIVE at 328 range 0 .. 7;<br />

ID at 0 range 0 .. 31;<br />

PRIVATE_ID at 329 range 0 .. 79;<br />

SAS_NAME at 4 range 0 .. 191;<br />

TIME_TAG at 28 range 0 .. 127;<br />

TIME_TYPE at 339 range 0 .. 7;<br />

RETRIES at 44 range 0 .. 31;<br />

PRIORITY at 340 range 0 .. 7;<br />

PHYSICAL_ADDRESS at 48 range 0 .. 2239;<br />

BYTE_PAD1 at 341 range 0 .. 7;<br />

BYTE_PAD2 at 342 range 0 .. 7;<br />

BYTE_PAD3 at 343 range 0 .. 7;<br />

ANALOG_VALUE at 344 range 0 .. 31;<br />

DISCRETE_VALUE at 344 range 0 .. 31;<br />

CCSDS_PACKET at 344 range 0 .. 32815;<br />

BYTE_PAD4 at 4446 range 0 .. 7;<br />

BYTE_PAD5 at 4447 range 0 .. 7;<br />

PACKET_LENGTH at 344 range 0 .. 31;<br />

BINARY_PACKET at 348 range 0 .. ADT_GDU_DESCRIPTION.MAX_BINARY_PACKET_SIZE*8–1;<br />

end record;<br />

GDU_SIZE : constant := 1112 * 4;<br />

for T_GDU’SIZE use GDU_SIZE * 8;<br />

end ADT_GDU;


Space Infrastructure<br />

7.7 TES Application Programmer <strong>Interface</strong><br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

311 von/of: 662<br />

The role of the TES Application Programmer <strong>Interface</strong> (TES_API) is to exchange data with TES, in the form<br />

of ADU for data entering TES, and of GDU for data issued by TES.<br />

It is presented as a standard interface for Special Application Software (SAS) for access to the TES kernel. (Note<br />

that the SAS may not execute within the same operating system process).<br />

It is implemented as a package of ’Ada’ functions which can be linked to applications requiring these services.<br />

These procedural interfaces enable TES to be local or physically remote from the software needing to access<br />

its services.<br />

The TES_API concept is based on the idea that TES sends commands to a SAS through exactly one command<br />

channel in a strictly sequential way, whenever TES wants something from the SAS, i.e. when TES takes the initiative.<br />

The SAS itself is provided with a set of operations to read commands and parse them plus another set of<br />

operations to issue data or requests to TES, in this case the SAS taking the initiative.<br />

The central point in this concept is that there exists only one procedure READ_COMMAND that waits for commands<br />

from TES and then provides these to the SAS. In the command, the various types of subcommands can<br />

be implemented, e.g. ADU requests, GDUs etc...<br />

With this concept, a SAS must not necessarily be designed with several tasks, though it is still allowed. As long<br />

as the SAS in its processing of the commands is fast enough, then no tasking is needed.<br />

Within this concept, a data interface SAS directly enters ”running” mode after the INIT_LINK command has<br />

been received.<br />

A number of access services are supplied, these shall be summarised.<br />

• Connection/disconnection to TES<br />

To enable connection to the TES kernel and to enable subsequent access, connection services are provided.<br />

Disconnection services are also supplied.<br />

• SAS commanding<br />

To enable commands to be received from SAS, a procedural interface is provided for transferring <strong>CGS</strong><br />

commands (e.g. originating as UCL/HLCL commands) associated with test execution to TES, this interface<br />

also provides functions to write responses from the SAS.<br />

This service provides the handling of the basic command reception functions only. The parsing of the<br />

command itself is not a function of this API. The necessary procedures are provided in an abstract data<br />

type T_COMMAND in ADT_TES_TO_SAS_COMMAND package.<br />

• Message service<br />

<strong>Service</strong>s are provided for reading messages from and passing messages to APs executing under the control<br />

of TES.<br />

Error message services are provided for passing Error Messages from the active SAS on to TES (and<br />

hence on to the <strong>CGS</strong> User).<br />

• Time service<br />

Timing services are provided for test execution these include, reading of system time and Wait (suspend<br />

caller until the Wake Up time).<br />

• ADU/GDU service<br />

During test execution, data can be acquired from different sources. Acquisition services are applied to<br />

Acquisition Data Units (ADUs) and Generation Data Units (GDUs). ADUs are associated with End


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

312 von/of: 662<br />

Items in the Mission Database, the definition of measurement include the calibration and monitoring<br />

specification in addition to the raw data source (e.g. SAS for TM packet).<br />

An ADU can contain raw measurement values which can be extracted and calibrated. An ADU can be<br />

sent within a Delivery Packet or constructed and sent separately. ADU requests are therefore used to<br />

trigger data and information generation e.g. from the Unit Under Test, SAS etc. GDUs provide data such<br />

as TC packets, HW Stimuli etc to other products. These then are used to manage commanding of the<br />

UUT. A GDU can contain Telecommands (TCs) or Stimuli.<br />

<strong>Service</strong>s provide facilities for managing such data constructs e.g.: Enable/Disable ADU Construction,<br />

Read ADU, Enable/Disable ADU Acquisition, Enable/Disable ADU Redirection, Announce ADU/<br />

GDU, Disconnect ADU/GDU, Issue (for End Item Command), Put GDU (ready for sending to a destination).<br />

The extraction of an ADU description from a command itself is not a function provided by this API but<br />

this function, as well as all the type definitions for raw values come from abstract data types<br />

ADT_COMMAND, ADT_ADU_DESCRIPTION, ADT_ADU and ADT_RAW_VALUE.<br />

The extraction of an GDU from a command itself is not a function provided by this API but this function<br />

comes from abstract data types ADT_COMMAND, ADT_GDU and ADT_RAW_VALUE.<br />

In connection with the ADU/GDU services, Exchange <strong>Service</strong>s are provided for sending/receiving of<br />

ADUs. These include: Read ADU Stream, Get/Ack GDU and Get/Ack ADU Request.<br />

• Raw/engineering value processing<br />

The data processing service provides the operations for raw and calibrated data exchange with TES. The<br />

type definitions for raw and engineering values come from abstract data types ADT_RAW_VALUE and<br />

ADT_ENGINEERING_VALUE.<br />

Finally, services are provided to enable the active SAS to retrieve Flight SW (e.g. SWRUs) from the Mission<br />

Database for up–link (passing onto Flight Hardware) during check–out operations.<br />

All operations of this API are constraint because they will use operations that are protected against parallel access,<br />

e.g. operations that check the presence of a connection or the send operation of the underlaying network<br />

software. That means that all operations may be access in parallel without external synchronization by the client,<br />

but the control flow of a caller may be suspended if more than one caller (task) reaches the same synchronization<br />

point.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_TES_TO_SAS_COMMAND spec<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package defines and handles types related to commands exchanged<br />

–– between VICOS TES and Special Application Software (SAS)<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : ADT_TES_TO_SAS_COMMAND<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 /Alsys Ada 5.5.1<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V3.0 at ERNO ; <strong>CGS</strong> engineering<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 14.03.95 10:00:00<br />

–– Build 2 baseline, PIRN 3049<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 20:21:43<br />

–– Version as delivered by SRO1216843b (IK ADTs)<br />

––****************************************************************************<br />

––<br />

with ADT_PACKING;<br />

–– type T_BLOCK<br />

with VICOS_DEFINITIONS;<br />

–– type T_APPLICATION_NAME<br />

with ADT_ADU_DESCRIPTION;<br />

–– type T_ADU_DESCRIPTION<br />

with ADT_GDU;<br />

–– type T_GDU<br />

package ADT_TES_TO_SAS_COMMAND is<br />

––––––––––––––––––––––––––––––<br />

–– public types and constants<br />

––––––––––––––––––––––––––––––<br />

type T_DOWNLOAD_SW_TYPE is (<br />

DATA_FILE,<br />

EXECUTABLE);<br />

type T_DE<strong>ST</strong>INATION is (<br />

FRONT_END_EQUIPMENT,<br />

UNIT_UNDER_TE<strong>ST</strong>);<br />

type T_COMMAND_ALTERNATIVES is (<br />

UNDEFINED,<br />

INIT_APPLICATION,<br />

<strong>ST</strong>ART_APPLICATION,<br />

RESET_APPLICATION,<br />

<strong>ST</strong>ATUS_REQUE<strong>ST</strong>,<br />

AP_MESSAGE,<br />

ADU_REQUE<strong>ST</strong>,<br />

GDU_REQUE<strong>ST</strong>,<br />

UNLOAD_APPLICATION,<br />

DOWNLOAD,<br />

NO_COMMAND);<br />

–– The command alternatives indicates to the SAS:<br />

–– – that the command alternative is undefined,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

313 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– – to put itself into an ’initiate’ state, i.e. ready to run,<br />

–– – to start its execution,<br />

–– – to abort the execution and to return to ’idle’ state, i.e. wait<br />

–– for an ’initiate’ command,<br />

–– – that a status is requested (SAS errors, statistics, ...),<br />

–– – that the command contains a message coming from an AP,<br />

–– – to start the data acquisition from UUT,<br />

–– – to start the data generation to UUT,<br />

–– – to make a complete termination, i.e. unload from memory,<br />

–– – to support downloading of files<br />

–– – the variable is not set–up, i.e. contains nothing.<br />

type T_COMMAND (<br />

COMMAND_ALTERNATIVE : T_COMMAND_ALTERNATIVES := UNDEFINED) is private;<br />

––––––––––––––––––––<br />

–– write operations<br />

––––––––––––––––––––<br />

procedure SET_COMMAND_ALTERNATIVE (<br />

OF_COMMAND : in out T_COMMAND;<br />

WITH_ALTERN : in T_COMMAND_ALTERNATIVES);<br />

–– DESCRIPTION<br />

–– This procedure sets the command alternative of the<br />

–– given command.<br />

–– EXCEPTIONS<br />

–– COMMAND_IS_CON<strong>ST</strong>RAINED :<br />

–– The provided command is constrained and the alternative<br />

–– can therefore not be changed.<br />

procedure SET_TIMEOUT (<br />

OF_COMMAND : in out T_COMMAND;<br />

WITH_TIMEOUT_MILLISECS : in POSITIVE);<br />

–– DESCRIPTION<br />

–– This procedure sets the timeout period in milliseconds a SAS<br />

–– has to acknowledge the command.<br />

–– EXCEPTIONS<br />

–– None.<br />

procedure SET_INIT_PARAMS (<br />

OF_COMMAND : in out T_COMMAND;<br />

WITH_INIT_PARAMS : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– In case the type of command is the INIT_APPLICATION command,<br />

–– this procedure can be used to set the parameter string<br />

–– supplied to the UCL library procedure INIT_APPLICATION.<br />

–– The maximum length of the string is 255 characters.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an INIT_APPLICATION command<br />

–– INIT_PARAMS_ILLEGAL :<br />

–– the passed initialisation parameter string had a length<br />

–– that exeeded 255 characters.<br />

procedure SET_MESSAGE (<br />

OF_COMMAND : in out T_COMMAND;<br />

WITH_MESSAGE : in <strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– In case the type of command is the AP_MESSAGE command,<br />

–– this procedure can be used to set the message string<br />

–– supplied to the UCL library procedure WRITE_MESSAGE_TO_APPLICATION.<br />

–– The maximum length of the string is 255 characters.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an AP_MESSAGE command<br />

–– MESSAGE_ILLEGAL :<br />

–– the passed message string had a length<br />

–– that exeeded 255 characters.<br />

procedure SET_ADU_DESCRIPTION (<br />

OF_COMMAND : in out T_COMMAND;<br />

ENABLE : in BOOLEAN;<br />

WITH_ADU_DESCRIPTION : in ADT_ADU_DESCRIPTION.T_ADU_DESCRIPTION);<br />

–– DESCRIPTION<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

314 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– In case the type of command is the ADU_REQUE<strong>ST</strong> command,<br />

–– this procedure can be used to set the ADU_DESCRIPTION.<br />

–– ENABLE specifies if the ADU has to be enabled (ENABLE => true)<br />

–– or disabled (ENABLE => false)<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an ADU_REQUE<strong>ST</strong> command<br />

procedure SET_GDU (<br />

OF_COMMAND : in out T_COMMAND;<br />

WITH_GDU : in ADT_GDU.T_GDU);<br />

–– DESCRIPTION<br />

–– In case the type of command is a GDU_REQUE<strong>ST</strong> command,<br />

–– this procedure can be used to set the GDU.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an GDU_REQUE<strong>ST</strong> command<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

315 von/of: 662<br />

procedure SET_DOWNLOAD_PARAMS (<br />

OF_COMMAND : in out T_COMMAND;<br />

FILE_TYPE : in T_DOWNLOAD_SW_TYPE;<br />

FILE_ID : in VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

FILE_NAME : in VICOS_DEFINITIONS.T_FILE_NAME;<br />

DE<strong>ST</strong>INATION_TYPE : in T_DE<strong>ST</strong>INATION;<br />

DE<strong>ST</strong>INATION_ID : in VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– In case the type of command is a DOWNLOAD command,<br />

–– this procedure sets the parameters needed by the SAS.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not a DOWNLOAD command<br />

–––––––––––––––––––<br />

–– read operations<br />

–––––––––––––––––––<br />

function COMMAND_ALTERNATIVE (<br />

COMMAND : T_COMMAND)<br />

return T_COMMAND_ALTERNATIVES;<br />

–– DESCRIPTION<br />

–– This function takes a command received as an input<br />

–– and returns the type of that command.<br />

–– EXCEPTIONS<br />

–– None.<br />

function COMMAND_TIMEOUT (<br />

COMMAND : T_COMMAND)<br />

return POSITIVE;<br />

–– DESCRIPTION<br />

–– This function takes a command and<br />

–– returns the timeout period in milliseconds an SAS has<br />

–– to acknowledge the command.<br />

–– EXCEPTIONS<br />

–– None.<br />

function NEEDS_ACKNOWLEDGE(<br />

COMMAND : T_COMMAND)<br />

return BOOLEAN;<br />

–– DESCRIPTION<br />

–– This function returns TRUE if a command needs an acknowledge by the SAS.<br />

–– The following coomands need an acknowledge at present:<br />

–– INIT_APPLICATION,<br />

–– <strong>ST</strong>ART_APPLICATION,<br />

–– RESET_APPLICATION,<br />

–– <strong>ST</strong>ATUS_REQUE<strong>ST</strong>,<br />

–– ADU_REQUE<strong>ST</strong>,<br />

–– GDU_REQUE<strong>ST</strong>,<br />

–– UNLOAD_APPLICATION,<br />

–– DOWNLOAD,<br />

–– EXCEPTIONS<br />

–– None.<br />

function <strong>ST</strong>RING_LENGTH (<br />

COMMAND : T_COMMAND)<br />

return NATURAL;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– In case the command provided is of type INIT_APPLICATION or<br />

–– AP_MESSAGE this procedure returns the length of the<br />

–– string stored by these commands.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not of type INIT_APPLICATION or AP_MESSAGE.<br />

function INIT_PARAMS (<br />

COMMAND : T_COMMAND)<br />

return <strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– In case the type of command received is the INIT_APPLICATION<br />

–– command, this procedure can be used to obtain the parameter<br />

–– string supplied to the UCL library procedure INIT_APPLICATION.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an INIT_APPLICATION command<br />

function MESSAGE (<br />

COMMAND : T_COMMAND)<br />

return <strong>ST</strong>RING;<br />

–– DESCRIPTION<br />

–– In case the type of command received is the AP_MESSAGE<br />

–– command, this procedure can be used to obtain the message<br />

–– string supplied to the UCL library procedure<br />

–– WRITE_MESSAGE_TO_APPLICATION.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an AP_MESSAGE command<br />

procedure GET_ADU_DESCRIPTION (<br />

OF_COMMAND : in T_COMMAND;<br />

ENABLE : out BOOLEAN;<br />

ADU_DESCRIPTION : out ADT_ADU_DESCRIPTION.T_ADU_DESCRIPTION);<br />

–– DESCRIPTION<br />

–– In case the type of command received is the ADU_REQUE<strong>ST</strong><br />

–– command, this procedure can be used to obtain the<br />

–– ADU_DESCRIPTION supplied.<br />

–– ENABLE specifies if the ADU has to be enabled (ENABLE => true)<br />

–– or disabled (ENABLE => false)<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an ADU_REQUE<strong>ST</strong> command<br />

function GDU (<br />

COMMAND : T_COMMAND)<br />

return ADT_GDU.T_GDU;<br />

–– DESCRIPTION<br />

–– In case the type of command received is the GDU_REQUE<strong>ST</strong><br />

–– command, this procedure can be used to obtain the GDU supplied.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not an GDU_REQUE<strong>ST</strong> command<br />

procedure GET_DOWNLOAD_PARAMS (<br />

OF_COMMAND : in out T_COMMAND;<br />

FILE_TYPE : out T_DOWNLOAD_SW_TYPE;<br />

FILE_ID : out VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

FILE_NAME : out VICOS_DEFINITIONS.T_FILE_NAME;<br />

DE<strong>ST</strong>INATION_TYPE : out T_DE<strong>ST</strong>INATION;<br />

DE<strong>ST</strong>INATION_ID : out VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING);<br />

–– DESCRIPTION<br />

–– In case the type of command is a DOWNLOAD command,<br />

–– this procedure returns the parameters needed by the SAS.<br />

–– EXCEPTIONS<br />

–– COMMAND_TYPE_MISMATCH :<br />

–– the command is not a DOWNLOAD command<br />

––––––––––––––––––––––<br />

–– packing operations<br />

––––––––––––––––––––––<br />

procedure PACK (<br />

COMMAND : in T_COMMAND;<br />

BLOCK : in out ADT_PACKING.T_BLOCK);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

316 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– DESCRIPTION<br />

–– This procedure packs the specified command variable into<br />

–– a contiguous memory block.<br />

–– EXCEPTIONS<br />

–– None.<br />

procedure UNPACK (<br />

BLOCK : in out ADT_PACKING.T_BLOCK;<br />

COMMAND : out T_COMMAND);<br />

–– DESCRIPTION<br />

–– This procedure unpacks the specified memory block into<br />

–– a command variable.<br />

–– EXCEPTIONS<br />

–– None.<br />

–––––––––––––––––––<br />

–– exceptions<br />

–––––––––––––––––––<br />

COMMAND_TYPE_MISMATCH : exception;<br />

INIT_PARAMS_ILLEGAL : exception;<br />

MESSAGE_ILLEGAL : exception;<br />

COMMAND_IS_CON<strong>ST</strong>RAINED : exception;<br />

private<br />

MAX_<strong>ST</strong>RING_LENGTH : constant := 255;<br />

type T_CALIBRATED_<strong>ST</strong>RING is<br />

record<br />

<strong>ST</strong>R : <strong>ST</strong>RING (1..MAX_<strong>ST</strong>RING_LENGTH) := (others => ’ ’);<br />

LENGTH : INTEGER range 0..MAX_<strong>ST</strong>RING_LENGTH := 0;<br />

end record;<br />

type T_COMMAND (<br />

COMMAND_ALTERNATIVE : T_COMMAND_ALTERNATIVES := UNDEFINED) is<br />

record<br />

TIMEOUT_VALUE : POSITIVE;<br />

case COMMAND_ALTERNATIVE is<br />

when UNDEFINED =><br />

null;<br />

when INIT_APPLICATION =><br />

INIT_<strong>ST</strong>RING : T_CALIBRATED_<strong>ST</strong>RING;<br />

when <strong>ST</strong>ART_APPLICATION =><br />

null;<br />

when RESET_APPLICATION =><br />

null;<br />

when <strong>ST</strong>ATUS_REQUE<strong>ST</strong> =><br />

null;<br />

when AP_MESSAGE =><br />

MESSAGE : T_CALIBRATED_<strong>ST</strong>RING;<br />

when ADU_REQUE<strong>ST</strong> =><br />

DESCRIPTION : ADT_ADU_DESCRIPTION.T_ADU_DESCRIPTION;<br />

ENABLED : BOOLEAN;<br />

when GDU_REQUE<strong>ST</strong> =><br />

GDU : ADT_GDU.T_GDU;<br />

when UNLOAD_APPLICATION =><br />

null;<br />

when DOWNLOAD =><br />

FILE_TYPE : T_DOWNLOAD_SW_TYPE;<br />

FILE_ID : VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

FILE_NAME : VICOS_DEFINITIONS.T_FILE_NAME;<br />

DE<strong>ST</strong>INATION_TYPE : T_DE<strong>ST</strong>INATION;<br />

DE<strong>ST</strong>INATION_ID : VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

when NO_COMMAND =><br />

null;<br />

end case;<br />

end record;<br />

end ADT_TES_TO_SAS_COMMAND;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

317 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

318 von/of: 662<br />

––<br />

–– TES_API<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

–– Provides the Application Program <strong>Interface</strong> to TES on Test Nodes for<br />

–– Specific Application Software (SAS)<br />

––<br />

–– Constraints:<br />

–– The package receives internally the SIGIO Sigpoll signal for the process<br />

–– and handles it. It ignores the Sigpipe signal.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TES<br />

–– CI–NUMBER : 1216 843<br />

–– OBJECT NAME : TES_API<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : SunAda 1.1 Alsys Ada 5.5.1<br />

–– LANGUAGE : Ada<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.3 at DASA ; TES engineering<br />

–– creator: Hartmann<br />

–– creation date: 07.01.00<br />

–– <strong>CGS</strong> 4.3 baseline, PIRN 8096:<br />

–– Add operation to inform TES about ADU interruption<br />

––<br />

–– V4.2 at DASA ; TES engineering<br />

–– creator: Athmann<br />

–– creation date: 2.11.98<br />

–– <strong>CGS</strong> 4.2 baseline, PIRN 8035:<br />

–– Document Use of Signal Handling instead of Polling<br />

––<br />

–– V4.1 at DASA ; TES engineering<br />

–– creator: hartmann<br />

–– creation date: 29.10.97<br />

–– <strong>CGS</strong> 4.1 baseline, PIRN 7050/A<br />

––<br />

–– V4.1 at DASA ; TES engineering<br />

–– creator: maron (on host aiv–1)<br />

–– creation date: 08.10.97 12:00:00<br />

–– <strong>CGS</strong> 4.1 baseline, PIRN 7050<br />

––<br />

–– V3.0 at ERNO ; <strong>CGS</strong> emgineering<br />

–– creator: maron (on host vicos2–2)<br />

–– creation date: 17.03.95 12:00:00<br />

–– Build 2 baseline, PIRN 3058<br />

––<br />

–– V2.5 at ERNO ; VICOS development<br />

–– creator: athmann (on host vicos_5)<br />

–– creation date: 03.03.93 21:02:57<br />

–– Update acc. to COL–MBER–VIC–IRN–2047<br />

––<br />

–– V2.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host prime_1)<br />

–– creation date: 18.09.92 12:12:22<br />

–– modifications according to FINAL <strong>ICD</strong> REVIEW DNs (see list)<br />

–– V2.3 at ERNO ; VICOS development


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– creator: vicos (on host vicos_8)<br />

–– creation date: 22.07.92 16:04:00<br />

–– Alignment to SPADM and TN COL_MBER_ZU1_TN_0026_92<br />

–– V2.1 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_4)<br />

–– creation date: 25.06.92 11:09:36<br />

–– INCREMENT_VERSION v1_0_0<br />

–– V1.5 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_4)<br />

–– creation date: 25.06.92 09:09:02<br />

–– deleted old VICOS HEADER<br />

–– V1.4 at ERNO ; VICOS development<br />

–– creator: vicos (on host vicos_4)<br />

–– creation date: 25.06.92 08:21:11<br />

–– added new header<br />

––****************************************************************************<br />

––<br />

with <strong>CGS</strong>_CALENDAR;<br />

–– type T_DATE_AND_TIME<br />

with NUMERIC_TYPES;<br />

with VICOS_DEFINITIONS;<br />

with MPS_DEFINITIONS;<br />

–– type SID<br />

with TES_DEFINITIONS;<br />

–– type T_APPLICATION_ID<br />

–– type T_RETURN_<strong>ST</strong>ATUS<br />

–– type T_IDENTIFIER<br />

–– type T_LINK_<strong>ST</strong>ATUS<br />

–– type T_AP_MESSAGE<br />

with ADT_TES_TO_SAS_COMMAND;<br />

–– type T_COMMAND<br />

with ADT_ADU;<br />

–– type T_ADU<br />

with ADT_ADU_DESCRIPTION;<br />

–– type T_ADU_DESCRIPTION<br />

with ADT_GDU;<br />

–– type T_GDU<br />

package TES_API is<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

319 von/of: 662<br />

SCCSID_ADS : constant <strong>ST</strong>RING := ”@(#) tes_api_.a /main/cgs_4.1/cgs_4.2/cgs_4.3/1<br />

01/12/00 17:33:01@(#)”;<br />

type T_SMT_<strong>ST</strong>ATUS is (NOT_INITIALISED,<strong>ST</strong>OPPED,RUNNING);<br />

procedure CONNECT (<br />

SAS_NAME : in VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

<strong>CGS</strong>_PARENT : in VICOS_DEFINITIONS.T_APPLICATION_NAME<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

APPLICATION_ID : out TES_DEFINITIONS.T_APPLICATION_ID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure establishes a connection between a SAS and the <strong>CGS</strong> product


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

320 von/of: 662<br />

–– TES.<br />

–– It tries to connect to the TES instance locally being available on a<br />

–– testnode if the SAS is started on a testnode. Then, the parameter<br />

–– <strong>CGS</strong>_PARENT can be the empty name string provided by default.<br />

–– If the SAS has been started by <strong>CGS</strong> on a workstation then the <strong>CGS</strong>_PARENT<br />

–– has to be set explicitely by the SAS. Normally, TES should pass the<br />

–– parent application name to the SAS via the command line interface.<br />

–– The parameter SAS_NAME is the name of the executable image of the SAS.<br />

–– Also, this name has to correspond exactly to the definition of this SAS<br />

–– as a database enditem of type EGSE_SW.<br />

–– This is required since TES needs to correlate the name of an application<br />

–– started through a UCL library command with the ones trying to connect.The<br />

–– Application_ID is returned by TES. It is the unique handle to be used in<br />

–– all future calls to the TES–API for this specific instance of TES.<br />

–– Status is the error status returned by this call<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently not<br />

–– running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully look<br />

–– into your system topology table<br />

–– SAS_UNKNOWN : The SAS_NAME is wrong, this SAS has not been<br />

–– started by the <strong>CGS</strong>_PARENT<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure DISCONNECT (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure releases a connection between a SAS and TES. It tries to<br />

–– disconnect from TES.The Application_ID is the handle provide by TES in<br />

–– the connect operation. Status is the error status returned by this call.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– NOT_CONNECTED : the SAS is not yet connected<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully look<br />

–– into your system topology table, maybe TES died<br />

–– in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure READ_COMMAND (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

COMMAND : in out ADT_TES_TO_SAS_COMMAND.T_COMMAND;<br />

COMMAND_ID : in out TES_DEFINITIONS.T_IDENTIFIER;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS;<br />

BLOCK : in BOOLEAN := FALSE);<br />

–– DESCRIPTION<br />

–– This procedure reads a command from TES. It needs the application id<br />

–– returned during the connect operation in order to check that this SAS<br />

–– is properly connected to TES.<br />

–– The command received from TES is returned in<br />

–– ADT_TES_TO_SAS_COMMAND.T_COMMAND. The procedures and function of package<br />

–– ADT_TES_TO_SAS_COMMAND can be used to further process the command and<br />

–– find out what type of caommand it is. Also, the ADT provides all<br />

–– necessary data associated with the command. Each command also comes with


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

321 von/of: 662<br />

–– a COMMAND_ID which is lateron used to e.g. acknowledge the command.<br />

–– The parameter BLOCK indicates whether the procedure shall block in the<br />

–– call untilthere is a command from TES (if set to TRUE). In case it is<br />

–– FALSE, the procedure will immediately return. The command is then either<br />

–– a meaningful one or the NULL command.<br />

––<br />

–– It is important to notice that commands have to be acknowledged within a<br />

–– given time interval which can be obtained from the command itself through<br />

–– function ADT_COMMAND.COMMAND_TIMEOUT<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure ACKNOWLEDGE_COMMAND (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

COMMAND_ID : in TES_DEFINITIONS.T_IDENTIFIER;<br />

ACKNOWLEDGED : in BOOLEAN;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure acknowledges a command received from TES. Use<br />

–– ADT_TES_TO_SAS_COMMAND to find out which commands need explicite<br />

–– acknowledgement.<br />

–– It needs the application id returned during the connect operation in<br />

–– order to check that this SAS is still connected to TES.<br />

–– The command id as received from TES during READ_COMMAND is an input<br />

–– parameter also.<br />

–– If SAS wants to acknowledge the command, parameter ACKNOWLEDGED is set<br />

–– to TRUE, else to FALSE.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– INVALID_COMMAND_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– COMMAND_TIMEOUT : The acknowledge comes too late, sorry...<br />

–– COMMAND_NEEDS_NO_ACK : The command needs no acknowledge<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure ACKNOWLEDGE_COMMAND_WITH_<strong>ST</strong>ATUS (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

COMMAND_ID : in TES_DEFINITIONS.T_IDENTIFIER;<br />

SAS_<strong>ST</strong>ATUS : in TES_DEFINITIONS.T_LINK_<strong>ST</strong>ATUS;<br />

SAS_ERRORS : in INTEGER;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS;<br />

SAS_LA<strong>ST</strong>_ERROR : in VICOS_DEFINITIONS.T_LOG_TEXT_LONG);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

322 von/of: 662<br />

–– DESCRIPTION<br />

–– This procedure is the answer to a <strong>ST</strong>ATUS_REQUE<strong>ST</strong> command received from<br />

–– TES. A SAS must call this procedure within the defined timeout interval,<br />

–– otherwise TES will detect a time out.<br />

–– The application id is the ID returned by TES during the connect operation.<br />

–– The command id is the one returned during READ_COMMAND.<br />

–– SAS_<strong>ST</strong>ATUS is the current state of the SAS. The SAS_ERRORS is the<br />

–– accumulated number of errors detected in this SAS. It is up to the SAS<br />

–– to decide how this counter is maintained. The SAS_LA<strong>ST</strong>_ERROR is a string<br />

–– providing more subtle information on the last error encountered.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– INVALID_COMMAND_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– COMMAND_TIMEOUT : The acknowledge comes too late, sorry...<br />

–– COMMAND_NEEDS_NO_ACK : The command needs no acknowledge<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure SEND_MESSAGE_TO_AP (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

AP_NAME : in <strong>ST</strong>RING;<br />

MESSAGE : in TES_DEFINITIONS.T_AP_MESSAGE;<br />

MESSAGE_LENGTH : in POSITIVE;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure sends a message to an AP’s message buffer. The application<br />

–– id is the ID returned by TES during the connect operation.The AP name is<br />

–– the pathname of the AP the message shall be sent to. In case several<br />

–– instances of the AP are running, TES will put the message into all input<br />

–– buffers.<br />

–– The message is a string to be sent to the TES AP. The length is given in<br />

–– parameter MESSAGE_LENGTH.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– AP_NOT_FOUND : The AP does not exist on the testnode<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure SEND_ERROR_MESSAGE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ERROR_MESSAGE_SHORT : in VICOS_DEFINITIONS.T_LOG_TEXT_SHORT;<br />

ERROR_MESSAGE_LONG : in VICOS_DEFINITIONS.T_LOG_TEXT_LONG;<br />

ERROR_TYPE : in VICOS_DEFINITIONS.T_LOG_TYPE;<br />

LOCAL_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME<br />

:= <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

SMT_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME<br />

:= <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

SHOW_IT : in BOOLEAN := TRUE;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

323 von/of: 662<br />

–– DESCRIPTION<br />

–– This procedure sends an error message to the <strong>CGS</strong> product TES. The error<br />

–– message is always written into the <strong>CGS</strong> test result database. By default,<br />

–– it is also shown to the user on workstations. Only if the parameter<br />

–– SHOW_IT is set to FALSE, then it is not shown but only logged.<br />

–– The APPLICATION_ID is the ID returned by TES during the connect operation.<br />

–– ERROR_MESSAGE_SHORT and ERROR_MESSAGE_LONG are two text fields of the<br />

–– message. The short text is always immediately shown on the screen of the<br />

–– workstation (provided SHOW_IT is TRUE) whereas the long text is only<br />

–– visible if the user double–clicks to the error message on the screen.<br />

–– Thus short and long texts should be carefully chosen.<br />

–– The ERROR_TYPE can be set by the SAS as needed. ”WRN” for warnings, ”MSG”<br />

–– or ”INFO” for messages providing just information to the user and ”ERR”<br />

–– for reports on error shall be used (refer to VICOS_DEFINITIONS for resp.<br />

–– constants).<br />

–– The group code for the error message is set by <strong>CGS</strong> to ”SAS ”.<br />

–– Two time_tags can be provided with each error message, being local time<br />

–– and SMT. If the NULL_DATE_AND_TIME is given, <strong>CGS</strong> will add the actual time<br />

–– as the time tag.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure READ_TIME (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

LOCAL_TIME : out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SMT : out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SMT_RUNNING : out BOOLEAN;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure returns the actual local time and SMT as well as the<br />

–– current state of the SMT, i.e. whether it is running or not.<br />

–– The application id is the one returned by TES during the connect<br />

–– operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– TSS_ERROR : the time synchronisation sw could not provide timing<br />

–– information for unknown reasons<br />

procedure READ_SMT_DETAILS (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

SMT : out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SYNC_SW_<strong>ST</strong>ATUS : out BOOLEAN;<br />

SYNC_SW_LOCKED : out BOOLEAN;<br />

SYNC_SW_IN_LIMIT : out BOOLEAN;<br />

SMT_SERVER : out BOOLEAN;<br />

MTU_PRESENT : out BOOLEAN;<br />

SMT_<strong>ST</strong>ATUS : out T_SMT_<strong>ST</strong>ATUS;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

SMT_OFFSET : out INTEGER;<br />

MTU_<strong>ST</strong>ATUS : out INTEGER;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

324 von/of: 662<br />

–– DESCRIPTION<br />

–– This procedure returns the detailed status of the SMT.<br />

–– The application id is the one returned by TES during the connect<br />

–– operation.<br />

–– SYNC_SW_<strong>ST</strong>ATUS returns, whether the NTP Status file, which is updated<br />

–– every, minute by a crontab job if NTP is running, was read and has the<br />

–– correct format<br />

–– SYNC_SW_LOCKED returns, whether synchronisation source for the local NTP<br />

–– process is considered as reliable.<br />

–– SYNC_SW_IN_LIMIT returns, whether the time deviation between the NTP<br />

–– client and its synchronisation source is in the allowed limit<br />

–– SMT_SERVER returns, whether the local machine is SMT server (TRUE) or not<br />

–– MTU_PRESENT returns, whether a MTU is present (TRUE) or not<br />

–– SMT_<strong>ST</strong>ATUS returns the actual SMT status<br />

–– SMT_OFFSET returns the actual SMT offset<br />

–– MTU_<strong>ST</strong>ATUS returns the actual MTU status<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– TSS_ERROR : the time synchronisation sw could not provide timing<br />

–– information for unknown reasons<br />

procedure WAIT_UNTIL (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

WAKE_UP_TIME : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

TIME_TYPE : in <strong>CGS</strong>_CALENDAR.T_TIME_TYPE;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure waits until a given wake up time which can be either local<br />

–– time or SMT depending on parameter Time_Type.<br />

–– The application id is the one returned by TES during the connect<br />

–– operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– SMT_RESET : the SMT has been reset so the wake up time may not be correct.<br />

–– TSS_ERROR : the time synchronisation sw could not provide timing<br />

–– information for unknown reasons<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– ADU SERVICES<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ANNOUNCE_ADU_SERVICE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure announces to <strong>CGS</strong> that the SAS is now able to handle ADUs<br />

–– respectively ADU requests.The application id is the ID returned by TES<br />

–– during the connect operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

325 von/of: 662<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure WITHDRAW_ADU_SERVICE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure announces to <strong>CGS</strong> that the SAS is no longer able to handle<br />

–– ADUs respectively ADU requests.The application id is the ID returned by<br />

–– TES during the connect operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure SUPPLY_ADU (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ADU : in ADT_ADU.T_ADU;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure sends an ADU to TES.The application id is the ID returned<br />

–– by TES during the connect operation.The ADU is the ADU to be sent to TES.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure SUSPEND_ADU (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ADU_SID : in MPS_DEFINITIONS.SID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure indicates to TES that the ADU is from now on suspended<br />

–– until a new ADU is sent. The application id is the ID returned<br />

–– by TES during the connect operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

326 von/of: 662<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– GDU SERVICES<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ANNOUNCE_GDU_SERVICE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure announces to <strong>CGS</strong> that the SAS is now able to handle<br />

–– GDUs.The application id is the ID returned by TES during the connect<br />

–– operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure WITHDRAW_GDU_SERVICE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure announces to TES that the SAS is no longer able to handle<br />

–– GDUs.The application id is the ID returned by TES during the connect<br />

–– operation.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– DATA PROCESSING SERVICES<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure READ_RAW_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_PATHNAME : in <strong>ST</strong>RING;<br />

VALUE_ALTERNATIVE : out VICOS_DEFINITIONS.T_RAW_VALUE_ALTERNATIVES;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

INT_VALUE : out NUMERIC_TYPES.INTEGER32;<br />

UINT_VALUE : out NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

FLOAT_VALUE : out NUMERIC_TYPES.SINGLE_FLOAT;<br />

BYTE<strong>ST</strong>REAM_VALUE : in out MPS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure read the current raw value of an enditem from <strong>CGS</strong>. Since<br />

–– enditems can have several raw value alternatives, the procedure returns<br />

–– the type of raw value in parameter VALUE_ALTERNATIVE. Depending on the<br />

–– value of this parameter, the other ..._VALUE parameter will hold the<br />

–– actual raw value returned. The other ones will be zeroed or empty.<br />

–– APPLICATION_ID is the ID returned by TES during the connect operation.<br />

–– The enditem is identified through its database pathname. For simplicity<br />

–– reasons this is a string<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

327 von/of: 662<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– ENDITEM_NOT_ACQUIRED : the enditem is currently not acquired, so there<br />

–– is no raw value<br />

–– ENDITEM_UNKNOWN : the enditem is unknown, so the pathname is wrong<br />

–– or the item is maintained on another test node.<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure READ_ENGINEERING_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_Pathname : in <strong>ST</strong>RING;<br />

VALUE_ALTERNATIVE : out MPS_DEFINITIONS.T_SW_TYPE;<br />

INT_VALUE : out NUMERIC_TYPES.INTEGER32;<br />

FLOAT_VALUE : out NUMERIC_TYPES.SINGLE_FLOAT;<br />

<strong>ST</strong>ATECODE_VALUE : out MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

BYTE<strong>ST</strong>REAM_VALUE : in out MPS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure read the current engineering value of an enditem from <strong>CGS</strong>.<br />

–– Since enditems can have several value alternatives, the procedure returns<br />

–– the type of value in parameter VALUE_ALTERNATIVE. Depending on the value<br />

–– of this parameter, the other ..._VALUE parameter will hold the actual<br />

–– engineering value returned. The other ones will be zeroed or empty.<br />

–– Note that although MPS_DEFINITIONS.T_SW_TYPE provides many more<br />

–– alternatives only integer, float, statecode or bytestream values can be<br />

–– returned since these correspond to the list of allowed <strong>CGS</strong> database<br />

–– measurement or SW variable enditems.<br />

–– APPLICATION_ID is the ID returned by TES during the connect operation.<br />

–– The enditem is identified through its database pathname. For simplicity<br />

–– reasons this is a string<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

328 von/of: 662<br />

–– ENDITEM_NOT_ACQUIRED : the enditem is currently not acquired, so there<br />

–– is no value<br />

–– ENDITEM_UNKNOWN : the enditem is unknown, so the pathname is wrong<br />

–– or the item is maintained on another test node.<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)<br />

procedure WRITE_ENGINEERING_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_PATHNAME : in <strong>ST</strong>RING;<br />

VALUE : in NUMERIC_TYPES.INTEGER32;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

procedure WRITE_ENGINEERING_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_PATHNAME : in <strong>ST</strong>RING;<br />

VALUE : in NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

procedure WRITE_ENGINEERING_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_PATHNAME : in <strong>ST</strong>RING;<br />

VALUE : in NUMERIC_TYPES.SINGLE_FLOAT;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

procedure WRITE_ENGINEERING_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_PATHNAME : in <strong>ST</strong>RING;<br />

VALUE : in MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

procedure WRITE_ENGINEERING_VALUE (<br />

APPLICATION_ID : in TES_DEFINITIONS.T_APPLICATION_ID;<br />

ENDITEM_PATHNAME : in <strong>ST</strong>RING;<br />

VALUE : in MPS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

<strong>ST</strong>ATUS : out TES_DEFINITIONS.T_RETURN_<strong>ST</strong>ATUS);<br />

–– DESCRIPTION<br />

–– This procedure writes an engineering value of an enditem of type<br />

–– EGSE_...SW_VARIABLE.<br />

–– The application id is the ID returned by TES during the connect<br />

–– operation.<br />

–– The pathname is the pathname of the enditem to be written. For<br />

–– simplicity reasons this is a string.<br />

–– The procedure comes in overloaded versions for the different types of<br />

–– values to be written.<br />

–– RETURN <strong>ST</strong>ATES<br />

–– SUCCESS : the call was successfull<br />

–– CURRENT_MODE_WRONG : TES is in idle or error mode or it is currently<br />

–– not running<br />

–– COMMUNICATION_ERROR : some communication problem exists, carefully<br />

–– look into your system topology table, maybe TES<br />

–– died in the meantime<br />

–– INVALID_APPLICATION_ID : The identifier is wrong, perhaps an old one is<br />

–– used?<br />

–– ENDITEM_UNKNOWN : the enditem is unknown, so the pathname is wrong<br />

–– or the item is maintained on another test node.<br />

–– NOT_A_SW_VALUE : the enditem exists but is not a SW variable<br />

–– TYPE_MISMATCH : the enditem’s type defined in the database and<br />

–– the data supplied do not match.<br />

–– OTHER_ERROR : an unexpected error occurred or the SAS has not<br />

–– called READ_COMMAND in time, i.e. the time–out<br />

–– has expired (configurable in the TES_CONFIG_FILE)


Space Infrastructure<br />

––<br />

–– OBSOLETE<br />

––<br />

procedure SET_POLLING_INTERVAL<br />

(MILLI_SECONDS : in NATURAL := 10);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

329 von/of: 662<br />

–– DESCRIPTION<br />

–– This procedure sets the interval at which the input of an SAS is polled<br />

–– for incomming commands.<br />

–– When being called in an SAS, this must occure before the call of the<br />

–– CONNECT operation, but it is not necessary to call this procedure because<br />

–– the default polling interval is set to 10 milliseconds.<br />

–– If an SAS needs to respond to commands quickly (e.g. for GDUs) then the<br />

–– intervall should be set to a value between 10 and 100 [milliseconds]. If<br />

–– a SAS produces only ADUs or doesn’t have stringent repsonse time<br />

–– requirements, a higher value (100 .. 300 [milliseconds]) should be<br />

–– choosen.<br />

–– A high value generally reduces the UNIX system load and results in better<br />

–– overall performance of the test node.<br />

–– EXCEPTIONS: none, any value will be accepted.<br />

–– Note: The procedure SET_POLLING_INTERVALL is not effective anymore in<br />

–– <strong>CGS</strong> 4.2.0 onwards. The polling mechanism of the underlying Network<br />

–– Software has been replaced by Signal Handling to improve performance<br />

–– The procedure has been kept, however, to guarantee upwards compatibility<br />

––<br />

–– END OBSOLETE<br />

––<br />

end TES_API;


Space Infrastructure<br />

7.8 VICOS Housekeeping Values<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

330 von/of: 662<br />

VICOS shall internally maintain a set of housekeeping data and make these available as end–items to the user.<br />

These housekeeping data are local state information about the current test node as well as database server node<br />

status information (provided by exactly one test node: the MTP).<br />

These end–items are defined in the mission data base in the subtree that is loaded into a test node with the<br />

load_scoe operation.<br />

When defining the database end–item the reference to a housekeeping value is made by inclusion of the housekeeping<br />

values’ ID number in the end–item’s definition. Also, a default value has to be defined for the end–item.<br />

In case the actual housekeeping value cannot be provided, then the default value will be provided.<br />

Typically, housekeeping data are ”updated” when something significant or relevant happens. However, some<br />

of the variables are ”computed” cyclically, i.e. the values 10, 90, 202, 207, 212 and so on, 1001 ... 1051. Number<br />

12 is updated each time a record is read from the archive file. The cyclically computed HK values can in certain<br />

instances be updated also in the middle of a cycle where they would not be updated normally.<br />

Formal <strong>Interface</strong> Description<br />

In the formal part of this interface (<strong>Interface</strong> Definition section), the detailed list of housekeeping values is given.


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

331<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

TES shall internally maintain a set of housekeeping data and make these available to the user. These housekeeping data are local state information<br />

about the current test node as well as database server node status information (provided by exactly one test node: the MTP).<br />

The information maintained in housekeeping values is made available to the user by means of the S/W variable construct, i.e. for each housekeeping<br />

value the user wants to use he has to define a Software variable of appropriate type in his/her configuration database. Thus, the user is free<br />

to choose appropriate names for his/her values. Reference to a certain housekeeping value is made through its ID in the Software variable definition.<br />

In the following, the list of housekeeping values is given.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

331 von/of: 662<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

332<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

332 von/of: 662<br />

ID_Number<br />

Version<br />

Name Purpose Format Initial Value<br />

1 Init_Path Pathname used for LOAD_SCOE, i.e. the subtree initially loaded String ”” 3.1.2<br />

2 TES_Mode Current Test Execution Mode:<br />

Alternatives: NONE, NORMAL, REPLAY, SIMULATE<br />

Discrete $NONE 3.2<br />

3 TN_Status TN Status:<br />

Alternatives: IDLE, RUNNING, SUSPEND, ERROR<br />

Discrete $IDLE 3.2<br />

4 MTP_Mode The value for the MTP mode<br />

Alternatives: SCOE, MTP<br />

Discrete $SCOE 3.2<br />

5 CCU internal version MDA internal identifier of the CCU version used INTEGER 0 4.2<br />

6 Replay_Speed The replay speed INTEGER 100 4.1<br />

7 Archive_Time The cycle time in minutes an archive file will be closed automatically INTEGER 0 3.2<br />

8 Archive_State The current state of archiving:<br />

Alternatives: DISABLED, ENABLED<br />

Discrete $DISABLED 3.2<br />

10 Local_Time Actual Local Clock Value <strong>ST</strong>RING (*) 3.2<br />

11 SMT Actual Simulated Mission Time <strong>ST</strong>RING (*) 3.2<br />

12 RLT Recorded Local Time as read from time tags of archived data <strong>ST</strong>RING (*) 4.1<br />

20 Active_APs Number of started (but not terminated) APs INTEGER 0 3.2<br />

21 Susp._APs Number of APs explicitely suspended via system. lib. call INTEGER 0 3.2<br />

30 RPL_Begin_Time Replay begin time selected during init String (*) 4.1<br />

31 RPL_End_Time Replay end time selected during init String (*) 4.1<br />

90 Free_Disk Number of free KBytes on local disk INTEGER 0 3.2<br />

Note: RSMT is not used anylonger since in replay mode RSMT is identical to SMT.<br />

(*) Format of the time string is as defined in package <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_<strong>ST</strong>RING + 1 blank char + <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_TIME_<strong>ST</strong>RING.<br />

Initial value is <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME.<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

333<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

333 von/of: 662<br />

ID_Number<br />

Version<br />

Name Purpose Format Initial Value<br />

100 SAS1_Name Name of Appl. Progr. 1 (Pathname) that has connected to TES String ”” 3.2<br />

101 SAS1_<strong>Service</strong> The service announced by the SAS:<br />

Alternatives: NONE, ADU_SERV, GDU_SERV, ADU+GDU<br />

Discrete $NONE 3.2<br />

102 SAS1_Errors The number of error messages sent by this SAS INTEGER 0 3.2<br />

103 SAS1_Last_Err The last error message sent by this SAS String ”” 3.2<br />

104<br />

...<br />

SAS1_Link_ID The Link ID for the SAS number 1 INTEGER 0 3.2<br />

195 SAS20_Name Name of Appl. Progr. 20 (Pathname) that has connected to TES String ”” 3.2<br />

196 SAS20_<strong>Service</strong> The service announced by the SAS (see 101) Discrete $NONE 3.2<br />

197 SAS20_Errors The number of error messages sent by this SAS INTEGER 0 3.2<br />

198 SAS20_Last_E. The last error message sent by this SAS String ”” 3.2<br />

199 SAS20_Link_ID The Link ID for the SAS number 20 INTEGER 0 3.2<br />

200 AP_1_Name Pathname of AP1 String ”” 3.2<br />

201 AP_1_Status Status of AP 1: Discrete $NOT_RUN 3.2<br />

Alternatives: NOT_RUN, INITIAL, RUNNING, SUSPEND, TERMINAT<br />

202 AP_1_Stmt. Current UCL Statement of AP INTEGER 0 3.2<br />

203 AP_1_HCI_ID The identification of the HCI that has started this AP or the parent AP <strong>ST</strong>RING ”” 3.2<br />

204 AP_1_ID The AP identifier INTEGER 0 3.2<br />

. . .<br />

295 AP_20_Name Pathname of AP20 String ”” 3.2<br />

296 AP_20_Status Status of AP 20 (see 201) Discrete $NOT_RUN 3.2<br />

297 AP_20_Stmt. Current UCL Statement of AP INTEGER 0 3.2<br />

298 AP_20_HCI_ID The identification of the HCI that has started this AP or the parent AP <strong>ST</strong>RING ”” 3.2<br />

299 AP_20_ID The AP identifier INTEGER 0 3.2<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

ID_Number Name Purpose Format Initial Value<br />

Version<br />

334<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

334 von/of: 662<br />

301 Nb._Enditems Number of enditems that can be monitored (loaded from MDB) INTEGER 0 3.2<br />

302 Nb._Enabled Number of enditems enabled for monitoring INTEGER 0 3.2<br />

303 Nb._Discrete No. of discrete enditems that can be monitored (loaded from MDB) INTEGER 0 3.2<br />

305 Nb._Analog No. of analog enditems that can be monitored (loaded from MDB) INTEGER 0 3.2<br />

306 Nb._bytestream No. of bytestream enditems that can be monitored (loaded from MDB) INTEGER 0 3.2<br />

310 Nb_Soft OOL Number of enditems currently out of soft limit (1) INTEGER 0 3.2<br />

311 Nb_Hard OOL Number of enditems currently out of hard limit (1) INTEGER 0 3.2<br />

312 Nb._Soft_exceptions Number of soft limit violations since last <strong>ST</strong>ART (1) INTEGER 0 3.2<br />

313 Nb._Hard_exceptions Number of hard limit violations since last <strong>ST</strong>ART (1) INTEGER 0 3.2<br />

320 Nb. Acquired Number of measurements currently acquired INTEGER 0 4.2<br />

321 Nb. EVL Nb of acquired measurements or SW variables or derived values with EVL INTEGER 0 4.2<br />

322 Nb. Measurements Number of meaurements defined INTEGER 0 4.3<br />

323 Nb. SW_Variables Number of software variables defined INTEGER 0 4.3<br />

324 Nb. Derived_Values Number of derived values defined INTEGER 0 4.3<br />

400 Nb._stimuli Number of GDUs sent out since last <strong>ST</strong>ART incl. erroneous ones INTEGER 0 3.2<br />

401 Stimuli_Errors Number of GDUs with errors in SAS/FEE since last <strong>ST</strong>ART INTEGER 0 3.2<br />

402 Wrong_Stimulus Pathname of last stimulus that resulted in an error String ” 3.2<br />

404 Destination Destination of last erroneous stimulus (SAS name) String ” 3.2<br />

410 Nb._of_digital_GDUs Number of digital output GDUs (discreteStimuli) (loaded from MDB) INTEGER 0 3.2<br />

411 Nb._of_analog_GDUs Number of analog output GDUs (analog Stimuli) (loaded from MDB) INTEGER 0 3.2<br />

412 Nb._of_TC_GDUs Number of GDUs with CCSDS TCs (loaded from MDB) INTEGER 0 3.2<br />

413 Nb._of_GDUs Total number of GDUs (loaded from MDB) INTEGER 0 3.2<br />

414 Nb._of_bin.pack.GDUs Number of binary packet GDUs (loaded from MDB) INTEGER 0 4<br />

415 Nb.GDU_Verif_Succ Number of GDUs sent with successful verification INTEGER 0 4.3<br />

416 Nb.GDU_Verif_Fail Number of GDUs sent with failed verification INTEGER 0 4.3<br />

420 Nb. of SW cmd. sent Number of SW commands sent INTEGER 0 4.1<br />

421 Nb. of rtn. packets Number of return packets received for SW commands INTEGER 0 4.1<br />

500 AP_21_Name Pathname of AP21 String ”” 4.3<br />

501 AP_21_Status Status of AP 21 (see 201) Discrete $NOT_RUN 4.3<br />

502 AP_21_Stmt. Current UCL Statement of AP INTEGER 0 4.3<br />

503 AP_21_HCI_ID The identification of the HCI that has started this AP or the parent AP <strong>ST</strong>RING ”” 4.3<br />

504 AP_21_ID The AP identifier INTEGER 0 4.3<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

335 von/of: 662<br />

. . .<br />

595 AP_40_Name Pathname of AP40 String ”” 4.3<br />

596 AP_40_Status Status of AP 40 (see 201) Discrete $NOT_RUN 4.3<br />

597 AP_40_Stmt. Current UCL Statement of AP INTEGER 0 4.3<br />

598 AP_40_HCI_ID The identification of the HCI that has started this AP or the parent AP <strong>ST</strong>RING ”” 4.3<br />

599 AP_40_ID The AP identifier INTEGER 0 4.3<br />

REMARKS:<br />

(1) an enditem is out–of–limit if it is enabled for monitoring and its value is outside the defined range, independently from any monitoring exception and from alarm<br />

counter, e.g. going from out of high hard limit to out of high nominal limit will set the HK value Nb._Soft_exceptions but will not lead to any monitoring exception.<br />

335<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

336<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

336 von/of: 662<br />

ID_Number<br />

Version<br />

Name Purpose Format Initial Value<br />

601 Served_WSs Number of connected workstations (HCI) INTEGER 0 3.2<br />

700 Nb_COND_ENDITEMS number of conditions defined<br />

4.1<br />

INTEGER 0<br />

701 Nb_CONDITIONS<br />

4.1<br />

Number of enditems carrying<br />

conditions<br />

INTEGER 0<br />

702 Nb_TRIGGERED_COND Number of actions triggered<br />

4.1<br />

from conditions since last start<br />

INTEGER 0<br />

900 TIME_OF_EXCEPTION time (in seconds since midnight)<br />

of detection of a monitoring exception<br />

FLOAT 0.0 4.1<br />

901 TIME_OF_<strong>ST</strong>ART_AP time (in seconds since midnight)<br />

4.1<br />

of the last start of an AP<br />

FLOAT 0.0<br />

902 TIME_OF_RESUME_AP time (in seconds since midnight) FLOAT 0.0 4.1<br />

of the last resume of an AP<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Daimler–Benz Aerospace<br />

Raumfahrt Infrastruktur<br />

337<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

337 von/of: 662<br />

ID_Number<br />

Version<br />

Name Purpose Format Initial Value<br />

1001 PR1_Status The status of printer1:<br />

Alternatives: DISABLED, ENABLED<br />

Discrete $DISABLED 3.2<br />

1002 PR2_Status The status of printer 2 (see 1001) Discrete $DISABLED 3.2<br />

1003 PQ1_Status The status of print queue 1:<br />

Alternatives: OFF, READY, PRINTING, NO_PAPER, NO_TONER<br />

Discrete $OFF 3.2<br />

1004 PQ2_Status The status of print queue 2 (see 1003) Discrete $OFF 3.2<br />

1005 PQ1_Jobs The number of jobs in print queue 1 INTEGER 0 3.2<br />

1006 PQ2_Jobs The number of jobs in print queue 2 INTEGER 0 3.2<br />

1011 MD_Free_Spac The free disc space on the magnetic disc in kilobytes INTEGER 0 3.2<br />

1012 FA_1_Dev_Status The device status of the long term storage medium Discrete $OK 3.2<br />

Alternatives:OK, NOT_OK<br />

1020 TRBD_Overall_status The overal status of the test result data base: Discrete $OK 3.2<br />

Alternatives: OK, NOT_OK<br />

1050 Session_Name The name of the current test execution session String ”” 3.2<br />

1051 TRDB_Eval_U The number of evaluation users connected to TRDB INTEGER 0 3.2<br />

1060 TRDB_Event_Usage The percentage of event table space used INTEGER 0 4.1<br />

1061 TRDB_MA_Usage The percentage of master archive table space used INTEGER 0 4.1<br />

1062 TRDB_Misc_Usage he percentage of miscellaneous table space used INTEGER 0 4.1<br />

1100 T_SYNC The local clock of this machine is synchronised with the NTP server Discrete $FALSE 3.2<br />

Alternative: TRUE, FALSE<br />

1101 MTU_PRESENT The machine has an external master time unit (MTU) Discrete $FALSE 3.2<br />

Alternative: TRUE, FALSE<br />

1102 SMT_<strong>ST</strong>ATUS The status of the SMT Discrete $NOT_INIT 3.2<br />

Alternative: NOT_INIT, <strong>ST</strong>OPPED, RUNNING<br />

Daimler–Benz Aerospace – All Rights Reserved – Copyright per DIN 34


Space Infrastructure<br />

7.9 <strong>System</strong> Libraries<br />

7.9.1 UCL Ground <strong>System</strong> Library<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

338 von/of: 662<br />

The GROUND_LIBRARY contains all standard ground commands used for control of the ground system.<br />

Library Id (Body_Id): 2<br />

7.9.1.1 Routines Summary<br />

The Ground UCL library routines are:<br />

CLOCK REMOVE_PICTURE<br />

CLOSE_ARCHIVE RESET_APPLICATION<br />

DELAY RESUME_AP<br />

DISABLE_ARCHIVING ROUTE_TO_SAS<br />

DISABLE_CONDITIONS SEND_SIMULATED_ADU<br />

DISABLE_ENDITEM SET_BITS_IN_SIMULATED_ADU<br />

DISABLE_EVL SET_DELTA_LIMIT<br />

DISABLE_MONITORING SET_EXCEPTION_COUNT<br />

DISPLAY_PICTURE SET_EXPECTED_<strong>ST</strong>ATE<br />

DOWNLOAD SET_EXPECTED_VALUE<br />

ENABLE_ARCHIVING SET_HIGH_LIMIT<br />

ENABLE_CONDITIONS SET_INTEGER_DELTA_LIMIT<br />

ENABLE_ENDITEM SET_INTEGER_HIGH_LIMIT<br />

ENABLE_EVL SET_INTEGER_LOW_LIMIT<br />

ENABLE_MONITORING SET_LIMIT_SET<br />

ENABLE_ON_BYTE_<strong>ST</strong>REAM SET_LIMIT_SET_ON_BYTE_<strong>ST</strong>REAM<br />

ENABLE_ON_FLOAT SET_LIMIT_SET_ON_FLOAT<br />

ENABLE_ON_INTEGER SET_LIMIT_SET_ON_INTEGER<br />

ENABLE_ON_<strong>ST</strong>ATECODE SET_LIMIT_SET_ON_<strong>ST</strong>ATECODE<br />

EXECUTE_AP SET_LOW_LIMIT<br />

GET_ACQUISITION_<strong>ST</strong>ATUS SET_PROCESSING<br />

GET_AP_ID SET_SIMULATED_ENDITEM_VALUE<br />

GET_AP_<strong>ST</strong>ATUS <strong>ST</strong>ART_ACQUISITION<br />

GET_APPLICATION_ID <strong>ST</strong>ART_AP_ON_BYTE_<strong>ST</strong>REAM<br />

GET_APPLICATION_NAME <strong>ST</strong>ART_AP_ON_FLOAT<br />

GET_APPLICATION_<strong>ST</strong>ATUS <strong>ST</strong>ART_AP_ON_INTEGER<br />

GET_CONDITION <strong>ST</strong>ART_AP_ON_<strong>ST</strong>ATECODE<br />

GET_CONDITION_ITEM <strong>ST</strong>ART_APPLICATION<br />

GET_ENDITEM_MONITOR_<strong>ST</strong>ATUS <strong>ST</strong>ART_SMT<br />

GET_FULL_ENDITEM_MONITOR_<strong>ST</strong>ATUS <strong>ST</strong>OP_ACQUISITION<br />

GET_PROCESSING_<strong>ST</strong>ATE <strong>ST</strong>OP_SMT<br />

GET_VERIFICATION_<strong>ST</strong>ATUS<br />

INIT_APPLICATION SUSPEND_AP<br />

IS_LOCAL_NODE SYNCHRONISE_WITH_AP<br />

ISSUE<br />

ISSUE_AND_VERIFY UCL_<strong>ST</strong>ATUS<br />

LOAD_APPLICATION UNLOAD_APPLICATION<br />

LOAD_UCL USER_EVENT<br />

LOG<br />

NUMBER_CONDITIONS WAIT_FOR_ADU<br />

NUMBER_OF_CONDITION_ITEMS WAIT_UNTIL<br />

OWN_AP_ID* WITHDRAW_CONDITION<br />

PATHNAME_TO_<strong>ST</strong>RING WRITE_MESSAGE_TO_AP*<br />

READ_MESSAGE_FROM_AP* WRITE_MESSAGE_TO_APPLICATION*<br />

READ_MESSAGE_FROM_APPLICATION* WRITE_MESSAGE_TO_USER*<br />

READ_MESSAGE_FROM_USER*<br />

READ_NUMBER_FROM_USER*


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

339 von/of: 662<br />

NOTE: The routines marked with asterisks (*) cannot be called from HLCL, neither interactively nor<br />

out of HLCL sequences.<br />

7.9.1.2 UCL Ground <strong>System</strong> Library Specification<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– *******************************************<br />

–– GROUND_LIBRARY UCL <strong>System</strong> Library<br />

–– *******************************************<br />

––<br />

––AB<strong>ST</strong>RACT––<br />

–– Defines Procedures to control the execution of <strong>CGS</strong>/VICOS<br />

–– Must be compiled for ground and with Body Id = 2<br />

––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– OBJECT NAME : GROUND_LIBRARY <strong>System</strong> Library<br />

–– VERSION : ##V##<strong>CGS</strong>_4.3.0<br />

–– Note: Changes Procedure Numbers !<br />

–– <strong>CGS</strong> CM : ”%Z%%Z%”<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : UCLC<br />

–– LANGUAGE : UCL<br />

––CHANGE HI<strong>ST</strong>ORY<br />

–– PIRN 8076, Issue 1/– for <strong>CGS</strong> V4.3.0:<br />

–– Add derived values to type definitions<br />

–– Add Command Verification Status<br />

–– Add procedures ISSUE_AND_VERIFY,GET_VERIFICATION_<strong>ST</strong>ATUS,ENABLE_CONDITION,<br />

–– DISABLE_CONDITION<br />

–– Allow virtual trees for set_limit_set operations<br />

–– Update acquisition status<br />

–– PIRN 8003, Issue 1/C for <strong>CGS</strong> V4.2.0.9: Add new procedures<br />

–– Add new procedures GET_ACQUISITION_<strong>ST</strong>ATUS, GET_values<br />

–– GET_APPLICATION_ID, GET_APPLICATION_NAME<br />

–– Add CDU to all Virtual Pathname definitions<br />

–– Add constants/array for UCL Status Text<br />

–– Add conversion routines for pathnames to text / statecode to text<br />

–– PIRN 8003, Issue 1/B for <strong>CGS</strong> V4.1.1.9:<br />

–– update types and operations for the control of conditions<br />

–– add UCL return constant NOT_OK<br />

–– PIRN 8003, Issue 1/A for <strong>CGS</strong> V4.1.1.9:<br />

–– Include operation ROUTE_TO_SAS<br />

–– Include types and operations for control of conditions<br />

–– Add additional parameter ”ADU” to commands <strong>ST</strong>ART_ACQUISITION,<br />

–– <strong>ST</strong>OP_ACQUISITION and ENABLE_MONITORING<br />

–– PIRN 8003, Issue 1/– for <strong>CGS</strong> V4.1.1.8:<br />

–– Include interfaces for setting / reading integer limits<br />

–– Provide the value of the alarm counter for all monitor end–items<br />

–– Include operation to identify the EGSE node<br />

–– Include operation to get the AP_ID<br />

–– Handling of default limit set in ENABLE_MONITORING<br />

–– PIRN 6012, Issue 1/D for <strong>CGS</strong> V4.0:<br />

–– Include command GET_FULL_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

–– Extend ISSUE_ITEM_NAME: add EGSE_BINARY_PACKET<br />

–– Modified AP_EXECUTION_<strong>ST</strong>ATE / AP_COMPLETION_<strong>ST</strong>ATE<br />

––END HI<strong>ST</strong>ORY


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

library GROUND_LIBRARY;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– TYPES<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type USER_MESSAGE = <strong>ST</strong>RING (255);<br />

type VALUE_<strong>ST</strong>RING = <strong>ST</strong>RING (255);<br />

type ACQUISITION_COLLECTION =<br />

PATHNAME (EGSE_INTEGER_MEASUREMENT,<br />

EGSE_FLOAT_MEASUREMENT,<br />

EGSE_DISCRETE_MEASUREMENT,<br />

EGSE_BYTE_<strong>ST</strong>REAM_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_DISCRETE_SW_VARIABLE,<br />

EGSE_BYTE_<strong>ST</strong>REAM_SW_VARIABLE,<br />

EGSE_INTEGER_DERIVED_VALUE,<br />

EGSE_FLOAT_DERIVED_VALUE,<br />

EGSE_DISCRETE_DERIVED_VALUE,<br />

EGSE_<strong>ST</strong>RING_DERIVED_VALUE,<br />

EGSE_MONITOR_LI<strong>ST</strong>,<br />

ADU_DESCRIPTION,<br />

CDU,<br />

VIRTUAL);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

340 von/of: 662<br />

type ADU_NAME = PATHNAME (ADU_DESCRIPTION);<br />

–– ADU_DESCRIPTION covers the MDB enditem types<br />

–– CCSDS_ADU_DESCRIPTION, UN<strong>ST</strong>RUCTURED_ADU_DESCRIPTION and<br />

–– <strong>ST</strong>RUCTURED_ADU_DESCRIPTION<br />

–– (used with this meaning also in other type definitions)<br />

type ANALOG_MONITOR_ITEM_NAME =<br />

PATHNAME (EGSE_INTEGER_MEASUREMENT,<br />

EGSE_FLOAT_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_INTEGER_DERIVED_VALUE,<br />

EGSE_FLOAT_DERIVED_VALUE);<br />

type INTEGER_MONITOR_ITEM_NAME =<br />

PATHNAME (EGSE_INTEGER_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,<br />

EGSE_INTEGER_DERIVED_VALUE);<br />

type ROUTE_SAS_ITEM_NAME =<br />

PATHNAME (GDU_DESCRIPTION_LI<strong>ST</strong>,<br />

EGSE_ANALOG_<strong>ST</strong>IMULUS,<br />

EGSE_DISCRETE_<strong>ST</strong>IMULUS,<br />

EGSE_BINARY_PACKET,<br />

EGSE_PREDEFINED_TC,<br />

ADU_DESCRIPTION,<br />

CDU,<br />

VIRTUAL);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

341 von/of: 662<br />

type AP_<strong>ST</strong>ATE =<br />

(AP_RUNNING, AP_SUSPENDED, –– AP still exists in the system; current state<br />

AP_UNKNOWN, –– no such AP (may be terminated)<br />

AP_SUCCESS, AP_FAILURE, AP_ABORTED); –– result of synchronize with AP<br />

type AP_EXECUTION_<strong>ST</strong>ATE =<br />

AP_<strong>ST</strong>ATE (AP_RUNNING .. AP_UNKNOWN); –– see AP_<strong>ST</strong>ATE comment<br />

type AP_COMPLETION_<strong>ST</strong>ATE =<br />

AP_<strong>ST</strong>ATE (AP_UNKNOWN .. AP_ABORTED); –– see AP_<strong>ST</strong>ATE comment<br />

type AP_ID = INTEGER;<br />

type AP_ID_LI<strong>ST</strong> = ARRAY (1..20) OF AP_ID;<br />

type AP_NAME = PATHNAME (UCL_AUTOMATED_PROCEDURE);<br />

type APPLICATION_ERROR_MESSAGE = USER_MESSAGE;<br />

type APPLICATION_ID = INTEGER;<br />

type APPLICATION_NAME = <strong>ST</strong>RING (20);<br />

type APPLICATION_<strong>ST</strong>ATE =<br />

(SAS_UNLOADED, SAS_RESET, SAS_INIT, SAS_RUNNING, SAS_ABORTED);<br />

type BIT_COUNT = INTEGER (1 .. 32);<br />

type BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME =<br />

PATHNAME (EGSE_BYTE_<strong>ST</strong>REAM_MEASUREMENT,<br />

EGSE_BYTE_<strong>ST</strong>REAM_SW_VARIABLE,<br />

EGSE_<strong>ST</strong>RING_DERIVED_VALUE);<br />

type DISCRETE_MONITOR_ITEM_NAME =<br />

PATHNAME (EGSE_DISCRETE_MEASUREMENT,<br />

EGSE_DISCRETE_SW_VARIABLE,<br />

EGSE_DISCRETE_DERIVED_VALUE);<br />

type DOWNLOAD_ITEM_NAME = PATHNAME (EGSE_SOFTWARE);<br />

type ISSUE_ITEM_NAME =<br />

PATHNAME (GDU_DESCRIPTION_LI<strong>ST</strong>,<br />

EGSE_ANALOG_<strong>ST</strong>IMULUS,<br />

EGSE_DISCRETE_<strong>ST</strong>IMULUS,<br />

EGSE_BINARY_PACKET,<br />

EGSE_PREDEFINED_TC);<br />

type SINGLE_GDU_NAME =<br />

PATHNAME (EGSE_ANALOG_<strong>ST</strong>IMULUS,<br />

EGSE_DISCRETE_<strong>ST</strong>IMULUS,<br />

EGSE_BINARY_PACKET,<br />

EGSE_PREDEFINED_TC);<br />

type LIMIT_SET_NUMBER = INTEGER (0..5);<br />

type MONITOR_COLLECTION =<br />

PATHNAME (EGSE_INTEGER_MEASUREMENT,<br />

EGSE_FLOAT_MEASUREMENT,<br />

EGSE_DISCRETE_MEASUREMENT,<br />

EGSE_BYTE_<strong>ST</strong>REAM_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,


Space Infrastructure<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_DISCRETE_SW_VARIABLE,<br />

EGSE_BYTE_<strong>ST</strong>REAM_SW_VARIABLE,<br />

EGSE_INTEGER_DERIVED_VALUE,<br />

EGSE_FLOAT_DERIVED_VALUE,<br />

EGSE_DISCRETE_DERIVED_VALUE,<br />

EGSE_<strong>ST</strong>RING_DERIVED_VALUE,<br />

EGSE_MONITOR_LI<strong>ST</strong>,<br />

CDU,<br />

VIRTUAL);<br />

type MONITOR_ITEM_NAME =<br />

PATHNAME (EGSE_INTEGER_MEASUREMENT,<br />

EGSE_FLOAT_MEASUREMENT,<br />

EGSE_DISCRETE_MEASUREMENT,<br />

EGSE_BYTE_<strong>ST</strong>REAM_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_DISCRETE_SW_VARIABLE,<br />

EGSE_BYTE_<strong>ST</strong>REAM_SW_VARIABLE,<br />

EGSE_INTEGER_DERIVED_VALUE,<br />

EGSE_FLOAT_DERIVED_VALUE,<br />

EGSE_DISCRETE_DERIVED_VALUE,<br />

EGSE_<strong>ST</strong>RING_DERIVED_VALUE);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type MONITOR_<strong>ST</strong>ATUS = (MONITORING_DISABLED, IN_LIMITS, OUT_OF_LIMITS);<br />

type EXTENDED_MONITOR_<strong>ST</strong>ATUS =<br />

(DISABLED, NOT_ACQUIRED, NOMINAL,<br />

INTERRUPTED, –– for delta limits only<br />

NON_NOMINAL, –– for non–numeric items & delta limits<br />

OUT_OF_HIGH_LIMIT, –– for numeric absolute limits<br />

OUT_OF_LOW_LIMIT); –– dto.<br />

type ACQUISITION_<strong>ST</strong>ATUS =<br />

(VALID,<br />

NOT_ACQ,<br />

NOT_RECVD,<br />

NOT_MAINTAINED,<br />

DISAB,<br />

INVALID,<br />

<strong>ST</strong>ATIC);<br />

type LIMIT_VALUE = record<br />

case IS_INT : BOOLEAN<br />

when TRUE : I_VALUE : INTEGER;<br />

when FALSE : R_VALUE : REAL;<br />

end case;<br />

end record;<br />

type OPTIONAL_NUMERIC_LIMIT = record<br />

case DEFINED : BOOLEAN<br />

when FALSE :<br />

when TRUE : VALUE : LIMIT_VALUE;<br />

end case;<br />

end record;<br />

type OPTIONAL_<strong>ST</strong>ATECODE = record<br />

case DEFINED : BOOLEAN<br />

when FALSE :<br />

when TRUE : VALUE : <strong>ST</strong>ATECODE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

342 von/of: 662


Space Infrastructure<br />

end case;<br />

end record;<br />

type OPTIONAL_VALUE_<strong>ST</strong>RING = record<br />

case DEFINED : BOOLEAN<br />

when FALSE :<br />

when TRUE : VALUE : VALUE_<strong>ST</strong>RING;<br />

end case;<br />

end record;<br />

type NUMERIC_LIMITS = record<br />

HIGH,<br />

LOW,<br />

DELTA : OPTIONAL_NUMERIC_LIMIT;<br />

end record;<br />

type MONITOR_ITEM_CLASS = (NUMERIC, DISCRETE, BYTE_<strong>ST</strong>REAM);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type FULL_MONITOR_<strong>ST</strong>ATUS = record<br />

case LIMITS_DEFINED : BOOLEAN<br />

when FALSE :<br />

when TRUE :<br />

CURRENT_LIMIT_SET : INTEGER;<br />

NOMINAL_<strong>ST</strong>ATUS : EXTENDED_MONITOR_<strong>ST</strong>ATUS;<br />

case ITEM_CLASS : MONITOR_ITEM_CLASS<br />

when NUMERIC : DANGER_<strong>ST</strong>ATUS,<br />

DELTA_<strong>ST</strong>ATUS,<br />

DELTA_DANGER_<strong>ST</strong>ATUS :<br />

EXTENDED_MONITOR_<strong>ST</strong>ATUS;<br />

DANGER,<br />

NOMINAL: NUMERIC_LIMITS;<br />

when DISCRETE : EXPECTED_<strong>ST</strong>ATE : OPTIONAL_<strong>ST</strong>ATECODE;<br />

when BYTE_<strong>ST</strong>REAM : EXPECTED_<strong>ST</strong>RING : OPTIONAL_VALUE_<strong>ST</strong>RING;<br />

end case;<br />

ALARM_COUNT : UNSIGNED_INTEGER;<br />

end case;<br />

end record;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

343 von/of: 662<br />

type CMD_VERIFICATION_<strong>ST</strong>ATUS =<br />

(<strong>ST</strong>ARTED, –– Verification is started<br />

–– (i.e. is in Activation Delay)<br />

IN_PROGRESS, –– Verification is in progress<br />

–– (i.e. is in Verification Timeout)<br />

TC_VERIF_OK, –– Verification performed with success<br />

TC_VERIF_FAILED, –– Verification performed with no success<br />

–– (i.e. Verification Timeout elapsed)<br />

ERROR, –– Error during Verification Timeout<br />

NO_VERIFICATION, –– No Verification defined for this enditem<br />

ABORTED, –– Verification is aborted due to new issue of same<br />

–– command or stop of remote TES<br />

UNDEFINED); –– The verifcation status is not defined<br />

–– (sending aborted due to error,<br />

–– no command sent yet etc)<br />

type NODE_NAME = PATHNAME (EGSE_NODE);<br />

type PICTURE_ID = INTEGER;<br />

type PICTURE_NAME = PATHNAME (WDU_GROUND_SYNOPTIC_DISPLAY);


Space Infrastructure<br />

type PRIORITY = (LOW, HIGH);<br />

type TIME_BASE = (GUARANTEED_LOCAL_TIME, LOCAL_TIME, SMT);<br />

type UCL_ITEM_NAME = PATHNAME (UCL_AUTOMATED_PROCEDURE,<br />

UCL_USER_LIBRARY);<br />

type UCL_RETURN = INTEGER;<br />

type UCL_<strong>ST</strong>ATUS_TEXT = <strong>ST</strong>RING(120);<br />

type UCL_<strong>ST</strong>ATUS_CODES = ARRAY (1..100) OF UCL_<strong>ST</strong>ATUS_TEXT;<br />

type USER_MESSAGE_NAME = PATHNAME (EGSE_USER_MESSAGE);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

344 von/of: 662<br />

type CONDITION =<br />

(EQUAL, NOT_EQUAL, LESS, GREATER, LESS_EQUAL, GREATER_EQUAL, IN_RANGE);<br />

type DISCRETE_CONDITION = CONDITION (EQUAL .. NOT_EQUAL);<br />

type CONDITION_TYPE =<br />

(INTEGER_TYPE, REAL_TYPE, <strong>ST</strong>ATECODE_TYPE, BYTE_<strong>ST</strong>REAM_TYPE);<br />

type CONDITION_VAL = record<br />

case COND_TYPE : CONDITION_TYPE<br />

when INTEGER_TYPE : INTEGER_VALUE : INTEGER;<br />

when REAL_TYPE : REAL_VALUE : REAL;<br />

when <strong>ST</strong>ATECODE_TYPE : <strong>ST</strong>ATECODE_VALUE : <strong>ST</strong>ATECODE;<br />

when BYTE_<strong>ST</strong>REAM_TYPE : BYTE_<strong>ST</strong>REAM_VALUE : VALUE_<strong>ST</strong>RING;<br />

end case;<br />

end record;<br />

type FLOAT_MONITOR_ITEM_NAME =<br />

PATHNAME (EGSE_FLOAT_MEASUREMENT,<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_FLOAT_DERIVED_VALUE);<br />

type ON_OFF = (ON, OFF);<br />

type ACTION_KIND = (PROCESSING, LIMIT, <strong>ST</strong>ART_AP);<br />

type ACTION_DESCRIPTION = record<br />

case KIND : ACTION_KIND<br />

when PROCESSING :<br />

PROCESS_ITEM : ACQUISITION_COLLECTION;<br />

when LIMIT :<br />

LIMIT_ITEM : MONITOR_COLLECTION;<br />

LIMIT_SET : LIMIT_SET_NUMBER;<br />

when <strong>ST</strong>ART_AP :<br />

AP : AP_NAME;<br />

end case;<br />

end record;<br />

type CONDITION_<strong>ST</strong>ATE = (IS_TRUE, IS_FALSE, IS_UNKNOWN);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CON<strong>ST</strong>ANTS<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

constant NULL: CHARACTER := CHARACTER (0);


Space Infrastructure<br />

constant NULL_APPLICATION_NAME : APPLICATION_NAME := ””;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

constant DEFAULT_ARCH_FILE_OPEN_PERIOD: DURATION := 1800.0 [s];<br />

constant DEFAULT_ISSUE_TIMEOUT: DURATION := 0.5 [s];<br />

constant DEFAULT_LIMIT_SET: LIMIT_SET_NUMBER := 0;<br />

constant DEFAULT_MESSAGE: USER_MESSAGE := ””;<br />

constant ALL_CONDITIONS : INTEGER := 0;<br />

constant OK: UCL_RETURN := 1;<br />

constant AP_IS_EXECUTING: UCL_RETURN := 2;<br />

constant INVALID_PARAMETER: UCL_RETURN := 3;<br />

constant DISC_FULL: UCL_RETURN := 4;<br />

constant INVALID_AP_ID: UCL_RETURN := 5;<br />

constant INVALID_AT_TIME: UCL_RETURN := 6;<br />

constant INVALID_CYCLE: UCL_RETURN := 7;<br />

constant INVALID_EXC_COUNT: UCL_RETURN := 8;<br />

constant INVALID_ITEM_NAME: UCL_RETURN := 9;<br />

constant INVALID_LIMIT: UCL_RETURN := 10;<br />

constant INVALID_LIMIT_SET: UCL_RETURN := 11;<br />

constant INVALID_APPLICATION_ID: UCL_RETURN := 12;<br />

constant INVALID_NODE_NAME: UCL_RETURN := 13;<br />

constant INVALID_OFFSET: UCL_RETURN := 14;<br />

constant INVALID_PICTURE_ID: UCL_RETURN := 15;<br />

constant INVALID_PICTURE_NAME: UCL_RETURN := 16;<br />

constant INVALID_SIZE: UCL_RETURN := 17;<br />

constant ITEM_IS_DISABLED: UCL_RETURN := 18;<br />

constant ITEMS_NOT_ACQUIRED: UCL_RETURN := 19;<br />

constant MESSAGE_TOO_BIG: UCL_RETURN := 20;<br />

constant NO_ADU_SERVICE: UCL_RETURN := 21;<br />

constant NO_DELTA_LIMIT: UCL_RETURN := 22;<br />

constant APPLICATION_NACK: UCL_RETURN := 23;<br />

constant INVALID_APPLICATION_NAME: UCL_RETURN := 24;<br />

constant APPLICATION_NOT_READY: UCL_RETURN := 25;<br />

constant TIMEOUT: UCL_RETURN := 26;<br />

constant TOO_MANY_SYNOPTICS: UCL_RETURN := 27;<br />

constant TOO_MANY_APS: UCL_RETURN := 28;<br />

constant URT_UNKNOWN: UCL_RETURN := 29;<br />

constant INVALID_ADU_TYPE: UCL_RETURN := 30;<br />

constant INVALID_TE<strong>ST</strong>NODE_MODE: UCL_RETURN := 31;<br />

constant ITEM_NOT_SAS_COMPATIBLE: UCL_RETURN := 32;<br />

constant ITEM_NOT_FEE_COMPATIBLE: UCL_RETURN := 33;<br />

constant ITEM_NOT_UUT_COMPATIBLE: UCL_RETURN := 34;<br />

constant NO_GDU_SERVICE: UCL_RETURN := 35;<br />

constant ITEM_IS_ENABLED: UCL_RETURN := 36;<br />

constant INVALID_TIME: UCL_RETURN := 37;<br />

constant TIME_SERVICE_FAILED: UCL_RETURN := 38;<br />

constant OPERATION_ABORTED: UCL_RETURN := 39;<br />

constant NOT_MTP: UCL_RETURN := 40;<br />

constant ARCHIVE_FILE_ERROR: UCL_RETURN := 41;<br />

constant AP_NOT_COMPILED: UCL_RETURN := 42;<br />

constant AP_IS_SUSPENDED: UCL_RETURN := 43;<br />

constant ARCHIVING_IS_DISABLED: UCL_RETURN := 44;<br />

constant WORK<strong>ST</strong>ATION_NOT_CONNECTED: UCL_RETURN := 45;<br />

constant WORK<strong>ST</strong>ATION_NOT_READY: UCL_RETURN := 46;<br />

constant INPUT_CANCELLED: UCL_RETURN := 47;<br />

constant PROTOCOL_ERROR: UCL_RETURN := 48;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

345 von/of: 662


Space Infrastructure<br />

constant SYNOPTIC_RESOURCES_EXCEEDED: UCL_RETURN := 49;<br />

constant CONNECTION_TIMEOUT: UCL_RETURN := 50;<br />

constant CONNECTION_ABORTED: UCL_RETURN := 51;<br />

constant APPLICATION_LOAD_FAILED: UCL_RETURN := 52;<br />

constant APPLICATION_IS_CONNECTED: UCL_RETURN := 53;<br />

constant COMMUNICATION_ERROR: UCL_RETURN := 54;<br />

constant INVALID_FILE_TYPE: UCL_RETURN := 55;<br />

constant INVALID_NODE_TYPE: UCL_RETURN := 56;<br />

constant NOT_OK: UCL_RETURN := 57;<br />

constant RUNTIME_ERROR: UCL_RETURN := 100;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Constants to allow for easy conversion of UCL Status code to readable text<br />

constant UCL_DEFAULT_TEXT: UCL_<strong>ST</strong>ATUS_TEXT := ”Undefined UCL Status Code”;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

346 von/of: 662<br />

constant <strong>ST</strong>ATUS_<strong>ST</strong>RING: UCL_<strong>ST</strong>ATUS_CODES := (<br />

”OK”, –– 1)<br />

”AP_IS_EXECUTING: Function could not be executed: AP is currently/already executing”, –– 2)<br />

”INVALID_PARAMETER: A parameter is invalid or in conflict with another parameter”, –– 3)<br />

”DISC_FULL: The disc of the test node or the DB Server is full”, –– 4)<br />

”INVALID_AP_ID: The ID for the Automated Procedure is invalid / The addressed AP is not running (anymore)”, –– 5)<br />

”INVALID_AT_TIME: The value given for the AT_TIME parameter is invalid”, –– 6)<br />

”INVALID_CYCLE: The value given for the CYCLE parameter is invalid, range is 1 minute to 23 hours 59 minutes”, –– 7)<br />

”INVALID_EXC_COUNT:The value given for the Exception Count parameter is invalid”, –– 8)<br />

”INVALID_ITEM_NAME: The name for the item is invalid/not existing/of wrong type”, –– 9)<br />

”INVALID_LIMIT: The value for the limit is invalid”, –– 10)<br />

”INVALID_LIMIT_SET: The limit set number must be in range 0..5”, –– 11)<br />

”INVALID_APPLICATION_ID: The application id is not known”, –– 12)<br />

”INVALID_NODE_NAME: The name for the node is invalid”, –– 13)<br />

”INVALID_OFFSET: Offset is not in valid range”, –– 14)<br />

”INVALID_PICTURE_ID”, –– 15)<br />

”INVALID_PICTURE_NAME”, –– 16)<br />

”INVALID_SIZE”, –– 17)<br />

”ITEM_IS_DISABLED: Function could not be executed, because item is disabled”, –– 18)<br />

”ITEMS_NOT_ACQUIRED: Function could not be executed, because item is not acquired”, –– 19)<br />

”MESSAGE_TOO_BIG: (e.g.: Parameter List for SWOPs do not fit into CCSDS packet)”, –– 20)<br />

”NO_ADU_SERVICE: The addressed SAS has not announced its ADU service yet”, –– 21)<br />

”NO_DELTA_LIMIT”, –– 22)<br />

”APPLICATION_NACK: The SAS has given a negative acknowledge”, –– 23)<br />

”INVALID_APPLICATION_NAME: SAS name not known / not related / not connected ”, –– 24)<br />

”APPLICATION_NOT_READY: Something went wrong when preparing/sending a cmd/request to SAS or when receiving the<br />

acknowlege”,–– 25)<br />

”TIMEOUT: The acknowlegement of the SAS was not received in time”, –– 26)<br />

”TOO_MANY_SYNOPTICS: The number of synoptics already loaded exceeds the allowable limit”, –– 27)<br />

”TOO_MANY_APS: The number of APs already loaded exceeds the allowable limit”, –– 28)<br />

”URT_UNKNOWN”, –– 29)<br />

”INVALID_ADU_TYPE: The type of the ADU is not compatible with the called function or the ADU is not simulated/acquired”,––<br />

30)<br />

”INVALID_TE<strong>ST</strong>NODE_MODE: The mode of the testnode (TES) does not allow for this function”, –– 31)<br />

”ITEM_NOT_SAS_COMPATIBLE: Error when downloading file to SAS”, –– 32)<br />

”ITEM_NOT_FEE_COMPATIBLE”, –– 33)<br />

”ITEM_NOT_UUT_COMPATIBLE”, –– 34)<br />

”NO_GDU_SERVICE:The addressed SAS has not announced its GDU service yet”, –– 35)<br />

”ITEM_IS_ENABLED: Function could not be executed, because item isenabled”, –– 36)<br />

”INVALID_TIME: Time parameter or time in CCSDS Header invalid”, –– 37)<br />

”TIME_SERVICE_FAILED: The access to the time service failed”, –– 38)<br />

”OPERATION_ABORTED: Operation was aborted (e.g. by forced_stop of test node or by abort_ap)”, –– 39)<br />

”NOT_MTP: The addressed test node requires to be the MTP”, –– 40)<br />

”ARCHIVE_FILE_ERROR: The access to an archive file failed”, –– 41)<br />

”AP_NOT_COMPILED: The addressed AP needs to be compiled in the MDB”, –– 42)<br />

”AP_IS_SUSPENDED: Function could not be executed, because AP is suspended”, –– 43)


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

347 von/of: 662<br />

”ARCHIVING_IS_DISABLED: Function could not be executed, because archiving is (already) disabled”, –– 44)<br />

”WORK<strong>ST</strong>ATION_NOT_CONNECTED: Addressed workstation (HCI) is not connected to the test node”, –– 45)<br />

”WORK<strong>ST</strong>ATION_NOT_READY:Addressed workstation (HCI) is not ready”, –– 46)<br />

”INPUT_CANCELLED”, –– 47)<br />

”PROTOCOL_ERROR: Something went wrong when communicating with other software parts / Invalid Response Packet for<br />

SWOP”, –– 48)<br />

”SYNOPTIC_RESOURCES_EXCEEDED or PARAMETER_ERROR: Parameter List of SWOP has wrong data / wrong types”,<br />

–– 49)<br />

”CONNECTION_TIMEOUT”, –– 50)<br />

”CONNECTION_ABORTED”, –– 51)<br />

”APPLICATION_LOAD_FAILED: The loading of the SAS executable failed”, –– 52)<br />

”APPLICATION_IS_CONNECTED: The SAS is already connected”, –– 53)<br />

”COMMUNICATION_ERROR: Error on the communication channel”, –– 54)<br />

”INVALID_FILE_TYPE”, –– 55)<br />

”INVALID_NODE_TYPE”, –– 56)<br />

”NOT_OK: For Operations on Lists: Some of the items could not be processed / executed”, –– 57)<br />

”SW_COMMAND_NOT_FOUND: The addressed Software Command was not found”, –– 58)<br />

UCL_Default_Text,–– 59)<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text, –– 60..64<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 65..99<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 70..74<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 75..79<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 80..84<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 85..89<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 90..94<br />

UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,UCL_Default_Text,–– 95..99<br />

”RUNTIME_ERROR: Something went wrong in the software”); –– 100);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PROCEDURES & FUNCTIONS<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Monitoring<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ENABLE_MONITORING<br />

(in ITEM: MONITOR_COLLECTION;<br />

in LIMIT_SET: LIMIT_SET_NUMBER := DEFAULT_LIMIT_SET;<br />

in ADU: ADU_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #1<br />

procedure DISABLE_MONITORING<br />

(in ITEM: MONITOR_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #2<br />

procedure SET_HIGH_LIMIT<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #3<br />

procedure SET_INTEGER_HIGH_LIMIT<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

in LIMIT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #4<br />

procedure SET_LOW_LIMIT<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT: REAL;


Space Infrastructure<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #5<br />

procedure SET_INTEGER_LOW_LIMIT<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

in LIMIT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #6<br />

procedure SET_DELTA_LIMIT<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #7<br />

procedure SET_INTEGER_DELTA_LIMIT<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

in LIMIT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #8<br />

procedure SET_EXCEPTION_COUNT<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

in N_COUNT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #9<br />

procedure SET_EXPECTED_<strong>ST</strong>ATE<br />

(in ITEM: DISCRETE_MONITOR_ITEM_NAME;<br />

in <strong>ST</strong>ATE: <strong>ST</strong>ATECODE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #10<br />

procedure SET_EXPECTED_VALUE<br />

(in ITEM: BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in VALUE: <strong>ST</strong>RING;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #11<br />

procedure SET_LIMIT_SET<br />

(in ITEM: MONITOR_COLLECTION;<br />

in LIMIT_SET: LIMIT_SET_NUMBER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #12<br />

procedure GET_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

out MONITORING_<strong>ST</strong>ATUS: MONITOR_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #13<br />

procedure GET_FULL_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

out MONITORING_<strong>ST</strong>ATUS: FULL_MONITOR_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #14<br />

procedure GET_ACQUISITION_<strong>ST</strong>ATUS<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #15<br />

procedure GET_INTEGER<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

out VALUE: INTEGER;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #16<br />

procedure GET_FLOAT<br />

(in ITEM: FLOAT_MONITOR_ITEM_NAME;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

348 von/of: 662


Space Infrastructure<br />

out VALUE: REAL;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #17<br />

procedure GET_<strong>ST</strong>ATECODE<br />

(in ITEM: DISCRETE_MONITOR_ITEM_NAME;<br />

out VALUE: <strong>ST</strong>ATECODE;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #18<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure GET_BYTE_<strong>ST</strong>REAM<br />

(in ITEM: BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

out VALUE: <strong>ST</strong>RING;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #19<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Time Management<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function CLOCK (in BASE: TIME_BASE := LOCAL_TIME) : TIME; –– #20<br />

procedure DELAY<br />

(in DELAY: DURATION;<br />

in BASE: TIME_BASE := LOCAL_TIME); –– #21<br />

procedure WAIT_UNTIL<br />

(in DUE_TIME: TIME;<br />

in BASE: TIME_BASE := LOCAL_TIME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #22<br />

procedure <strong>ST</strong>ART_SMT<br />

(in VALUE: TIME := ~:~ ;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #23<br />

procedure <strong>ST</strong>OP_SMT (out <strong>ST</strong>ATUS: UCL_RETURN); –– #24<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– AP Handling<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure EXECUTE_AP<br />

(in AP: AP_NAME ();<br />

in PRIO: PRIORITY := LOW;<br />

in NODE: NODE_NAME := \\;<br />

out ID: AP_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #25<br />

procedure SYNCHRONISE_WITH_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME := \\;<br />

out COMPLETION: AP_COMPLETION_<strong>ST</strong>ATE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #26<br />

procedure SUSPEND_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #27<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

349 von/of: 662


Space Infrastructure<br />

procedure RESUME_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #28<br />

function OWN_AP_ID : AP_ID; –– #29<br />

procedure GET_AP_ID<br />

(in AP: AP_NAME;<br />

in NODE: NODE_NAME := \\;<br />

out NUMBER: INTEGER;<br />

out ID_LI<strong>ST</strong>: AP_ID_LI<strong>ST</strong>;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #30<br />

procedure GET_AP_<strong>ST</strong>ATUS<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME := \\;<br />

out EXEC_<strong>ST</strong>ATE: AP_EXECUTION_<strong>ST</strong>ATE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #31<br />

procedure READ_MESSAGE_FROM_AP<br />

(in BLOCK: BOOLEAN := TRUE;<br />

out AP: AP_ID;<br />

out NODE_NAME: USER_MESSAGE;<br />

out MESSAGE : USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #32<br />

procedure WRITE_MESSAGE_TO_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME := \\;<br />

in MESSAGE: USER_MESSAGE := DEFAULT_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #33<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Application Handling<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure LOAD_APPLICATION<br />

(in NAME: APPLICATION_NAME;<br />

in NODE: NODE_NAME := \\;<br />

in PARAMS: USER_MESSAGE := DEFAULT_MESSAGE;<br />

out APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #34<br />

procedure UNLOAD_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #35<br />

procedure INIT_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

in MESSAGE: USER_MESSAGE := DEFAULT_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #36<br />

procedure <strong>ST</strong>ART_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #37<br />

procedure RESET_APPLICATION<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

350 von/of: 662


Space Infrastructure<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #38<br />

procedure GET_APPLICATION_<strong>ST</strong>ATUS<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATE: APPLICATION_<strong>ST</strong>ATE;<br />

out ERROR_COUNT: INTEGER;<br />

out ERROR_MESSAGE: APPLICATION_ERROR_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #39<br />

procedure READ_MESSAGE_FROM_APPLICATION<br />

(in BLOCK: BOOLEAN := TRUE;<br />

out APPL: APPLICATION_ID;<br />

out MESSAGE: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #40<br />

procedure WRITE_MESSAGE_TO_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

in MESSAGE: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #41<br />

procedure GET_APPLICATION_NAME<br />

(in APPL: APPLICATION_ID;<br />

out NAME: APPLICATION_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #42<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure GET_APPLICATION_ID<br />

(in NAME: APPLICATION_NAME;<br />

out APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #43<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Issue of HW Stimuli & Downloading<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ISSUE<br />

(in ITEM: ISSUE_ITEM_NAME();<br />

in PRIO: PRIORITY := LOW;<br />

in AT_TIME: TIME := ~:~;<br />

in BASE: TIME_BASE := LOCAL_TIME;<br />

in ONBOARD_EXECUTION_TIME: TIME := ~:~;<br />

in TIMEOUT: DURATION := default_issue_timeout;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #44<br />

procedure ISSUE_AND_VERIFY<br />

(in ITEM: SINGLE_GDU_NAME();<br />

in PRIO: PRIORITY := LOW;<br />

in AT_TIME: TIME := ~:~;<br />

in BASE: TIME_BASE := LOCAL_TIME;<br />

in ONBOARD_EXECUTION_TIME: TIME := ~:~;<br />

in TIMEOUT: DURATION := default_issue_timeout;<br />

in ACTIVATION_DELAY: DURATION := –1.0 [s];<br />

in VERIFICATION_TIMEOUT : DURATION := –1.0 [s];<br />

in WAIT_TIL_END: BOOLEAN := FALSE;<br />

out VERIFICATION_<strong>ST</strong>ATUS: CMD_VERIFICATION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #45<br />

procedure GET_VERIFICATION_<strong>ST</strong>ATUS<br />

(in ITEM: SINGLE_GDU_NAME;<br />

out VERIFICATION_<strong>ST</strong>ATUS: CMD_VERIFICATION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #46<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

351 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure ENABLE_ENDITEM<br />

(in ENDITEM: ISSUE_ITEM_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #47<br />

procedure DISABLE_ENDITEM<br />

(in ENDITEM: ISSUE_ITEM_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #48<br />

procedure DOWNLOAD<br />

(in APPL: APPLICATION_ID;<br />

in ITEM: DOWNLOAD_ITEM_NAME;<br />

in NODE: NODE_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #49<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Raw Data Handling<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure <strong>ST</strong>ART_ACQUISITION<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

in ADU: ADU_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #50<br />

procedure <strong>ST</strong>OP_ACQUISITION<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

in ADU: ADU_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #51<br />

procedure SEND_SIMULATED_ADU<br />

(in ADU: ADU_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #52<br />

procedure WAIT_FOR_ADU<br />

(in ADU: ADU_NAME;<br />

out TIME_TAG: TIME;<br />

out SEQUENCE_NUMBER: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #53<br />

procedure SET_BITS_IN_SIMULATED_ADU<br />

(in ADU: ADU_NAME;<br />

in OFFSET: INTEGER;<br />

in SIZE: BIT_COUNT;<br />

in VALUE: BITSET;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #54<br />

procedure SET_SIMULATED_ENDITEM_VALUE<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

in BOOL_VALUE: BOOLEAN := FALSE;<br />

in INT_VALUE: INTEGER := 0;<br />

in BITSET_VALUE: BITSET := {};<br />

in REAL_VALUE: REAL := 0.0;<br />

in <strong>ST</strong>R_VALUE: USER_MESSAGE := ””;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #55<br />

procedure ROUTE_TO_SAS<br />

(in ITEM: ROUTE_SAS_ITEM_NAME ;<br />

in SAS_NAME: APPLICATION_NAME;<br />

in OLD_SAS_NAME: APPLICATION_NAME := NULL_APPLICATION_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #56<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

352 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Event Handling<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure LOG (in MESSAGE: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #57<br />

procedure USER_EVENT<br />

(in MESSAGE: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #58<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Engineering Value Logging<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ENABLE_EVL<br />

(in ITEM: MONITOR_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #59<br />

procedure DISABLE_EVL<br />

(in ITEM: MONITOR_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #60<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Archiving<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ENABLE_ARCHIVING<br />

(in CYCLE: DURATION := DEFAULT_ARCH_FILE_OPEN_PERIOD;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #61<br />

procedure DISABLE_ARCHIVING; –– #62<br />

procedure CLOSE_ARCHIVE<br />

(out CLOSE_TIME : TIME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #63<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– User Input & Output<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure READ_MESSAGE_FROM_USER<br />

(in PROMPT: USER_MESSAGE;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME := \\;<br />

out USER_ENTRY: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #64<br />

procedure WRITE_MESSAGE_TO_USER<br />

(in MESSAGE: USER_MESSAGE;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME :=\\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #65<br />

procedure READ_NUMBER_FROM_USER<br />

(in PROMPT_MESSAGE: USER_MESSAGE;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME := \\;<br />

out USER_ENTRY: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #66<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

353 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Synoptic Display Control<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure DISPLAY_PICTURE<br />

(in PICTURE: PICTURE_NAME;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME := \\;<br />

out ID: PICTURE_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #67<br />

procedure REMOVE_PICTURE<br />

(in ID: PICTURE_ID;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #68<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– UCL Code Reloading from MDB<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure LOAD_UCL<br />

(in ITEM: UCL_ITEM_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #69<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Test Node management<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function IS_LOCAL_NODE (in NODE : NODE_NAME) : BOOLEAN; –– #70<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Conditions<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

354 von/of: 662<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Concept :<br />

–– –––––––––<br />

––<br />

–– The conditional monitoring will be defined by linking 1 measurement or<br />

–– software variable to one or more end items.<br />

––<br />

–– Every link can be described by<br />

––<br />

–– ”when value of CONDITION_ITEM a CONDITION_VALUE”<br />

–– ”then on an ITEM”<br />

––<br />

–– where can be<br />

–– EQUAL, NOT_EQUAL, LESS, GREATER, LESS OR EQUAL, GREATER OR EQUAL<br />

––<br />

–– (Note: the IN_RANGE alternative is currently not supported. It is included<br />

–– in the definition of the CONDITION type only for MDB compatibility reasons )<br />

––<br />

–– where can be<br />

––<br />

–– ”enable the processing of a measurement / a sw_variable / the<br />

–– measurements and sw variables of a<br />

–– monitoring list / the measurements of an<br />

–– ADU / the measurements and sw variables


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

355 von/of: 662<br />

–– of a subtree”<br />

–– ”set a new limit set for a measurement / a sw_variable”<br />

–– ”start an AP”<br />

––<br />

–– When processing CONDITION_ITEM, all conditions linked to that item will<br />

–– be analysed and for those that are true, the defined action will be<br />

–– performed.<br />

–– It is necessary to start the acquisition of CONDITION_ITEM to allow the<br />

–– condition to be analysed.<br />

––<br />

–– For performance reasons, the conditions will only be analysed when the<br />

–– value of the CONDITION_ITEM is modified, and not everytime the<br />

–– CONDITION_ITEM is processed.<br />

–– However, the when defining a condition, it will be checked immediately<br />

–– if the CONDITION_ITEM has a valid value.<br />

––<br />

–– Note that the order of processing of the data from one ADU is the order of<br />

–– the definition of the items in the ADU.<br />

–– So if an adu contains an ITEM and its CONDITION_ITEM, to ensure that the<br />

–– CONDITION_ITEM is processed before the ITEM, it must be defined in the<br />

–– list of items of the ADU description before the ITEM.<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– ENABLE/DISABLE CONDITION<br />

––<br />

–– ––––––––––––––––––––––––<br />

–– Will enable/disable a condition or all conditions of<br />

–– measurement(s), sw variable(s) and derived value(s).<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– ITEM : measurement(s), derived values(s) or software variable(s) carrying the<br />

–– condition.<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure ENABLE_CONDITIONS<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #71<br />

procedure DISABLE_CONDITIONS<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN); –– #72<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– ENABLE PROCESSING OF ENDITEMS<br />

––<br />

–– ––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

356 von/of: 662<br />

–– Will enable the processing of ITEM (measurement, software variable,<br />

–– monitoring list or measurements of a subtree) when the CONDITION_CHECK<br />

–– of the value of CONDITION_ITEM with CONDITION_VALUE is true (the<br />

–– condition is true).<br />

––<br />

–– If the condition is false, this will disable the processing of ITEM.<br />

––<br />

–– By default, all enditems are enabled for processing. Conditions can be<br />

–– defined to disable and re–enable the processing of given end–items.<br />

––<br />

–– When the processing is enabled, ITEM will be authorised for calibration<br />

–– and monitoring. After ITEM has been enabled, it will be calibrated (if<br />

–– its acquisition has been started) and monitored (if its monitoring has<br />

–– been enabled) on reception of new values.<br />

––<br />

–– Enabling the processing of ITEM does not perform an ”initial”<br />

–– calibration / monitoring of ITEM in the case where it has already a value.<br />

––<br />

–– When the processing is disabled, ITEM will not be calibrated and not be<br />

–– monitored, even if its acquisition has been requested and if its<br />

–– monitoring is enabled.<br />

––<br />

–– CONDITION_ITEM must be maintained locally otherwise an error is generated.<br />

–– When the condition is triggered, only those measurements and SW variables<br />

–– identified by ITEM that are maintained locally will be processed.<br />

––<br />

–– It is not possible to set a condition where the ITEM to enable or disable<br />

–– is the CONDITION_ITEM.<br />

–– If ITEM is a group of enditems (i.e. monitoring list, ADU or incomplete<br />

–– pathname) containing CONDITION_ITEM, the condition will not apply for<br />

–– CONDITION_ITEM.<br />

––<br />

–– It is not possible to enable or disable the processing of a SW variable<br />

–– that is linked to an HK data.<br />

––<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– ITEM : item(s) to enable. It can be a measurement or software<br />

–– variable or all measurements / sw variables contained in a<br />

–– monitoring list or all measurements contained in an ADU or<br />

–– all measurements / sw variables contained in a subtree.<br />

––<br />

–– CONDITION_ITEM : the measurement or software variable carrying the<br />

–– condition.<br />

––<br />

–– CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

––<br />

–– CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

––<br />

–– SINGLE_SHOT : if true, the condition will be withdrawn after having<br />

–– being true.<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– CONDITION_REF : a unique identifier for the condition<br />

––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

357 von/of: 662<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or ITEM is a SW variable linked to an HK data.<br />

–– or CONDITION_CHECK is IN_RANGE (not supported: see above)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure ENABLE_ON_INTEGER<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : INTEGER_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : INTEGER;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #73<br />

procedure ENABLE_ON_FLOAT<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : FLOAT_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : REAL;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #74<br />

procedure ENABLE_ON_<strong>ST</strong>ATECODE<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : DISCRETE_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>ATECODE;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #75<br />

procedure ENABLE_ON_BYTE_<strong>ST</strong>REAM<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>RING;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #76<br />

–– ––––––––––––––––––––––––<br />

–– Will enable or disable the processing of ITEM. This is overwriting<br />

–– an eventual action from a condition.<br />

––<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– ITEM : item(s) to enable or disable. It can be a measurement or<br />

–– software variable or all measurements / sw variables contained<br />

–– in a monitoring list or all measurements contained in an ADU or<br />

–– all measurements / sw variables contained in a subtree.<br />

––<br />

–– SWITCH : ON to enable the processing and OFF to disable the processing.<br />

––<br />

–– outputs<br />

–– –––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

358 von/of: 662<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM is a SW variable linked to an HK data.<br />

–– or CONDITION_CHECK is IN_RANGE (not supported: see above)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure SET_PROCESSING<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in SWITCH : ON_OFF;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #77<br />

–– ––––––––––––––––––––––––<br />

–– Indicates if a measurement or software variabled is enabled or disabled<br />

–– for processing (as a result of a condition or of a call to SET_PROCESSING)<br />

––<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– ITEM : item to check. It can be a single measurement or software<br />

–– variable.<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– <strong>ST</strong>ATE : ON if the processing is enabled and OFF if the processing is<br />

–– disabled.<br />

––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure GET_PROCESSING_<strong>ST</strong>ATE<br />

(in ITEM : MONITOR_ITEM_NAME;<br />

out <strong>ST</strong>ATE : ON_OFF;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #78<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– SWITCH LIMIT SET<br />

––<br />

–– ––––––––––––––––––––––––<br />

–– Will set the LIMIT_SET for ITEM (measurement or software variable) when<br />

–– the CONDITION_CHECK of the value of CONDITION_ITEM with CONDITION_VALUE<br />

–– is true (the condition is true).<br />

––<br />

–– This will not perform an ”initial” monitoring of ITEM in the case where<br />

–– it has already a value. The monitoring will be performed on reception of<br />

–– the next value (in case the monitoring has been enabled).<br />

–– This can lead to a temporary ”inconsistent” output of the procedure<br />

–– GET_FULL_ENDITEM_MONITOR_<strong>ST</strong>ATUS (result of the monitoring with the old<br />

–– limit set with values of the new limit set might be inconsistent).


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ITEM and CONDITION_ITEM must be maintained locally on the same node<br />

–– otherwise an error is generated.<br />

––<br />

–– It is not possible to set a condition where the ITEM identical to the<br />

–– CONDITION_ITEM.<br />

––<br />

–– The LIMIT_SET must be defined for ITEM, otherwise an error is generated<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

359 von/of: 662<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– ITEM : item for which the limit set is to be switched. It can be a<br />

–– measurement or software variable.<br />

––<br />

–– LIMIT_SET : the limit set number to select.<br />

––<br />

–– CONDITION_ITEM : the measurement or software variable carrying the<br />

–– condition.<br />

––<br />

–– CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

––<br />

–– CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

––<br />

–– SINGLE_SHOT : if true, the condition will be withdrawn after having<br />

–– being true.<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– CONDITION_REF : a unique identifier for the condition<br />

––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM or CONDITION_ITEM are not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or CONDITION_CHECK is IN_RANGE (not supported: see above)<br />

–– INVALID_LIMIT_SET : the limit set is not defined for ITEM<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure SET_LIMIT_SET_ON_INTEGER<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : INTEGER_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : INTEGER;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #79<br />

procedure SET_LIMIT_SET_ON_FLOAT<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : FLOAT_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : REAL;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #80


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure SET_LIMIT_SET_ON_<strong>ST</strong>ATECODE<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : DISCRETE_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>ATECODE;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #81<br />

procedure SET_LIMIT_SET_ON_BYTE_<strong>ST</strong>REAM<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>RING;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #82<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– <strong>ST</strong>ART AUTOMATED PROCEDURE<br />

––<br />

–– ––––––––––––––––––––––––<br />

–– Will start an automated procedure when the CONDITION_CHECK of the value<br />

–– of CONDITION_ITEM with CONDITION_VALUE is true (the condition is true).<br />

––<br />

–– CONDITION_ITEM must be maintained locally on the node otherwise an<br />

–– error is generated.<br />

––<br />

–– The AP to start must be an AP without parameters, otherwise an error<br />

–– message is generated when the condition is triggered.<br />

–– When the condition is triggered, if the AP is already running, it will<br />

–– not be started and an error message will be generated.<br />

––<br />

––<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– AP : the name of the automated procedure to start. This must be an AP<br />

–– without parameter or where all parameters have default values.<br />

––<br />

–– CONDITION_ITEM : the measurement or software variable carrying the<br />

–– condition.<br />

––<br />

–– CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

––<br />

–– CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

––<br />

–– SINGLE_SHOT : if true, the condition will be withdrawn after having<br />

–– being true.<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– CONDITION_REF : a unique identifier for the condition<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

360 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

361 von/of: 662<br />

––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : CONDITION_CHECK is IN_RANGE (not supported: see above)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure <strong>ST</strong>ART_AP_ON_INTEGER<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : INTEGER_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : INTEGER;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #83<br />

procedure <strong>ST</strong>ART_AP_ON_FLOAT<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : FLOAT_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : REAL;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #84<br />

procedure <strong>ST</strong>ART_AP_ON_<strong>ST</strong>ATECODE<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : DISCRETE_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>ATECODE;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #85<br />

procedure <strong>ST</strong>ART_AP_ON_BYTE_<strong>ST</strong>REAM<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>RING;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #86<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– REMOVE CONDITION<br />

––<br />

–– ––––––––––––––––––––––––<br />

–– Will remove a condition or all conditions of a CONDITION_ITEM.<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– CONDITION_ITEM : the measurement or software variable carrying the<br />

–– condition.<br />

––<br />

–– CONDITION_REF : the unique identifier of the condition to remove


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– or the constant ALL_CONDITIONS to remove all conditions<br />

–– of CONDITION_ITEM.<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally or<br />

–– CONDITION_REF does not identify an existing<br />

–– condition<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure WITHDRAW_CONDITION<br />

(in CONDITION_ITEM : MONITOR_ITEM_NAME;<br />

in CONDITION_REF : INTEGER := ALL_CONDITIONS;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #87<br />

–– ––––––––––––––––––––––––<br />

–– Will remove all conditions defined on the test node.<br />

–– PARAMETER DESCRIPTION :<br />

–– outputs<br />

–– –––––––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure WITHDRAW_ALL_CONDITIONS<br />

(out <strong>ST</strong>ATUS : UCL_RETURN); –– #88<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– MANAGE CONDITIONS<br />

––<br />

–– ––––––––––––––––––––––––<br />

–– Returns the number of items carrying conditions (CONDITION_ITEMS).<br />

–– This number is as well maintained as Housekeeping variable (and can<br />

–– be mapped to a software variable).<br />

function NUMBER_OF_CONDITION_ITEMS : INTEGER; –– #89<br />

–– ––––––––––––––––––––––––<br />

–– Provide the name of the CONDITION_ITEM identified by an index.<br />

–– To get all the CONDITION_ITEM’s, this procedure has to be called<br />

–– with all numbers betwee 1 and the value of NUMBER_OF_CONDITION_ITEMS.<br />

––<br />

–– Note:<br />

–– it can occur that between the time where NUMBER_OF_CONDITION_ITEMS has<br />

–– been called and the time where GET_CONDITION_ITEM is called, the number<br />

–– of items carrying condition is modified (if new conditions are created<br />

–– or removed in parallel).<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

362 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– ITEM_NUMBER : index of the CONDITION_ITEM (between 1 and the value of<br />

–– NUMBER_OF_CONDITION_ITEMS).<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– CONDITION_ITEM : the measurement or software variable carrying the<br />

–– condition.<br />

––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_PARAMETER : There is no (more) CONDITION_ITEM at the index<br />

–– ITEM_NUMBER (see above note).<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure GET_CONDITION_ITEM<br />

(in ITEM_NUMBER : INTEGER;<br />

out CONDITION_ITEM : MONITOR_ITEM_NAME;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #90<br />

–– ––––––––––––––––––––––––<br />

–– Provide the number of conditions carried by a CONDITION_ITEM.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

363 von/of: 662<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– CONDITION_ITEM : the name of the item for which the number of conditions<br />

–– is to be returned. It must be managed locally, otherwise<br />

–– the value 0 is returned.<br />

function NUMBER_CONDITIONS<br />

(in CONDITION_ITEM : MONITOR_ITEM_NAME) :INTEGER; –– #91<br />

–– ––––––––––––––––––––––––<br />

–– Provide the description of a condition.<br />

––<br />

–– Note:<br />

–– it can occur that between the time where GET_NUMBER_CONDITIONS has<br />

–– been called and the time where GET_CONDITION is called, the number<br />

–– of condition carried by CONDITION_ITEM is modified<br />

–– (if new conditions are created or removed in parallel).<br />

–– PARAMETER DESCRIPTION :<br />

–– inputs<br />

–– ––––––<br />

–– CONDITION_ITEM : the name of the item carrying the condition.<br />

––<br />

–– CONDITION_NUMBER : the index of the condition (between 1 and the value<br />

–– of GET_NUMBER_CONDITIONS).<br />

––<br />

–– outputs<br />

–– –––––––<br />

–– CONDITION_REF : the unique identifier of the condition.<br />

––<br />

–– CONDITION_CHECK : the check to apply on CONDITION_ITEM.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

364 von/of: 662<br />

––<br />

–– CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

––<br />

–– SINGLE_SHOT : indicates if the condition is to be removed after having<br />

–– being true.<br />

––<br />

–– <strong>ST</strong>ATE : indicate the state of the condition. It can be<br />

–– IS_TRUE : the condition is true, the associated action has been<br />

–– triggered<br />

–– IS_FALSE : the condition is false, the associated action has been<br />

–– triggered (only for the enable/disable conditions)<br />

–– IS_UNKNOWN : the condition has been set but has not yet been<br />

–– analysed (CONDITION_ITEM has not a valid value)<br />

––<br />

–– ACTION : provide the description of the condition, i.e:<br />

–– – the sid of the item(s) for which the processing is to be<br />

–– enabled<br />

–– – the sid of the item for which a new limit set is to be set<br />

–– and the limit set number<br />

–– – the sid of an AP<br />

––<br />

–– <strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_PARAMETER : There is no (more) condition at the index<br />

–– CONDITION_NUMBER (see above note).<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally.<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

procedure GET_CONDITION<br />

(in CONDITION_ITEM : MONITOR_ITEM_NAME;<br />

in CONDITION_NUMBER : INTEGER;<br />

out CONDITION_REF : INTEGER;<br />

out CONDITION_CHECK : CONDITION;<br />

out CONDITION_VALUE : CONDITION_VAL;<br />

out SINGLE_SHOT : BOOLEAN;<br />

out <strong>ST</strong>ATE : CONDITION_<strong>ST</strong>ATE;<br />

out ACTION : ACTION_DESCRIPTION;<br />

out <strong>ST</strong>ATUS : UCL_RETURN); –– #92<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– General Conversion<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure PATHNAME_TO_<strong>ST</strong>RING (in PATH : PATHNAME;<br />

out NAME: <strong>ST</strong>RING); –– #93<br />

–– convert the pathname type into a string type<br />

–– If PATH is not existing, an empty string is returned<br />

–– If NAME is too short to hold resulting string, the string is truncated<br />

function PATH(in NAME: <strong>ST</strong>RING) : PATHNAME; –– #94<br />

–– convert the string type into a pathname type<br />

–– returns Null–Pathname in case the path is not existing


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure <strong>ST</strong>ATECODE_TO_<strong>ST</strong>RING (in CODE : <strong>ST</strong>ATECODE;<br />

out CODE_TEXT: <strong>ST</strong>RING); –– #95<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

365 von/of: 662<br />

–– convert the statecode type into a string type<br />

–– CODE_TEXT should have a length of 8<br />

–– If CODE_TEXT is too short to hold resulting string, the string is truncated<br />

–– If CODE_TEXT is longer than 8 characters, it is filled with blanks<br />

function CODE(in CODE_TEXT : <strong>ST</strong>RING) : <strong>ST</strong>ATECODE; –– #96<br />

–– convert the string type into a statecode type<br />

–– If CODE_TEXT is longer than 8 characters, the string is truncated<br />

–– If CODE_TEXT is shorter than 8 characters, the <strong>ST</strong>ATECODE is extended by blanks<br />

END GROUND_LIBRARY;


Space Infrastructure<br />

7.9.1.3 <strong>Interface</strong> Description<br />

7.9.1.3.1 Monitoring<br />

7.9.1.3.1.1 ENABLE_MONITORING<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure ENABLE_MONITORING<br />

(in ITEM: MONITOR_COLLECTION;<br />

in LIMIT_SET: LIMIT_SET_NUMBER : = DEFAULT_LIMIT_SET;<br />

in ADU: ADU_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Description / Parameters<br />

Enables monitoring of enditem(s).<br />

ITEM : The item to be enabled, which can be<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

366 von/of: 662<br />

– a single enditem of type MEASUREMENT or SW variable;<br />

– a incomplete pathname pointing to a virtual node, thus enabling all MEASUREMENTs or SW variables<br />

in that subtree;<br />

– a monitor list, thus enabling all items in that list.<br />

LIMIT_SET (optional) : the limit set to be used. In case the value is not given or the value given is<br />

DEFAULT_LIMIT_SET (0), the selected limit set will be the currently selected limit set. Upon loading<br />

of the database, the selected limit set is the limit set 1. This can be changed by calling the operation<br />

SET_LIMIT_SET.<br />

ADU (optional) : the ADU Descriptor to be applied. If ITEM is already acquired, this parameter will<br />

be ignored. If there is only one ADU Description defined for ITEM, the parameter may be omitted. If<br />

more than one is defined and the parameter is omitted, the command enables monitoring by starting<br />

acquisition for all.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ENABLE_MONITORING (\apm\dms, 1, stat);


Space Infrastructure<br />

7.9.1.3.1.2 DISABLE_MONITORING<br />

Specification<br />

procedure DISABLE_MONITORING<br />

(in ITEM: MONITOR_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Disables monitoring of enditems.<br />

ITEM : The item to be disabled, which can be<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

367 von/of: 662<br />

– a single enditem of type MEASUREMENT or SW variable;<br />

– a incomplete pathname pointing to a virtual node, thus enabling all MEASUREMENTs or SW variables<br />

in that subtree;<br />

– a monitor list, thus disabling all items in that list.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

DISABLE_MONITORING (\apm\dms, stat);<br />

7.9.1.3.1.3 SET_HIGH_LIMIT<br />

Specification<br />

procedure SET_HIGH_LIMIT<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Changes the soft high limit of an enditem in the currently selected limit set. If the item is an integer<br />

measurement or integer SW variable, LIMIT is rounded to the nearest integer.<br />

ITEM : name of item to have its limit changed.<br />

LIMIT : value to set high limit to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_HIGH_LIMIT (\apm\dms\cpu_load, 80.0, stat);


Space Infrastructure<br />

7.9.1.3.1.4 SET_INTEGER_HIGH_LIMIT<br />

Specification<br />

;procedure SET_INTEGER_HIGH_LIMIT<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

in LIMIT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

368 von/of: 662<br />

Description / Parameters<br />

Changes the soft high limit of an integer enditem (measurement or software variable) in the currently<br />

selected limit set.<br />

ITEM : name of item to have its limit changed.<br />

LIMIT : value to set high limit to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_INTEGER_HIGH_LIMIT (\apm\dms\counter, 80, stat);<br />

7.9.1.3.1.5 SET_LOW_LIMIT<br />

Specification<br />

procedure SET_LOW_LIMIT<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Changes the soft low limit of an enditem in the currently selected limit set. If the item is an integer<br />

measurement or integer SW variable, LIMIT is rounded to the nearest integer.<br />

ITEM : name of item to have its limit changed.<br />

LIMIT : value to set low limit to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_LOW_LIMIT (\apm\dms\cpu_load, 10.0, stat);


Space Infrastructure<br />

7.9.1.3.1.6 SET_INTEGER_LOW_LIMIT<br />

Specification<br />

;procedure SET_INTEGER_LOW_LIMIT<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

in LIMIT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

369 von/of: 662<br />

Description / Parameters<br />

Changes the soft low limit of an integer enditem (measurement or software variable) in the currently<br />

selected limit set.<br />

ITEM : name of item to have its limit changed.<br />

LIMIT : value to set high limit to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_INTEGER_LOW_LIMIT (\apm\dms\counter, 20, stat);<br />

7.9.1.3.1.7 SET_DELTA_LIMIT<br />

Specification<br />

procedure SET_DELTA_LIMIT<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Changes the soft delta limit of an enditem in the currently selected limit set. If the item is an integer<br />

measurement or integer SW variable, LIMIT is rounded to the nearest integer.<br />

ITEM : name of item to have its limit changed.<br />

LIMIT : value to set delta limit to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_DELTA_LIMIT (\apm\dms\cpu_load, 20.0, stat);


Space Infrastructure<br />

7.9.1.3.1.8 SET_INTEGER_DELTA_LIMIT<br />

Specification<br />

;procedure SET_INTEGER_DELTA_LIMIT<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

in LIMIT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

370 von/of: 662<br />

Description / Parameters<br />

Changes the soft delta limit of an integer enditem (measurement or software variable) in the currently<br />

selected limit set.<br />

ITEM : name of item to have its limit changed.<br />

LIMIT : value to set high limit to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_INTEGER_DELTA_LIMIT (\apm\dms\counter, 10, stat);<br />

7.9.1.3.1.9 SET_EXCEPTION_COUNT<br />

Specification<br />

procedure SET_EXCEPTION_COUNT<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

in N_COUNT: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Changes the exception count value of a measurement or SW variable.<br />

ITEM : name of item to have its exception count changed.<br />

N_COUNT : integer value to set exception count to.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_EXCEPTION_COUNT (\apm\dms\status, 5, stat);


Space Infrastructure<br />

7.9.1.3.1.10 SET_EXPECTED_<strong>ST</strong>ATE<br />

Specification<br />

procedure SET_EXPECTED_<strong>ST</strong>ATE<br />

(in ITEM: DISCRETE_MONITOR_ITEM_NAME;<br />

in <strong>ST</strong>ATE: <strong>ST</strong>ATECODE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Changes the expected state of a discrete measurement or SW variable.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

371 von/of: 662<br />

ITEM : name of item to have its expected state changed.<br />

<strong>ST</strong>ATE : state code for desired expected state of item.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_EXPECTED_<strong>ST</strong>ATE (\apm\dms\status, $OFF, stat);<br />

7.9.1.3.1.11 SET_EXPECTED_VALUE<br />

Specification<br />

procedure SET_EXPECTED_VALUE<br />

(in ITEM: BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in VALUE: <strong>ST</strong>RING;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Changes the expected value of a byte stream measurement or SW variable.<br />

ITEM : name of item to have its expected value changed.<br />

VALUE : string containing desired expected value of item.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_EXPECTED_VALUE (\apm\dms\message, ”Hallo ESA”, stat);


Space Infrastructure<br />

7.9.1.3.1.12 SET_LIMIT_SET<br />

Specification<br />

procedure SET_LIMIT_SET<br />

(in ITEM: ANALOG_MONITOR_ITEM_NAME;<br />

in LIMIT_SET: LIMIT_SET_NUMBER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

372 von/of: 662<br />

Description / Parameters<br />

<br />

<br />

<br />

<br />

ITEM : path name of item to have its limit set changed.<br />

LIMIT_SET : identifier of the desired limit set. Its value must be between 1 and the number of limits<br />

defined for ITEM.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_LIMIT_SET (\apm\dms\memory_pages, 4, stat);<br />

7.9.1.3.1.13 GET_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

Specification<br />

procedure GET_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

out MONITORING_<strong>ST</strong>ATUS: MONITOR_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Returns the current monitoring status for an enditem.<br />

ITEM : name of enditem to monitor.<br />

MONITORING_<strong>ST</strong>ATUS : returns monitoring status of Item.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_ENDITEM_MONITOR_<strong>ST</strong>ATUS (\apm\power\consumption, enditem_status, stat);


Space Infrastructure<br />

7.9.1.3.1.14 GET_FULL_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure GET_FULL_ENDITEM_MONITOR_<strong>ST</strong>ATUS<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

out MONITORING_<strong>ST</strong>ATUS: FULL_MONITOR_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Returns the current monitoring status and monitoring values for an enditem.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

373 von/of: 662<br />

ITEM : pathname of enditem to monitor.<br />

MONITOR_<strong>ST</strong>ATUS : returns the detailed monitoring status record of Item, containing alternative<br />

variants depending on the item type and whether a limit set is defined (see the definition of type<br />

FULL_MONITOR_<strong>ST</strong>ATUS.)<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_FULL_ENDITEM MONITOR_<strong>ST</strong>ATUS (\apm\power\consumption, monitor_status, stat);<br />

7.9.1.3.1.15 GET_ACQUISITION_<strong>ST</strong>ATUS<br />

procedure GET_ACQUISITION_<strong>ST</strong>ATUS<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Returns the current acquisition status for an enditem. This operation can be called locally on the test<br />

node maintaining the enditem or remotely on another test node.<br />

ITEM : pathname of enditem (measurement or software variable).<br />

ENDITEM_ACQ_<strong>ST</strong>ATUS : returns the acquisition status of item.<br />

VALID: The enditem has been startet for acquisition and a value has been delivered<br />

NOT_ACQ : The measurement has not been started for acquisition<br />

NOT_RECVD : The measurement has been started for acquisition but no value has been received<br />

up to now<br />

NOT_MAINTAINED: The enditem is not maintained by any test node<br />

DISAB : The measurement / sw variable has been ”disabled” by a condition<br />

INVALID : No valid value exists for the enditem, e.g. it could not be calibrated<br />

<strong>ST</strong>ATIC : The SAS has indicated that it currently cannot deliver the end–item<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_ACQUISITION_<strong>ST</strong>ATUS (\apm\power\consumption, acq_status, stat);<br />

IF acqu_status = VALID<br />

then my_var := \apm\power\consumption;<br />

END IF;


Space Infrastructure<br />

7.9.1.3.1.16 GET_INTEGER<br />

procedure GET_INTEGER<br />

(in ITEM: INTEGER_MONITOR_ITEM_NAME;<br />

out VALUE: INTEGER;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

374 von/of: 662<br />

Description / Parameters<br />

Returns the current value for an integer enditem. This operation can be called locally on the test node<br />

maintaining the enditem or remotely on another test node.<br />

ITEM : pathname of an integer enditem (measurement or software variable).<br />

VALUE : the value of the enditem. In case the value is not VALID (see ENDITEM_ACQ_<strong>ST</strong>ATUS),<br />

the last valid value will be returned (or a default null value in case the value has never been set)<br />

TIME_TAG : the time tag (local time) of the last value. In case the value is not VALID (see ENDI-<br />

TEM_ACQ_<strong>ST</strong>ATUS) the time tag of the last valid value will be returned (or a default null time in case<br />

the value has never been set)<br />

ENDITEM_ACQ_<strong>ST</strong>ATUS : returns the acquisition status of item.<br />

VALID: The enditem has been startet for acquisition and a value has been delivered<br />

NOT_ACQ : The measurement has not been started for acquisition<br />

NOT_RECVD : The measurement has been started for acquisition but no value has been received<br />

up to now<br />

NOT_MAINTAINED: The enditem is not maintained by any test node<br />

DISAB : The measurement / sw variable has been ”disabled” by a condition<br />

INVALID : No valid value exists for the enditem, e.g. it could not be calibrated<br />

<strong>ST</strong>ATIC : The SAS has indicated that it cannot deliver any more the end–item<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_INTEGER (\apm\power\counter, int_value, time_tag, acq_status, stat);


Space Infrastructure<br />

7.9.1.3.1.17 GET_FLOAT<br />

procedure GET_FLOAT<br />

(in ITEM: FLOAT_MONITOR_ITEM_NAME;<br />

out VALUE: REAL;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

375 von/of: 662<br />

Description / Parameters<br />

Returns the current value for a float enditem. This operation can be called locally on the test node<br />

maintaining the enditem or remotely on another test node.<br />

ITEM : pathname of a float enditem (measurement or software variable).<br />

VALUE : the value of the enditem. In case the value is not VALID (see ENDITEM_ACQ_<strong>ST</strong>ATUS),<br />

the last valid value will be returned (or a default null value in case the value has never been set)<br />

TIME_TAG : the time tag (local time) of the last value. In case the value is not VALID (see ENDI-<br />

TEM_ACQ_<strong>ST</strong>ATUS) the time tag of the last valid value will be returned (or a default null time in case<br />

the value has never been set)<br />

ENDITEM_ACQ_<strong>ST</strong>ATUS : returns the acquisition status of item.<br />

VALID: The enditem has been startet for acquisition and a value has been delivered<br />

NOT_ACQ : The measurement has not been started for acquisition<br />

NOT_RECVD : The measurement has been started for acquisition but no value has been received<br />

up to now<br />

NOT_MAINTAINED: The enditem is not maintained by any test node<br />

DISAB : The measurement / sw variable has been ”disabled” by a condition<br />

INVALID : No valid value exists for the enditem, e.g. it could not be calibrated<br />

<strong>ST</strong>ATIC : The SAS has indicated that it cannot deliver any more the end–item<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_float (\apm\power\consumption, flt_value, time_tag, acq_status, stat);


Space Infrastructure<br />

7.9.1.3.1.18 GET_<strong>ST</strong>ATECODE<br />

procedure GET_<strong>ST</strong>ATE_CODE<br />

(in ITEM: DISCRETE_MONITOR_ITEM_NAME;<br />

out VALUE: <strong>ST</strong>ATECODE;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

376 von/of: 662<br />

Description / Parameters<br />

Returns the current value for a discrete enditem. This operation can be called locally on the test node<br />

maintaining the enditem or remotely on another test node.<br />

ITEM : pathname of a discrete enditem (measurement or software variable).<br />

VALUE : the value of the enditem. In case the value is not VALID (see ENDITEM_ACQ_<strong>ST</strong>ATUS),<br />

the last valid value will be returned (or a default null value in case the value has never been set)<br />

TIME_TAG : the time tag (local time) of the last value. In case the value is not VALID (see ENDI-<br />

TEM_ACQ_<strong>ST</strong>ATUS) the time tag of the last valid value will be returned (or a default null time in case<br />

the value has never been set)<br />

ENDITEM_ACQ_<strong>ST</strong>ATUS : returns the acquisition status of item.<br />

VALID: The enditem has been startet for acquisition and a value has been delivered<br />

NOT_ACQ : The measurement has not been started for acquisition<br />

NOT_RECVD : The measurement has been started for acquisition but no value has been received<br />

up to now<br />

NOT_MAINTAINED: The enditem is not maintained by any test node<br />

DISAB : The measurement / sw variable has been ”disabled” by a condition<br />

INVALID : No valid value exists for the enditem, e.g. it could not be calibrated<br />

<strong>ST</strong>ATIC : The SAS has indicated that it cannot deliver any more the end–item<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_<strong>ST</strong>ATECODE (\apm\power\status, disc_value, time_tag, acq_status, stat);


Space Infrastructure<br />

7.9.1.3.1.19 GET_BYTE_<strong>ST</strong>REAM<br />

procedure GET_BYTE_<strong>ST</strong>REAM<br />

(in ITEM: BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

out VALUE: <strong>ST</strong>RING;<br />

out TIME_TAG: TIME;<br />

out ENDITEM_ACQ_<strong>ST</strong>ATUS: ACQUISITION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

377 von/of: 662<br />

Description / Parameters<br />

Returns the current value for a byte stream enditem. This operation can be called locally on the test<br />

node maintaining the enditem or remotely on another test node.<br />

ITEM : pathname of a byte–stream enditem (measurement or software variable).<br />

VALUE : the value of the enditem. In case the value is not VALID (see ENDITEM_ACQ_<strong>ST</strong>ATUS),<br />

the last valid value will be returned (or a default null value in case the value has never been set). If<br />

the string given is not large enough, the value is truncated.<br />

TIME_TAG : the time tag (local time) of the last value. In case the value is not VALID (see ENDI-<br />

TEM_ACQ_<strong>ST</strong>ATUS) the time tag of the last valid value will be returned (or a default null time in case<br />

the value has never been set)<br />

ENDITEM_ACQ_<strong>ST</strong>ATUS : returns the acquisition status of item.<br />

VALID: The enditem has been startet for acquisition and a value has been delivered<br />

NOT_ACQ : The measurement has not been started for acquisition<br />

NOT_RECVD : The measurement has been started for acquisition but no value has been received<br />

up to now<br />

NOT_MAINTAINED: The enditem is not maintained by any test node<br />

DISAB : The measurement / sw variable has been ”disabled” by a condition<br />

INVALID : No valid value exists for the enditem, e.g. it could not be calibrated<br />

<strong>ST</strong>ATIC : The SAS has indicated that it cannot deliver any more the end–item<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_BYTE_<strong>ST</strong>REAM (\apm\power\message, str_value, time_tag, acq_status, stat);


Space Infrastructure<br />

7.9.1.3.2 Time Management<br />

7.9.1.3.2.1 CLOCK<br />

Specification<br />

function CLOCK<br />

(in BASE: TIME_BASE: = LOCAL_TIME) : TIME;<br />

Description / Parameters<br />

Returns the actual local time or SMT<br />

BASE (optional) : time_base to use; by default, local time.<br />

Example<br />

my_time_variable : = CLOCK;<br />

7.9.1.3.2.2 DELAY<br />

Specification<br />

procedure DELAY<br />

(in DELAY: DURATION;<br />

in BASE: TIME_BASE:= LOCAL_TIME);<br />

Description / Parameters<br />

Waits the given time interval. Returns nothing.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

DELAY : duration to delay, expressed as a fixed–point number in seconds.<br />

BASE : time base to use; by default, local time.<br />

Example<br />

DELAY (4.6 [s]);<br />

7.9.1.3.2.3 WAIT_UNTIL<br />

Specification<br />

procedure WAIT_UNTIL<br />

(in DUE_TIME : TIME;<br />

in BASE: TIME_BASE: = LOCAL_TIME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Waits until the given time is reached.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

378 von/of: 662<br />

DUE_TIME : time to wait until.<br />

BASE (optional) : time base to use; by default, local time.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

WAIT_UNTIL (3:00:00.000, LOCAL_TIME, stat);


Space Infrastructure<br />

7.9.1.3.2.4 <strong>ST</strong>ART_SMT<br />

Specification<br />

procedure <strong>ST</strong>ART_SMT<br />

(in VALUE: TIME: ~:~ ;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

379 von/of: 662<br />

Description / Parameters<br />

Starts Simulation Mean Time (SMT), and optionally sets it to a given value. If SMT is already running,<br />

the new VALUE is immediately set, and time is incremented accordingly thereafter.<br />

VALUE (optional) : new SMT; by default current SMT is resumed.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

<strong>ST</strong>ART_SMT (10.01.95 20:00:00, <strong>ST</strong>ATUS : stat);<br />

7.9.1.3.2.5 <strong>ST</strong>OP_SMT<br />

Specification<br />

procedure <strong>ST</strong>OP_SMT<br />

(out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Stop the running Simulation Mean Time.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

<strong>ST</strong>OP_SMT (stat);


Space Infrastructure<br />

7.9.1.3.3 GTAP Handling<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

380 von/of: 662<br />

In the following, the term GTAP (Ground Test Automated Procedure) is used for Automated<br />

Procedures running in the Ground <strong>System</strong> (to differentiate from Automated Procedures running in the<br />

Onboard <strong>System</strong>)<br />

7.9.1.3.3.1 EXECUTE_AP<br />

Specification<br />

procedure EXECUTE_AP<br />

(in AP: AP_NAME ();<br />

in PRIO: PRIORITY: = LOW;<br />

in NODE: NODE_NAME : = \\;<br />

out ID: AP_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Description / Parameters<br />

Starts execution of a GTAP. If the procedure is called from within a GTAP, the called GTAP runs<br />

asynchronously unless SYNCHRONISE_WITH_AP is also called.<br />

AP : name of GTAP to run; optionally including its list of parameters.<br />

PRIO (optional) : the GTAP’s priority (HIGH or LOW).<br />

NODE (optional) : node on which the GTAP is to be executed: by default the current node.<br />

ID : returns the new GTAP’s identifier, if it could be started; otherwise –1.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

EXECUTE_AP<br />

(\apm\dms\start_up(A,B,C), low_priority, \apm\dms, my_AP_ID, exec_stat);<br />

7.9.1.3.3.2 SYNCHRONISE_WITH_AP<br />

Specification<br />

procedure SYNCHRONISE_WITH_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME : = \\;<br />

out COMPLETION: AP_COMPLETION_<strong>ST</strong>ATE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Forces the calling GTAP to synchronise with the called GTAP (by default, EXECUTE_AP starts the<br />

called GTAP asynchronously). SYNCHRONISE_WITH_AP blocks until the called GTAP has finished.<br />

AP : internal GTAP identifier, from EXECUTE_AP.<br />

NODE (optional) : node on which the GTAP is to be executed; by default the current node.<br />

COMPLETION : returns the called GTAP’s completion state.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SYNCHRONISE_WITH_AP (my_AP_ID, \DMS\SCOE, my_completion_state, stat);


Space Infrastructure<br />

7.9.1.3.3.3 SUSPEND_AP<br />

Specification<br />

procedure SUSPEND_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME : = \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Suspends execution of a GTAP on a given test node.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

381 von/of: 662<br />

AP : internal GTAP identifier, given to it when started by EXECUTE_AP.<br />

NODE (optional) : the node running the GTAP : by default, the current node.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SUSPEND_AP (power_down_AP_ID,\\, stat);<br />

7.9.1.3.3.4 RESUME_AP<br />

Specification<br />

procedure RESUME_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME : = \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Resumes execution of a suspended GTAP.<br />

AP : internal GTAP identifier, given to it when started by EXECUTE_AP.<br />

NODE (optional) : the node running the GTAP : by default the local node.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

RESUME_AP (my_AP_reference, \\, stat);<br />

7.9.1.3.3.5 OWN_AP_ID<br />

Specification<br />

;function OWN_AP_ID : AP_ID<br />

Description / Parameters<br />

Returns the GTAP identifier of the AP calling that function. This function is not available from HLCL as<br />

the system library commands executed from HLCL do not have a GTAP identifier.<br />

Example<br />

MY_AP_ID := OWN_AP_ID;


Space Infrastructure<br />

7.9.1.3.3.6 GET_AP_ID<br />

Specification<br />

procedure GET_AP_ID<br />

(in AP: AP_NAME;<br />

in NODE: NODE_NAME : = \\;<br />

out NUMBER: INTEGER;<br />

out ID_LI<strong>ST</strong>: AP_ID_LI<strong>ST</strong>;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

382 von/of: 662<br />

Description / Parameters<br />

Returns all GTAP identifiers for a given automated procedure name on a given test node. Since<br />

several instances of a GTAP may run in parallel on one test node, a list of GTAP identifiers is returned.<br />

AP : name of GTAP to find.<br />

NODE (optional) : node to search; by default, the local node.<br />

NUMBER : returns the number of GTAP identifiers in the ID_List for this GTAP.<br />

ID_LI<strong>ST</strong> : returns list of AP_IDs found. Unused fields of the ID_List are filled with zeroes.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_AP_ID<br />

7.9.1.3.3.7 GET_AP_<strong>ST</strong>ATUS<br />

(\apm\power\control_program, \apm\dms, my_number_of_APs, my_AP_list, stat);<br />

Specification<br />

procedure GET_AP_<strong>ST</strong>ATUS<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME : = \\;<br />

out EXEC_<strong>ST</strong>ATE: AP_EXECUTION_<strong>ST</strong>ATE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Returns the current status of a GTAP.<br />

AP : AP_ID of the GTAP whose status is required.<br />

NODE (optional) : node to search; by default, the current node.<br />

EXEC_<strong>ST</strong>ATE : returns the execution state of the GTAP.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_AP_<strong>ST</strong>ATUS (\apm\power\off\procedure, \apm\dms, my_AP_status, stat);


Space Infrastructure<br />

7.9.1.3.3.8 READ_MESSAGE_FROM_AP<br />

Specification<br />

procedure READ_MESSAGE_FROM_AP<br />

(in BLOCK: BOOLEAN : = TRUE;<br />

out AP: AP_ID;<br />

out NODE_NAME: USER_MESSAGE;<br />

out MESSAGE : USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Reads a message asynchronously from another GTAP.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

BLOCK (optional) : boolean flag controlling the source of the message, as follows:<br />

– TRUE : waits until a GTAP really sends a message (by default)<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

383 von/of: 662<br />

– FALSE : reads the next message buffered, or if none, returns an empty string.<br />

AP : returns identifier of the GTAP sending the message.<br />

NODE_NAME : returns string identifying node on which other GTAP is running.<br />

MESSAGE : returns string from the other GTAP.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

READ_MESSAGE_FROM_AP (FALSE, the_AP_ID, the_AP_message, stat);<br />

7.9.1.3.3.9 WRITE_MESSAGE_TO_AP<br />

Specification<br />

procedure WRITE_MESSAGE_TO_AP<br />

(in AP: AP_ID;<br />

in NODE: NODE_NAME : = \\;<br />

in MESSAGE: USER_MESSAGE : = DEFAULT_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Sends a message asynchronously from one GTAP to another, i.e. without waiting for the receiving AP<br />

to accept the message. The caller simply sends the message and continues.<br />

AP : AP_ID of GTAP to receive the message.<br />

NODE (optional) : processor node running receiving GTAP; by default, the current node.<br />

MESSAGE : string to send.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

WRITE_MESSAGE_TO_AP<br />

(dms_control_AP_ID, \DMS\SCOE, ”EMERGENCY <strong>ST</strong>OP”, stat);


Space Infrastructure<br />

7.9.1.3.4 Application Handling<br />

unloaded<br />

LOAD_APPLICATION<br />

UNLOAD_APPLICATION<br />

idle<br />

INIT_APPLICATION<br />

UNLOAD_APPLICATION<br />

RESET_APPLICATION<br />

initialised<br />

<strong>ST</strong>ART_APPLICATION<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

aborted<br />

Figure: Relationship of Application Handling Primitives<br />

7.9.1.3.4.1 LOAD_APPLICATION<br />

Specification<br />

procedure LOAD_APPLICATION<br />

(in NAME : APPLICATION_NAME;<br />

in NODE: NODE_NAME := \\;<br />

in PARAMS: USER_MESSAGE : = DEFAULT_MESSAGE;<br />

out APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Description / Parameters<br />

Loads an application on to the local test node or on a workstation.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

384 von/of: 662<br />

(crashes)<br />

running<br />

NAME : the name of the executable image in the predefined application directory.<br />

NODE : the name of the node where the SAS shall execute. By default the empty pathname denotes<br />

the local testnode. The workstations are referenced by their EGSE node entry in MDA. Starting a SAS<br />

on another testnode is prohibited.<br />

PARAMS (optional) : parameter string up to 255 characters to pass to the application.<br />

APPL : returns the application’s ID to be used for subsequent control operations.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

LOAD_APPLICATION (”exp_monitor”, ”Exp=123”, my_appl_ID, stat);


Space Infrastructure<br />

7.9.1.3.4.2 UNLOAD_APPLICATION<br />

Specification<br />

procedure UNLOAD_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Unloads the specified application from memory.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

385 von/of: 662<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

UNLOAD_APPLICATION (smives_appl_ID, stat);<br />

7.9.1.3.4.3 INIT_APPLICATION<br />

Specification<br />

procedure INIT_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

in MESSAGE: USER_MESSAGE: = DEFAULT_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Initialises the specified application.<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

MESSAGE (optional) : string up to 255 characters to send to the application.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

INIT_APPLICATION (my_appl_ID, ”GNC_RECEIVER_ON”, stat);<br />

7.9.1.3.4.4 <strong>ST</strong>ART_APPLICATION<br />

Specification<br />

procedure <strong>ST</strong>ART_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Starts the application running.<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

<strong>ST</strong>ART_APPLICATION (my_appl_ID, stat);


Space Infrastructure<br />

7.9.1.3.4.5 RESET_APPLICATION<br />

Specification<br />

procedure RESET_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Resets the specified application.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

386 von/of: 662<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

RESET_APPLICATION (my_appl_ID, stat);<br />

7.9.1.3.4.6 GET_APPLICATION_<strong>ST</strong>ATUS<br />

Specification<br />

procedure GET_APPLICATION_<strong>ST</strong>ATUS<br />

(in APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATE: APPLICATION_<strong>ST</strong>ATE;<br />

out ERROR_COUNT: INTEGER;<br />

out ERROR_MESSAGE: APPLICATION_ERROR_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Returns the status of an application, including error status and statistics.<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

<strong>ST</strong>ATE : returns state of application.<br />

ERROR_COUNT : returns integer count of errors in the application.<br />

ERROR_MESSAGE : returns error message from the application.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_APPLICATION_<strong>ST</strong>ATUS (appl_ID, appl_state, err_count, appl_error_mess, stat);


Space Infrastructure<br />

7.9.1.3.4.7 GET_APPLICATION_ID<br />

Specification<br />

procedure GET_APPLICATION_ID<br />

(in NAME: APPLICATION_NAME;<br />

out APPL: APPLICATION_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Returns the Application ID of an application, if the application is loaded<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

387 von/of: 662<br />

NAME : The name of the application.<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_APPLICATION_ID (appl_name, appl_id, stat);<br />

7.9.1.3.4.8 GET_APPLICATION_NAME<br />

Specification<br />

procedure GET_APPLICATION_NAME<br />

(in APPL: APPLICATION_ID;<br />

out NAME: APPLICATION_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Returns the name of an application<br />

APPL : APPLICATION_ID as returned from LOAD_APPLICATION (section 7.9.1.3.4.1).<br />

NAME : returns the name of the application.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

GET_APPLICATION_NAME (appl_ID, appl_name, stat);


Space Infrastructure<br />

7.9.1.3.4.9 READ_MESSAGE_FROM_APPLICATION<br />

Specification<br />

procedure READ_MESSAGE_FROM_APPLICATION<br />

(in BLOCK: BOOLEAN: = TRUE;<br />

out APPL: APPLICATION_ID;<br />

out MESSAGE : USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Reads a message from an application.<br />

BLOCK : boolean flag, controlling the source of the read:<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

388 von/of: 662<br />

– TRUE, waits until an application really sends a message;<br />

– FALSE, reads the next message buffered. If none, returns an empty string.<br />

APPL : returns APPLICATION_ID of the application sending the message.<br />

MESSAGE : returns a string containing the message<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

READ_MESSAGE_FROM_APPLICATION (FALSE, appl_ID, appl_message, stat)<br />

7.9.1.3.4.10 WRITE_MESSAGE_TO_APPLICATION<br />

Specification<br />

procedure WRITE_MESSAGE_TO_APPLICATION<br />

(in APPL: APPLICATION_ID;<br />

in MESSAGE : USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Sends a message to an application.<br />

APPL : the APPLICATION_ID as returned from LOAD_APPLICATION.<br />

MESSAGE : string of up to 255 characters to be sent.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

WRITE_MESSAGE_TO_APPLICATION (smives_appl_ID, ”IEEE_BUS_1_INIT”, stat);


Space Infrastructure<br />

7.9.1.3.5 Issue of HW Stimuli<br />

7.9.1.3.5.1 ISSUE<br />

Specification<br />

procedure ISSUE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

(in ITEM: ISSUE_ITEM_NAME();<br />

in PRIO: PRIORITY := LOW;<br />

in AT_TIME: TIME: = ~:~;<br />

in BASE: TIME_BASE: = LOCAL_TIME;<br />

in ONBOARD_EXECUTION_TIME: TIME := ~:~;<br />

in TIMEOUT: DURATION: = DEFAULT_ISSUE_TIMEOUT ;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Description / Parameters<br />

Issues a stimulus (or Telecommand).<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

389 von/of: 662<br />

ITEM : the database enditem describing what has to be issued. It can denote a parameter list, as defined<br />

for the enditem.<br />

Note: the enditem may also be maintained by a remote node<br />

PRIO : the priority to be used for issuing the item (HIGH or LOW)<br />

AT_TIME (optional) : The time to issue the stimulus;<br />

Default: ”~:~” = ”00.00.01”, i.e. the default ”no time”.<br />

The purpose of the AT_TIME parameter shall be the same for all GDU alternatives:<br />

For MDB enditems of type EGSE_ANALOGUE_<strong>ST</strong>IMULUS, EGSE_DISCRETE_<strong>ST</strong>IMULUS,<br />

EGSE_BINARY_PACKET and EGSE_PREDEFINED_TC, the time value is written as the<br />

TIME_TAG into the GDU generated by the command and sent to the SAS. The SAS then has to extract<br />

the TIME_TAG from the GDU and execute the stimulus at the given time.<br />

For MDB enditems of type GDU_DESCRIPTION_LI<strong>ST</strong> the AT_TIME value will be written into the<br />

time tasg field of the GDU header of each stimulus referenced within the GDU list.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

390 von/of: 662<br />

ONBOARD_EXECUTION_TIME (optional): The time to execute the telecommand onboard<br />

Default: ”~:~” = ”00.00.01”, i.e. the default ”no time”.<br />

For MDB Enditems of type EGSE_PREDEFINED_TC, the ONBOARD_EXECUTION _TIME value<br />

will be written to the TIME field of the secondary header of the corresponding CCSDS packet. In this<br />

case, the TIME_ID field of the secondary header shall be set to ’10’B, which means: a time tag is present.<br />

No interpretation of TIME_BASE will be done by <strong>CGS</strong> in this case. The TIME_TAG of the GDU header<br />

generated by the command will be independent from this.<br />

If no ONBOARD_EXECUTION _TIME parameter is given, i.e. the default value is applied , the<br />

TIME_ID and TIME field shall be set to ’10’B (= time tagged command: the execution of the command<br />

is scheduled by the onboard system to the specified time)<br />

For MDB enditems of type GDU_DESCRIPTION_LI<strong>ST</strong> the ONBOARD_EXECUTION _TIME<br />

value will be written into the TIME field of the secondary header of each CCSDS packet referenced<br />

within the GDU list.<br />

Remark: If the TIME_ID is of value ’00’B (UNDEFINED) or ’11’B (NO_TIME_TAG), the TIME field<br />

in the secondary header shall be set to zero via the database default entry, in case no ONBOARD_EX-<br />

ECUTION_TIME parameter is given.<br />

BASE (optional) : specifies if AT_TIME is local time or SMT; by default, local time.<br />

TIMEOUT : the maximum time to wait for acknowledgement of this stimulus or telecommand<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ISSUE (\apm\ecls\main_temperature(21.1), AT_TIME : 10:00:00, <strong>ST</strong>ATUS : stat);


Space Infrastructure<br />

7.9.1.3.5.2 ISSUE_AND_VERIFY<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure ISSUE_AND_VERIFY<br />

(in ITEM: SINGLE_GDU_NAME();<br />

in PRIO: PRIORITY := LOW;<br />

in AT_TIME: TIME := ~:~;<br />

in BASE: TIME_BASE := LOCAL_TIME;<br />

in ONBOARD_EXECUTION_TIME: TIME := ~:~;<br />

in TIMEOUT: DURATION := default_issue_timeout;<br />

in ACTIVATION_DELAY: DURATION := –1.0 [s];<br />

in VERIFICATION_TIMEOUT : DURATION := –1.0 [s];<br />

in WAIT_TIL_END: BOOLEAN := FALSE;<br />

out VERIFICATION_<strong>ST</strong>ATUS: CMD_VERIFICATION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

391 von/of: 662<br />

Description / Parameters<br />

Issues a stimulus (or Telecommand/Binary packet) and verifies expected values for measurements,<br />

defined as part of the enditem definition in the MDB. The verification starts after the command has<br />

been acknowledged and a specified time (ACTIVATION_DELAY) has elapsed. If in the<br />

VERIFICATION_TIMEOUT period all specified expected values have been verified, the verification<br />

status is set to OK, otherwise to FAILED. A message is generated accordingly.<br />

If during the verification an error occurs, the verification status is set to ERROR.<br />

If WAIT_TIL_END is set, the procedure waits until the end of the verification and the verification status is<br />

returned in VERIFICATION_<strong>ST</strong>ATUS; otherwise the status can be read by the procedure GET_VERIFICA-<br />

TION_<strong>ST</strong>ATUS at any time.<br />

Send GDU<br />

Activation_delay<br />

Acknowledge<br />

NACK:<br />

Verif. Status: undefined<br />

Verification Timeout<br />

all values OK:<br />

report OK<br />

Verification Status: OK<br />

time<br />

min 1 value NOK:<br />

report failure<br />

Verification Status: FAILED<br />

ITEM : the database enditem (GDU) describing what has to be issued. It can denote a parameter list,<br />

as defined for the enditem.<br />

Notes: (1) the enditem may also be maintained by a remote node<br />

PRIO : the priority to be used for issuing the GDU (HIGH or LOW)<br />

AT_TIME (optional) : The time to issue the GDU;<br />

––> see procedure ISSUE<br />

ONBOARD_EXECUTION_TIME (optional): The time to execute the telecommand onboard<br />

––> see procedure ISSUE<br />

BASE (optional) : specifies if AT_TIME is local time or SMT; by default, local time.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

TIMEOUT : the maximum time to wait for acknowledgement of this GDU<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

392 von/of: 662<br />

ACTIVATION_DELAY: the time to wait after sending of the GDU until the verification of the measurements<br />

is started. If this value is set to 0.0, the checking is performed immediately after the command<br />

has been acknowledged. If the default value (–1.0) is given, the activation delay is taken from the MDB<br />

definition.<br />

VERIFICATION_TIMEOUT: the time to wait after the ACTIVATION_DELAY has expired and before<br />

the verification of the measurements is finished. If in this period the verification of the value(s) for<br />

measurement(s) defined in the MDB is successful, a message is generated and the verification status<br />

is set to OK. If VERIFICATION_TIMEOUT has elapsed and the verification of at least one measurment<br />

is not successful, a message is generated indicating failure and the verification status is set to<br />

FAILED.<br />

If VERIFICATION_TIMEOUT is set to 0.0, the checking is performed immediately after the ACTIVA-<br />

TION_DELAY and then is finished.If the default value (–1.0) is given, the activation delay is taken from<br />

the MDB definition.<br />

WAIT_TIL_END: If true, the procedure returns after the verification has finished. If false, the<br />

procedure returns immediately after the GDU has been acknowledged resp. after TIMEOUT. In this<br />

case, the VERIFICATION_<strong>ST</strong>ATUS is set to IN_PROGRESS.<br />

VERIFICATION_<strong>ST</strong>ATUS: Status of the verification<br />

<strong>ST</strong>ARTED, Verification is started, i.e. Activation Delay is currently running<br />

IN_PROGRESS, Verification is in progress, i.e Verification Timeout is running<br />

and not all measurements have expected values yet<br />

TC_VERIF_OK, Verification performed with success. All measurements had expected<br />

values.<br />

TC_VERIF_FAILED, Verification performed with no success, i.e. Verification<br />

Timeout elapsed and at least one measurement had no expected value<br />

ERROR, Error during Verification Timeout. During the verification timeout<br />

an internal error occured<br />

NO_VERIFICATION No Verification defined for this enditem (i.e. in MDB there are no<br />

measurements specified which to verify for this command)<br />

ABORTED Verification aborted due to issue of same command or stop of remote<br />

TES<br />

UNDEFINED The verifcation status is not defined, i.e. the sending of the<br />

command aborted due to error or negative acknowledge or timeout<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ISSUE_AND_VERIFY(\apm\eps\power_on, VERIFICATION_TIMEOUT: 3.0[s],WAIT_TIL_END: true,<br />

VERIFICATION_<strong>ST</strong>ATUS: v_stat, <strong>ST</strong>ATUS : stat);


Space Infrastructure<br />

7.9.1.3.5.3 GET_VERIFICATION_<strong>ST</strong>ATUS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure GET_VERIFICATION_<strong>ST</strong>ATUS<br />

(in ITEM: GDU_ITEM_NAME;<br />

out VERIFICATION_<strong>ST</strong>ATUS: CMD_VERIFICATION_<strong>ST</strong>ATUS;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

393 von/of: 662<br />

ENDITEM : name of stimulus or telecommand for which the verification status is to be fetched.<br />

Enditem may be defined on local or remote node.<br />

VERIFICATION_<strong>ST</strong>ATUS: Status of the verification. Applies to the last command (GDU) successfully<br />

sent or just being sent.<br />

<strong>ST</strong>ARTED, Verification is started, i.e. Activation Delay is currently running<br />

IN_PROGRESS, Verification is in progress, i.e Verification Timeout is running<br />

and not all measurements have expected values yet<br />

TC_VERIF_OK, Verification performed with success. All measurments had expected<br />

values.<br />

TC_VERIF_FAILED, Verification performed with no success, i.e. Verification<br />

Timeout elapsed and at least one measurement had no expected value<br />

ERROR, Error during Verification Timeout. During the verification timeout<br />

an internal error occured<br />

NO_VERIFICATION No Verification defined for this enditem (i.e. in MDB there are no<br />

measurements specified which to verify for this command)<br />

ABORTED Verification aborted due to issue of same command or stop of remote<br />

TES<br />

UNDEFINED The verifcation status is not defined, i.e. the sending of the<br />

command aborted due to error or negative acknowledge or timeout<br />

7.9.1.3.5.4 ENABLE_ENDITEM<br />

Specification<br />

procedure ENABLE_ENDITEM<br />

(in ENDITEM: ISSUE_ITEM_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Enables an enditem that has been disabled, either temporarily through DISABLE_ENDITEM, or<br />

permanently through definition in the configuration database.<br />

ENDITEM : name of stimulus or telecommand to be enabled.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ENABLE_ENDITEM (\apm\power\off, stat);


Space Infrastructure<br />

7.9.1.3.5.5 DISABLE_ENDITEM<br />

Specification<br />

procedure DISABLE_ENDITEM<br />

(in ENDITEM: ISSUE_ITEM_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Disables an enditem that has been enabled temporarily or permanently.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

394 von/of: 662<br />

ENDITEM : name of stimulus or telecommand to be disabled.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

DISABLE_ENDITEM (\apm\power\off, stat);<br />

7.9.1.3.5.6 DOWNLOAD<br />

Specification<br />

procedure DOWNLOAD<br />

(in APPL: APPLICATION_ID;<br />

in ITEM: DOWNLOAD_ITEM_NAME;<br />

in NODE: NODE_NAME :=\\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Downloads a file to a SAS, the corresponding frontend equipment managed by the SAS or the unit<br />

under test through a SAS.<br />

APPL : name of the SAS which is doing the download<br />

ITEM : name of the item to be downloaded<br />

NODE : name of the node into which the item has to be downloaded. An empty pathname indicates<br />

some kind of default for the SAS.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

DISABLE_ENDITEM (\apm\power\off, stat);


Space Infrastructure<br />

7.9.1.3.6 Raw Data Handling<br />

7.9.1.3.6.1 <strong>ST</strong>ART_ACQUISITION<br />

Specification<br />

procedure <strong>ST</strong>ART_ACQUISITION<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

in ADU: ADU_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Starts data acquisition on the local test node for the given enditem(s).<br />

ITEM : individual enditem or group of enditems to be acquired.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

395 von/of: 662<br />

ADU (optional) : the ADU Descriptor to be applied. If there is only one ADU Descriptor defined for<br />

ITEM, the parameter may be omitted. If more than one ADU Descriptor is defined and the parameter<br />

is omitted, the command starts acquisition for all ADUs (TBC). If ITEM is already of type ADU_DE-<br />

SCRIPTION, the parameter is ignored.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

<strong>ST</strong>ART_ACQUISITION (\apm\dms\link\statistics, stat);<br />

7.9.1.3.6.2 <strong>ST</strong>OP_ACQUISITION<br />

Specification<br />

procedure <strong>ST</strong>OP_ACQUISITION<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

in ADU: ADU_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Description / Parameters<br />

Stops data acquisition on the local test node for the given enditems.<br />

ITEM : individual enditem or group of enditems no longer to be acquired.<br />

ADU (optional) : the ADU Descriptor to be applied. If only one ADU Descriptor is active for ITEM,<br />

the parameter may be omitted. If more than one ADU Descriptor is defined and the parameter is<br />

omitted, the command stops acquisition for all ADUs. If ITEM is already of type ADU_DESCRIPTION,<br />

the parameter is ignored.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

<strong>ST</strong>OP_ACQUISITION (\apm\dms\link\statistics, stat);


Space Infrastructure<br />

7.9.1.3.6.3 SEND_SIMULATED_ADU<br />

Specification<br />

procedure SEND_SIMULATED_ADU<br />

(in ADU: ADU_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

396 von/of: 662<br />

Description / Parameters<br />

Sends a specific ADU internally to the TES input buffers, in simulation mode. For example, triggers<br />

sending or simulation of a non–cyclic ADU.<br />

ADU : name of simulated packet to be sent.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SEND_SIMULATED_ADU (\apm\dms_scoe\ADU_3, stat);<br />

7.9.1.3.6.4 WAIT_FOR_ADU<br />

Specification<br />

procedure WAIT_FOR_ADU<br />

(in ADU: ADU_NAME;<br />

out TIME_TAG: TIME;<br />

out SEQUENCE_NUMBER: INTEGER;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Waits for an ADU to be supplied to this test node.<br />

ADU : name of packet to be received.<br />

TIME_TAG : returns the time tag from the received packet.<br />

SEQUENCE_NUMBER : returns the current sequence number from the received packet.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

WAIT_FOR_ADU<br />

(\apm\dms\housekeeping\packet, the_time_tag, the_sequence_number, stat);


Space Infrastructure<br />

7.9.1.3.6.5 SET_BITS_IN_SIMULATED_ADU<br />

Specification<br />

procedure SET_BITS_IN_SIMULATED_ADU<br />

(in ADU: ADU_NAME;<br />

in OFFSET: INTEGER;<br />

in SIZE: BIT_COUNT;<br />

in VALUE: BITSET;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

397 von/of: 662<br />

Description / Parameters<br />

Modifies the bit–contents of a simulated ADU directly in simulation mode. The operation can only be<br />

applied on unstructured ADUs or telemetry ADUs.<br />

ADU : name of the ADU to be modified.<br />

OFFSET : location in bits in this ADU where bits are to be modified.<br />

SIZE : the number of bits to modify. The upper limit is 32 bits.<br />

VALUE : the new value of the set of bits to be modified.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_BITS_IN_SIMULATED_ADU (\apm\dms\hk_packet_1, 1234, 3, [0,1,2], stat);<br />

7.9.1.3.6.6 SET_SIMULATED_ENDITEM_VALUE<br />

Specification<br />

PROCEDURE SET_SIMULATED_ENDITEM_VALUE<br />

(in ITEM: MONITOR_ITEM_NAME;<br />

in BOOL_VALUE: BOOLEAN : = FALSE;<br />

in INT_VALUE: INTEGER : = 0;<br />

in BITSET_VALUE: BITSET : = {};<br />

in REAL_VALUE: REAL : = 0.0;<br />

in <strong>ST</strong>R_VALUE: USER_MESSAGE : = ””;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Modifies the value of an enditem in simulated ADUs.<br />

The operation can only be applied on measurements provided by structured ADUs.<br />

ITEM : name of item to be modified.<br />

Other parameters : To cope with the different data types a value can have, several parameters are<br />

provided. By selecting the appropriate parameter, eg INT_VALUE: 7, the desired value is set. The<br />

operation can only be applied on items provided by structured ADUs.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

SET_SIMULATED_ENDITEM_VALUE<br />

(\apm\dms\input_current, REAL_VALUE : 5.6, <strong>ST</strong>ATUS : stat);


Space Infrastructure<br />

7.9.1.3.6.7 ROUTE_TO_SAS<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

398 von/of: 662<br />

Specification<br />

procedure ROUTE_TO_SAS<br />

(in ITEM: ROUTE_SAS_ITEM_NAME ;<br />

in SAS_NAME: APPLICATION_NAME;<br />

in OLD_SAS_NAME: APPLICATION_NAME := NULL_APPLICATION_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Routes all items specified in ITEM which have an SAS Reference to the new SAS specified by<br />

SAS_NAME. ITEMs must be in state ’not acquired’ if of type ADU_DESCRIPTION.<br />

ITEM : The item to be re–defined in the local memory of the test node. ITEM can be<br />

– a single enditem<br />

– a incomplete pathname pointing to a virtual node, thus redefining all in that subtree of the types indicated<br />

in the type ROUTE_SAS_ITEM_NAME;<br />

– a GDU_DESCRIPTION_LI<strong>ST</strong> list, thus enabling all items in that list.<br />

SAS_NAME: The new short name of the SAS to be applied for ITEM.<br />

The SAS must run on the local test node .<br />

OLD_SAS_NAME: The old short name of the SAS.Only items specified in ITEM having a SAS Reference<br />

matching this SAS name are changed .<br />

If NULL_APPLICATION_NAME is given, all items specified in ITEM are changed.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ROUTE_TO_SAS (\apm\cc_bus1\tc, ”VTC_SAS”, ”SSMB_SAS”, stat);


Space Infrastructure<br />

7.9.1.3.7 Event Handling<br />

7.9.1.3.7.1 LOG<br />

Specification<br />

procedure LOG<br />

(in MESSAGE: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Logs an event message to the test result database.<br />

Logged events have group–code LOG and type–code MSG.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

399 von/of: 662<br />

MESSAGE : string of up to 255 characters containing the message to be logged.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

LOG (”Captain’s log, stardate 1 January 2137”, stat);<br />

7.9.1.3.7.2 USER_EVENT<br />

Specification<br />

procedure USER_EVENT<br />

(in MESSAGE: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Logs an user event message to the test result database.<br />

User events are special log event with the group–code UEVT and type–code MSG.<br />

MESSAGE : string of up to 255 characters containing the message to be logged.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

USER_EVENT (”Begin_of_Test”, stat);


Space Infrastructure<br />

7.9.1.3.8 Engineering Value Logging<br />

7.9.1.3.8.1 ENABLE_EVL<br />

Specification<br />

procedure ENABLE_EVL<br />

(in ITEM: MONITOR_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Enables engineering value logging (EVL).<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

400 von/of: 662<br />

ITEM : name of enditem(s) to be enabled.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ENABLE_EVL (\apm\power_scoe\current_sensors, stat);<br />

7.9.1.3.8.2 DISABLE_EVL<br />

Specification<br />

procedure DISABLE_EVL<br />

(in ITEM: MONITOR_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Disables engineering value logging. If the specified enditems are already disabled for EVL, has no<br />

effect.<br />

ITEM : name of enditem(s) to be enabled.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

DISABLE_EVL (\apm\power_scoe\current_sensors, stat);


Space Infrastructure<br />

7.9.1.3.9 Archiving<br />

7.9.1.3.9.1 ENABLE_ARCHIVING<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure ENABLE_ARCHIVING<br />

(in CYCLE: DURATION: = DEFAULT_ARCH_FILE_OPEN_PERIOD;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Enables archiving; creates a new archive file.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

401 von/of: 662<br />

CYCLE : the time interval (1 minute to 24 hours exclusive) at which archive files are closed automatically.<br />

If archiving is already enabled and the cycle time of this call differs from the cycle time specified<br />

in the last call of this procedure, the current archive file is closed, and a new one is opened. Archiving<br />

periodically closes the archive file using the new cycle time.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

ENABLE_ARCHIVING( 45 [min], stat);<br />

7.9.1.3.9.2 DISABLE_ARCHIVING<br />

Specification<br />

procedure DISABLE_ARCHIVING;<br />

Description / Parameters<br />

Stops archiving on the local test node. If archiving was enabled the current archive file is closed.<br />

Example<br />

DISABLE_ARCHIVING;<br />

7.9.1.3.9.3 CLOSE_ARCHIVE<br />

Specification<br />

procedure CLOSE_ARCHIVE<br />

(out CLOSE_TIME : TIME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Closes the currently open archive file and opens a fresh one, provided archiving is enabled.<br />

CLOSE_TIME : returns the local time the archive file was closed.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

CLOSE_ARCHIVE (my_time_value, stat);


Space Infrastructure<br />

7.9.1.3.10 User Input & Output<br />

7.9.1.3.10.1 READ_MESSAGE_FROM_USER<br />

Specification<br />

procedure READ_MESSAGE_FROM_USER<br />

(in PROMPT: USER_MESSAGE;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME: = \\;<br />

out USER_ENTRY: USER_MESSAGE;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

402 von/of: 662<br />

Description / Parameters<br />

Reads a message from the user; issues a prompt and blocks until the user enters a message.<br />

PROMPT : prompt string of up to 255 characters, on Workstation’s screen.<br />

WORK<strong>ST</strong>ATION (optional) : node to display the prompt; by default, the workstation that started this<br />

GTAP.<br />

USER_ENTRY : returns what the user enters in a 255 character string, padded with NULLs.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

READ_MESSAGE_FROM_USER (”Continue?”, \apm\egse\test_ws\, buffer, stat);<br />

7.9.1.3.10.2 WRITE_MESSAGE_TO_USER<br />

Specification<br />

procedure WRITE_MESSAGE_TO_USER<br />

(in MESSAGE: USER_MESSAGE;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME:=\\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Sends a message to the user of a given workstation.<br />

MESSAGE : message to be sent to user.<br />

WORK<strong>ST</strong>ATION (optional) : name of node to display message; by default the workstation where this<br />

GTAP (or its ancestors) was started.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

WRITE_MESSAGE_TO_USER (”<strong>ST</strong>EP 3”, \apm\egse\test_ws, stat);


Space Infrastructure<br />

7.9.1.3.10.3 READ_NUMBER_FROM_USER<br />

Specification<br />

procedure READ_NUMBER_FROM_USER<br />

(in PROMPT_MESSAGE: USER_MESSAGE;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME: = \\;<br />

out USER_ENTRY: REAL;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

403 von/of: 662<br />

Description / Parameters<br />

Reads a real number; issues a prompt and blocks until the user enters one at the workstation.<br />

PROMPT : prompt string displayed on user’s screen, up to 255 characters.<br />

WORK<strong>ST</strong>ATION (optional) : the workstation to use; by default that started this GTAP (or one of its<br />

ancestors).<br />

USER_ENTRY : returns the number entered by the user.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

READ_NUMBER_FROM_USER<br />

(”Which Table ?”, \apm\egse\test_ws\, my_number, stat);


Space Infrastructure<br />

7.9.1.3.11 Synoptic Display Control<br />

7.9.1.3.11.1 DISPLAY_PICTURE<br />

Specification<br />

procedure DISPLAY_PICTURE<br />

(in PICTURE: PICTURE_NAME;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME := \\;<br />

out ID: PICTURE_ID;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Displays a synoptic display on a specific workstation.<br />

PICTURE : name of synoptic display.<br />

WORK<strong>ST</strong>ATION : name of node.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

404 von/of: 662<br />

WORK<strong>ST</strong>ATION (optional): the work station to show the synoptic display: by default the work station<br />

from which the command originates, directly or via a GTAP.<br />

ID : returns identifier to be used by REMOVE_PICTURE when removing this synoptic display.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

DISPLAY_PICTURE<br />

(\apm\power\total_overview, \apm\egse\test_conductor\workstation,<br />

my_synoptic_ID, stat);<br />

7.9.1.3.11.2 REMOVE_PICTURE<br />

Specification<br />

procedure REMOVE_PICTURE<br />

(in ID: PICTURE_ID;<br />

in WORK<strong>ST</strong>ATION: NODE_NAME := \\;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Remove a synoptic display from the screen of a specific workstation.<br />

ID : the picture’s identifier, as returned from DISPLAY_PICTURE (section 7.9.1.3.11.1).<br />

WORK<strong>ST</strong>ATION (optional): the work station showing the synoptic display: by default the work station<br />

from which the command originates, directly or via a GTAP.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

REMOVE_PICTURE (my_synoptic_ID, \apm\egse\test_conductor\workstation, stat);


Space Infrastructure<br />

7.9.1.3.12 UCL Code Reloading from MDB<br />

7.9.1.3.12.1 LOAD_UCL<br />

Specification<br />

procedure LOAD_UCL<br />

(in ITEM: UCL_ITEM_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

405 von/of: 662<br />

Description / Parameters<br />

Loads the I–code of an AP or UCL User library into memory. This procedure can be used for two<br />

purposes: Either to preload the i–code to speed up the start–up of the AP/USER_LIB or to reload an<br />

AP/USER_LIB which has been recompiled in MDB and which has already been preloaded.<br />

ITEM : the pathname of the item to be loaded.<br />

RETURN_<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Example<br />

LOAD_UCL (\apm\egse\emergency_ap, stat);<br />

7.9.1.3.13 Test Node management<br />

7.9.1.3.13.1 IS_LOCAL_NODE<br />

Specification<br />

function IS_LOCAL_NODE (in NODE : NODE_NAME) : BOOLEAN;<br />

Description / Parameters<br />

Returns TRUE if executed on the test node NODE, otherwise FALSE.<br />

NODE : name of EGSE node<br />

Example<br />

BOOL := IS_LOCAL_NODE (\apm\egse\mtp);


Space Infrastructure<br />

7.9.1.3.14 Conditions<br />

7.9.1.3.14.1 ENABLE_CONDITIONS<br />

Specification<br />

procedure ENABLE_CONDITIONS<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

406 von/of: 662<br />

Description / Parameters<br />

Enable condition for a specific measurement/software variable/derived value or for all enditems under<br />

a virtual tree/CDU or for all enditems within a monitor list or for all measurements within an ADU.<br />

Enables all conditions of the given enditems.<br />

If acquisition is not enabled for ITEM, it will be automatically started<br />

ITEM: The measurement(s) or software variable(s) carrying the conditions.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

ENABLE_CONDITIONS (\APM\mmu2, stat);<br />

7.9.1.3.14.2 DISABLE_CONDITIONS<br />

Specification<br />

procedure DISABLE_CONDITIONS<br />

(in ITEM: ACQUISITION_COLLECTION;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Disable condition(s) for a specific measurement/software variable/derived value or for all enditems<br />

under a virtual tree/CDU or for all enditems within a monitor list or for all measurements within an ADU.<br />

Disables all conditions of the given enditems<br />

When disabled, the conditions are still existing, and may be re–enabled via Enable_Conditions<br />

ITEM: The measurement(s) or software variable(s) carrying the condition.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

DISABLE_CONDITIONS (\APM\mmu2, stat);


Space Infrastructure<br />

7.9.1.3.14.3 ENABLE_ON_INTEGER<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure ENABLE_ON_INTEGER<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : INTEGER_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : INTEGER;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

407 von/of: 662<br />

Description / Parameters<br />

Enables the processing of ITEM (measurement, software variable, monitoring list or measurements<br />

of a subtree) when the CONDITION_CHECK of the value of CONDITION_ITEM with<br />

CONDITION_VALUE is true (the condition is true).<br />

If the condition is false, this will disable the processing of ITEM.<br />

By default, all enditems are enabled for processing. Conditions can be defined to disable and<br />

re–enable the processing of given end–items.<br />

When the processing is enabled, ITEM will be authorised for calibration and monitoring. After ITEM<br />

has been enabled, it will be calibrated (if its acquisition has been started) and monitored (if its<br />

monitoring has been enabled) on reception of new values.<br />

Enabling the processing of ITEM does not perform an ”initial” calibration / monitoring of ITEM in the<br />

case where it has already a value.<br />

When the processing is disabled, ITEM will not be calibrated and not be monitored, even if its<br />

acquisition has been requested and if its monitoring is enabled.<br />

CONDITION_ITEM must be maintained locally otherwise an error is generated.<br />

When the condition is triggered, only those measurements and SW variables identified by ITEM that<br />

are maintained locally will be processed.<br />

It is not possible to set a condition where the ITEM to enable or disable is the CONDITION_ITEM. If<br />

ITEM is a group of enditems (i.e. monitoring list, ADU or incomplete pathname) containing<br />

CONDITION_ITEM, the condition will not apply for CONDITION_ITEM.<br />

It is not possible to enable or disable the processing of a SW variable that is linked to an HK data.<br />

ITEM : The item to be enabled, which can be<br />

– a single enditem of type MEASUREMENT or SW variable;<br />

– a incomplete pathname pointing to a virtual node, thus enabling all MEASUREMENTs or SW variables<br />

in that subtree;


Space Infrastructure<br />

– a monitor list, thus enabling all items in that list.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CONDITION_ITEM: The measurement or software variable carrying the condition<br />

Only enditems having value type INTEGER are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

408 von/of: 662<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or ITEM is a SW variable linked to an HK data.<br />

–– or CONDITION_CHECK is IN_RANGE (not supported)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

ENABLE_ON_INTEGER (\apm\dms\mmu_2, \apm\dms\mmu_number, EQUAL, 2, false, c_ref, stat);<br />

7.9.1.3.14.4 ENABLE_ON_FLOAT<br />

Specification<br />

procedure ENABLE_ON_FLOAT<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : FLOAT_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : REAL;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Enables processing on conditions for float values;<br />

Refer to analog description in ENABLE_ON_INTEGER<br />

ITEM : Refer to analog description in ENABLE_ON_INTEGER;<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only enditems having value type REAL are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

409 von/of: 662<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or ITEM is a SW variable linked to an HK data.<br />

–– or CONDITION_CHECK is IN_RANGE (not supported)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

ENABLE_ON_FLOAT (\apm\dms\fire, \apm\dms\smoke_sensor, GREATER, 100.0, false, c_ref, stat);<br />

7.9.1.3.14.5 ENABLE_ON_<strong>ST</strong>ATECODE<br />

Specification<br />

procedure ENABLE_ON_<strong>ST</strong>ATECODE<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : DISCRETE_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>ATECODE;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Enables processing on conditions for discrete values;<br />

Refer to analog description in ENABLE_ON_INTEGER<br />

ITEM : Refer to analog description in ENABLE_ON_INTEGER;<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only discrete enditems having value type <strong>ST</strong>ATECODE are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or ITEM is a SW variable linked to an HK data<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

410 von/of: 662<br />

Example<br />

ENABLE_ON_<strong>ST</strong>ATECODE (\apm\dms\mmu_2, \apm\dms\mmu2_state, EQUAL, ON, false, c_ref, stat);<br />

7.9.1.3.14.6 ENABLE_ON_BYTE_<strong>ST</strong>REAM<br />

Specification<br />

procedure ENABLE_ON_BYTE_<strong>ST</strong>REAM<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in CONDITION_ITEM : BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>RING;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Enables processing on conditions for bytestream (string) values;<br />

Refer to analog description in ENABLE_ON_INTEGER<br />

ITEM : Refer to analog description in ENABLE_ON_INTEGER;<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only enditems having raw value type BYTE_<strong>ST</strong>REAM are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or ITEM is a SW variable linked to an HK data<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

ENABLE_ON_BYTE_<strong>ST</strong>REAM (\apm\dms\activation, \apm\dms\ap_name, equal, ”activation”, true, c_ref,<br />

stat);


Space Infrastructure<br />

7.9.1.3.14.7 SET_PROCESSING<br />

Specification<br />

procedure SET_PROCESSING<br />

(in ITEM : ACQUISITION_COLLECTION;<br />

in SWITCH : ON_OFF;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Enables or disables processing for enditems, overriding any conditions defined.<br />

ITEM : Refer to analog description in ENABLE_ON_INTEGER;<br />

SWITCH : ON to enable the processing and OFF to disable the processing.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– INVALID_PARAMETER : ITEM is a SW variable linked to an HK data.<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

SET_PROCESSING (\apm\dms\mmu_2, OFF, stat);<br />

7.9.1.3.14.8 GET_PROCESSING<br />

Specification<br />

procedure GET_PROCESSING_<strong>ST</strong>ATE<br />

(in ITEM : MONITOR_ITEM_NAME;<br />

out <strong>ST</strong>ATE : ON_OFF;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Fetches the status of processing (enabled, disabled) for an enditem<br />

ITEM : A single measurement or software variable<br />

<strong>ST</strong>ATE : ON if enabled for processing and OFF if disabled for processing.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

GET_PROCESSING_<strong>ST</strong>ATE (\apm\dms\mmu_2, proc_state, stat);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

411 von/of: 662


Space Infrastructure<br />

7.9.1.3.14.9 SET_LIMIT_SET_ON_INTEGER<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure SET_LIMIT_SET_ON_INTEGER<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : INTEGER_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : INTEGER;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

412 von/of: 662<br />

Description / Parameters<br />

Sets the LIMIT_SET for ITEM (measurement or software variable) when the CONDITION_CHECK of<br />

the value of CONDITION_ITEM with CONDITION_VALUE is true (the condition is true).<br />

It will not perform an ”initial” monitoring of ITEM in the case where it has already a value. The<br />

monitoring will be performed on reception of the next value (in case the monitoring has been enabled).<br />

This can lead to a temporary ”inconsistent” output of the procedure GET_FULL_ENDITEM_MON-<br />

ITOR_<strong>ST</strong>ATUS (result of the monitoring with the old limit set with values of the new limit set might be<br />

inconsistent).<br />

ITEM and CONDITION_ITEM must be maintained locally on the same node otherwise an error is<br />

generated.It is not possible to set a condition where the ITEM identical to the CONDITION_ITEM.<br />

In case a set of items is addressed, the limit set is switched to LIMIT_SET only, if the limit set is defined.<br />

No error message is given for undefined sets.<br />

ITEM : A single measurement or software variable, a monitor list or a virtual path.<br />

LIMIT_SET : The limit set number to select.<br />

The LIMIT_SET must be defined for ITEM, otherwise an error is generated<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only enditems having value type INTEGER are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM or CONDITION_ITEM are not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or CONDITION_CHECK is IN_RANGE (not supported)<br />

–– INVALID_LIMIT_SET : the limit set is not defined for ITEM<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

SET_LIMIT_SET_ON_INTEGER (\apm\dms\mmu_status,5, \apm\dms\mmu, equal, 2, true, c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.10 SET_LIMIT_SET_ON_FLOAT<br />

Specification<br />

procedure SET_LIMIT_SET_ON_FLOAT<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : FLOAT_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : REAL;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Set a limit set on conditions for float values;<br />

Refer to analog description in SET_LIMIT_SET_ON_INTEGER<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

413 von/of: 662<br />

ITEM : A single measurement or software variable, a monitor list or a virtual path.<br />

In case a set of items is addressed, the limit set is switched to LIMIT_SET only<br />

if the limit set is defined. No error message is given for undefined sets.<br />

LIMIT_SET : The limit set number to select.<br />

The LIMIT_SET must be defined for ITEM<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only enditems having value type REAL are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM or CONDITION_ITEM are not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– or CONDITION_CHECK is IN_RANGE (not supported)<br />

–– INVALID_LIMIT_SET : the limit set is not defined for ITEM<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

SET_LIMIT_SET_ON_FLOAT (\apm\dms\temp,5, \apm\dms\temp, greater, 25.0, true, c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.11 SET_LIMIT_SET_ON_<strong>ST</strong>ATECODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure SET_LIMIT_SET_ON_<strong>ST</strong>ATECODE<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : DISCRETE_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>ATECODE;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Set a limit set on conditions for statecode values;<br />

Refer to analog description in SET_LIMIT_SET_ON_INTEGER<br />

ITEM : A single measurement or software variable, a monitor list or a virtual path.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

414 von/of: 662<br />

LIMIT_SET : The limit set number to select.<br />

The LIMIT_SET must be defined for ITEM<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only discrete enditems having value type <strong>ST</strong>ATECODE are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM or CONDITION_ITEM are not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– INVALID_LIMIT_SET : the limit set is not defined for ITEM<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

SET_LIMIT_SET_ON_<strong>ST</strong>ATECODE (\apm\dms\temp,5, \apm\dms\status, equal, ”heating”, true, c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.12 SET_LIMIT_SET_ON_BYTE<strong>ST</strong>REAM<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure SET_LIMIT_SET_ON_BYTE_<strong>ST</strong>REAM<br />

(in ITEM : MONITOR_COLLECTION;<br />

in LIMIT_SET : LIMIT_SET_NUMBER;<br />

in CONDITION_ITEM : BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>RING;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Set a limit set on conditions for byte stream values;<br />

Refer to analog description in SET_LIMIT_SET_ON_INTEGER<br />

ITEM : A single measurement or software variable, a monitor list or a virtual path.<br />

LIMIT_SET : The limit set number to select.<br />

The LIMIT_SET must be defined for ITEM<br />

CONDITION_ITEM: The measurement or software variable carrying the condition.<br />

Only enditems having raw value type BYTE_<strong>ST</strong>REAM<br />

(engineering value type <strong>ST</strong>RING) are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : ITEM or CONDITION_ITEM are not managed locally<br />

–– INVALID_PARAMETER : ITEM and CONDITION_ITEM are identical<br />

–– INVALID_LIMIT_SET : the limit set is not defined for ITEM<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

415 von/of: 662<br />

Example<br />

SET_LIMIT_SET_ON_BYTE_<strong>ST</strong>REAM (\apm\dms\temp,2, \apm\dms\ap_name, equal, ”deactiv”, true,<br />

c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.13 <strong>ST</strong>ART_AP_ON_INTEGER<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure <strong>ST</strong>ART_AP_ON_INTEGER<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : INTEGER_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : INTEGER;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

416 von/of: 662<br />

Description / Parameters<br />

Starts an automated procedure when the CONDITION_CHECK of the value of CONDITION_ITEM<br />

with CONDITION_VALUE is true (the condition is true).<br />

CONDITION_ITEM must be maintained locally on the node otherwise an error is generated.<br />

The AP to start must be an AP without parameters, otherwise an error message is generated when the<br />

condition is triggered.<br />

When the condition is triggered, if the AP is already running, it will not be started and an error message<br />

will be generated.<br />

AP : the name of the automated procedure to start. This must be an AP without parameter<br />

or where all parameters have default values.<br />

CONDITION_ITEM: The measurement or software variable carrying the condition<br />

Only enditems having value type INTEGER are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : CONDITION_CHECK is IN_RANGE (not supported)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

<strong>ST</strong>ART_AP_ON_INTEGER (\announce_mmu_2, \apm\dms\mmu_number, EQUAL, 2, true, c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.14 <strong>ST</strong>ART_AP_ON_FLOAT<br />

Specification<br />

procedure <strong>ST</strong>ART_AP_ON_INTEGER<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : FLOAT_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : CONDITION;<br />

in CONDITION_VALUE : REAL;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Starts an AP on conditions for float values;<br />

Refer to analog description in <strong>ST</strong>ART_AP_ON_INTEGER<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

417 von/of: 662<br />

AP : the name of the automated procedure to start. This must be an AP without parameter<br />

or where all parameters have default values.<br />

CONDITION_ITEM: The measurement or software variable carrying the condition<br />

Only enditems having value type REAL are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– INVALID_PARAMETER : CONDITION_CHECK is IN_RANGE (not supported)<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

<strong>ST</strong>ART_AP_ON_FLOAT (\switchoff_mmu2, \apm\dms\mmu_temp, GREATER, 35.0, false, c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.15 <strong>ST</strong>ART_AP_ON_<strong>ST</strong>ATECODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure <strong>ST</strong>ART_AP_ON_<strong>ST</strong>ATECODE<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : DISCRETE_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>ATECODE;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Starts an AP on conditions for statecode values;<br />

Refer to analog description in <strong>ST</strong>ART_AP_ON_INTEGER<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

418 von/of: 662<br />

AP : the name of the automated procedure to start. This must be an AP without parameter<br />

or where all parameters have default values.<br />

CONDITION_ITEM: The measurement or software variable carrying the condition<br />

Only enditems having value type <strong>ST</strong>ATECODE are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

<strong>ST</strong>ART_AP_ON_<strong>ST</strong>ATECODE (\switchoff_mmu2, \apm\dms\power_stat, EQUAL, ”LOW”, false, c_ref,<br />

stat);


Space Infrastructure<br />

7.9.1.3.14.16 <strong>ST</strong>ART_AP_ON_BYTE_<strong>ST</strong>REAM<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Specification<br />

procedure <strong>ST</strong>ART_AP_ON_BYTE_<strong>ST</strong>REAM<br />

(in AP : AP_NAME;<br />

in CONDITION_ITEM : BYTE_<strong>ST</strong>REAM_MONITOR_ITEM_NAME;<br />

in CONDITION_CHECK : DISCRETE_CONDITION;<br />

in CONDITION_VALUE : <strong>ST</strong>RING;<br />

in SINGLE_SHOT : BOOLEAN;<br />

out CONDITION_REF : INTEGER;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Starts an AP on conditions for byte stream values;<br />

Refer to analog description in <strong>ST</strong>ART_AP_ON_INTEGER<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

419 von/of: 662<br />

AP : the name of the automated procedure to start. This must be an AP without parameter<br />

or where all parameters have default values.<br />

CONDITION_ITEM: The measurement or software variable carrying the condition<br />

Only enditems having value type <strong>ST</strong>RING (raw type: BYTE_<strong>ST</strong>REAM)<br />

are allowed<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

SINGLE_SHOT : if true, the condition will be withdrawn after having been true.<br />

CONDITION_REF : returns an unique identifier for the condition<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

<strong>ST</strong>ART_AP_ON_BYTE_<strong>ST</strong>REAM (\switchoff_mmu2, \apm\dms\mmu_use, EQUAL, ”is not used”, false,<br />

c_ref, stat);


Space Infrastructure<br />

7.9.1.3.14.17 WITHDRAW_CONDITION<br />

Specification<br />

procedure WITHDRAW_CONDITION<br />

(in CONDITION_ITEM : MONITOR_ITEM_NAME;<br />

in CONDITION_REF : INTEGER := ALL_CONDITIONS;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Removes a condition or all conditions of a CONDITION_ITEM.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

420 von/of: 662<br />

CONDITION_ITEM: The measurement or software variable carrying the condition<br />

CONDITION_REF : The unique identifier for the condition. If ALL_CONDITIONS is given, all conditions<br />

defined for CONDITION_ITEM are removed.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally or<br />

–– CONDITION_REF does not identify an existing condition<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

WITHDRAW_CONDITION (\apm\dms\mmu_use, 125, stat);<br />

7.9.1.3.14.18 WITHDRAW_ALL_CONDITIONS<br />

Specification<br />

procedure WITHDRAW_ALL_CONDITIONS<br />

(out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Removes all conditions defined in the local test node.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

WITHDRAW_ALL_CONDITIONS (stat);<br />

7.9.1.3.14.19 NUMBER_OF_CONDITION_ITEMS<br />

Specification<br />

function NUMBER_OF_CONDITION_ITEMS : INTEGER;<br />

Description / Parameters<br />

Returns the number of items carrying conditions.<br />

Example<br />

NB_CONDITIONS := NUMBER_OF_CONDITION_ITEMS;


Space Infrastructure<br />

7.9.1.3.14.20 GET_CONDITION_ITEM<br />

Specification<br />

procedure GET_CONDITION_ITEM<br />

(in ITEM_NUMBER : INTEGER;<br />

out CONDITION_ITEM : MONITOR_ITEM_NAME;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

421 von/of: 662<br />

Description / Parameters<br />

Gets the name of the CONDITION_ITEM identified by an index.<br />

To get all the CONDITION_ITEM’s, this procedure has to be called with all numbers between 1 and<br />

the value of NUMBER_OF_CONDITION_ITEMS.<br />

ITEM_NUMBER : index of the CONDITION_ITEM<br />

CONDITION_ITEM : the measurement or software variable carrying the condition.<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_PARAMETER : There is no CONDITION_ITEM at the index ITEM_NUMBER<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

for ITEM_NUMBER := 1 to NUMBER_OF_CONDITION_ITEMS do<br />

GET_CONDITION_ITEM(ITEM_NUMBER, PATHNAME_ARRAY(ITEM_NUMBER),<strong>ST</strong>AT);<br />

end for;<br />

7.9.1.3.14.21 NUMBER_CONDITIONS<br />

Specification<br />

function NUMBER_CONDITIONS<br />

(in CONDITION_ITEM : MONITOR_ITEM_NAME): INTEGER;<br />

Description / Parameters<br />

Returns the number of conditions carried by a CONDITION_ITEM. if CONDITION_ITEM is not<br />

maintained locally, 0 is returned<br />

Example<br />

NB_CONDITIONS := NUMBER_CONDITIONS(\apm\dms\mmu_2_status);


Space Infrastructure<br />

7.9.1.3.14.22 GET_CONDITION<br />

Specification<br />

procedure GET_CONDITION<br />

(in CONDITION_ITEM : MONITOR_ITEM_NAME;<br />

in CONDITION_NUMBER : INTEGER;<br />

out CONDITION_REF : INTEGER;<br />

out CONDITION_CHECK : CONDITION;<br />

out CONDITION_VALUE : CONDITION_VAL;<br />

out SINGLE_SHOT : BOOLEAN;<br />

out <strong>ST</strong>ATE : CONDITION_<strong>ST</strong>ATE;<br />

out ACTION : ACTION_DESCRIPTION;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Provide the description of a condition.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CONDITION_ITEM : the name of the item carrying the condition.<br />

CONDITION_NUMBER : the index of the condition (between 1 and the value<br />

of GET_NUMBER_CONDITIONS).<br />

CONDITION_REF : the unique identifier of the condition.<br />

CONDITION_CHECK : the check to apply on CONDITION_ITEM.<br />

CONDITION_VALUE : the value to use in the check with CONDITION_ITEM.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

422 von/of: 662<br />

SINGLE_SHOT : indicates if the condition is to be removed after having been true.<br />

<strong>ST</strong>ATE : indicates the state of the condition. It can be<br />

– IS_TRUE : the condition is true, the associated action has been triggered<br />

– IS_FALSE : the condition is false, the associated action has been triggered (only for the enable/disable<br />

conditions)<br />

– IS_UNKNOWN : the condition has been set but has not yet been analysed (CONDITION_ITEM<br />

has not a valid value)<br />

ACTION : provide the description of the condition, i.e:<br />

– the sid of the item(s) for which the processing is to be enabled<br />

– the sid of the item for which a new limit set is to be set and the limit set number<br />

– the sid of an AP<br />

<strong>ST</strong>ATUS : the return status of the operation<br />

–– OK : operation successfull<br />

–– INVALID_TE<strong>ST</strong>NODE_MODE : the test node is not in executing mode<br />

–– INVALID_PARAMETER : There is no (more) condition at the index<br />

–– CONDITION_NUMBER (see above note).<br />

–– INVALID_ITEM_NAME : CONDITION_ITEM is not managed locally.<br />

–– RUNTIME_ERROR : an unexpected error occurred<br />

Example<br />

GET_CONDITION(\apm\dms\mmu_stat,2,c_ref,c_check,c_value,single,action,stat);


Space Infrastructure<br />

7.9.1.3.15 General Conversion Routines<br />

7.9.1.3.15.1 PATHNAME_TO_<strong>ST</strong>RING<br />

Specification<br />

procedure PATHNAME_TO_<strong>ST</strong>RING<br />

(in PATH : PATHNAME;<br />

out NAME: <strong>ST</strong>RING);<br />

Description / Parameters<br />

Convert the pathname type into a string type<br />

PATH : the pathname to be converted.<br />

NAME : the pathname returned as a string<br />

If PATH is not existing, an empty string is returned<br />

If NAME is too short to hold resulting string, the string is truncated<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Example<br />

VARIABLE NAME_<strong>ST</strong>RING : <strong>ST</strong>RING(255);<br />

VARIABLE <strong>ST</strong>ATUS: INTEGER;<br />

PATHNAME_TO_<strong>ST</strong>RING(\EURECA\EGSE\TE<strong>ST</strong>\LIBS\SAS_ITEM, NAME_<strong>ST</strong>RING);<br />

WRITE_MESSAGE_TO_APPLICATION (1234, NAME_<strong>ST</strong>RING, <strong>ST</strong>ATUS);<br />

7.9.1.3.15.2 PATH<br />

Specification<br />

function PATH(in NAME: <strong>ST</strong>RING) : PATHNAME;<br />

Description / Parameters<br />

Convert the string type into a pathname type<br />

NAME : the pathname as a string<br />

returns Null–Pathname in case the path is not existing<br />

Example<br />

VARIABLE NAME_<strong>ST</strong>RING : <strong>ST</strong>RING(255);<br />

VARIABLE SAS_PATH: PATHNAME;<br />

VARIABLE <strong>ST</strong>ATUS: INTEGER;<br />

READ_MESSAGE_FROM_APPLICATION (TRUE, 1234, NAME_<strong>ST</strong>RING, <strong>ST</strong>ATUS);<br />

SAS_PATH := PATH( NAME_<strong>ST</strong>RING);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

423 von/of: 662


Space Infrastructure<br />

7.9.1.3.15.3 <strong>ST</strong>ATE_CODE_TO_<strong>ST</strong>RING<br />

Specification<br />

procedure <strong>ST</strong>ATECODE_TO_<strong>ST</strong>RING (in CODE : <strong>ST</strong>ATECODE;<br />

out CODE_TEXT: <strong>ST</strong>RING);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Convert the statecode type into a string type<br />

CODE_TEXT should have a length of 8<br />

If CODE_TEXT is too short to hold resulting string, the string is truncated<br />

If CODE_TEXT is longer than the statecode, it is filled with blanks<br />

CODE : the statecode<br />

returns Null–Pathname in case the path is not existing<br />

CODE_TEXT : the statecode as a string (without ”$” as prefix)<br />

Example<br />

VARIABLE CODE_<strong>ST</strong>RING : <strong>ST</strong>RING(8);<br />

<strong>ST</strong>ATECODE_TO_<strong>ST</strong>RING( $OFF, CODE_<strong>ST</strong>RING);<br />

7.9.1.3.15.4 CODE<br />

Specification<br />

function CODE(in CODE_TEXT : <strong>ST</strong>RING) : <strong>ST</strong>ATECODE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

424 von/of: 662<br />

Description / Parameters<br />

Convert the string type into a statecode type<br />

If CODE_TEXT is longer than 8 characters, the string is truncated<br />

If CODE_TEXT is invalid in term of a <strong>ST</strong>ATECODE, the statecode returned is either an ”empty”<br />

startecode (i.e. has no characters) if the first character is invalid or a statecode corresponding to the<br />

CODE_TEXT truncated at the first illegal character.<br />

If CODE_TEXT is shorter than 8 characters, the <strong>ST</strong>ATECODE is extended by blanks<br />

CODE_TEXT : the statecode (without ”$”) as a string;<br />

Example<br />

VARIABLE S_CODE : <strong>ST</strong>ATECODE;<br />

S_CODE := CODE( ”OFF”);


Space Infrastructure<br />

7.9.2 UCL GROUND_TO_OB_LIB <strong>System</strong> Library<br />

This library contains commands sent to the COF DMS system.<br />

Library Id (Body_Id): 4<br />

7.9.2.1 Routines Summary<br />

DISABLE_SW_COMMAND<br />

ENABLE_SW_COMMAND<br />

EXECUTE_FLAP<br />

EXECWAIT_FLAP<br />

ISSUE_SW_COMMAND<br />

ROUTE_SWOP_TO_SAS<br />

SET_CCSDS_END_POINT<br />

SET_DEVICE_ADDRESS<br />

GET_CCSDS_PACKET_TYPE<br />

SET_CCSDS_PACKET_TYPE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

7.9.2.2 UCL GROUND_TO_OB_LIB <strong>System</strong> Library Specification<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

425 von/of: 662<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

––*******************************************<br />

–– GROUND_TO_OB_LIB <strong>System</strong> Library<br />

––*******************************************<br />

––AB<strong>ST</strong>RACT––<br />

–– Defines Procedures to send commands to the onboard system<br />

–– Must be compiled with body ID = 4<br />

––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– OBJECT NAME : GROUND_TO_OB_LIB <strong>System</strong> Library<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : UCLC<br />

–– LANGUAGE : UCL<br />

––CHANGE HI<strong>ST</strong>ORY<br />

–– PIRN 8101 1/A: provide max_data_length and received_data_length for<br />

–– issue_sw_command; new UCL_RETURN RESPONSE_TOO_SHORT<br />

–– (SPRs 7288. Cleanup of inconsistencies in return codes in<br />

–– ISSUE_SW_COMMAND, EXECUTE_FLAP and EXECWAIT_FLAP.<br />

–– new UCL_RETURN RESPONSE_TIMEOUT.<br />

–– add operations to set/get the packet type.<br />

–– change library name to GROUND_TO_OB_LIB (SPR–7826)<br />

–– PIRN 8011 1/A: provide operation ROUTE_SWOP_TO SAS to set the SAS for an<br />

–– SW Command or the response packet.<br />

–– PIRN 8011 1/–: provide operation to set the DEVICE_ADDRESS for an<br />

–– APPLICATION_ID identified by the source and destination.<br />

–– PIRN 7004 for <strong>CGS</strong> V4.1.0: Add ENABLE/DISABLE_SW_COMMAND<br />

–– Add Ground_Node parameter to


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

426 von/of: 662<br />

–– ISSUE_SW_COMMAND and EXEC..._FLAP<br />

–– Add new return stati<br />

–– Add onboard_execution node, onb_priority,<br />

–– time_tag<br />

–– PIRN 6012 for <strong>CGS</strong> V4.0.0: Add SET_CCSDS_END_POINT /<br />

–– update cmds<br />

––END HI<strong>ST</strong>ORY<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

library GROUND_TO_OB_LIB;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CON<strong>ST</strong>ANTS AND TYPES<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type END_POINT = PATHNAME (CCSDS_END_POINT);<br />

type FLAP_NAME = PATHNAME (UCL_AUTOMATED_PROCEDURE);<br />

type SW_COMMAND = PATHNAME (SWOP_COMMAND);<br />

type SW_COMMANDS_AND_RESPONSES = PATHNAME (SWOP_COMMAND,<br />

RESPONSE_PACKET,<br />

VIRTUAL);<br />

––<br />

–– Type and Constants defining priority<br />

––<br />

type PRIORITY = (LOW, HIGH);<br />

constant ONBOARD_LOW: INTEGER := 1;<br />

constant ONBOARD_HIGH: INTEGER := 2;<br />

constant DEFAULT_ONBOARD_PRIORITY: INTEGER := ONBOARD_LOW;<br />

type ONBOARD_PRIORITY = INTEGER (ONBOARD_LOW .. ONBOARD_HIGH);<br />

––<br />

–– Constants defining timeouts<br />

––<br />

constant DEFAULT_SW_COMMAND_TIMEOUT: DURATION := 10.0 [s];<br />

constant DEFAULT_FLAP_TIMEOUT: DURATION := 30.0 [s];<br />

––<br />

–– Type and Constants defining the status returned for UCL procedures<br />

––


Space Infrastructure<br />

type UCL_RETURN = INTEGER;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

constant OK: UCL_RETURN := 1;<br />

constant BUSY: UCL_RETURN := 2;<br />

constant INVALID_ITEM_NAME: UCL_RETURN := 9;<br />

constant INVALID_APPLICATION_ID: UCL_RETURN := 12;<br />

constant INVALID_NODE_NAME: UCL_RETURN := 13;<br />

constant ITEM_IS_DISABLED: UCL_RETURN := 18;<br />

constant MESSAGE_TOO_BIG: UCL_RETURN := 20;<br />

constant NO_ADU_SERVICE: UCL_RETURN := 21;<br />

constant APPLICATION_NACK: UCL_RETURN := 23;<br />

constant INVALID_APPLICATION_NAME: UCL_RETURN := 24;<br />

constant APPLICATION_NOT_READY: UCL_RETURN := 25;<br />

constant TIMEOUT: UCL_RETURN := 26;<br />

constant INVALID_ADU_TYPE: UCL_RETURN := 30;<br />

constant INVALID_TE<strong>ST</strong>NODE_MODE: UCL_RETURN := 31;<br />

constant ITEM_NOT_SAS_COMPATIBLE: UCL_RETURN := 32;<br />

constant NO_GDU_SERVICE: UCL_RETURN := 35;<br />

constant INVALID_TIME: UCL_RETURN := 37;<br />

constant OPERATION_ABORTED: UCL_RETURN := 39;<br />

constant PROTOCOL_ERROR: UCL_RETURN := 48;<br />

constant PARAMETER_ERROR: UCL_RETURN := 49;<br />

constant COMMUNICATION_ERROR: UCL_RETURN := 54;<br />

constant INVALID_NODE_TYPE: UCL_RETURN := 56;<br />

constant SW_COMMAND_NOT_FOUND: UCL_RETURN := 58;<br />

constant RESPONSE_TOO_SHORT: UCL_RETURN := 59;<br />

constant RESPONSE_TIMEOUT: UCL_RETURN := 60;<br />

constant RUNTIME_ERROR: UCL_RETURN := 100;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

427 von/of: 662<br />

––<br />

–– Types and Constants defining the status returned in the response<br />

packet<br />

––<br />

type FLAP_RETURN = INTEGER;<br />

type ONBOARD_RETURN = INTEGER;<br />

type FLAP_ID = INTEGER;<br />

constant ONB_RESULT_SUCCESS: ONBOARD_RETURN := 0;<br />

constant ONB_RESULT_SEQUENCE_COUNT_ANOMALY: ONBOARD_RETURN := 1;<br />

constant ONB_RESULT_NOT_AUTHORIZED: ONBOARD_RETURN := 2;<br />

constant ONB_RESULT_UNKNOWN_COMMAND: ONBOARD_RETURN := 3;<br />

constant ONB_RESULT_COMMAND_NOT_VALID: ONBOARD_RETURN := 4;<br />

constant ONB_RESULT_PARAMETERS_INCOMPLETE: ONBOARD_RETURN := 5;<br />

constant ONB_RESULT_PARAMETERS_NOT_VALID: ONBOARD_RETURN := 6;<br />

constant ONB_RESULT_SEQUENCE_COUNT_REPETITION: ONBOARD_RETURN := 7;<br />

constant ONB_RESULT_SEQUENCE_COUNT_MISMATCH: ONBOARD_RETURN := 8;<br />

constant ONB_RESULT_CHECKSUM_ERROR: ONBOARD_RETURN := 9;<br />

constant ONB_RESULT_TWO_<strong>ST</strong>AGE_BUF_FULL: ONBOARD_RETURN := 10;<br />

constant ONB_RESULT_TWO_<strong>ST</strong>AGE_SOURCE_MISMATCH: ONBOARD_RETURN := 11;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

428 von/of: 662<br />

constant ONB_RESULT_OTHER: ONBOARD_RETURN := 63;<br />

––<br />

–– Type for setting the device address linked to an application id<br />

––<br />

type DEVICE_ADDRESS = <strong>ST</strong>RING (20);<br />

––<br />

–– Type for setting the SAS name defined for SWOP and Response packets<br />

––<br />

type SAS_NAME = <strong>ST</strong>RING (20);<br />

constant NULL_SAS_NAME : SAS_NAME := ””;<br />

constant NO_DATA_LENGTH_LIMIT : INTEGER := 4081;<br />

–– maximum length of data field + 1;<br />

type DATA_LENGTH_RANGE = INTEGER (0 .. NO_DATA_LENGTH_LIMIT);<br />

––<br />

–– type for setting the packet type of a swop command<br />

––<br />

constant CCSDS_DEFAULT_PACKET : INTEGER := 0;<br />

constant CCSDS_MEMORY_DUMP_PACKET : INTEGER := 1;<br />

constant CCSDS_DATA_SEGMENT_PACKET : INTEGER := 2;<br />

constant CCSDS_ESSENTIAL_HK_PACKET : INTEGER := 3;<br />

constant CCSDS_SY<strong>ST</strong>EM_HK_PACKET : INTEGER := 4;<br />

constant CCSDS_PAYLOAD_HK_PACKET : INTEGER := 5;<br />

constant CCSDS_SCIENCE_PACKET : INTEGER := 6;<br />

constant CCSDS_SSMB_ANCILLIARY_PACKET : INTEGER := 7;<br />

constant CCSDS_ESSENTIAL_COMMAND_PACKET : INTEGER := 8;<br />

constant CCSDS_SY<strong>ST</strong>EM_COMMAND_PACKET : INTEGER := 9;<br />

constant CCSDS_PAYLOAD_COMMAND_PACKET : INTEGER := 10;<br />

constant CCSDS_MEMORY_LOAD_PACKET : INTEGER := 11;<br />

constant CCSDS_RESPONSE_PACKET : INTEGER := 12;<br />

constant CCSDS_REPORT_PACKET : INTEGER := 13;<br />

constant CCSDS_EXCEPTION_PACKET : INTEGER := 14;<br />

constant CCSDS_ACKNOWLEDGE_PACKET : INTEGER := 15;<br />

type CCSDS_PACKET_TYPE<br />

= INTEGER (CCSDS_DEFAULT_PACKET .. CCSDS_ACKNOWLEDGE_PACKET);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

429 von/of: 662<br />

–– Onboard Software Commanding / Flight Application Control<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure SET_CCSDS_END_POINT<br />

(in GROUND_NODE : END_POINT;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure ISSUE_SW_COMMAND<br />

(in SW_CMD : SW_COMMAND ();<br />

in ONBOARD_NODE : END_POINT;<br />

in GROUND_NODE : END_POINT := \\;<br />

in PRIO : PRIORITY := LOW;<br />

in TIMEOUT : DURATION :=<br />

default_sw_command_timeout;<br />

in MAX_DATA_LENGTH : DATA_LENGTH_RANGE :=<br />

NO_DATA_LENGTH_LIMIT;<br />

out RECEIVED_DATA_LENGTH : DATA_LENGTH_RANGE;<br />

out TRANSACTION_ID : INTEGER;<br />

out RESULT : ONBOARD_RETURN;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure ENABLE_SW_COMMAND<br />

(in SW_CMD : SW_COMMAND;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure DISABLE_SW_COMMAND<br />

(in SW_CMD : SW_COMMAND;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure EXECUTE_FLAP<br />

(in FLAP : FLAP_NAME ();<br />

in ONBOARD_RECEPTION_NODE : END_POINT;<br />

in ONBOARD_EXECUTION_NODE : END_POINT := \\;<br />

in GROUND_NODE : END_POINT := \\;<br />

in GROUND_PRIO : PRIORITY := LOW;<br />

in ONBOARD_PRIO : ONBOARD_PRIORITY :=<br />

default_onboard_priority;<br />

in TIME_TAG : TIME := ~:~;<br />

in TIMEOUT : DURATION :=<br />

default_flap_timeout;<br />

out TRANSACTION_ID : INTEGER;<br />

out RESULT : ONBOARD_RETURN;<br />

out ID : FLAP_ID;<br />

out FLAP_EXEC_<strong>ST</strong>ATUS : FLAP_RETURN;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure EXECWAIT_FLAP<br />

(in FLAP : FLAP_NAME ();<br />

in ONBOARD_RECEPTION_NODE : END_POINT;<br />

in ONBOARD_EXECUTION_NODE : END_POINT := \\;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

in GROUND_NODE : END_POINT := \\;<br />

in GROUND_PRIO : PRIORITY := LOW;<br />

in ONBOARD_PRIO : ONBOARD_PRIORITY :=<br />

default_onboard_priority;<br />

in TIME_TAG : TIME := ~:~;<br />

in TIMEOUT : DURATION :=<br />

default_flap_timeout;<br />

out TRANSACTION_ID : INTEGER;<br />

out RESULT : ONBOARD_RETURN;<br />

out ID : FLAP_ID;<br />

out FLAP_EXEC_<strong>ST</strong>ATUS : FLAP_RETURN;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure SET_DEVICE_ADDRESS<br />

(in SOURCE : END_POINT;<br />

in DE<strong>ST</strong>INATION : END_POINT;<br />

in ADDRESS : DEVICE_ADDRESS;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure ROUTE_SWOP_TO_SAS<br />

(in ITEM : SW_COMMANDS_AND_RESPONSES;<br />

in SAS : SAS_NAME;<br />

in OLD_SAS : SAS_NAME := NULL_SAS_NAME;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure GET_CCSDS_PACKET_TYPE<br />

(in SW_CMD : SW_COMMAND;<br />

out PACKET_TYPE : CCSDS_PACKET_TYPE;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

procedure SET_CCSDS_PACKET_TYPE<br />

(in SW_CMD : SW_COMMAND;<br />

in PACKET_TYPE : CCSDS_PACKET_TYPE;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

End GROUND_TO_OB_LIB;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

430 von/of: 662


Space Infrastructure<br />

7.9.2.3 <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

431 von/of: 662<br />

These procedures control the emission of CCSDS command packets (Protocol Data Units or PDUs)<br />

from ground (e.g. AP) to onboard application (SWOP). The structure and the format of these packets<br />

are predefined in the database.<br />

7.9.2.3.1 Test Node Initialization<br />

7.9.2.3.1.1 SET_CCSDS_END_POINT<br />

Specification<br />

procedure SET_CCSDS_END_POINT<br />

(in GROUND_NODE: END_POINT;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Sets up the CCSDS ground destination (End Point), which is simulated by the test node. From this end<br />

point, the addressing parameter for the CCSDS packets are derived when sending commands to<br />

onboard (e.g. sw–commands or FLAP execution requests) and receiving responses.<br />

GROUND_NODE: pathname of the CCSDS End Point which shall be simulated by the test node.<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

INVALID_NODE_NAME GROUND_NODE refers to an unknown item<br />

INVALID_TE<strong>ST</strong>NODE_MODE The test node is not in the right mode<br />

(NORMAL,SIMULATION)<br />

RUNTIME_ERROR Unexpected error


Space Infrastructure<br />

7.9.2.3.2 Software Commanding to Onboard<br />

7.9.2.3.2.1 ISSUE_SW_COMMAND<br />

Specification<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

432 von/of: 662<br />

Description / Parameters<br />

Builds a Telecommand – CCSDS Protocol Data Unit (PDU) – and initiates the uplink of the SWOP<br />

command. Onboard the command with the given input parameter will be executed.<br />

NOTE: When setting the time–out to zero, only a GDU with the SW command in a CCSDS packet will<br />

be sent to SAS using a time–out value defined in the TES_CONFIG_FILE (under $TES_HOME/config)<br />

for the acknowledge of the GDU. The configurable value is defined under the name SW_OR-<br />

DER.ISSUE_TIMEOUT_WHEN_NO_DELAY and has a predefined value of 5 sec (that can be configured<br />

by the user). No response will be acquired if the timeout is set to zero.<br />

SW_CMD : name of the SW–command to be executed onboard, followed by its list of actual<br />

parameters (if any)<br />

ONBOARD_NODE : Onboard node (CCSDS_End_Point) where the command is sent to.<br />

GROUND_NODE : Ground node which is simulated by <strong>CGS</strong> and where the response has to be<br />

returned to. If ”\\” is given, the value defined by SET_CCSDS_END_POINT<br />

is applicable.<br />

PRIO (optional) : indicates the priority at which the SW–Command is to be executed within the<br />

Ground <strong>System</strong>.<br />

TIMEOUT (optional) : the maximum time to wait for acknowledgement of this command<br />

(i.e. the time to wait until the onboard FLAP has finished)<br />

MAX_DATA_LENGTH (optional) : the maximum length in octets of the packet data field (without<br />

checksum and headers). The data is truncated whenever the parameters imply a longer data field.<br />

as follows: For INTEGER the MSB of the integer and for <strong>ST</strong>RING the maximum length will be written,<br />

string length is set accordingly to the truncated part. For other types, no data will be written.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

433 von/of: 662<br />

RECEIVED_DATA_LENGTH : the length in octets of the out parameter part of the resonse packet<br />

(without checksum, headers, transaction id , onboard result). In case the received response packet<br />

is shorter than requested by the set of out parameters the remaining out parameters shall be set to<br />

their type respective null value (ie. INTEGER –> 0, REAL –> 0.0, TIME –>~:~, PATHNAME –> \\,<br />

<strong>ST</strong>RING –> ””, <strong>ST</strong>ATECODE –> $OTHER). The <strong>ST</strong>ATUS will be set to RESPONSE_TOO_SHORT<br />

in this case. If a parameter cannot be filled completely then the parameter is also set to the null values<br />

as described above, except for INTEGER the remaining bytes are used as MSB of the integer and<br />

<strong>ST</strong>RING which are truncated, ie. length is set to truncated string length.<br />

TRANSACTION_ID: Returns the ID as received from the response packet:<br />

the primary header of the CCSDS uplink packet without the length field<br />

RESULT: Returns the status of the execution as received from onboard<br />

(returned in response packet)<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

BUSY The system (test node) is currently busy<br />

with another SW command, try again later if<br />

necessary<br />

INVALID_ITEM_NAME The name of the SW Command is unknown<br />

INVALID_NODE_NAME The ID in ONBOARD_NODE or GROUND_NODE<br />

is unknown<br />

INVALID_TE<strong>ST</strong>NODE_MODE The test node is not in the right mode<br />

(NORMAL, SIMULATION)<br />

ITEM_IS_DISABLED The SW command is disabled<br />

TIMEOUT There was no response from the SAS or<br />

from the onboard system (response packet)<br />

NO_GDU_SERVICE The SAS did not announce the GDU <strong>Service</strong><br />

NO_ADU_SERVICE The SAS did not announce the ADU <strong>Service</strong><br />

INVALID_APPLICATION_NAME The SAS is not known<br />

APPLICATION_NOT_READY The SAS is not connected<br />

APPLICATION_NACK There was a negative response from<br />

the SAS<br />

INVALID TIME The timetag given in the GDU header or<br />

CCSDS header was not correct<br />

PARAMETER_ERROR When processing the parameter list of the<br />

SW command an error occurred<br />

COMMUNICATION_ERROR There was a problem in the communication<br />

to the SAS<br />

RUNTIME_ERROR There was an error during the<br />

interpretation of the UCL Intermediate Code<br />

RESPONSE_TOO_SHORT Response packet data length was shorter<br />

than expected.<br />

MESSAGE_TOO_BIG Parameter list too big.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

434 von/of: 662<br />

OPERATION_ABORTED Aborted (eg. through ABORT_AP, <strong>ST</strong>OP_TES)<br />

INVALID_ADU_TYPE ADU of wrong type (e.g. not CCSDS packet)<br />

has been received as response<br />

PROTOCOL_ERROR Incorrect length of response packet or<br />

incorrect checksum in case when the checksum<br />

is checked, see configuration parameters<br />

TES.CHECK_CHECKSUM and<br />

TES.PROCESS_ON_INCORRECT_CHECKSUM<br />

Example Call<br />

ISSUE_SW_COMMAND (SW_CMD: \a\b\load_mon_tab (\x\mon_tab), ONBOARD_NODE: \apm\dms_1,<br />

GROUND_NODE: \apm\cc, TRANSACTION_ID: t_id,<br />

RESULT: onboard_status, <strong>ST</strong>ATUS:stat);


Space Infrastructure<br />

7.9.2.3.2.2 ENABLE_SW_COMMAND<br />

Description / Parameters<br />

Enables a SWOP Command for execution<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

435 von/of: 662<br />

Specification<br />

procedure ENABLE_SW_COMMAND<br />

(in SW_CMD: SW_COMMAND;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

SW_CMD : name of the SW–command to enabled.<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

This status is also returned if the item was<br />

already enabled<br />

INVALID_ITEM_NAME The name of the SW Command is unknown<br />

INVALID_TE<strong>ST</strong>NODE_MODE The test node is not in the right mode<br />

(NORMAL,SIMULATION)<br />

RUNTIME_ERROR Unexpected error<br />

Example Call<br />

ENABLE_SW_COMMAND (\a\b\load_mon_tab, <strong>ST</strong>ATUS:stat);


Space Infrastructure<br />

7.9.2.3.2.3 DISABLE_SW_COMMAND<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Description / Parameters<br />

Disables a SWOP Command for execution (i.e. ISSUE command will be rejected for it)<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

436 von/of: 662<br />

Specification<br />

procedure DISABLE_SW_COMMAND<br />

(in SW_CMD: SW_COMMAND;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

SW_CMD : name of the SW–command to enabled.<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful.<br />

This status is also returned if the item was<br />

already disabled<br />

INVALID_ITEM_NAME The name of the SW Command is unknown<br />

INVALID_TE<strong>ST</strong>NODE_MODE The test node is not in the right mode<br />

(NORMAL,SIMULATION)<br />

RUNTIME_ERROR Unexpected error<br />

Example Call<br />

DISABLE_SW_COMMAND (\a\b\load_mon_tab, <strong>ST</strong>ATUS:stat);


Space Infrastructure<br />

7.9.2.3.3 FLAP Execution<br />

7.9.2.3.3.1 EXECUTE_FLAP<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

437 von/of: 662<br />

Specification<br />

procedure EXECUTE_FLAP<br />

(in FLAP: FLAP_NAME ();<br />

in ONBOARD_RECEPTION_NODE: END_POINT;<br />

in ONBOARD_EXECUTION_NODE: END_POINT := \\;<br />

in GROUND_NODE: END_POINT := \\;<br />

in GROUND_PRIO: PRIORITY := LOW;<br />

in ONBOARD_PRIO: ONBOARD_PRIORITY := default_onboard_priority;<br />

in TIME_TAG: TIME := ~:~;<br />

in TIMEOUT: DURATION := default_flap_timeout;<br />

out TRANSACTION_ID: INTEGER;<br />

out RESULT: ONBOARD_RETURN;<br />

out ID: FLAP_ID;<br />

out FLAP_EXEC_<strong>ST</strong>ATUS: FLAP_RETURN;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Builds a Telecommand – CCSDS Protocol Data Unit (PDU) – and initiates the uplink of the command.<br />

Onboard the command instantiates and starts a flight application program (FLAP) .<br />

Waits for the response packet and returns the parameter (packet is returned after initiation of the<br />

FLAP)<br />

NOTE: When setting the time–out to zero, only a GDU with the SW command in a CCSDS packet will<br />

be sent to SAS using a time–out value defined in the TES_CONFIG_FILE (under $TES_HOME/config)<br />

for the acknowledge of the GDU. The configurable value is defined under the name SW_OR-<br />

DER.ISSUE_TIMEOUT_WHEN_NO_DELAY and has a predefined value of 5 sec (that can be configured<br />

by the user). No response will be acquired if the timeout is set to zero.<br />

FLAP : name of the FLAP to be started, followed by its list of actual parameters (if any)<br />

ONBOARD_RECEPTION_NODE : onboard node (CCSDS End Point) to which the command is<br />

to be sent to<br />

ONBOARD_EXECUTION_NODE : onboard node (CCSDS End Point) on which the FLAP shall<br />

be executed.<br />

GROUND_NODE (optional) : Ground node which is simulated by <strong>CGS</strong> and where the response<br />

has to be returned to. If ”\\” is given, the value defined by<br />

SET_CCSDS_END_POINT is applicable.<br />

GROUND_PRIO (optional) : indicates the priority at which the command is to be sent in the<br />

Ground <strong>System</strong><br />

ONBOARD_PRIO (optional) : indicates the priority at which the FLAP is to be executed in the<br />

onboard system<br />

TIME_TAG (optional) : indicates the time when to execute the FLAP.<br />

The default value (~:~) indicates immediate execution (timetag is set to 0<br />

in the uplink packet). The time value is processed by the onboard system


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

438 von/of: 662<br />

TIMEOUT (optional) : the maximum time to wait for acknowledgement of this command<br />

(i.e. the time until the response packet has been received).<br />

ID : returns a unique identifier of this instance of the FLAP; 0 if the FLAP could not be started.<br />

TRANSACTION_ID: Returns the ID as received from the response packet:<br />

the primary header of the CCSDS uplink packet without the length field<br />

RESULT: Returns the status of the execution as received from onboard<br />

(returned in response packet)<br />

FLAP_EXEC_<strong>ST</strong>ATUS: Returns the status of the execution as received from onboard UCL<br />

Interpreter (returned in response packet)<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

BUSY The system (test node) is currently busy<br />

with another SW command, try again later if<br />

necessary<br />

INVALID_ITEM_NAME The name of the FLAP is unknown<br />

INVALID_NODE_NAME The ID in ONBOARD_NODE or GROUND_NODE<br />

is unknown<br />

INVALID_TE<strong>ST</strong>NODE_MODE The test node is not in the right mode<br />

(NORMAL, SIMULATION)<br />

ITEM_IS_DISABLED The SW command defined for EXEC_FLAP<br />

is disabled<br />

TIMEOUT There was no response from the SAS or<br />

from the onboard system (response packet)<br />

NO_GDU_SERVICE The SAS did not announce the GDU <strong>Service</strong><br />

NO_ADU_SERVICE The SAS did not announce the ADU <strong>Service</strong><br />

INVALID_APPLICATION_NAME The SAS is not known<br />

APPLICATION_NOT_READY The SAS is not connected<br />

APPLICATION_NACK There was a negative response from<br />

the SAS<br />

INVALID TIME The timetag given in the GDU header or<br />

CCSDS header was not correct<br />

COMMUNICATION_ERROR There was a problem in the communication<br />

to the SAS<br />

SW_COMMAND_NOT_FOUND The SW Command, whose name/SID is defined<br />

in the Configuration File, is not found in<br />

the SW Command table, or it is even<br />

not defined in the Configuration File<br />

PARAMETER_ERROR When processing the parameter list of the<br />

FLAP command an error occurred<br />

RUNTIME_ERROR There was an error during the<br />

interpretation of the UCL Intermediate Code<br />

MESSAGE_TOO_BIG Parameters to be put into CCSDS packet


Space Infrastructure<br />

are too big<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

439 von/of: 662<br />

PROTOCOL_ERROR Incorrect length of response packet or<br />

incorrect checksum in case when the checksum<br />

is checked, see configuration parameters<br />

TES.CHECK_CHECKSUM and<br />

TES.PROCESS_ON_INCORRECT_CHECKSUM<br />

Example Call<br />

EXECUTE_FLAP (FLAP:\ecls\fan1\start_fan (slow),<br />

ONBOARD_RECEPTION_NODE: \apm\ node, ID: flap_id,<br />

TRANSACTION_ID: t_id, RESULT: onboard_status,<br />

FLAP_EXEC_<strong>ST</strong>ATUS: flap_stat, <strong>ST</strong>ATUS: stat);


Space Infrastructure<br />

7.9.2.3.3.2 EXECWAIT_FLAP<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

440 von/of: 662<br />

Specification<br />

procedure EXECWAIT_FLAP<br />

(in FLAP: FLAP_NAME ();<br />

in ONBOARD_RECEPTION_NODE: END_POINT;<br />

in ONBOARD_EXECUTION_NODE: END_POINT := \\;<br />

in GROUND_NODE: END_POINT := \\;<br />

in GROUND_PRIO: PRIORITY := LOW;<br />

in ONBOARD_PRIO: ONBOARD_PRIORITY := default_onboard_priority;<br />

in TIME_TAG: TIME := ~:~;<br />

in TIMEOUT: DURATION := default_flap_timeout;<br />

out TRANSACTION_ID: INTEGER;<br />

out RESULT: ONBOARD_RETURN;<br />

out ID: FLAP_ID;<br />

out FLAP_EXEC_<strong>ST</strong>ATUS: FLAP_RETURN;<br />

out <strong>ST</strong>ATUS: UCL_RETURN);<br />

Description / Parameters<br />

Builds a Telecommand – a GDU containing a CCSDS Protocol Data Unit– and initiates the uplink of the<br />

command. Onboard the command instantiates and starts a flight application program (FLAP) . Waits<br />

for the response packet and returns the parameter (packet is returned after completion of the FLAP).<br />

NOTE: When setting the time–out to zero, only a GDU with the SW command in a CCSDS packet will<br />

be sent to SAS using a time–out value defined in the TES_CONFIG_FILE (under $TES_HOME/config)<br />

for the acknowledge of the GDU. The configurable value is defined under the name SW_OR-<br />

DER.ISSUE_TIMEOUT_WHEN_NO_DELAY and has a predefined value of 5 sec (that can be configured<br />

by the user). No response will be acquired if the timeout is set to zero.<br />

FLAP : name of the FLAP to be started, optionally followed by its list of actual parameters.<br />

ONBOARD_RECEPTION_NODE : onboard node (CCSDS End Point) to which the command is<br />

to be sent to<br />

ONBOARD_EXECUTION_NODE : onboard node (CCSDS End Point) on which the FLAP shall<br />

be executed.<br />

GROUND_NODE (optional) : Ground node which is simulated by <strong>CGS</strong> and where the response<br />

has to be returned to. If ”\\” is given, the value defined by<br />

SET_CCSDS_END_POINT is applicable.<br />

GROUND_PRIO (optional) : indicates the priority at which the command is to be sent in the<br />

Ground <strong>System</strong><br />

ONBOARD_PRIO (optional) : indicates the priority at which the FLAP is to be executed in the<br />

onboard system<br />

TIME_TAG (optional) : indicates the time when to execute the FLAP. The default value (~:~)<br />

indicates immediate execution (timetag is set to 0 in the uplink packet).<br />

The time value is processed by the onboard system<br />

TIMEOUT (optional) : the maximum time to wait for acknowledgement of this command<br />

(i.e. the time to wait until the response packet has been received)


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

441 von/of: 662<br />

ID : returns a unique identifier of this instance of the FLAP; 0 if the FLAP could not be started.<br />

TRANSACTION_ID: Returns the ID as received from the response packet:<br />

the primary header of the CCSDS uplink packet without the length field<br />

RESULT: Returns the status of the execution as received from onboard<br />

(returned in response packet)<br />

FLAP_EXEC_<strong>ST</strong>ATUS:<br />

Returns the status of the execution as received from onboard UCL Interpreter<br />

(returned in response packet)<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

BUSY The system (test node) is currently busy<br />

with another SW command, try again later if<br />

necessary<br />

INVALID_ITEM_NAME The name of the FLAP is unknown<br />

INVALID_NODE_NAME The ID in ONBOARD_NODE or GROUND_NODE<br />

is unknown<br />

INVALID_TE<strong>ST</strong>NODE_MODE The test node is not in the right mode<br />

(NORMAL, SIMULATION)<br />

ITEM_IS_DISABLED The SW command defined for EXECWAIT_FLAP<br />

is disabled<br />

TIMEOUT There was no response from the SAS or<br />

from the onboard system (response packet)<br />

NO_GDU_SERVICE The SAS did not announce the GDU <strong>Service</strong><br />

NO_ADU_SERVICE The SAS did not announce the ADU <strong>Service</strong><br />

INVALID_APPLICATION_NAME The SAS is not known<br />

APPLICATION_NOT_READY The SAS is not connected<br />

APPLICATION_NACK There was a negative response from<br />

the SAS<br />

INVALID TIME The timetag given in the GDU header or<br />

CCSDS header was not correct<br />

COMMUNICATION_ERROR There was a problem in the communication<br />

to the SAS<br />

SW_COMMAND_NOT_FOUND The SW Command, whose name/SID is defined<br />

in the Configuration File, is not found in<br />

the SW Command table, or it is even<br />

not defined in the Configuration File<br />

PARAMETER_ERROR When processing the parameter list of the<br />

FLAP command an error occurred<br />

RUNTIME_ERROR There was an error during the<br />

interpretation of the UCL Intermediate Code<br />

MESSAGE_TOO_BIG Parameters to be put into CCSDS packet<br />

are too big


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

442 von/of: 662<br />

PROTOCOL_ERROR Incorrect length of response packet or<br />

incorrect checksum in case when the checksum<br />

is checked, see configuration parameters<br />

TES.CHECK_CHECKSUM and<br />

TES.PROCESS_ON_INCORRECT_CHECKSUM<br />

Example Call<br />

EXECWAIT_FLAP (FLAP:\ecls\fan1\start_fan (slow),<br />

ONBOARD_RECEPTION_NODE:\apm\ node, GROUND_PRIO:low,<br />

TRANSACTION_ID: t_id, RESULT: onboard_status, ID:flap_id,<br />

FLAP_EXEC_<strong>ST</strong>ATUS: flap_return, <strong>ST</strong>ATUS:stat);


Space Infrastructure<br />

7.9.2.3.3.3 SET_DEVICE_ADDRESS<br />

Specification<br />

procedure SET_DEVICE_ADDRESS<br />

(in SOURCE : END_POINT;<br />

in DE<strong>ST</strong>INATION : END_POINT;<br />

in ADDRESS : DEVICE_ADDRESS;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

443 von/of: 662<br />

Description / Parameters<br />

Set a new device address for the application id identified by the source node and the destination node.<br />

This device address will then be set in the physical address of the SWOP commands and response<br />

packets that are generated with that application id.<br />

SOURCE : name of the source end point for identifying the application id.<br />

DE<strong>ST</strong>INATION : name of the destination end point for identifying the application id.<br />

ADDRESS : string (up to 20 characters) to be set in the device_address field of the physical_address.<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

INVALID_NODE_NAME There is no application id defined for<br />

the end point pair (SOURCE, DE<strong>ST</strong>INATION)<br />

RUNTIME_ERROR There was an error during the<br />

interpretation of the UCL Intermediate Code<br />

Example Call<br />

SET_DEVICE_ADDRESS (SOURCE: \apm\node,<br />

DE<strong>ST</strong>INATION: \ground\node,<br />

ADDRESS: ”CC_BUS1”,<br />

<strong>ST</strong>ATUS: stat);


Space Infrastructure<br />

7.9.2.3.3.4 ROUTE_SWOP_TO_SAS<br />

Specification<br />

procedure ROUTE_SWOP_TO_SAS<br />

(in ITEM: SW_COMMANDS_AND_RESPONSES;<br />

in SAS: SAS_NAME;<br />

in OLD_SAS: SAS_NAME<br />

:= NULL_SAS_NAME;<br />

out <strong>ST</strong>ATUS: UCL_RETURN)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

444 von/of: 662<br />

Description / Parameters<br />

Routes all items specified in ITEM which have the OLD_SAS_NAME assigned, to the new SAS<br />

specified by SAS_NAME.<br />

ITEM : The item to be re–defined in the local memory of the test node. ITEM can be<br />

– a single enditem of type SWOP_COMMAND or RESPONSE_PACKET<br />

– an incomplete pathname pointing to a virtual node, thus redefining all SWOP_COMMAND<br />

or RESPONSE_PACKET in that subtree;<br />

SAS: The short name (20 character) of the SAS (Specific Application Software) to be assigned<br />

to the ITEM. The SAS must run on the local test node .<br />

OLD_SAS: The short name (20 character) of the SAS currently specified for item.<br />

Only those items are taken into account for the route change, which match this SAS name. If OLD_SAS<br />

is equal to NULL_SAS_NAME, all enditems specified in ITEM are changed, regardless of their current<br />

SAS name.<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

INVALID_ITEM_NAME End Item is unknown<br />

INVALID_APPLICATION_NAME A single item is provided with the<br />

OLD_SAS_NAME specified but this does not<br />

match the actual SAS name<br />

RUNTIME_ERROR There was an error during the<br />

interpretation of the UCL Intermediate Code<br />

Example Call<br />

ROUTE_SWOP_TO_SAS (\apm\cc_bus1\swops, ”CC_BUS_2_SAS”, ”CC_BUS_1_SAS”, stat);


Space Infrastructure<br />

7.9.2.3.3.5 GET_CCSDS_PACKET_TYPE<br />

Specification<br />

procedure GET_CCSDS_PACKET_TYPE<br />

(in SW_CMD : SW_COMMAND;<br />

out PACKET_TYPE : CCSDS_PACKET_TYPE;<br />

out <strong>ST</strong>ATUS : UCL_RETURN)<br />

Description / Parameters<br />

Gets the CCSDS packet type of a SW command.<br />

SW_CMD : name of the SW–command<br />

PACKET_TYPE: type of the CCSDS packet<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

INVALID_ITEM_NAME SWOP command is unknown<br />

RUNTIME_ERROR There was an error during the<br />

Example Call<br />

GET_CCSDS_PACKET_TYPE (\a\b\load_mon_tab, packet_type,stat);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

445 von/of: 662<br />

interpretation of the UCL Intermediate Code


Space Infrastructure<br />

7.9.2.3.3.6 SET_CCSDS_PACKET_TYPE<br />

Specification<br />

procedure SET_CCSDS_PACKET_TYPE<br />

(in SW_CMD : SW_COMMAND;<br />

in PACKET_TYPE : CCSDS_PACKET_TYPE;<br />

out <strong>ST</strong>ATUS : UCL_RETURN);<br />

Description / Parameters<br />

Sets the CCSDS packet type of a SW command.<br />

SW_CMD : name of the SW–command<br />

PACKET_TYPE: type of the packet<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

<strong>ST</strong>ATUS : returns an integer, the UCL return status (see definition under CON<strong>ST</strong>ANTS).<br />

Possible Return Codes:<br />

OK The procedure was successful<br />

INVALID_ITEM_NAME SWOP command is unknown<br />

RUNTIME_ERROR There was an error during the<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

446 von/of: 662<br />

interpretation of the UCL Intermediate Code<br />

Example Call<br />

SET_CCSDS_PACKET_TYPE (\a\b\load_mon_tab, CCSDS_Memory_Load_Packet, stat);


Space Infrastructure<br />

7.9.3 TCL <strong>System</strong> Library<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

The TCL <strong>System</strong> Library defines commands to control the equipment within SVF.<br />

Library Id (Body_Id): 3<br />

The library is defined according to COL–RIBRE–TN–1169, Issue 1/E,.<br />

7.9.3.1 Routines Summary<br />

ASSIGN<br />

DISPLAY_OFF_1553<br />

DISPLAY_OFF_1553_SIGNAL<br />

DISPLAY_ON_1553<br />

DISPLAY_ON_1553_SIGNAL<br />

HOLD_CURRENT<br />

HOLD_SPECIFIED<br />

HRDL_LOG_ON<br />

HRDL_LOG_OFF<br />

INIT_TCL<br />

IOSU_LOG_ON<br />

IOSU_LOG_ON_CARD<br />

IOSU_LOG_ON_SIGNAL<br />

IOSU_LOG_OFF<br />

IOSU_LOG_OFF_CARD<br />

IOSU_LOG_OFF_SIGNAL<br />

IOSU_DISPLAY_ON<br />

IOSU_DISPLAY_ON_CARD<br />

IOSU_DISPLAY_ON_SIGNAL<br />

IOSU_DISPLAY_OFF<br />

IOSU_DISPLAY_OFF_CARD<br />

IOSU_DISPLAY_OFF_SIGNAL<br />

LOG_OFF<br />

LOG_OFF_1553<br />

LOG_OFF_1553_SIGNAL<br />

LOG_ON<br />

LOG_ON_1553<br />

LOG_ON_1553_SIGNAL<br />

RELEASE<br />

SERIEL_LOG_ON<br />

SERIEL_LOG_OFF<br />

SERIEL_DISPLAY_ON<br />

SERIEL_DISPLAY_OFF<br />

<strong>ST</strong>ART<br />

<strong>ST</strong>OP<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

447 von/of: 662


Space Infrastructure<br />

7.9.3.2 TCL_LIBRARY Specification<br />

library TCL_LIBRARY;<br />

–– TYPES<br />

type T_APPLICATION_ID = INTEGER;<br />

type T_TCL_RETURN = (OK,<br />

INITIALISATION_PROBLEM,<br />

INVALID_PARAMETER,<br />

INVALID_PATHNAME,<br />

SAS_COMMUNICATION_ERROR,<br />

SAS_ID_NOT_INITIALISED,<br />

WRONG_TES_MODE);<br />

type T_RECEIVE_TRANSMIT_1553 = INTEGER(–1..2);<br />

type T_RECEIVE_TRANSMIT_485 = INTEGER(0..2);<br />

type T_RT_ADDRESS = INTEGER(0..32);<br />

type T_SUBADDRESS = INTEGER(–1..32);<br />

type T_MODE_CODE = INTEGER(–1..32);<br />

type T_SLOT = INTEGER(–0..16);<br />

type T_CHANNEL = INTEGER(0..32);<br />

type T_APID = INTEGER(0..2047);<br />

–– Initialize TCL <strong>System</strong> library<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

448 von/of: 662<br />

procedure INIT_TCL (in TCL_SAS_ID: T_APPLICATION_ID;<br />

out <strong>ST</strong>ATUS:T_TCL_RETURN);<br />

–– This procedure initialises the TCL system library. It delivers the Application Id of the TCL SAS, which is the destination<br />

–– for the TCL commands after they have been processed by the TCL system library.<br />

–– This command is processed by the TCL system library only. Nothing is sent to the TCL SAS upon this command.<br />

–– This command is issued only once at the beginning, before any other TCL command is issued. The given TCL_SAS_ID<br />

–– shall then be used for all subsequent TCL commands.<br />

–– Possible return states:<br />

–– OK<br />

–– INITIALISATION_PROBLEM<br />

–– Drive control comands<br />

procedure <strong>ST</strong>ART (in DRIVE: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure activates a simulation signal.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS.<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,


Space Infrastructure<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure <strong>ST</strong>OP (in DRIVE: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure deactivates a simulation signal.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure ASSIGN (in DRIVE: PATHNAME;<br />

in VALUE: REAL;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure sets a simulation signal to a specified value for one simulation frame.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o format the real value into the format ”[+/–]#.#######[E[+/–]##]” as a string<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PARAMETER<br />

procedure HOLD_CURRENT (in DRIVE: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure holds the a simulation signal to the current value until it is released again.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– WRONG_TES_MODE<br />

procedure HOLD_SPECIFIED (in DRIVE: PATHNAME;<br />

in VALUE: REAL;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure holds a simulation signal to the given value until it is released.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o format the real value into the format ”[+/–]#.#######[E[+/–]##]” as a string<br />

–– o forward the command to the TCL SAS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

449 von/of: 662


Space Infrastructure<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PARAMETER<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure RELEASE (in DRIVE: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure releases a preveiously held simulation signal.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

–– Simulation data collection commands<br />

procedure LOG_ON (in ADU_SIM_LOG: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure starts the sim data collection for a specified logging session and logging frequency.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure LOG_OFF (in ADU_SIM_LOG: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure stops the sim data collection for a specified logging session.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

–– BUS_1553 bus log and display data collection commands<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

450 von/of: 662<br />

procedure LOG_ON_1553 (in BUS_1553: PATHNAME;<br />

in RT_ADDRESS: T_RT_ADDRESS;<br />

in SUB_ADDRESS: T_SUBADDRESS;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

451 von/of: 662<br />

in RT_TX_A: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

in MODE: T_MODE_CODE;<br />

in RT_TX_B: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given 1553 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure LOG_ON_1553_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given 1553 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure LOG_OFF_1553 (in BUS_1553: PATHNAME;<br />

in RT_ADDRESS: T_RT_ADDRESS;<br />

in SUB_ADDRESS: T_SUBADDRESS;<br />

in RT_TX_A: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

in MODE: T_MODE_CODE;<br />

in RT_TX_B: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given 1553 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure LOG_OFF_1553_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given 1553 bus item.


Space Infrastructure<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

452 von/of: 662<br />

procedure DISPLAY_ON_1553 (in BUS_1553_BUS: PATHNAME;<br />

in RT_ADDRESS: T_RT_ADDRESS;<br />

in SUB_ADDRESS: T_SUBADDRESS;<br />

in RT_TX_A: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

in MODE: T_MODE_CODE;<br />

in RT_TX_B: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection on for a given 1553 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure DISPLAY_ON_1553_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection on for a given 1553 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– INVALID_PATHNAME<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure DISPLAY_OFF_1553 (in BUS_1553_BUS: PATHNAME;<br />

in RT_ADDRESS: T_RT_ADDRESS;<br />

in SUB_ADDRESS: T_SUBADDRESS;<br />

in RT_TX_A: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

in MODE: T_MODE_CODE;<br />

in RT_TX_B: T_RECEIVE_TRANS-<br />

MIT_1553;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection off for a given 1553 bus item.


Space Infrastructure<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

453 von/of: 662<br />

procedure DISPLAY_OFF_1553_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection off for a given 1553 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

–– SCSI bus log and display commands<br />

procedure IOSU_LOG_ON (in MDM: PATHNAME;<br />

in SLOT: T_SLOT;<br />

in CHANNEL: T_CHANNEL;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_SLOT_NUMBER,<br />

–– INVALID_CHANNEL_NUMBER,<br />

–– WRONG_TES_MODE<br />

procedure IOSU_LOG_ON_CARD (in IO_CARD: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,


Space Infrastructure<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure IOSU_LOG_ON_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

454 von/of: 662<br />

procedure IOSU_LOG_OFF (in MDM: PATHNAME;<br />

in SLOT: T_SLOT;<br />

in CHANNEL: T_CHANNEL;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure IOSU_LOG_OFF_CARD (in IO_CARD: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– INVALID_PATHNAME<br />

–– WRONG_TES_MODE<br />

procedure IOSU_LOG_OFF_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,


Space Infrastructure<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

455 von/of: 662<br />

procedure IOSU_DISPLAY_ON (in MDM: PATHNAME;<br />

in SLOT: T_SLOT;<br />

in CHANNEL: T_CHANNEL;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection on for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure IOSU_DISPLAY_ON_CARD (in IO_CARD: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection on for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– WRONG_TES_MODE<br />

procedure IOSU_DISPLAY_ON_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection on for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– WRONG_TES_MODE<br />

procedure IOSU_DISPLAY_OFF (in MDM: PATHNAME;<br />

in SLOT: T_SLOT;<br />

in CHANNEL: T_CHANNEL;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection off for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME


Space Infrastructure<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

456 von/of: 662<br />

procedure IOSU_DISPLAY_OFF_CARD (in IO_CARD: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection off for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure IOSU_DISPLAY_OFF_SIGNAL (in FLIGHT_SIGNAL: PATHNAME;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection off for a given SCSI bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

–– HRDL bus log and display data collection commands<br />

procedure HRDL_LOG_ON (in MDM: PATHNAME;<br />

in APID_A: T_APID;<br />

in APID_B: T_APID;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given HRDL bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure HRDL_LOG_OFF (in MDM: PATHNAME;<br />

in APID_A: T_APID;<br />

in APID_B: T_APID;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given HRDL bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID


Space Infrastructure<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

–– RS485 bus log and display commands<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

457 von/of: 662<br />

procedure SERIAL_LOG_ON (in BUS_485: PATHNAME;<br />

in RT_TX: T_RECEIVE_TRANSMIT_485;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging on for a given RS485 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure SERIAL_LOG_OFF (in BUS_485: PATHNAME;<br />

in RT_TX: T_RECEIVE_TRANSMIT_485;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the logging off for a given RS485 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– WRONG_TES_MODE<br />

procedure SERIAL_DISPLAY_ON (in BUS_485: PATHNAME;<br />

in RT_TX: T_RECEIVE_TRANSMIT_485;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);<br />

–– This procedure turns the display data collection on for a given RS485 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

procedure SERIAL_DISPLAY_OFF (in BUS_485: PATHNAME;<br />

in RT_TX: T_RECEIVE_TRANSMIT_485;<br />

out <strong>ST</strong>ATUS: T_TCL_RETURN);


Space Infrastructure<br />

–– This procedure turns the display data collection off for a given RS485 bus item.<br />

–– Functions of the TCL system library here:<br />

–– o translate the PATHNAME of the specified parameter in its SID<br />

–– o forward the command to the TCL SAS<br />

–– Possible return states:<br />

–– OK<br />

–– INVALID_PATHNAME<br />

–– SAS_ID_NOT_INITIALISED,<br />

–– SAS_COMMUNICATION_ERROR,<br />

–– WRONG_TES_MODE<br />

end TCL_LIBRARY;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

458 von/of: 662


Space Infrastructure<br />

7.9.3.3 TCL ASCII Format Specification<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

The following format shall be sent by the TCL system library.<br />

In general the Operation Token (= command word) is to be given in upper case, the parameters<br />

are given in lower case/numbers.<br />

The format described in the Legend is the max. possible number of digits.<br />

No leading or tailoring zeroes are required, because there are delimiters between the parameters.<br />

Legend:<br />

iiiiii SID 32bit integer in ASCII (hexadecimal presentation)<br />

nnnnnn float value format ”[+/–]#.#######[E[+/–]##]” in ASCII<br />

rrrrrr remote terminal number Integer range 0..32 in ASCII (decimal)<br />

aaaaaa subaddress number Integer range –1..32 in ASCII (decimal)<br />

dddddd mode code Integer range –1..32 in ASCII (decimal)<br />

tttttt slot number Integer range 0..16 in ASCII (decimal)<br />

cccccc channel number Integer range 0..32 in ASCII (decimal)<br />

pppppp APID Integer range 0..2047 in ASCII (decimal)<br />

xx Rec–Transmit code 1553 Integer range –1..2 in ASCII (decimal)<br />

xx Rec–Transmit code 485 Integer range 0..2 in ASCII (decimal)<br />

^ mandatory blank character ’ ’<br />

Procedure Name ASCII format Example<br />

INIT_TCL N/A<br />

<strong>ST</strong>ART <strong>ST</strong>ART^iiiiii <strong>ST</strong>ART^123FFF<br />

<strong>ST</strong>OP <strong>ST</strong>OP^iiiiii <strong>ST</strong>OP^12FF<br />

ASSIGN :=^iiiiii,^nnnnnn :=^3456,^1.126E–02<br />

HOLD_CURRENT HOLD^iiiiii HOLD^123456<br />

HOLD_SPECIFIED HOLD^iiiiii,^nnnnnn HOLD^1234FF,^1.12<br />

RELEASE RELEASE^iiiiii RELEASE^123456<br />

LOG_ON SES_ON^iiiiii SES_ON^123456<br />

LOG_OFF SES_OFF^iiiiii SES_OFF^123456<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

459 von/of: 662<br />

LOG_ON_1553 LB_ON^iiiiii:rrrrrr:aaaaaa:xx:dddddd:xx LB_ON^1234FF:15:21:–<br />

1:32:0<br />

LOG_ON_1553_SIGNAL LB_ON^iiiiii LB_ON^1234FF<br />

LOG_OFF_1553 LB_OFF^iiiiii:rrrrrr:aaaaaa:xx:dddddd:xx LB_OFF^1234FF:15:21:–1:32:0


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

LOG_OFF_1553_SIGNAL LB_OFF^iiiiii LB_OFF^1234FF<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

460 von/of: 662<br />

DISPLAY_ON_1553 LB_DSP_ON^iiiiii:rrrrrr:aaaaaa:xx:dddddd:xx LB_DSP_ON^1234FF:15:21:–1:32:0<br />

DISPLAY_ON_1553_SIGNAL LB_DSP_ON^iiiiii LB_DSP_ON^1234FF<br />

DISPLAY_OFF_1553 LB_DSP_OFF^iiiiii:rrrrrr:aaaaaa:xx:dddddd:xx LB_DSP_OFF^1234FF:15:21:–1:32:0<br />

DISPLAY_OFF_1553_SIGNAL LB_DSP_OFF^iiiiii LB_DSP_OFF^1234FF<br />

IOSU_LOG_ON SC_ON^iiiiii:tttttt:cccccc SC_ON^1234FF:11:29<br />

IOSU_LOG_ON_CARD SC_ON^iiiiii SC_ON^1234FF<br />

IOSU_LOG_ON_SIGNAL SC_ON^iiiiii SC_ON^1234FF<br />

IOSU_LOG_OFF SC_OFF^iiiiii:tttttt:cccccc SC_OFF^1234FF:11:29<br />

IOSU_LOG_OFF_CARD SC_OFF^iiiiii SC_OFF^1234FF<br />

IOSU_LOG_OFF_SIGNAL SC_OFF^iiiiii SC_OFF^1234FF<br />

IOSU_DISPLAY_ON SC_DSP_ON^iiiiii:tttttt:cccccc SC_DSP_ON^1234FF:11:29<br />

IOSU_DISPLAY_ON_CARD SC_DSP_ON^iiiiii SC_DSP_ON^1234FF<br />

IOSU_DISPLAY_ON_SIGNAL SC_DSP_ON^iiiiii SC_DSP_ON^1234FF<br />

IOSU_DISPLAY_OFF SC_DSP_OFF^iiiiii:tttttt:cccccc SC_DSP_OFF^1234FF:11:29<br />

IOSU_DISPLAY_OFF_CARD SC_DSP_OFF^iiiiii SC_DSP_OFF^1234FF<br />

IOSU_DISPLAY_OFF_SIGNAL SC_DSP_OFF^iiiiii SC_DSP_OFF^1234FF<br />

HRDL_LOG_ON HRDL_ON^iiiiii:pppppp,^pppppp HRDL_ON^1234FF:11,^2047<br />

HRDL_LOG_OFF HRDL_OFF^iiiiii:pppppp,^pppppp HRDL_OFF^1234FF:11,^2047<br />

SERIAL_LOG_ON SRL_ON^iiiiii,^xx SRL_ON^1234FF,^1<br />

SERIAL_LOG_OFF SRL_OFF^iiiiii,^xx SRL_OFF^1234FF,^1<br />

SERIAL_DISPLAY_ON SRL_DSP_ON^iiiiii,^xx SRL_DSP_ON^1234FF,^1<br />

SERIAL_DISPLAY_OFF SRL_DSP_OFF^iiiiii,^xx SRL_DSP_OFF^1234FF,^1


Space Infrastructure<br />

7.10 Onboard Commands and Responses<br />

7.10.1 Software Commands (SWOP_Command)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Software Commands (SWOP_Commands) are sent as CCSDS command packets.<br />

7.10.1.1 CCSDS Header for Software Commands<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

461 von/of: 662<br />

The CCSDS packet structure is defined in applicable document TBD (SSP42001) sections 3.6.2.2.2.2<br />

and 3.6.3.2.1.1).<br />

Primary Header:<br />

CP–PDU Version: : ’000’ B<br />

CP–PDU Type : Most Significant Bit of APID<br />

Remark: ’0’ B for <strong>System</strong> Commands,<br />

’1’ B for Payload Commands<br />

CP–PDU Secondary Header Flag : ’1’ B<br />

CP–PDU Application ID : Least significant Bits of APID as defined for Ground<br />

CCSDS End Point to Onboard CCSDS End Point<br />

CP–PDU Sequence Flags: : ’11’B<br />

CP–PDU Sequence Count : 0 – 16383<br />

CP–PDU Packet Length: : Packet Length (Number of Octets) – 7<br />

i.e. packet length excluding primary header – 1<br />

Secondary Header:<br />

Time : CCSDS unsegmented time code<br />

All 0 if Time Id = ’00’ B<br />

Time Id : ’00’B (Time field not used) or<br />

’01’B (Time of packet generation)<br />

Checksum Indicator : ’1’B (Checksum Present)<br />

Packet Type: : ’1001’B <strong>System</strong> Command or<br />

’1000’B Essential Command or<br />

’1010’B Payload Command<br />

Packet ID: : SID of SWOP_Command


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

462 von/of: 662<br />

7.10.1.2 CCSDS Data Field for Software Commands<br />

All actual ’IN’ parameters have be encoded into the data field in the same sequence as defined by<br />

formal specification of the software command.<br />

The following transfer syntax rules have to be regarded:<br />

– Most significant bit first, least significant bit last<br />

– most significant byte first, least significant byte last<br />

– Values of parameters shall be encoded according to the follwing mapping:<br />

INTEGER 4 Bytes, MSB of most significant Byte is sign bit<br />

REAL IEEE 754 format single precision<br />

TIME CCSDS unsegmented time code (5 byte) to be<br />

followed by byte with value 0.<br />

String_Type 2 bytes for length followed by number of<br />

bytes (characters) as defined by length. For odd<br />

length byte with value 0 has to follow without<br />

changing the length of the string.<br />

Statecode_Type 8 bytes containing the statecode literal (ASCII)<br />

Pathname_Type 4 bytes containing the SID of the actual enditem<br />

For ’OUT’ parameters the same rules apply (see next section 7.10.1.3).<br />

7.10.1.3 Response Packet<br />

After the onboard execution of the command , exactly one response packet is returned.<br />

The structure for response packet can be copied from higher level <strong>ICD</strong>s (SSMB to APM).<br />

7.10.1.3.1 CCSDS Header<br />

Primary Header:<br />

CP–PDU Version: : ’000’ B<br />

CP–PDU Type : Most Significant Bit of APID<br />

Remark: ’0’ B for <strong>System</strong> Command Responses,<br />

’1’ B for Payload CommandResponses<br />

CP–PDU Secondary Header Flag : ’1’ B<br />

CP–PDU Application ID : Least significant Bits of APID as defined for Onboard<br />

CCSDS End Point to Ground CCSDS End Point<br />

CP–PDU Sequence Flags: : ’11’B<br />

CP–PDU Sequence Count : 0 – 16383<br />

CP–PDU Packet Length: : Packet Length (Number of Octets) – 7<br />

i.e. packet length excluding primary header – 1<br />

Secondary Header:<br />

Time : CCSDS unsegmented Time Code<br />

All 0 if Time Id = ’00’ B<br />

Time Id : ’00’B (time field not used)<br />

’01’B (Time of generation i.e. Time of Acknowledge at<br />

onboard End Point<br />

Checksum Indicator : ’1’B (Checksum Present)<br />

Packet Type: : ’1100’B (Command Response)<br />

Packet ID: : SID of the response packet which is related to<br />

the SWOP_command<br />

in <strong>CGS</strong>: defined via response packet reference


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

463 von/of: 662<br />

7.10.1.3.2 CCSDS Data Field<br />

The response packet contains the following items starting at the first byte of the data field:<br />

Transaction ID: Primary Header of uplinked command without length field (4 bytes)<br />

Result: Enumeration (16 bit) indicating the success of the command<br />

Success without any problems: 0<br />

Success but sequence count anomaly: 1<br />

No Success: Not authorized: 2<br />

No Success: Unknown Command 3<br />

No Success: Not valid command 4<br />

No Success: Parameters not complete 5<br />

No Success: Parameters not valid 6<br />

No Success: Sequence Count repetition 7<br />

No Success: Sequence Count Mismatch 8<br />

No Success: Checksum Error 9<br />

No success: Two stage buffer full 10<br />

No success: Two stage command source mismatch 11<br />

No Success: Other Reasons 63<br />

No Success: specific reasons 64 .. 255<br />

Return Parameter: Parameter returned by the onboard system.<br />

Parameter Encoding: The transfer syntax for ’OUT’ parameters con–<br />

tained in the response packet is the same as for the command packets.


Space Infrastructure<br />

7.10.2 FLAP Execution Requests<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

464 von/of: 662<br />

Execution Requests for Flight Automated Procedures (FLAP) are sent as command packets. The<br />

structure for command packets can be copied from higher level <strong>ICD</strong>s (SSMB to APM).<br />

7.10.2.1 CCSDS Header for FLAP Execution Requests<br />

Primary Header:<br />

CP–PDU Version: : ’000’ B<br />

CP–PDU Type : Most Significant Bit of APID<br />

Remark: ’0’ B for <strong>System</strong> Commands,<br />

’1’ B for Payload Commands<br />

CP–PDU Secondary Header Flag : ’1’ B<br />

CP–PDU Application ID : Least significant Bits of APID as defined for Ground<br />

CCSDS End Point to Onboard CCSDS End Point<br />

CP–PDU Sequence Flags: : ’11’B<br />

CP–PDU Sequence Count : 0 – 16383<br />

CP–PDU Packet Length: : Packet Length (Number of Octets) – 7<br />

i.e. packet length excluding primary header – 1<br />

Secondary Header:<br />

Time : CCSDS unsegmented time code<br />

All 0 if Time Id = ’00’ B<br />

Time Id : ’00’B (Time field not used) or<br />

’01’B (Time of packet generation)<br />

Checksum Indicator : ’1’B (Checksum Present)<br />

Packet Type: : ’1001’B (<strong>System</strong> Command) or<br />

’1010’B (Payload Command)<br />

Packet ID: : SID of Reference to SWOP_Command defined<br />

for FLAP execution as defined in section TBD of<br />

the <strong>ICD</strong> TBD<br />

Note: In <strong>CGS</strong>: defined via Configuration File<br />

7.10.2.2 CCSDS Data Field for FLAP Execution Requests<br />

The data field contains the following parameter in the following sequence:<br />

1. FLAP identifier SID (4 bytes)<br />

2. time_tag Time (CCSDS unsegemented Time Code) to be<br />

followed by byte with value 0.<br />

3. Priority of FLAP integer (4 bytes)<br />

4. onboard execution node SID (4 bytes)<br />

5. ’IN’ parameters of FLAP<br />

All actual ’IN’ parameters of the FLAP have to be encoded into the data field as defined in section 7.16<br />

Parameter Encoding using the external scheme.<br />

The following transfer syntax rules have to be regarded:<br />

– Most significant bit first, least significant bit last<br />

– most significant byte first, least significant byte last


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

465 von/of: 662<br />

7.10.2.3 Response Packet for FLAP Execution Requests<br />

After the onboard execution of the FLAP command , exactly one response packet is returned.<br />

The structure for response packet can be copied from higher level <strong>ICD</strong>s (SSMB to APM).<br />

7.10.2.3.1 CCSDS Header<br />

Primary Header:<br />

CP–PDU Version: : ’000’ B<br />

CP–PDU Type : Most Significant Bit of APID<br />

Remark: ’0’ B for <strong>System</strong> Command Responses,<br />

’1’ B for Payload CommandResponses<br />

CP–PDU Secondary Header Flag : ’1’ B<br />

CP–PDU Application ID : Least significant Bits of APID as defined for Onboard<br />

CCSDS End Point to Ground CCSDS End Point<br />

CP–PDU Sequence Flags: : ’11’B<br />

CP–PDU Sequence Count : 0 – 16383<br />

CP–PDU Packet Length: : Packet Length (Number of Octets) – 7<br />

i.e. packet length excluding primary header – 1<br />

Secondary Header:<br />

Time : CCSDS unsegmented Time Code<br />

All 0 if Time Id = ’00’ B<br />

Time Id : ’00’B (time field not used)<br />

’01’B (Time of generation i.e. Time of Acknowledge at<br />

onboard End Point<br />

Checksum Indicator : ’1’B (Checksum Present)<br />

Packet Type: : ’1100’B (Command Response)<br />

Packet ID: : SID of the response packet which is related to<br />

the SWOP_command<br />

in <strong>CGS</strong>: defined via response packet reference<br />

7.10.2.3.2 CCSDS Data Field<br />

The response packet contains the following items starting at the first byte of the data field:<br />

Transaction ID: Primary Header of uplinked command without length field (4 bytes)<br />

Result: Enumeration (16 bit) indicating the success of the command<br />

Success without any problems: 0<br />

Success but sequence count anomaly: 1<br />

No Success: Not authorized: 2<br />

No Success: Unknown Command 3<br />

No Success: Not valid command 4<br />

No Success: Parameters not complete 5<br />

No Success: Parameters not valid 6<br />

No Success: Sequence Count repetition 7<br />

No Success: Sequence Count Mismatch 8<br />

No Success: Checksum Error 9<br />

No success: Two stage buffer full 10<br />

No success: Two stage command source mismatch 11<br />

No Success: Other Reasons 63<br />

No Success: specific reasons 64 .. 255<br />

FLAP_ID: Integer identifying the FLAP executed.<br />

FLAP_status: integer indicating the success of the FLAP execution


Space Infrastructure<br />

7.11 DBS Types and Constants Definitions<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

466 von/of: 662<br />

A same set of data types are used in the various procedural interfaces provided by the DBS product. In order<br />

to ensure the consistency of their definition and usage through all the interfaces, they are grouped and defined<br />

once, in the current section.<br />

They are ”basic” data types and constants (like numbers, strings, enumerations...) which are accessible directly.<br />

They constitute a type pool and are grouped into a set of Ada packages, according to their nature.<br />

The usage of the basic data types is simple. The desired variable has to be declared with the desired type in the<br />

piece of software which will use it. The access to the content of the variable is done directly, by knowledge of<br />

its Ada structure.<br />

The DBS_DEFINITIONS package contains type and constant definitions that are :<br />

. specific of DBS, i.e. not used or shared by several <strong>CGS</strong> products,<br />

. common in DBS, i.e. used or shared by several DBS provided services,<br />

. of general nature, i.e. not specific to any of these services.<br />

The DBS main type definitions are described hereafter.<br />

• DBS Return Status<br />

A type is defined for DBS return status and is used to report back to the calling application the result<br />

of any DBS called operation.<br />

• DBS Files<br />

Some types are defined to manage the various files containing the test/simulation/evaluation results data<br />

:<br />

– raw data files contain data generated during test or simulation execution;<br />

– result files contain data generated during evaluation activity.<br />

• Sessions<br />

The package DBS_DEFINITIONS provides two types of test sessions :<br />

– test execution session, which is a collection of configuration information, files and data generated<br />

during a particular test and limited by a time frame;<br />

– test evaluation session, which is a collection of evaluation result files.<br />

• Logging Events<br />

Some types are defined to access logged events like :<br />

– log events which are asynchronous events happening during test/simulation execution;<br />

– user events which are additional time markers inserted by test operators during test/simulation<br />

execution.<br />

• Engineering Values<br />

Some types are defined to access engineering values (calibrated data) logged in the TRDB during test/simulation<br />

execution.<br />

• Print Types<br />

Several types are provided to manage printers and print queue.<br />

• DBS Housekeeping Data


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

467 von/of: 662<br />

A set of types represent the current state of some critical parts of DBS, like magnetic disk, database, etc.<br />

• User Result Table<br />

Types are provided for user result tables which are tables created by test operators, to log messages or<br />

binary strings during test/simulation execution.<br />

• Data Allocation<br />

Some types are available to allow allocation of selected part of the TRDB, for further evaluation activity.<br />

• Final Archiving (FA)<br />

Some types are provided to support FA activities.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

468 von/of: 662<br />

––<br />

–– DBS_DEFINITIONS<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package contains the type and constant definitions provided for the<br />

–– usage of the DBS RPI and DBS<br />

API.––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––IDEN -<br />

TIFICATION––<br />

–– PROJECT NAME : VICOS<br />

–– PRODUCT NAME : DBS<br />

–– CI–NUMBER : 1216 863<br />

–– OBJECT NAME : DBS_DEFINITIONS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––CONTENTS––<br />

–– COMPILER : Sun / Verdix & HP / Alsys<br />

–– LANGUAGE : Ada<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––<br />

–– <strong>CGS</strong> V4.4 <strong>ICD</strong> Change 13.04.2000, W.Tammen:<br />

–– introduced new values for enumeration type T_DBS_ERROR:<br />

–– INTERRUPTED_BY_USER and CLOSE_SESSION_IN_PROGRESS<br />

–– according to COL–RIBRE–IRN–<strong>CGS</strong>–8106<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> V4.2 <strong>ICD</strong> Change 27.07.99, W.Tammen:<br />

–– introduced new values for enumeration type T_DBS_ERROR:<br />

–– ADT_EVENT_INVALID_NAME, ADT_EVENT_FILE_EXI<strong>ST</strong>S and<br />

–– ADT_EVENT_ERROR_ACCESSING_FILE<br />

–– according to COL–RIBRE–IRN–<strong>CGS</strong>–8078<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> V4.2 <strong>ICD</strong> Change 29.04.99, W.Tammen:<br />

–– introduced new value END_OF_LI<strong>ST</strong> for enumeration type<br />

–– T_DBS_ERROR according to COL–RIBRE–IRN–<strong>CGS</strong>–8059<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> 4.2 <strong>ICD</strong> Change (acc. COL–RIBRE–IRN–<strong>CGS</strong>–8039, 07/07/1997)<br />

–– created by: P.Athmann, DASA<br />

–– Include representation clauses for Printer Information Types<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> V4.1 <strong>ICD</strong> Change (acc. COL–RIBRE–IRN–<strong>CGS</strong>–7009c, 07/07/1997)<br />

–– created by: Uwe Hohnhorst, DASA, RIO63<br />

–– comments:<br />

–– 1) Changed T_DBS_ERROR with ref. COL–SBI–SPR–137, 18.04.1997<br />

–– 2) Changed MAX_APPLICATION_NUMBER = 64<br />

–– 3) Reintroduction of User Result Files in T_DATA_TYPE<br />

–– 4) Representation clauses for T_TRDB_INFO and<br />

–– T_TABLESPACE_RATIO’SIZE<br />

–– 5) T_LI<strong>ST</strong>_OF_CCU_INFORMATION deleted,<br />

–– T_LI<strong>ST</strong>_OF_CCU_INFORMATION_L added<br />

–– 6) Clarification of meaning of ANY in T_MODE_SELECTION<br />

–– 7) Added FA_SAS_ALREADY_RUNNING, CANNOT_<strong>ST</strong>ART_FA_SAS to<br />

–– T_DBS_ERROR<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> V4.0/V4.1 <strong>ICD</strong> Change (acc. COL–RIBRE–IRN–<strong>CGS</strong>–6027b, 25/03/1997)<br />

–– created by: Uwe Hohnhorst, DASA, RIT11<br />

–– comments:<br />

–– 1) FA SAS Dialog related types added,


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– 2) Return stati in type T_DBS_ERROR adapted,<br />

–– 3) Removal of User Result Files in T_DATA_TYPE,<br />

–– 4) CCU Information related types added,<br />

–– 5) T_TRDB_INFO changed (removal of FA_<strong>ST</strong>ATUS).<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.10 at Spacebel Informatique, Brussels<br />

–– creator: bcharlie (on host asimov)<br />

–– creation date: 15.03.96 14:31:12<br />

–– comment:<br />

–– USER EVENT log type replaced, SPR – 2146<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.5 at Spacebel Informatique, Brussels<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 25.07.95 11:56:34<br />

–– comment:<br />

–– Move T_EVENT definition to Vicos_definitions<br />

–– definition, change User Event definitions.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Spacebel Informatique, Brussels<br />

–– creator: bcharlie (on host moon)<br />

–– creation date: 24.07.95 17:44:14<br />

–– comment:<br />

–– Move from VICOS_CALENDAR to <strong>CGS</strong>_CALENDAR<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Spacebel Informatique, Brussels<br />

–– creator: cm_admin (on host moon)<br />

–– creation date: 06.07.95 09:44:13<br />

–– comment:<br />

–– Replace the Vicos_Definitions type T_VICOS_MODES_AND_<strong>ST</strong>ATI<br />

–– by the new T_VICOS_MODE for selection of sessions and<br />

–– Exec session info. (Cfr. PIRN 3023/E)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.7 at Central Repository V2.0 (ariane5)<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 07.06.95 14:09:00<br />

–– comment:<br />

–– Add types T_TIME_TYPE and T_TIME_ORDERING,<br />

–– modify type T_ENG_VAL_SEL_CRIT by adding<br />

–– the fields TIME_FRAME_TYPE and LI<strong>ST</strong>_ORDER.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.6 at Central Repository V2.0 (ariane5)<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 10.03.95 14:02:19<br />

–– comment:<br />

–– Modify Eval Session Selection criteria<br />

–– type to add array of boolean for Location.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.5 at Central Repository V2.0 (ariane5)<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 10.03.95 09:18:21<br />

–– comment:<br />

–– Change in test execution related types.<br />

–– Array of boolean added for Mode selection, Location<br />

–– selection and execution state selection.<br />

–– Type T_EXEC_SESSION_SEL_CRIT modified to include<br />

–– these types.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Central Repository V2.0 (ariane5)<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 01.02.95 16:02:49<br />

–– comment:<br />

–– modified by R.Smillie 1/2/95 in accordance with<br />

–– COL–RIBRE–IRN–<strong>CGS</strong>–3023 (T_EVENT : TIME_TAG_LT, TIME_TAG_SMT).<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

469 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– V4.3 at Central Repository V2.0 (ariane5)<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 31.01.95 14:41:49<br />

–– comment:<br />

–– Add the FA SAS status FA_DEVICE_NOT_ALLOCATED.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Central Repository V2.0 (ariane5)<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 16.01.95 12:15:54<br />

–– comment:<br />

–– add FA_LI<strong>ST</strong>_NOT_FOUND, FA_MMI_REQUE<strong>ST</strong>_CANCELLED,<br />

–– FA_UNIX_PROBLEM Status.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.1 at SBI ; DBS development<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 08.11.94 09:43:42<br />

–– Remove error status related to URT,<br />

–– add status NO_PRINTER_AVAILABLE,<br />

–– change comment for Oracle wildcard,<br />

–– add status FA_NOT_ENOUGH_SPACE,<br />

–– remove SYNOPTIC in Result File Types,<br />

–– remove User Result related types,<br />

–– add FA_RESERVED_FOR_AUTO_ARCH,<br />

–– add User Event field values, add FA_MMI_TIME_OUT.<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

––<br />

with VICOS_DEFINITIONS;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with MPS_DEFINITIONS;<br />

with ADT_RAW_VALUE;<br />

with ADT_ENGINEERING_VALUE;<br />

with VICOS_LI<strong>ST</strong>;<br />

package DBS_DEFINITIONS is<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Return FA SAS request for dialog<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_DBS_FA_DISK_<strong>ST</strong>ATUS is (<br />

SUCCESS,<br />

FA_REQ_FOR_AUTO_ARCHIVE_DISK,<br />

FA_REQ_FOR_MANUAL_ARCHIVE_DISK,<br />

FA_REQ_FOR_EXPORT_DISK,<br />

FA_REQ_FOR_IMPORT_DISK,<br />

FA_REQ_FOR_RETRIEVE_DISK,<br />

FA_REQ_FOR_NEW_DISK);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

470 von/of: 662<br />

–– SUCCESS : Appropriate disk has been already inserted<br />

–– FA_REQ_FOR_AUTO_ARCHIVE_DISK : request from FA SAS to insert an appropriate disk<br />

for AUTOMATIC ARCHIVING<br />

–– FA_REQ_FOR_MANUAL_ARCHIVE_DISK : request from FA SAS to insert an appropriate disk<br />

for MANUAL ARCHIVING<br />

–– FA_REQ_FOR_EXPORT_DISK : request from FA SAS to insert an appropriate disk<br />

for EXPORT<br />

–– FA_REQ_FOR_IMPORT_DISK : request from FA SAS to insert an appropriate disk<br />

for IMPORT<br />

–– FA_REQ_FOR_RETRIEVE_DISK : request from FA SAS to insert an appropriate disk<br />

for RETRIEVE<br />

–– FA_REQ_FOR_NEW_DISK : request from FA SAS to insert a new disk for<br />

any<br />

–– write operations on FA (see above, e.g. Export,<br />

Archiving)<br />

subtype T_DBS_DEVICE_ID is positive range 1 .. 2;


Space Infrastructure<br />

type T_DBS_FA_DIALOG is<br />

record<br />

DEVICE_ID : T_DBS_DEVICE_ID;<br />

FA_DISK_<strong>ST</strong>ATUS : T_DBS_FA_DISK_<strong>ST</strong>ATUS;<br />

end record;<br />

–– DEVICE_ID is the allocated device for requested operation.<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Return status type<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_DBS_ERROR is (<br />

OK,<br />

–– The operation has been successfully performed<br />

CONNECT_PROBLEM,<br />

–– Connection failed<br />

INIT_PROBLEM,<br />

–– Initialisation of communication from local to central DBS<br />

–– failed (i.e. failed to establish connection to <strong>CGS</strong> Product).<br />

DBS_<strong>ST</strong>OPPED,<br />

–– Local DBS is stopped, no more operation allowed.<br />

DBS_NOT_CONNECTED,<br />

–– Local DBS disconnected from communication services.<br />

DISCONNECT_PROBLEM,<br />

–– Disconnection failed.<br />

SESSION_NOT_FOUND,<br />

–– The session name is unknown.<br />

INVALID_SESSION_NAME,<br />

–– The session name is syntactically incorrect.<br />

INVALID_APPLICATION_NAME,<br />

–– The application TSCV_xx may not participate<br />

–– into an Execution session.<br />

ALREADY_PARTICIPATING,<br />

–– Some application names already participate to open session.<br />

AUTO_ARCH_ALREADY_USED,<br />

–– Two sessions are already open with automatic archiving.<br />

MAX_SESSION_REACHED,<br />

–– Maximum of allowed open sessions is reached, init refused.<br />

FA_DRIVE_NOT_AVAILABLE,<br />

–– Fa drive requested for Automatic Archiving is not available.<br />

EXI<strong>ST</strong>ING_SESSION,<br />

–– The session name is not unique.<br />

SESSION_IS_OPEN,<br />

–– The session is open.<br />

SESSION_NOT_OPEN,<br />

–– No session is open.<br />

SESSION_IS_USED,<br />

–– The test execution or evaluation session is used for<br />

–– an FA operation or for deleteion.<br />

SESSION_IS_ALLOCATED,<br />

–– The test execution or evaluation session is allocated<br />

–– to an evaluation user.<br />

SESSION_IS_ARCHIVED,<br />

–– Session is archived.<br />

SESSION_NOT_ARCHIVED,<br />

–– Session has not been archived before.<br />

SESSION_IS_EMPTY,<br />

–– Session is empty, archiving/exporting is refused.<br />

SESSION_IS_ONLINE,<br />

–– Session is online.<br />

RETRIEVING_NOT_AUTHORISED,<br />

–– Session data already retrieved by another user.<br />

DATA_ALREADY_ONLINE,<br />

–– The selected data is already online.<br />

DATA_PARTIALLY_ONLINE,<br />

–– Selected data is partially online, exporting is refused.<br />

DATA_NOT_ONLINE,<br />

–– The selected data is not online.<br />

INACCESSIBLE_FILES,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

471 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

472 von/of: 662<br />

–– Storage of files fails, files remain on local node.<br />

EXI<strong>ST</strong>ING_FILE,<br />

–– The file to store in the Test Result Database is already<br />

–– referenced in the Test Result Database (same name, same<br />

–– test session, and for raw data file same test node).<br />

FILE_SY<strong>ST</strong>EM_FULL,<br />

–– Not enough space to store the file.<br />

FILE_NOT_FOUND,<br />

–– The given file is not found.<br />

NOT_CONNECTED_TO_EVAL,<br />

–– The user is not connected as evaluation user.<br />

DATA_NOT_FOUND,<br />

–– The selected data is not found.<br />

EXI<strong>ST</strong>ING_USER,<br />

–– Evaluation user already connected.<br />

BAD_SELECTION_CRITERIA,<br />

–– Selection criteria is null.<br />

POOL_SATURATED,<br />

–– The event buffer pool is saturated.<br />

TABLE_SPACE_FULL,<br />

–– Not enough space found in the table space for loading<br />

–– selected events.<br />

PRINTER_ERROR,<br />

–– Cannot perform printer operation.<br />

–– Details are to be provided in an separate error message.<br />

–– UNKNOWN_PRINTER,<br />

–– The printer name is unknown.<br />

PRINTING_REROUTED,<br />

–– The requested print has been rerouted on the other printer.<br />

–– FILE_NOT_PRINTABLE,<br />

–– The format of the file is not standard<br />

––(directory file, ..).<br />

–– SPOOLER_DISACTIVATED,<br />

–– The spooler is not active.<br />

–– FILE_IS_EMPTY,<br />

–– File to print is empty, nothing will be printed<br />

PRINTER_NOT_DEFINED,<br />

–– Printer environment variable not set.<br />

NO_PRINTER_AVAILABLE,<br />

–– No printer is available for the printing.<br />

CANCEL_NOT_AUTHORISED,<br />

–– Not privileged to cancel the printing job.<br />

UNKNOWN_ERROR,<br />

–– Detected problem is not known.<br />

EXI<strong>ST</strong>ING_FA_JOB,<br />

–– Fa jobs still in progress, stopping is refused.<br />

JOB_CANCELLED,<br />

–– FA job has been cancelled.<br />

FA_MEDIUM_NOT_AVAILABLE,<br />

–– The requested FA medium has not been mounted.<br />

–– FA_NOT_ENOUGH_SPACE,<br />

–– *–– The FA medium cannot receive the exported data, the free space<br />

–– *–– left is too small.<br />

–– This is not a error, this shall imply a dialog request with the user, for insertion<br />

of a new disk<br />

FA_INTERNAL_PROBLEM,<br />

–– FA SAS reports internal error.<br />

FA_UNIX_PROBLEM,<br />

–– FA SAS reports Unix error.<br />

FA_RESERVED_FOR_AUTO_ARCH,<br />

–– The selected FA device is reserved for Automatic Archiving,<br />

–– operations not related with Auto Arch are refused. (but read of data from<br />

the FA for<br />

–– the open session is possible).<br />

FA_MMI_TIME_OUT,<br />

–– The Final Archive Operator didn’t answer to an FA request<br />

–– within proper delay.<br />

FA_MMI_REQUE<strong>ST</strong>_CANCELLED,<br />

–– The Final Archive Operator cancelled an FA request<br />

–– during the processing of the operation.<br />

FA_LI<strong>ST</strong>_NOT_FOUND,<br />

–– The list of files (trees) to Archive, Export or Retrieve is<br />

–– not found or not accessible.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

473 von/of: 662<br />

FA_DEVICE_NOT_ALLOCATED,<br />

–– A request to Archive, Retrieve, Export or Import is<br />

–– done as the device is not allocated for that purpose.<br />

–– Ask for Device allocation first.<br />

ACTIVE_FA_JOB,<br />

–– FA job is ACTIVE and cannot be removed.<br />

FA_SAS_NOT_RUNNING,<br />

–– The FA SAS has to run for this request.<br />

LI<strong>ST</strong>_OVERFLOW,<br />

–– Not enough dynamic memory space for the list.<br />

INDEX_ERROR,<br />

–– the index is greater than the number of elements or is null.<br />

LI<strong>ST</strong>_NULL,<br />

–– There are no more selected logging event or engineering values.<br />

LI<strong>ST</strong>_NOT_NULL,<br />

–– the list already contains data: the CLEAR<br />

–– procedure shall be called before.<br />

END_OF_LI<strong>ST</strong>,<br />

–– the end of the list has been reached<br />

ADT_EVENT_INVALID_NAME,<br />

–– the specified name of the adt_event_result file is too long<br />

–– ( > 256 characters)<br />

ADT_EVENT_FILE_EXI<strong>ST</strong>S,<br />

–– the adt_event_result file to be created already exists<br />

ADT_EVENT_ERROR_ACCESSING_FILE,<br />

–– general adt_event_result error<br />

INTERRUPTED_BY_USER,<br />

–– GENERATE_EVENT_LI<strong>ST</strong> interrupted manually by user<br />

CLOSE_SESSION_IN_PROGRESS,<br />

–– this status is returned by DBS on command<br />

–– DBS_RPI.CLOSE_EXECUTION_SESSION if there are remaining<br />

–– event–/EVL– or archive–files to be handled<br />

COMMS_TIME_OUT,<br />

–– Communictaion time out occurs.<br />

INSUFFICIENT_PRIVILEGE,<br />

–– User not privileged for the requested operation.<br />

UNKNOWN_PRIVILEGE,<br />

–– VICOS privilege given is not defined in the file<br />

–– dbs_privilege_file.def, impossible to map into TRDB privileges.<br />

CANNOT_<strong>ST</strong>ART_FA_SAS,<br />

–– Unable to start the FA_SAS.<br />

FA_SAS_ALREADY_RUNNING,<br />

–– The FA SAS is already running.<br />

DBS_ORACLE_PROBLEM,<br />

–– Oracle problems.<br />

DBS_UNIX_PROBLEM,<br />

–– Unix problems (invalid access rights, directory not found, .. )<br />

DBS_INTERNAL_PROBLEM,<br />

–– Unexpected exception has been raised.<br />

DBS_COMMUNICATION_PROBLEM);<br />

–– DBS has lost communication with Central (e.g. DBS central not running).<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Time related types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_TIME_RECORD is<br />

record<br />

BEGIN_DATE : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

END_DATE : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

end record;<br />

–– Note: variables of this type define time frames. In case the<br />

–– content of the variables is not consistent (begin_date is older<br />

–– than end_date), the result of functions using the variables can be<br />

–– erroneous.<br />

–– Note: if the BEGIN_DATE and END_DATE are <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME<br />

–– for retrieving information from the Test Result Database, DBS will<br />

–– interpret the request as ”without time constraint” (possibly with<br />

–– other constraints like test session name, ...).


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

NULL_TIME_RECORD : constant T_TIME_RECORD<br />

:= (BEGIN_DATE => <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME,<br />

END_DATE => <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME);<br />

–– This constant can be used for asking for data without time<br />

–– constraints<br />

type T_TIME_TYPE is (LT, SMT);<br />

–– This type specifies kind of time used:<br />

–– Local Time or Simulated Mission Time.<br />

––<br />

type T_TIME_ORDERING is (LT, SMT);<br />

–– This type specifies kind of time used to order lists:<br />

–– Local Time or Simulated Mission Time.<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Test Session Name Types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

subtype T_TE<strong>ST</strong>_SESSION_NAME is VICOS_DEFINITIONS.T_NAME_<strong>ST</strong>RING;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

474 von/of: 662<br />

–– T_TE<strong>ST</strong>_SESSION_NAME: Name of the test session to be maintained in TRDB<br />

–– for the given test. The test session name can consist of capital letters,<br />

–– digits and underscores only, and can have a length of up to 20 characters maximum.<br />

–– The test session name has to begin with a capital letter. Example: IF_TE<strong>ST</strong>_3.<br />

NULL_TE<strong>ST</strong>_SESSION_NAME : constant T_TE<strong>ST</strong>_SESSION_NAME<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

MAX_SELECTED_SESSIONS : constant POSITIVE := 11;<br />

subtype T_SELECTED_SESSION_RANGE is INTEGER range 1..MAX_SELECTED_SESSIONS;<br />

type T_SELECTED_SESSIONS is<br />

array (T_SELECTED_SESSION_RANGE range ) of T_TE<strong>ST</strong>_SESSION_NAME;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Type to describe the owner<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

MAX_USER_NAME : constant := 32;<br />

subtype T_USER_NAME is <strong>ST</strong>RING (1 .. MAX_USER_NAME);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– File Name Types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

subtype T_FILENAME_LENGTH is INTEGER<br />

range 0 .. VICOS_DEFINITIONS.MAX_LENGTH_OF_FILE_NAME;<br />

type T_FILENAME (LENGTH: T_FILENAME_LENGTH := 0) is<br />

record<br />

NAME : <strong>ST</strong>RING (1..LENGTH);<br />

end record;<br />

FINAL_ARCHIVE_PATH : constant <strong>ST</strong>RING := ”FINAL_ARCHIVE/”;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Files characteristics types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_RESULT_TYPE is<br />

(GENERAL_FILE,<br />

DATA_SET,


Space Infrastructure<br />

REPORT,<br />

<strong>ST</strong>ATI<strong>ST</strong>IC,<br />

EVENT_LI<strong>ST</strong>,<br />

DATA_LI<strong>ST</strong>,<br />

RAW_DATA_DUMP,<br />

GRAPH);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_RAW_DATA_FILE_INFO is<br />

record<br />

SESSION : T_TE<strong>ST</strong>_SESSION_NAME;<br />

FILE_NAME : T_FILENAME;<br />

PRODUCER : VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

DATA_TIME_LT : T_TIME_RECORD;<br />

DATA_TIME_SMT : T_TIME_RECORD;<br />

end record;<br />

type T_RESULT_FILE_INFO is<br />

record<br />

SESSION : T_TE<strong>ST</strong>_SESSION_NAME;<br />

RESULT_TYPE : T_RESULT_TYPE;<br />

FILE_NAME : T_FILENAME;<br />

PRODUCER : VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

FILE_TRANSFER_TIME: <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

end record;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Test Execution Sessions types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

DEFAULT_TE<strong>ST</strong>_SESSION : constant T_TE<strong>ST</strong>_SESSION_NAME<br />

:= (THE_<strong>ST</strong>RING => ”DEFAULT_TE<strong>ST</strong>_SESSION”, LENGTH => 20);<br />

ORACLE_WILDCARD : constant CHARACTER := ’%’;<br />

subtype T_MODE_SELECTION is VICOS_DEFINITIONS.T_VICOS_MODE<br />

range VICOS_DEFINITIONS.NORMAL .. VICOS_DEFINITIONS.ANY_MODE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

475 von/of: 662<br />

–– T_MODE_SELECTION can be either:<br />

–– NORMAL (all test nodes in normal mode),<br />

–– SIMULATION (all test nodes in simulation mode),<br />

–– REPLAY (all test nodes in replay mode) or<br />

–– ANY (test nodes are running in any mixed mode configuration).<br />

–– For data retrieval (e.g. through TEV or TSCV):<br />

–– NORMAL selection will retrieve all data belonging to NORMAL and ANY mode,<br />

–– SIMULATION selection will retrieve all data belonging to SIMULATION and ANY<br />

mode,<br />

–– REPLAY selection will retrieve all data belonging to REPLAY and ANY mode.<br />

–– ANY selection will retrieve all data belonging to ANY mode only.<br />

subtype T_PATHNAME_REFERENCE_LENGTH is INTEGER<br />

range 0 .. VICOS_DEFINITIONS.MAX_LENGTH_OF_DB_PATHNAME;<br />

type T_PATHNAME_REFERENCE (LENGTH: T_PATHNAME_REFERENCE_LENGTH := 0) is<br />

record<br />

NAME : <strong>ST</strong>RING (1..LENGTH);<br />

end record;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Return List of CCUs from default test session<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_CCU_INFORMATION is<br />

record<br />

TIME_TAG : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

ELEMENT_CONFIGURATION : MPS_DEFINITIONS.T_ELEMENT_CONFIGURATION_NAME;<br />

MISSION_NAME : MPS_DEFINITIONS.T_MISSION_NAME;<br />

SY<strong>ST</strong>EM_TREE_VERSION : MPS_DEFINITIONS.T_VERSION_NUMBER;<br />

CCU_SY<strong>ST</strong>EM_TREE_PATHNAME : T_PATHNAME_REFERENCE;<br />

CCU_NAME : MPS_DEFINITIONS.T_CONFIGURATION_NAME;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

CCU_VERSION : MPS_DEFINITIONS.T_VERSION;<br />

end record;<br />

package P_LI<strong>ST</strong>_OF_CCU_INFORMATION is new VICOS_LI<strong>ST</strong>(T_CCU_INFORMATION);<br />

subtype T_LI<strong>ST</strong>_OF_CCU_INFORMATION_L is P_LI<strong>ST</strong>_OF_CCU_INFORMATION.LI<strong>ST</strong>;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_EXECUTION_<strong>ST</strong>ATE is<br />

(OPEN,<br />

NORMALLY_CLOSED,<br />

ABORTED,<br />

UNDEFINED);<br />

type T_LOCATION is<br />

(ONLINE_DISC,<br />

ONLINE_FA,<br />

FINAL_ARCHIVE,<br />

UNDEFINED);<br />

type T_LI<strong>ST</strong>_ORDERING is<br />

(ALPHABETICAL, CHRONOLOGICAL);<br />

type T_SELECTED_MODE is array (T_MODE_SELECTION) of BOOLEAN;<br />

type T_SELECTED_EXECUTION_<strong>ST</strong>ATE is array (T_EXECUTION_<strong>ST</strong>ATE) of BOOLEAN;<br />

type T_SELECTED_LOCATION is array (T_LOCATION) of BOOLEAN;<br />

NULL_MODE_SELECTION : constant T_SELECTED_MODE := (others => false);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

476 von/of: 662<br />

NULL_EXECUTION_<strong>ST</strong>ATE_SELECTION : constant T_SELECTED_EXECUTION_<strong>ST</strong>ATE := (others => false);<br />

NULL_LOCATION_SELECTION : constant T_SELECTED_LOCATION := (others => false);<br />

type T_EXEC_SESSION_SEL_CRIT is<br />

record<br />

NAME_PATTERN : T_TE<strong>ST</strong>_SESSION_NAME := VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

SEL_MODE : T_SELECTED_MODE := NULL_MODE_SELECTION;<br />

SEL_TIME_FRAME : T_TIME_RECORD := NULL_TIME_RECORD;<br />

ELEMENT_CONFIGURATION : MPS_DEFINITIONS.T_ELEMENT_CONFIGURATION_NAME :=<br />

(others => ’ ’);<br />

MISSION_NAME : MPS_DEFINITIONS.T_MISSION_NAME := (others => ’ ’);<br />

SY<strong>ST</strong>EM_TREE_VERSION : MPS_DEFINITIONS.T_VERSION_NUMBER := 0;<br />

CCU_SY<strong>ST</strong>EM_TREE_PATHNAME: T_PATHNAME_REFERENCE;<br />

CCU_NAME : MPS_DEFINITIONS.T_CONFIGURATION_NAME:= (others => ’<br />

’);<br />

CCU_VERSION : MPS_DEFINITIONS.T_VERSION:=<br />

MPS_DEFINITIONS.NO_VERSION;<br />

EXECUTION_<strong>ST</strong>ATE : T_SELECTED_EXECUTION_<strong>ST</strong>ATE :=<br />

NULL_EXECUTION_<strong>ST</strong>ATE_SELECTION;<br />

LOCATION : T_SELECTED_LOCATION := NULL_LOCATION_SELECTION;<br />

end record;<br />

–– Definition of session information selection.<br />

–– Each field of the record is predefined to a null value. When a<br />

–– field is not a part of the selection criteria, its value is thus<br />

–– null. For the non null fields, the selection criteria is defined<br />

–– with an AND relation between the fields. Note that the fields<br />

–– ELEMENT_CONFIGURATION, MISSION_NAME, SY<strong>ST</strong>EM_TREE_VERSION,<br />

–– CCU_SY<strong>ST</strong>EM_TREE_PATHNAME, CCU_NAME and CCU_VERSION will<br />

–– be either all set to a certain value or all set to null values.<br />

–– NAME_PATTERN field may contain several DBS_DEFINITIONS.ORACLE_WILDCARD’s.<br />

type T_ARCHIVE_MODUS is<br />

(NO_FINAL_ARCHIVE,<br />

WITH_FINAL_ARCHIVE);<br />

MAX_APPLICATION_NUMBER : constant := 64;<br />

subtype T_APPLICATION_RANGE is POSITIVE range 1 .. MAX_APPLICATION_NUMBER;<br />

type T_PARTICIPATING_APPLICATIONS is array (T_APPLICATION_RANGE range ) of<br />

VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

MAX_SESSION_INFO_TEXT : constant := 80;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

subtype T_SESSION_INFO_TEXT is <strong>ST</strong>RING (1 .. MAX_SESSION_INFO_TEXT);<br />

type T_EXECUTION_SESSION_INFO is<br />

record<br />

ARCHIVE_MODUS : T_ARCHIVE_MODUS;<br />

EXECUTION_<strong>ST</strong>ATE : T_EXECUTION_<strong>ST</strong>ATE;<br />

LOCATION : T_LOCATION;<br />

TE<strong>ST</strong>_MODE : T_MODE_SELECTION;<br />

NAME : T_TE<strong>ST</strong>_SESSION_NAME;<br />

BEGIN_TIME_LT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

END_TIME_LT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

ELEMENT_CONFIGURATION : MPS_DEFINITIONS.T_ELEMENT_CONFIGURATION_NAME;<br />

MISSION_NAME : MPS_DEFINITIONS.T_MISSION_NAME;<br />

SY<strong>ST</strong>EM_TREE_VERSION : MPS_DEFINITIONS.T_VERSION_NUMBER;<br />

CCU_SY<strong>ST</strong>EM_TREE_PATHNAME: T_PATHNAME_REFERENCE;<br />

CCU_NAME : MPS_DEFINITIONS.T_CONFIGURATION_NAME;<br />

CCU_VERSION : MPS_DEFINITIONS.T_VERSION;<br />

CREATOR : T_USER_NAME;<br />

OWNER : T_USER_NAME;<br />

PURPOSE : T_SESSION_INFO_TEXT;<br />

TE<strong>ST</strong>_SITE : T_SESSION_INFO_TEXT;<br />

VERSION_ID_TABLE : T_FILENAME;<br />

TE<strong>ST</strong>_CONFIGURATION : T_FILENAME;<br />

SY<strong>ST</strong>EM_TOPOLOGY_TABLE : T_FILENAME;<br />

end record;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

477 von/of: 662<br />

–– T_FILENAME for VERSION_ID_TABLE, TE<strong>ST</strong>_CONFIGURATION and SY<strong>ST</strong>EM_TOPOLOGY_TABLE<br />

–– shall always be the full UNIX pathname (ie. when calling INIT_EXECUTION_SESSION<br />

–– or GET_EXECUTION_SESSION_INFO).<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Test Evaluation Session type<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_EVALUATION_SESSION_INFO is<br />

record<br />

NAME : T_TE<strong>ST</strong>_SESSION_NAME;<br />

CREATION_DATE : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

CREATOR : T_USER_NAME;<br />

OWNER : T_USER_NAME;<br />

LOCATION : T_LOCATION;<br />

PURPOSE : T_SESSION_INFO_TEXT;<br />

TE<strong>ST</strong>_SITE : T_SESSION_INFO_TEXT;<br />

end record;<br />

type T_EVAL_SESSION_SEL_CRIT is<br />

record<br />

NAME_PATTERN :T_TE<strong>ST</strong>_SESSION_NAME := VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

SEL_TIME_FRAME : T_TIME_RECORD := NULL_TIME_RECORD;<br />

LOCATION : T_SELECTED_LOCATION := NULL_LOCATION_SELECTION;<br />

end record;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Logging events types<br />

subtype T_EVENT is VICOS_DEFINITIONS.T_ERROR_MESSAGE;<br />

–– The User Events are defined as Events with the specific field values (Cf.<br />

VICOS_DEFINITIONS):<br />

–– field LOG_GROUP : DBS_DEFINITIONS.USER_EVENT_LOG_GROUP,<br />

–– field LOG_TYPE : DBS_DEFINITIONS.USER_EVENT_LOG_TYPE.<br />

––<br />

type T_SELECTED_EVENT is<br />

record<br />

EVENT : T_EVENT;<br />

SESSION : T_TE<strong>ST</strong>_SESSION_NAME;<br />

end record;<br />

NULL_LOG_GROUP : constant VICOS_DEFINITIONS.T_LOG_GROUP :=


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

VICOS_DEFINITIONS.NULL_LOG_GROUP;<br />

USER_EVENT_LOG_GROUP : constant VICOS_DEFINITIONS.T_LOG_GROUP :=<br />

VICOS_DEFINITIONS.USER_EVENT_LOG_GROUP;<br />

NULL_LOG_TYPE : constant VICOS_DEFINITIONS.T_LOG_TYPE :=<br />

VICOS_DEFINITIONS.NULL_LOG_TYPE;<br />

USER_EVENT_LOG_TYPE : constant VICOS_DEFINITIONS.T_LOG_TYPE :=<br />

VICOS_DEFINITIONS.GENERAL_MESSAGE_TYPE;<br />

NULL_LOG_TEXT_SHORT : constant VICOS_DEFINITIONS.T_LOG_TEXT_SHORT :=<br />

VICOS_DEFINITIONS.NULL_LOG_TEXT_SHORT;<br />

type T_EVENT_SEL_CRIT is<br />

record<br />

APPLICATION : VICOS_DEFINITIONS.T_APPLICATION_NAME<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

TIME_FRAME : T_TIME_RECORD<br />

:= NULL_TIME_RECORD;<br />

LOG_TYPE : VICOS_DEFINITIONS.T_LOG_TYPE<br />

:= NULL_LOG_TYPE;<br />

LOG_GROUP : VICOS_DEFINITIONS.T_LOG_GROUP<br />

:= NULL_LOG_GROUP;<br />

TEXT : VICOS_DEFINITIONS.T_LOG_TEXT_SHORT<br />

:= NULL_LOG_TEXT_SHORT;<br />

end record;<br />

–– Definition of the normal event selection criteria<br />

–– Each field of the record is predefined to a null value. When a<br />

–– field is not a part of the selection criteria, its value is thus<br />

–– null. For the non null fields, the selection criteria is defined<br />

–– with an AND relation between the fields.<br />

MAX_EVENT_CRITERIA: constant POSITIVE := 4;<br />

subtype T_EVENT_SEL_CRIT_RANGE is integer range 1..MAX_EVENT_CRITERIA;<br />

type T_EVENT_SEL_CRIT_COMBINED is<br />

array (T_EVENT_SEL_CRIT_RANGE range ) of T_EVENT_SEL_CRIT;<br />

–– Definition of the combined event selection criteria<br />

–– There is an OR relation between the elements of the array.<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Engineering value logging types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_ENG_VALUE_LOG is<br />

record<br />

ENG_VALUE : ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE;<br />

RAW_VALUE : ADT_RAW_VALUE.T_RAW_VALUE;<br />

TIME_TAG_LT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

TIME_TAG_SMT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

END_ITEM_SID : MPS_DEFINITIONS.SID;<br />

end record;<br />

type T_SELECTED_ENG_VALUE_LOG is<br />

record<br />

ENG_VAL : T_ENG_VALUE_LOG;<br />

PRODUCER : VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

SESSION_NAME : T_TE<strong>ST</strong>_SESSION_NAME;<br />

end record;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

478 von/of: 662<br />

type T_ENG_VALUE_SEL_CRIT is<br />

record<br />

ITEM_NAME : MPS_DEFINITIONS.SID<br />

:= MPS_DEFINITIONS.NULL_SID;<br />

APPLICATION : VICOS_DEFINITIONS.T_APPLICATION_NAME<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

TIME_FRAME : T_TIME_RECORD


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

:= NULL_TIME_RECORD;<br />

TIME_FRAME_TYPE : T_TIME_TYPE<br />

:= LT;<br />

LI<strong>ST</strong>_ORDER : T_TIME_ORDERING<br />

:= LT;<br />

end record;<br />

–– Definition of the engineering value selection criteria,<br />

–– APPLICATION may be empty, what means any application.<br />

–– ITEM_NAME and TIME_FRAME may also be empty what means any SID and<br />

–– no time frame.<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Types for print services<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_PRINTER is<br />

(LASER_PRINTER1,<br />

LASER_PRINTER2);<br />

for T_PRINTER use<br />

(LASER_PRINTER1 => 0,<br />

LASER_PRINTER2 => 1);<br />

type T_<strong>ST</strong>ATUS is<br />

(DISABLED,<br />

ENABLED);<br />

for T_<strong>ST</strong>ATUS use<br />

(DISABLED => 0,<br />

ENABLED => 1);<br />

type T_PRINT_QUEUE_<strong>ST</strong>ATUS is<br />

(OFF,<br />

READY,<br />

PRINTING,<br />

OUT_OF_PAPER,<br />

OUT_OF_TONER);<br />

for T_PRINT_QUEUE_<strong>ST</strong>ATUS use<br />

(OFF => 0,<br />

READY => 1,<br />

PRINTING => 2,<br />

OUT_OF_PAPER => 3,<br />

OUT_OF_TONER => 4);<br />

type T_JOB_INFORMATION is<br />

record<br />

IDENT : INTEGER;<br />

OWNER : T_USER_NAME;<br />

FILE_NAME : T_FILENAME;<br />

FILE_SIZE_IN_BYTE : NATURAL;<br />

end record;<br />

type T_PRINT_INFO is<br />

record<br />

PRINTER_<strong>ST</strong>ATUS : T_<strong>ST</strong>ATUS;<br />

PRINT_QUEUE_<strong>ST</strong>ATUS : T_PRINT_QUEUE_<strong>ST</strong>ATUS;<br />

NUMBER_OF_ENTRIES : NATURAL;<br />

end record;<br />

–– align record to allow for machine independent network transmission<br />

for T_PRINT_INFO use<br />

record at mod 8;<br />

PRINTER_<strong>ST</strong>ATUS at 0 range 0 .. 0;<br />

PRINT_QUEUE_<strong>ST</strong>ATUS at 0 range 8 .. 10;<br />

NUMBER_OF_ENTRIES at 0 range 32 .. 63;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

479 von/of: 662


Space Infrastructure<br />

end record;<br />

–– define maximum number of bits for this record<br />

for T_PRINT_INFO’size use 64;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type T_GLOBAL_PRINT_INFO is array (T_PRINTER) of T_PRINT_INFO;<br />

DEFAULT_PRINTER : constant T_PRINTER := LASER_PRINTER1;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Types for HK data<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_DISK_<strong>ST</strong>ATUS is<br />

(OK,<br />

DISK_FULL);<br />

type T_TRDB_<strong>ST</strong>ATUS is (OK, NOT_OK);<br />

type T_FA_<strong>ST</strong>ATUS is (OK, NOT_OK);<br />

MAX_OPEN_SESSION : constant := 5;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

480 von/of: 662<br />

type T_OPEN_SESSION_NAMES is array (1 .. MAX_OPEN_SESSION) of T_TE<strong>ST</strong>_SESSION_NAME;<br />

type T_TRDB_INFO is<br />

record<br />

NUMBER_OF_EVAL_USERS : NATURAL;<br />

CURRENT_TE<strong>ST</strong>_SESSIONS : T_OPEN_SESSION_NAMES;<br />

OVERALL_<strong>ST</strong>ATUS : T_TRDB_<strong>ST</strong>ATUS;<br />

end record;<br />

for T_TRDB_INFO use<br />

record at mod 8;<br />

NUMBER_OF_EVAL_USERS at 0 range 0 .. 31;<br />

CURRENT_TE<strong>ST</strong>_SESSIONS at 0 range 32 .. 991;<br />

OVERALL_<strong>ST</strong>ATUS at 0 range 992 .. 999;<br />

end record;<br />

MAX_PERCENT_VALUE : constant := 100;<br />

subtype T_PERCENT is NATURAL range 0 .. MAX_PERCENT_VALUE;<br />

type T_TRDB_TABLESPACE is<br />

(MA_SPACE,<br />

EVENT_SPACE,<br />

MISC_SPACE);<br />

type T_TABLESPACE_RATIO is array (T_TRDB_TABLESPACE) of T_PERCENT;<br />

for T_TABLESPACE_RATIO’SIZE use 96;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Types to select part of execution session<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_DATA_TYPE is<br />

(EVENT,<br />

RAW_DATA,<br />

ENG_VAL,<br />

RESULT,<br />

CONFIG);<br />

type T_SELECTED_DATA_TYPE is array (T_DATA_TYPE) of BOOLEAN;<br />

type T_SELECTED_DATA is array (T_DATA_TYPE) of T_TIME_RECORD;<br />

type T_DATA_LOCATION is array (T_DATA_TYPE) of T_LOCATION;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

–– Types to describe FA job<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_FA_JOB_<strong>ST</strong>ATE is<br />

(ACTIVE,<br />

ALLOCATED,<br />

PENDING);<br />

type T_FA_ACTION is<br />

(IMPORT,<br />

EXPORT,<br />

ARCHIVE,<br />

AUTO_ARCHIVE,<br />

RETRIEVE);<br />

type T_FA_JOB_INFO is<br />

record<br />

<strong>ST</strong>ATE : T_FA_JOB_<strong>ST</strong>ATE;<br />

JOB_ID : POSITIVE;<br />

OWNER : VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

ACTION : T_FA_ACTION;<br />

PARAMETER : T_TE<strong>ST</strong>_SESSION_NAME;<br />

end record;<br />

end DBS_DEFINITIONS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

481 von/of: 662


Space Infrastructure<br />

7.12 DBS Application Programmer <strong>Interface</strong><br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

482 von/of: 662<br />

The DBS product provides a package of ’Ada’ library functions to be called from ’Ada’ applications external<br />

to <strong>CGS</strong>.<br />

DBS application programmer interface (DBS API) services shall be provided to enable Final Archive Special<br />

Application Software (FA SAS) to manage the final archiving of test execution/evaluation sessions in a dedicated<br />

long term storage medium, the retrieving of archived sessions, and the import/export of complete sessions.<br />

It makes DBS independent from any archive device, and thereby, makes possible the connection to various hardwares<br />

e.g. Exabyte tape, DAT tape, optical disk, etc.<br />

DBS communicates with the FA SAS through the DBS API for the transfer of data files and for identification<br />

of the archive volumes (e.g. tape name).<br />

The FA SAS will be in charge of the device driver, device commanding, any device specific protocol, and of<br />

the user dialogue to operate the hardware.<br />

The FA SAS executes as a separate OS process connected to DBS via the DBS API<br />

A number of access services are supplied, these are summarised hereafter.<br />

• Archive operation<br />

• Retrieve operation<br />

• Export operation<br />

• Import operation


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

483 von/of: 662<br />

––<br />

–– DBS_API<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package contains operation used by a FA SAS to communicate with DBS.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME :VICOS<br />

–– PRODUCT NAME :DBS<br />

–– CI–NUMBER :1216 863<br />

–– OBJECT NAME :DBS_API<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER :Sun ADA 1.1<br />

–– LANGUAGE :ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V5.2 at Central Repository V4.0 (moon)<br />

–– creator: pcvicos (on host alien)<br />

–– creation date: 20.08.97 10:31:21<br />

–– comment:<br />

–– DBS 4.1 development:<br />

–– 1) New operation SUPPLY_RESPONSE added<br />

–– 2) Scope of operation SUPPLY_ACKNOWLEDGE modified<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.1 at SBI ; DBS development<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 20.01.95 16:44:56<br />

–– added Standard Header by command create_file<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

––<br />

with DBS_DEFINITIONS;<br />

with ADT_DBS_TO_SAS_COMMAND;<br />

with DBS_COMMS_DEFINITIONS;<br />

package DBS_API is<br />

–– Object Description :<br />

–– Provided operations :<br />

procedure INIT_FA_SAS(<strong>ST</strong>ATUS : out DBS_DEFINITIONS.T_DBS_ERROR);<br />

–– This operation initializes the communication services for the FA SAS<br />

process.<br />

–– Parameters description :<br />

–– <strong>ST</strong>ATUS : informs the caller about the procedure completion :<br />

–– – OK : the communication services have been correctly<br />

initialized.<br />

–– – INIT_PROBLEM : initialisation of the communication<br />

services failed.<br />

–– – DBS_INTERNAL_PROBLEM : unexpected exception has been<br />

raised in the<br />

–– procedure.<br />

procedure READ_COMMAND(<br />

COMMAND : out ADT_DBS_TO_SAS_COMMAND.T_COMMAND;<br />

CHANNEL_NUMBER : out ADT_DBS_TO_SAS_COM-<br />

MAND.T_CHANNEL_NBR;<br />

<strong>ST</strong>ATUS : out DBS_DEFINITIONS.T_DBS_ERROR );<br />

–– This operation reads the next command from DBS.<br />

–– Parameters description :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

484 von/of: 662<br />

–– COMMAND : the incoming command.<br />

–– CHANNEL_NUMBER : number of the logical channel that has initiated the<br />

command.<br />

–– <strong>ST</strong>ATUS : informs the caller about the procedure completion :<br />

–– – OK : the message has been read correctly.<br />

–– – DBS_COMMUNICATION_PROBLEM : the communication with<br />

DBS is broken.<br />

–– – DBS_INTERNAL_PROBLEM : unexpected exception has been<br />

raised.<br />

procedure SUPPLY_ACKNOWLEDGE(<br />

ACK_INFO : in DBS_DEFINITIONS.T_DBS_ERROR;<br />

CHANNEL_NUMBER : in ADT_DBS_TO_SAS_COM-<br />

MAND.T_CHANNEL_NBR;<br />

––<br />

ing kind<br />

<strong>ST</strong>ATUS : out DBS_DEFINITIONS.T_DBS_ERROR );<br />

This operation sends an acknowledge to DBS in response to the follow-<br />

–– of commands :<br />

–– – ALLOCATE_FA_DRIVE<br />

–– – DEALLOCATE_FA_DRIVE<br />

–– – FREE_FA_FROM_AUTO_ARCH<br />

–– – ARCHIVE_FILE_LI<strong>ST</strong>_AA<br />

–– Parameters description :<br />

––<br />

operation).<br />

ACK_INFO : the acknowledge information to send back (status of the<br />

––<br />

to be sent.<br />

CHANNEL_NUMBER : number of the logical channel to which ACK_INFO has<br />

–– <strong>ST</strong>ATUS : informs the caller about the procedure completion :<br />

–– – OK : the acknowledge has been sent correctly.<br />

––<br />

DBS is broken.<br />

– DBS_COMMUNICATION_PROBLEM : the communication with<br />

––<br />

raised.<br />

– DBS_INTERNAL_PROBLEM : unexpected exception has been<br />

procedure SUPPLY_RESPONSE(<br />

ACK_INFO<br />

CHANNEL_NUMBER : in POSITIVE;<br />

: in DBS_DEFINITIONS.T_DBS_ERROR;<br />

RESPONSE_TYPE : in DBS_COMMS_DEFINITIONS.T_RESPONSE_TYPE;<br />

RESPONSE : in DBS_COMMS_DEFINITIONS.T_RESPONSE;<br />

<strong>ST</strong>ATUS : out DBS_DEFINITIONS.T_DBS_ERROR );<br />

–– This operation sends an acknowledge and a response to DBS in response to the<br />

–– following kind of messages:<br />

–– – RETRIEVE_FILE_LI<strong>ST</strong><br />

–– – ARCHIVE_FILE_LI<strong>ST</strong><br />

–– – EXPORT_TREE_LI<strong>ST</strong><br />

–– – IMPORT_TREE<br />

–– – RESERVE_FA_FOR_AUTO_ARCH<br />

–– Parameters description:<br />

–– ACK_INFO : acknowledge to supply<br />

–– CHANNEL_NUMBER : the addressee of the acknowledge and the response.<br />

–– RESPONSE_TYPE : type of the response.<br />

–– RESPONSE : the response.<br />

––<br />

completion :<br />

<strong>ST</strong>ATUS : informs the caller about the procedure<br />

–– – OK : the acknowledge has been correctly sent back.<br />

––<br />

broken.<br />

– DBS_COMMUNICATION_PROBLEM : the communication with DBS is<br />

––<br />

––<br />

– DBS_INTERNAL_PROBLEM : unexpected exception has been raised.<br />

procedure <strong>ST</strong>OP;<br />

–– This operation stops the communication between FA SAS and DBS.<br />

––<br />

DBS.<br />

This operation has to be used when receiving the stop command from<br />

–– After execution of this operation, the communicatoin between FA SAS<br />

––<br />

stopped.<br />

end DBS_API;<br />

cannot be reinitialised as every communictaion internal tasks are


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

485<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_DBS_TO_SAS_COMMAND<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package defines types and operations related to FA SAS commands issued<br />

–– by DBS.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME :VICOS<br />

–– PRODUCT NAME :DBS<br />

–– CI–NUMBER :1216 863<br />

–– OBJECT NAME :ADT_DBS_TO_SAS_COMMAND<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER :Sun / Verdix<br />

–– LANGUAGE :ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.1 at SBI ; DBS development<br />

–– creator: bcharlie (on host ariane5)<br />

–– creation date: 18.11.94 15:23:17<br />

–– ARCHIVE_TREE becomes ARCHIVE_LI<strong>ST</strong>_OF_FILES,<br />

–– RESERVE_FA_FOR_AUTO_ARCH + AA operations.<br />

––****************************************************************************<br />

––<br />

with DBS_DEFINITIONS;<br />

package ADT_DBS_TO_SAS_COMMAND is<br />

–– REMARK :<br />

–– A ’Tree’ can be either a directory structure or a file.<br />

–––––––––––––––––––––––––––––––––<br />

–– Provided types and constants :<br />

–––––––––––––––––––––––––––––––––<br />

type T_COMMAND_ALTERNATIVE is (<br />

UNDEFINED,<br />

ALLOCATE_FA_DRIVE,<br />

DEALLOCATE_FA_DRIVE,<br />

EXPORT_TREE_LI<strong>ST</strong>,<br />

IMPORT_TREE,<br />

ARCHIVE_FILE_LI<strong>ST</strong>,<br />

RETRIEVE_FILE_LI<strong>ST</strong>,<br />

RESERVE_FA_FOR_AUTO_ARCH,<br />

FREE_FA_FROM_AUTO_ARCH,<br />

ARCHIVE_FILE_LI<strong>ST</strong>_AA,<br />

<strong>ST</strong>OP);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

485 von/of: 662<br />

–– List of commands handled by the FA_SAS :<br />

–– – request to allocate an FA drive for the following operations:<br />

–– EXPORT_TREE_LI<strong>ST</strong>, IMPORT_TREE,<br />

–– ARCHIVE_FILE_LI<strong>ST</strong>, RETRIEVE_FILE_LI<strong>ST</strong>.<br />

–– The Allocation is requested before any of these 4 operations.<br />

–– – request to deallocate a previously allocated FA drive.<br />

–– The deallocation is requested after any of these 4 operations.<br />

–– – request to put a list of file trees on a single export medium.<br />

–– – request to get a file tree from a single FA medium.<br />

–– – request to put a list of files on multiple archive mediums.<br />

–– – request to get a list of files from a single archive medium.<br />

–– – request to reserve an FA device for Automatic Archiving;<br />

–– then this device is not accessible to other operations than<br />

–– FREE_FA_FROM_AUTO_ARCH, ARCHIVE_LI<strong>ST</strong>_OF_FILES_AA,<br />

–– <strong>ST</strong>OP.<br />

–– – request to free the FA device reserved for Automatic Archiving.<br />

–– – request to put a list of files on the archive medium reserved for


Space Infrastructure<br />

486<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

486 von/of: 662<br />

–– Automatic Archiving.<br />

––<br />

––<br />

– request the FA SAS to stop.<br />

––<br />

––<br />

REMARK :<br />

–– The FA services are grouped into 3 sets:<br />

–– – the operations of import/export,<br />

–– – the operations of archiving/retrieving,<br />

–– – the operations of Automatic Archiving.<br />

–– This separation allows the FA SAS to implement different labels on im/export disks<br />

–– and archiving/retrieving disks to increase efficiency of disk utilisation<br />

–– and to reserve a device for the automatic archiving.<br />

–– The operations EXPORT_TREE_LI<strong>ST</strong>, IMPORT_TREE and<br />

–– RETRIEVE_FILE_LI<strong>ST</strong> always access a single FA medium, but the operations<br />

–– ARCHIVE_FILE_LI<strong>ST</strong> and ARCHIVE_FILE_LI<strong>ST</strong>_AA could access multiple<br />

––<br />

––<br />

FA mediums if implemented by the FA–SAS.<br />

–– EXPORT_TREE_LI<strong>ST</strong> : The list of trees to export on a disk is contained in a file.<br />

–– This is a text file composed with the file name of each item of the list,<br />

–– one file name by line. The file name is the pathname of the tree<br />

–– (file or directory structure) relative to $VICOS_CEN_DBS_HOME.<br />

–– Example :<br />

–– File containing a filename and a path to a directory structure<br />

–– (export_tree_list):<br />

–– /EXECUTION/SESSION_1/RAW_DATA/TES_01/Raw_data_file.01<br />

–– /EXECUTION/SESSION_1/ENG_VAL<br />

–– RETRIEVE_FILE_LI<strong>ST</strong> : The list of files to retrieve from disk is contained in a file.<br />

–– This is a text file composed with the file name of each item of the list,<br />

–– one file name by line. The file name<br />

–– is the pathname of the file relative to $VICOS_CEN_DBS_HOME.<br />

–– Example :<br />

–– File containing two filenames (retrieve_file_list):<br />

–– /EXECUTION/SESSION_1/RAW_DATA/TES_01/Raw_data_file.01<br />

–– /EXECUTION/SESSION_1/ENG_VAL/EVL_TES02_dfet1234<br />

–– ARCHIVE_FILE_LI<strong>ST</strong> (ARCHIVE_FILE_LI<strong>ST</strong>_AA): The list of files to archive on<br />

–– FA mediums, is contained in a file.<br />

–– This is a text file composed with the file name of each item of the list,<br />

–– one file name by line.<br />

–– The file name is the pathname of the file relative to $VICOS_CEN_DBS_HOME.<br />

–– The list of the FA medium labels used to archive these files is given back<br />

–– in another file.<br />

–– This is a text file composed with the ID of the FA mediums corresponding to<br />

–– the files, one ID by line.<br />

–– Example :<br />

–– File containing a list of files and the file containing the<br />

–– corresponding Container ID list (archive_file_list):<br />

–– /EXECUTION/SESSION_1/RAW_DATA/TES_01/Raw_data_file.01<br />

–– /EXECUTION/SESSION_1/ENG_VAL/TES_12_EVL_adf1234<br />

––<br />

––<br />

/EXECUTION/SESSION_1/ENG_VAL/TES_04_EVL_asj4321<br />

–– ARCH_qwerty123456<br />

–– ARCH_qwerty123456<br />

–– ARCH_ytrewq654321<br />

MAX_NUMBER_OF_FA_DRIVE : constant NATURAL := 2;<br />

–– Maximum number of FA drives.<br />

subtype T_CHANNEL_NBR is NATURAL range 0..MAX_NUMBER_OF_FA_DRIVE;<br />

–– Definition of a logical channel number used by DBS to communicate with the FA_SAS.<br />

subtype T_CONTAINER_ID is DBS_DEFINITIONS.T_FILENAME;<br />

–– Reference of the data on a FA medium.<br />

type T_EXPORT_TREE_LI<strong>ST</strong>_DATA is record<br />

EXPORT_NAME : DBS_DEFINITIONS.T_TE<strong>ST</strong>_SESSION_NAME;<br />

LI<strong>ST</strong>_OF_TREES<br />

end record;<br />

: DBS_DEFINITIONS.T_FILENAME;<br />

–– Definition of the data of the EXPORT_TREE_LI<strong>ST</strong> command.<br />

–– EXPORT_NAME is the name of the exported data. This name will be used when importing.<br />

–– LI<strong>ST</strong>_OF_TREES is the name of the file containing the list of trees to export


Space Infrastructure<br />

487<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

487 von/of: 662<br />

––<br />

––<br />

(relative to $VICOS_CEN_DBS_HOME).<br />

type T_IMPORT_TREE_DATA is record<br />

EXPORT_NAME : DBS_DEFINITIONS.T_TE<strong>ST</strong>_SESSION_NAME;<br />

––<br />

TARGET_DIRECTORY : DBS_DEFINITIONS.T_FILENAME;<br />

end record;<br />

Definition of the data of the IMPORT_TREE command.<br />

–– EXPORT_NAME is the name of the exported data to import.<br />

–– TARGET_DIRECTORY is the pathname where the imported data will be put<br />

–– (relative to $VICOS_CEN_DBS_HOME).<br />

type T_RETRIEVE_FILE_LI<strong>ST</strong>_DATA is record<br />

CONTAINER_ID : T_CONTAINER_ID;<br />

FILE_LI<strong>ST</strong> : DBS_DEFINITIONS.T_FILENAME;<br />

––<br />

end record;<br />

Definition of the data of the RETRIEVE_LI<strong>ST</strong>_OF_FILES command.<br />

–– CONTAINER_ID is the reference of the FA medium.<br />

–– FILE_LI<strong>ST</strong> is the name of the file containing the list of files<br />

–– (relative to $VICOS_CEN_DBS_HOME).<br />

type T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA is record<br />

LI<strong>ST</strong>_OF_FILES : DBS_DEFINITIONS.T_FILENAME;<br />

LI<strong>ST</strong>_OF_CONTAINER_IDS : DBS_DEFINITIONS.T_FILENAME;<br />

––<br />

end record;<br />

Definition of the data of the ARCHIVE_FILE_LI<strong>ST</strong> command.<br />

–– LI<strong>ST</strong>_OF_FILES is the pathname of the file containing the list of files<br />

–– to archive (relative to $VICOS_CEN_DBS_HOME).<br />

–– LI<strong>ST</strong>_OF_CONTAINER_IDS is the pathname of the file that will contain<br />

–– the corresponding list of Container ID’s<br />

–– (relative to $VICOS_CEN_DBS_HOME).<br />

type T_COMMAND (COMMAND_ALTERNATIVE : T_COMMAND_ALTERNATIVE := UNDEFINED) is private;<br />

–– Definition of the command that is sent by DBS to the FA_SAS.<br />

NULL_CONTAINER_ID : constant T_CONTAINER_ID<br />

:= (LENGTH => 0, NAME => (others => ’ ’));<br />

–– Usefull null values.<br />

––––––––––––––––––––––––<br />

–– Provided operations :<br />

––––––––––––––––––––––––<br />

procedure SET_ALLOCATE_FA_DATA<br />

(OF_COMMAND : in out T_COMMAND ;<br />

COMMAND_DATA : in T_COMMAND_ALTERNATIVE);<br />

–– This operation initializes the ALLOCATE_FA_DRIVE data with the kind of operation<br />

–– for which a FA driver has to be reserved.<br />

procedure SET_<strong>ST</strong>OP_DATA<br />

(OF_COMMAND : in out T_COMMAND);<br />

–– This operation initializes the <strong>ST</strong>OP command.<br />

procedure SET_DEALLOCATE_FA_DATA<br />

(OF_COMMAND : in out T_COMMAND;<br />

COMMAND_DATA : in T_COMMAND_ALTERNATIVE);<br />

–– This operation initializes the DEALLOCATE_FA_DRIVE data with the kind of operation<br />

–– for which the previously reserved FA driver has to be deallocated.<br />

procedure SET_EXPORT_TREE_LI<strong>ST</strong>_DATA<br />

(OF_COMMAND : in out T_COMMAND;<br />

COMMAND_DATA : in T_EXPORT_TREE_LI<strong>ST</strong>_DATA);<br />

–– This operation initializes the EXPORT_TREE_LI<strong>ST</strong> data with the list of directories to<br />

–– put on the FA medium and the associated name.<br />

procedure SET_IMPORT_TREE_DATA<br />

(OF_COMMAND : in out T_COMMAND;<br />

COMMAND_DATA : in T_IMPORT_TREE_DATA);<br />

–– This operation initializes the IMPORT_TREE data with the name of the exported data<br />

–– to get from the FA medium and the destination directory.<br />

procedure SET_RETRIEVE_FILE_LI<strong>ST</strong>_DATA<br />

(OF_COMMAND : in out T_COMMAND;<br />

COMMAND_DATA : in T_RETRIEVE_FILE_LI<strong>ST</strong>_DATA);


Space Infrastructure<br />

488<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

488 von/of: 662<br />

–– This operation initializes the RETRIEVE_FILE_LI<strong>ST</strong> data with the identification<br />

–– of the file containing the list of the files to retrieve and the reference of<br />

–– the data on the FA medium.<br />

procedure SET_ARCHIVE_FILE_LI<strong>ST</strong>_DATA<br />

(OF_COMMAND : in out T_COMMAND ;<br />

COMMAND_DATA : in T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA);<br />

–– This operation initializes the ARCHIVE_FILE_LI<strong>ST</strong> data with the pathname of the file<br />

–– containing the list of files to archive (relative to $VICOS_CEN_DBS_HOME) and the<br />

–– pathname of file that will contain the corresponding Container ID list.<br />

procedure SET_RESERVE_FA_FOR_AUTO_ARCH_DATA<br />

(OF_COMMAND : in out T_COMMAND);<br />

–– This operation initializes the RESERVE_FA_FOR_AUTO_ARCH command.<br />

procedure SET_FREE_FA_FROM_AUTO_ARCH_DATA<br />

(OF_COMMAND : in out T_COMMAND);<br />

–– This operation initializes the FREE_FA_FROM_AUTO_ARCH command.<br />

procedure SET_ARCHIVE_FILE_LI<strong>ST</strong>_AA_DATA<br />

(OF_COMMAND : in out T_COMMAND ;<br />

COMMAND_DATA : in T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA);<br />

–– This operation initializes the ARCHIVE_FILE_LI<strong>ST</strong>_AA data with the pathname of the<br />

–– file containing the list of files to archive (relative to $VICOS_CEN_DBS_HOME) and<br />

–– the pathname of file that will contain the corresponding Container ID list.<br />

function COMMAND_ALTERNATIVE<br />

(COMMAND : in T_COMMAND) return T_COMMAND_ALTERNATIVE;<br />

–– This operation returns the type of the given command.<br />

function GET_ALLOCATE_FA_DATA<br />

(COMMAND : in T_COMMAND) return T_COMMAND_ALTERNATIVE;<br />

–– This operation returns the kind of operation associated to an<br />

–– ALLOCATE_FA_DRIVE command.<br />

function GET_DEALLOCATE_FA_DATA<br />

(COMMAND : in T_COMMAND) return T_COMMAND_ALTERNATIVE;<br />

–– This operation returns the kind of operation associated to an<br />

–– DEALLOCATE_FA_DRIVE command.<br />

function GET_EXPORT_TREE_LI<strong>ST</strong>_DATA<br />

(COMMAND : in T_COMMAND) return T_EXPORT_TREE_LI<strong>ST</strong>_DATA;<br />

–– This operation returns the list of directories associated to an EXPORT_TREE_LI<strong>ST</strong><br />

–– command and the name of the data to export.<br />

function GET_IMPORT_TREE_DATA<br />

(COMMAND : in T_COMMAND) return T_IMPORT_TREE_DATA;<br />

–– This operation returns the name of the data to extract and the<br />

–– destination pathname.<br />

function GET_RETRIEVE_FILE_LI<strong>ST</strong>_DATA<br />

(COMMAND : in T_COMMAND) return T_RETRIEVE_FILE_LI<strong>ST</strong>_DATA;<br />

–– This operation returns the location on the FA medium and the name<br />

–– of the file to extract and the destination pathname.<br />

function GET_ARCHIVE_FILE_LI<strong>ST</strong>_DATA<br />

(COMMAND : in T_COMMAND) return T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA;<br />

–– This operation returns a record with the identification of the file containing the<br />

–– list of files to archive and the identification of the file where to write the list<br />

–– of corresponding Container ID’s.<br />

function GET_ARCHIVE_FILE_LI<strong>ST</strong>_AA_DATA<br />

(COMMAND : in T_COMMAND) return T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA;<br />

–– This operation returns a record with the identification of the file containing the<br />

–– list of files to archive and the identification of the file where to write the list<br />

–– of corresponding Container ID’s.<br />

––––––––––––––––––––––––<br />

–– Provided exceptions :<br />

––––––––––––––––––––––––<br />

COMMAND_TYPE_MISMATCH : exception;


Space Infrastructure<br />

489<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

489 von/of: 662<br />

–– This exception is raised when an operation is called on a command that<br />

–– does not have the correct alternative.<br />

––<br />

private<br />

type T_COMMAND (COMMAND_ALTERNATIVE : T_COMMAND_ALTERNATIVE := UNDEFINED) is record<br />

case COMMAND_ALTERNATIVE is<br />

when ALLOCATE_FA_DRIVE => ALLOCATE_DATA : T_COMMAND_ALTERNATIVE;<br />

when DEALLOCATE_FA_DRIVE => DEALLOCATE_DATA : T_COMMAND_ALTERNATIVE;<br />

when EXPORT_TREE_LI<strong>ST</strong> => EXPORT_TREE_LI<strong>ST</strong>_DATA :<br />

T_EXPORT_TREE_LI<strong>ST</strong>_DATA;<br />

when IMPORT_TREE => IMPORT_TREE_DATA :<br />

T_IMPORT_TREE_DATA;<br />

when ARCHIVE_FILE_LI<strong>ST</strong> => ARCHIVE_FILE_LI<strong>ST</strong>_DATA :<br />

T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA;<br />

when RETRIEVE_FILE_LI<strong>ST</strong> => RETRIEVE_FILE_LI<strong>ST</strong>_DATA :<br />

T_RETRIEVE_FILE_LI<strong>ST</strong>_DATA;<br />

when RESERVE_FA_FOR_AUTO_ARCH => null;<br />

when FREE_FA_FROM_AUTO_ARCH => null;<br />

when ARCHIVE_FILE_LI<strong>ST</strong>_AA => ARCHIVE_FILE_LI<strong>ST</strong>_AA_DATA :<br />

T_ARCHIVE_FILE_LI<strong>ST</strong>_DATA;<br />

when <strong>ST</strong>OP => null;<br />

when UNDEFINED => null;<br />

end case;<br />

end record;<br />

–– Definition of the command that is sent by DBS to the FA_SAS.<br />

end ADT_DBS_TO_SAS_COMMAND;


Space Infrastructure<br />

7.13 TEV Types and Constants Definitions<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

490 von/of: 662<br />

A same set of data types are used in the various procedural interfaces provided by the TEV product. In order<br />

to ensure the consistency of their definition and usage through all the interfaces, they are grouped and defined<br />

once, in the current section.<br />

They are ”basic” data types and constants (like numbers, strings, enumerations...) which are accessible directly.<br />

They constitute a type pool and are grouped into a set of Ada packages, according to their nature.<br />

The usage of the basic data types is simple. The desired variable has to be declared with the desired type in the<br />

piece of software which will use it. The access to the content of the variable is done directly, by knowledge of<br />

its Ada structure.<br />

The TEV_DEFINITIONS package contains type and constant definitions that are :<br />

. specific of TEV, i.e. not used or shared by several <strong>CGS</strong> products,<br />

. common in TEV, i.e. used or shared by several TEV provided services,<br />

. of general nature, i.e. not specific to any of these services.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

491 von/of: 662<br />

––<br />

–– TEV_DEFINITIONS<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This object provides common types needed by<br />

–– the evaluation definitions objects.<br />

–– cf. COMMON SERVICES product architecture<br />

––<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : TEV_DEFINITIONS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at DASA<br />

–– creator: Bruening<br />

–– creation date: 21.10.99<br />

–– comment:<br />

–– Correct mapping of MPS_DEFINITIONS.T_ITEM_TYPE to T_MEASUREMENT_ALTERNATIVES.<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at DASA<br />

–– creator: Bruening<br />

–– creation date: 06.09.99<br />

–– comment:<br />

–– New types used for the merge ADT_DATA_SET/ADT_EVENT_RESULT tool<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> V4.2 <strong>ICD</strong> Change 27.07.99, W.Tammen:<br />

–– removed with–clauses for <strong>ST</strong>RING_UTILITIES and TEV_<strong>ST</strong>RING_UTILITIES<br />

–– (simply not used)<br />

–– according to COL–RIBRE–IRN–<strong>CGS</strong>–8078<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at DASA<br />

–– creator: Bruening<br />

–– creation date: 03.05.99<br />

–– comment:<br />

–– New type T_SID_PATHNAME to handle working lists of SID–pathname<br />

–– to avoid asking several times MDB for a pathname<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with FILE_MANAGEMENT;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with VICOS_LI<strong>ST</strong>;<br />

––(V3) with DBS_DEFINITIONS;<br />

with MPS_DEFINITIONS;<br />

with ADT_ENGINEERING_VALUE;<br />

with VICOS_DEFINITIONS;<br />

with ADT_RAW_VALUE;<br />

with C_<strong>ST</strong>RINGS; ––rhn Modification SPR_2886 24/01/97<br />

with U_ENV; ––rhn Modification SPR_2886 24/01/97


Space Infrastructure<br />

package TEV_DEFINITIONS is<br />

–– Provided types and constants :<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

492 von/of: 662<br />

–– RHN Begin of Modification SPR_2886 24/01/97<br />

–– ROOT_TMP_NAME : constant string := ”/tmp/tev_tmp”;<br />

––<br />

TEV_HOME_ENV_NAME : constant <strong>ST</strong>RING := ”TEV_HOME”;<br />

TEV_HOME_VAR_ENV_NAME : constant <strong>ST</strong>RING :=<br />

C_<strong>ST</strong>RINGS.TO_<strong>ST</strong>RING(U_ENV.Getenv(C_<strong>ST</strong>RINGS.To_C(TEV_HOME_ENV_NAME)));<br />

ROOT_TMP_NAME : constant <strong>ST</strong>RING := FILE_MANAGEMENT.GET_TEMP_DIRECTORY & ”/tev_tmp”;<br />

–– End of Modification SPR_2886<br />

–– prefix file name for temporary files<br />

TASK_SCHEDULING_TIME : constant duration := 0.001;<br />

–– delay needed to allow scheduling of other tasks : 1 milliseconds<br />

–– should be used in (at least) all EXECUTE operations<br />

subtype T_TOOL_ID is POSITIVE range 1 .. 4;<br />

–– possible instance number of each tool<br />

type T_PRINTER is (LASER_PRINTER1, LASER_PRINTER2);<br />

–– defines the available printers<br />

HEADER_SPACE : constant NATURAL := 6;<br />

PORTRAIT_PAGE_LENGTH : constant := 60;<br />

LANDSCAPE_PAGE_LENGTH : constant := 50;<br />

PORTRAIT_PAGE_WIDTH : constant := 80;<br />

LANDSCAPE_PAGE_WIDTH : constant := 140;<br />

LEFT_MARGIN : constant := 10;<br />

–– constants needed to fix page layout for format operation<br />

type T_FILE_TYPE is (TRDB_RES, WD_RES, WD_DEF);<br />

–– possible types of TEV file<br />

subtype T_WD_FILE_TYPE is T_FILE_TYPE range WD_RES .. WD_DEF;<br />

–– possible types of TEV WD file<br />

subtype T_FILE_NAME_RANGE is POSITIVE range<br />

1 .. VICOS_DEFINITIONS.MAX_NAME_LENGTH;<br />

subtype T_FILE_NAME is <strong>ST</strong>RING(T_FILE_NAME_RANGE);<br />

–– description of a filename<br />

subtype T_RESULT_NAME is T_FILE_NAME;<br />

–– description of a result filename<br />

subtype T_DEFINITION_NAME_RANGE is T_FILE_NAME_RANGE;<br />

subtype T_DEFINITION_NAME is T_FILE_NAME;<br />

–– description of a definition filename<br />

type T_TIME_FRAME is<br />

record<br />

BEGIN_DATE_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

END_DATE_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

end record;<br />

–– time frame<br />

MAX_LENGTH_OF_ENVIRONMENT_VARIABLE_NAME : constant POSITIVE := 255;<br />

NULL_TIME_FRAME : constant T_TIME_FRAME :=<br />

(BEGIN_DATE_TIME => <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME,<br />

END_DATE_TIME => <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME);<br />

–– null time frame<br />

subtype T_DIRECTORY is<br />

<strong>ST</strong>RING(1 .. MAX_LENGTH_OF_ENVIRONMENT_VARIABLE_NAME);<br />

–– description of a directory name<br />

NULL_RESULT_NAME : constant T_RESULT_NAME := (others => ’ ’);<br />

–– null result filename<br />

NULL_DEFINITION_NAME : constant T_DEFINITION_NAME := (others => ’ ’);<br />

–– null definition filename


Space Infrastructure<br />

––(V3) subtype T_TABLE_NAME is DBS_DEFINITIONS.T_TABLE_NAME;<br />

subtype T_TABLE_NAME is string(1..20);<br />

–– description of a user result table name<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––(V3) NULL_TABLE_NAME : constant T_TABLE_NAME := DBS_DEFINITIONS.NULL_TABLE_NAME;<br />

NULL_TABLE_NAME : constant T_TABLE_NAME := (others => ’ ’);<br />

–– null table name<br />

MAX_NUMBER_OF_TABLE_IN_DEF : constant positive := 50;<br />

–– maximum number of table names in a user result table definition<br />

type T_TABLE_NAME_ARRAY is array (positive range ) of T_TABLE_NAME;<br />

–– array of table names<br />

NULL_TABLE_NAME_ARRAY : constant T_TABLE_NAME_ARRAY :=<br />

NULL_TABLE_NAME);<br />

–– null array of table names<br />

type T_RESULT_SOURCE is (WORKING_DIR, TRDB);<br />

–– source of evaluation result file<br />

type T_RESULT_REF is<br />

record<br />

RESULT_NAME : T_RESULT_NAME;<br />

RESULT_SOURCE : T_RESULT_SOURCE;<br />

end record;<br />

type T_TOOL_ALTERNATIVES is (<br />

–– types of tool managed in TEV<br />

EVENTS_LOGGING,<br />

RAW_DATA_DUMP,<br />

USER_RESULT_TABLE,<br />

DATA_SET_GENERATION,<br />

<strong>ST</strong>ATI<strong>ST</strong>ICS_GENERATION,<br />

DATA_LI<strong>ST</strong>ING,<br />

GRAPH_DISPLAY,<br />

REPORT_GENERATION,<br />

SAS);<br />

subtype T_FILE_ALTERNATIVES_IN_REPORT is<br />

T_TOOL_ALTERNATIVES range EVENTS_LOGGING .. GRAPH_DISPLAY;<br />

–– types of evaluation result file in a report<br />

type T_EVALUATION_DEFINITION_ALTERNATIVES is (<br />

type T_MEASUREMENT_ALTERNATIVES is (<br />

–– EGSE specific types<br />

–– measurements:<br />

EGSE_INTEGER_MEASUREMENT,<br />

EGSE_FLOAT_MEASUREMENT,<br />

EGSE_DISCRETE_MEASUREMENT,<br />

EGSE_BYTE_<strong>ST</strong>REAM_MEASUREMENT,<br />

EGSE_INTEGER_SW_VARIABLE,<br />

EGSE_FLOAT_SW_VARIABLE,<br />

EGSE_DISCRETE_SW_VARIABLE,<br />

EGSE_BYTE_<strong>ST</strong>REAM_SW_VARIABLE,<br />

–– derived values:<br />

EGSE_INTEGER_DERIVED_VALUE,<br />

EGSE_FLOAT_DERIVED_VALUE,<br />

EGSE_DISCRETE_DERIVED_VALUE,<br />

EGSE_<strong>ST</strong>RING_DERIVED_VALUE);<br />

–– Possible types of parameters in the data set<br />

type T_PARAMETER_VALUE is<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

493 von/of: 662<br />

(1..1 =><br />

RAW_DATA_DEFINITION,<br />

EVENT_DEFINITION,<br />

DATA_SET_DEFINITION,<br />

DATA_LI<strong>ST</strong>ING_DEFINITION,<br />

<strong>ST</strong>ATI<strong>ST</strong>ICS_DEFINITION,<br />

GRAPH_DEFINITION);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

record<br />

LT_TIME_TAG : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SMT_TIME_TAG : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

ENGINEERING_VALUE : ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE;<br />

RAW_VALUE : ADT_RAW_VALUE.T_RAW_VALUE;<br />

end record;<br />

–– definition of a value inside the data set<br />

–– * –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– * types used for the merge ADT_DATA_SET/ADT_EVENT_RESULT tool<br />

–– * –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_TWO_TIME is<br />

record<br />

ORDERING_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SECOND_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

end record;<br />

–– * Pointer in the ADT_DATA_SET result file of the next value to<br />

–– * read, for each parameter defined in the current data set<br />

type T_POSITION_IN_LI<strong>ST</strong>ING is array(INTEGER range ) of NATURAL;<br />

–– * List of engineering values for each parameter, without VICOS_LI<strong>ST</strong><br />

type T_PARAMETER_VALUES is array(NATURAL range ) of T_PARAMETER_VALUE;<br />

–– * –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_EVALUATION_RESULT_FILE is<br />

record<br />

RESULT_FILE_INFO : T_RESULT_REF;<br />

RESULT_TYPE : T_TOOL_ALTERNATIVES;<br />

end record;<br />

–– description and location of evaluation result file<br />

NULL_RESULT_REF : constant T_RESULT_REF :=<br />

(RESULT_NAME => (others => ’ ’),<br />

RESULT_SOURCE => WORKING_DIR);<br />

–– null result reference<br />

MAX_NUMBER_OF_PARAMETERS_IN_DEF : constant INTEGER := 50;<br />

–– maximum number of parameters in an evaluation definition<br />

subtype T_PARAMETERS_RANGE is POSITIVE range 1 .. MAX_NUMBER_OF_PARAMETERS_IN_DEF;<br />

–– number of parameters<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

494 von/of: 662<br />

subtype T_PARAMETER_NAME_RANGE is<br />

POSITIVE range 1 .. VICOS_DEFINITIONS.MAX_LENGTH_OF_DB_PATHNAME;<br />

subtype T_PARAMETER_NAME is <strong>ST</strong>RING(T_PARAMETER_NAME_RANGE);<br />

–– description of a parameter name<br />

NULL_PARAMETER_NAME : constant T_PARAMETER_NAME := (others => ’ ’);<br />

MAX_NUMBER_OF_PARAMETERS_IN_LI<strong>ST</strong>ING : constant INTEGER := 10;<br />

type T_PARAMETER_NAMES is array(POSITIVE range ) of T_PARAMETER_NAME;<br />

type T_PARAMETER_NAME_ARRAY is array(POSITIVE range ) of T_PARAMETER_NAME;<br />

subtype T_PRODUCER_NAME_RANGE is<br />

POSITIVE range 1 .. VICOS_DEFINITIONS.MAX_NAME_LENGTH;<br />

subtype T_PRODUCER_NAME is <strong>ST</strong>RING(T_PRODUCER_NAME_RANGE);<br />

–– description of producer name<br />

NULL_LI<strong>ST</strong>ING_PARAMETERS : constant T_PARAMETER_NAMES(1 .. MAX_NUMBER_OF_PARAMETERS_IN_LI<strong>ST</strong>ING)<br />

–– null parameters for listing<br />

:= (others => NULL_PARAMETER_NAME);<br />

NULL_PARAMETERS : constant T_PARAMETER_NAMES(1 .. MAX_NUMBER_OF_PARAMETERS_IN_DEF)<br />

:= (others => NULL_PARAMETER_NAME);<br />

–– null parameters<br />

NULL_PRODUCER_NAME : constant T_PRODUCER_NAME := (others => ’ ’);<br />

subtype T_COMPLETE_FILENAME_RANGE is<br />

POSITIVE range 1 .. VICOS_DEFINITIONS.MAX_LENGTH_OF_FILE_NAME;<br />

subtype T_COMPLETE_FILENAME is <strong>ST</strong>RING(T_COMPLETE_FILENAME_RANGE);<br />

–– description of complete filename


Space Infrastructure<br />

subtype T_EVENT_GROUP is VICOS_DEFINITIONS.T_LOG_GROUP;<br />

–– Type of a log event group<br />

subtype T_EVENT_TYPE is VICOS_DEFINITIONS.T_LOG_TYPE;<br />

–– Type of log event type<br />

subtype T_SHORT_TEXT is VICOS_DEFINITIONS.T_LOG_TEXT_SHORT;<br />

–– Type of short text of a log event<br />

subtype T_LONG_TEXT is VICOS_DEFINITIONS.T_LOG_TEXT_LONG;<br />

–– Type of short text of a log event<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

495 von/of: 662<br />

NULL_TEV_ENGINEERING_UNIT : constant<br />

MPS_DEFINITIONS.T_ENGINEERING_UNIT := (<br />

EXPRESSION => MPS_DEFINITIONS.<strong>ST</strong>ATIC_<strong>ST</strong>RING80(<br />

MPS_DEFINITIONS.<strong>ST</strong>ATIC_<strong>ST</strong>RINGS80.<strong>ST</strong>ATIC(” ”)),<br />

UNIT => MPS_DEFINITIONS.BASE_UNITS.NO_UNIT);<br />

–– null engineering unit record<br />

NULL_COMPLETE_FILENAME : constant T_COMPLETE_FILENAME := (others => ’ ’);<br />

NULL_FILENAME : constant T_COMPLETE_FILENAME := (others => ’ ’); –– (old V2 definition)<br />

–– null complete filename<br />

NULL_EVENT_GROUP : constant T_EVENT_GROUP := (others => ’ ’);<br />

–– null log group for events selection criteria<br />

NULL_LOG_TYPE : constant T_EVENT_TYPE := (others => ’ ’);<br />

–– null log type for events selection criteria<br />

NULL_LOG_TEXT_SHORT : constant T_SHORT_TEXT := (others => ’ ’);<br />

–– null short text for events log<br />

NULL_LOG_TEXT_LONG : constant T_LONG_TEXT := (others => ’ ’);<br />

–– null long text description for events log<br />

DEFAULT_LONG_TEXT_FLAG : constant BOOLEAN := FALSE;<br />

–– default value of the long text flag<br />

MAX_SELECTION_CRITERIA : constant POSITIVE := 4;<br />

–– Maximum number of normal selection criteria to be combined.<br />

MAX_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R : constant POSITIVE := 3;<br />

–– The maximal version number (999) in string format<br />

subtype T_SELECTION_CRITERIA_RANGE is<br />

NATURAL range 1 .. MAX_SELECTION_CRITERIA;<br />

–– definition of combined selection criteria range<br />

subtype T_SESSION_NAME_RANGE is POSITIVE<br />

range 1 .. VICOS_DEFINITIONS.MAX_NAME_LENGTH;<br />

subtype T_SESSION_NAME is <strong>ST</strong>RING(T_SESSION_NAME_RANGE);<br />

–– description of session name<br />

type T_SESSION_NAME_ARRAY is array (positive range ) of T_SESSION_NAME;<br />

–– array of session names<br />

––(V3) subtype T_SESSION_PURPOSE is DBS_DEFINITIONS.T_SESSION_INFO_TEXT;<br />

subtype T_SESSION_PURPOSE is string(1..80);<br />

–– Type of a purpose field related to an Execution Session Info<br />

––(V3) subtype T_CREATOR is DBS_DEFINITIONS.T_SESSION_INFO_TEXT;<br />

subtype T_CREATOR is string(1..80);<br />

–– Type of a creator field related to an Execution Session Info<br />

––(V3) subtype T_OWNER is DBS_DEFINITIONS.T_USER_NAME;<br />

subtype T_OWNER is string(1..80);<br />

–– Type of a owner field related to an Execution Session Info<br />

subtype T_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R is<br />

<strong>ST</strong>RING(1 .. TEV_DEFINITIONS.MAX_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R);<br />

–– type for the version of a system tree<br />

subtype T_ELEMENT_CONFIGURATION_NAME is MPS_DEFINITIONS.T_ELEMENT_CONFIGURATION_NAME;


Space Infrastructure<br />

’);<br />

–– type for the name of an element configuration<br />

subtype T_MISSION_NAME is MPS_DEFINITIONS.T_MISSION_NAME;<br />

–– type for a mission name<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

496 von/of: 662<br />

subtype T_CCU_SY<strong>ST</strong>EM_TREE_PATHNAME_<strong>ST</strong>R is<br />

<strong>ST</strong>RING(1 .. VICOS_DEFINITIONS.MAX_LENGTH_OF_DB_PATHNAME);<br />

–– type for the pathanme of CCU system tree<br />

subtype T_CCU_CONFIGURATION_NAME is MPS_DEFINITIONS.T_CONFIGURATION_NAME;<br />

–– type of the name of a CCU configuration<br />

type T_CCU_VERSION_<strong>ST</strong>R is<br />

record<br />

VERSION : T_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R;<br />

ISSUE : T_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R;<br />

REVISION : T_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R;<br />

end record;<br />

–– string type for the CCU version<br />

type T_CCU_INFO_<strong>ST</strong>R is<br />

record<br />

ELEMENT_CONFIGURATION_NAME : T_ELEMENT_CONFIGURATION_NAME;<br />

MISSION_NAME : T_MISSION_NAME;<br />

SY<strong>ST</strong>EM_TREE_VERSION_NUMBER : T_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R;<br />

CCU_SY<strong>ST</strong>EM_TREE_PATHNAME : T_CCU_SY<strong>ST</strong>EM_TREE_PATHNAME_<strong>ST</strong>R;<br />

CCU_CONFIGURATION_NAME : T_CCU_CONFIGURATION_NAME;<br />

CCU_VERSION : T_CCU_VERSION_<strong>ST</strong>R;<br />

end record;<br />

–– Type of a CCU info in string format<br />

DEFAULT_SELECTION_CRITERIA_NB : constant POSITIVE := MAX_SELECTION_CRITERIA;<br />

NULL_SESSION_NAME : constant T_SESSION_NAME := (others => ’ ’);<br />

MAX_NUMBER_OF_SESSIONS_IN_DEF : constant INTEGER := 10;<br />

–– maximum number of execution sessions initialised in definition<br />

MAX_TITLE_LENGTH : constant POSITIVE := 50;<br />

–– maximum length of title<br />

MAX_TE<strong>ST</strong>_PLAN_LENGTH : constant POSITIVE := 50;<br />

–– maximum length of test plan<br />

MAX_TEV_USER_NAME : constant POSITIVE := 80;<br />

–– maximum length of tev user name<br />

NULL_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R : constant T_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R := ” 0”;<br />

–– Null value of a system tree<br />

NULL_ELEMENT_CONFIGURATION_NAME : constant T_ELEMENT_CONFIGURATION_NAME := (others => ’ ’);<br />

–– Null value of an element configuration<br />

NULL_MISSION_NAME : constant T_MISSION_NAME := (others => ’ ’);<br />

–– Null value of a mission name<br />

NULL_CCU_SY<strong>ST</strong>EM_TREE_PATHNAME_<strong>ST</strong>R : constant T_CCU_SY<strong>ST</strong>EM_TREE_PATHNAME_<strong>ST</strong>R := (others => ’<br />

–– Null value of a pathanme of CCU system tree<br />

NULL_CCU_CONFIGURATION_NAME : constant T_CCU_CONFIGURATION_NAME := (others => ’ ’);<br />

–– Null value of a name of a CCU configuration<br />

NULL_CCU_VERSION_<strong>ST</strong>R : constant T_CCU_VERSION_<strong>ST</strong>R :=<br />

(VERSION => NULL_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R,<br />

ISSUE => NULL_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R,<br />

REVISION => NULL_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R);<br />

–– Null value of a system tree<br />

NULL_CCU_INFO_<strong>ST</strong>R : constant T_CCU_INFO_<strong>ST</strong>R :=<br />

(ELEMENT_CONFIGURATION_NAME => NULL_ELEMENT_CONFIGURATION_NAME,<br />

MISSION_NAME => NULL_MISSION_NAME,<br />

SY<strong>ST</strong>EM_TREE_VERSION_NUMBER => NULL_SY<strong>ST</strong>EM_TREE_VERSION_NUMBER_<strong>ST</strong>R,<br />

CCU_SY<strong>ST</strong>EM_TREE_PATHNAME => NULL_CCU_SY<strong>ST</strong>EM_TREE_PATHNAME_<strong>ST</strong>R,<br />

CCU_CONFIGURATION_NAME => NULL_CCU_CONFIGURATION_NAME,


Space Infrastructure<br />

CCU_VERSION => NULL_CCU_VERSION_<strong>ST</strong>R);<br />

–– Null value of a CCU Info record<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

subtype T_SESSIONS_RANGE is POSITIVE range 1 .. MAX_NUMBER_OF_SESSIONS_IN_DEF;<br />

–– number of sessions<br />

type T_DEFINITION_SESSION_NAMES is array(POSITIVE range ) of T_SESSION_NAME;<br />

–– array of execution sessions used to initialise<br />

type T_ACCESS_<strong>ST</strong>ATUS is (READ, WRITE);<br />

–– access status used to open a file<br />

type T_CURRENT_<strong>ST</strong>ATUS is (OPENED, CLOSED);<br />

–– status of the file<br />

type T_SOURCE_FILE_TYPE is (ARCHIVED_FILE, ENG_LOG_FILE);<br />

–– type of source file<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

497 von/of: 662<br />

–– * ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– * New strings for the merge ADT_EVENT_RESULT/ADT_DATA_SET tool<br />

–– * ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

EVENT_DEFINITION_<strong>ST</strong>R_DELIMITER : constant string := ”EVENT DEFINITION”;<br />

EV_DEFINITION_<strong>ST</strong>R_UNDERLINE : constant string :=<br />

(EVENT_DEFINITION_<strong>ST</strong>R_DELIMITER’range => ’=’);<br />

DATA_SET_DEFINITION_<strong>ST</strong>R_DELIMITER : constant string := ”DATA SET DEFINITION”;<br />

DS_DEFINITION_<strong>ST</strong>R_UNDERLINE : constant string :=<br />

(DATA_SET_DEFINITION_<strong>ST</strong>R_DELIMITER’range => ’=’);<br />

–– * ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

DEFINITION_<strong>ST</strong>R_DELIMITER : constant string := ”1) DEFINITION”;<br />

DEFINITION_<strong>ST</strong>R_UNDERLINE : constant string := (DEFINITION_<strong>ST</strong>R_DELIMITER’range => ’=’);<br />

RESULT_<strong>ST</strong>R_DELIMITER : constant string := ”2) RESULT”;<br />

RESULT_<strong>ST</strong>R_UNDERLINE : constant string := (RESULT_<strong>ST</strong>R_DELIMITER’range => ’=’);<br />

–– delimiter of definition and result parts in a result file<br />

subtype T_TITLE is string(1..PORTRAIT_PAGE_WIDTH);<br />

–– title description<br />

subtype T_PORTRAIT_HEADER_LINE is string(1..PORTRAIT_PAGE_WIDTH);<br />

type T_PORTRAIT_HEADER is array(positive range ) of T_PORTRAIT_HEADER_LINE;<br />

subtype T_LANDSCAPE_HEADER_LINE is string(1..LANDSCAPE_PAGE_WIDTH);<br />

type T_LANDSCAPE_HEADER is array(positive range ) of T_LANDSCAPE_HEADER_LINE;<br />

–– header descriptions<br />

subtype T_TE<strong>ST</strong>_PLAN is <strong>ST</strong>RING(1 .. MAX_TE<strong>ST</strong>_PLAN_LENGTH);<br />

–– test plan<br />

subtype T_TEV_USER is <strong>ST</strong>RING(1 .. MAX_TEV_USER_NAME);<br />

–– tev user description<br />

subtype T_TIME_<strong>ST</strong>R is <strong>ST</strong>RING(1 .. 12);<br />

–– string definition of time<br />

subtype T_DATE_<strong>ST</strong>R is <strong>ST</strong>RING(1 .. 8);<br />

–– string date definition<br />

subtype T_DATE_TIME_<strong>ST</strong>R is <strong>ST</strong>RING(1 .. 21);<br />

–– string date and time definition<br />

type T_TIME_FRAME_<strong>ST</strong>R is<br />

record<br />

BEGIN_DATE_TIME : T_DATE_TIME_<strong>ST</strong>R;<br />

END_DATE_TIME : T_DATE_TIME_<strong>ST</strong>R;<br />

end record;<br />

–– string definition of time frame<br />

NULL_TITLE : constant T_TITLE := (others => ’ ’);<br />

–– null title string<br />

NULL_TE<strong>ST</strong>_PLAN : constant T_TE<strong>ST</strong>_PLAN := (others => ’ ’);<br />

–– null test plan string


Space Infrastructure<br />

NULL_DATE_<strong>ST</strong>R : constant T_DATE_<strong>ST</strong>R := (others => ’ ’);<br />

–– null date string definition<br />

NULL_TIME_<strong>ST</strong>R : constant T_DATE_<strong>ST</strong>R := (others => ’ ’);<br />

–– null time string definition<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

NULL_DATE_TIME_<strong>ST</strong>R : constant T_DATE_TIME_<strong>ST</strong>R := (others => ’ ’);<br />

–– null date and time string definition<br />

NULL_TIME_FRAME_<strong>ST</strong>R : constant T_TIME_FRAME_<strong>ST</strong>R :=<br />

(BEGIN_DATE_TIME => NULL_DATE_TIME_<strong>ST</strong>R,<br />

END_DATE_TIME => NULL_DATE_TIME_<strong>ST</strong>R);<br />

–– null time frame string definition<br />

subtype T_PACKET_BYTES_LINE is POSITIVE;<br />

–– number of bytes per line for packets<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

498 von/of: 662<br />

subtype T_PACKET_PATHNAME is <strong>ST</strong>RING(1 .. VICOS_DEFINITIONS.MAX_LENGTH_OF_DB_PATHNAME);<br />

–– packet pathname<br />

type T_PACKET_FORMAT is (DECIMAL, HEXADECIMAL, ASCII);<br />

–– packet format<br />

type T_PACKET_TYPE is (ADU, GDU, ADUS, GDUS, ALL_ADUS_GDUS, NO_CHOICE);<br />

–– characteristic of packet selection criteria<br />

type T_PACKET_DESCRIPTOR(CHOICE : T_PACKET_TYPE := ADUS) is record<br />

case CHOICE is<br />

when ADU | GDU => PATH : T_PACKET_PATHNAME;<br />

when others => null;<br />

end case;<br />

end record;<br />

–– Definition of a packet descriptor<br />

type T_SAMPLING_TYPE is (N_SAMPLING,<br />

TIME_BASED_SAMPLING,<br />

MERGE);<br />

–– sampling type in data sets<br />

type T_SAMPLING_<strong>ST</strong>R(SAMPLING_TYPE : T_SAMPLING_TYPE := N_SAMPLING) is<br />

record<br />

case SAMPLING_TYPE is<br />

when N_SAMPLING =><br />

RESOLUTION : NATURAL := 1;<br />

when TIME_BASED_SAMPLING =><br />

DELTA_T : T_TIME_<strong>ST</strong>R;<br />

EPSILON : T_TIME_<strong>ST</strong>R;<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

type T_SAMPLING(SAMPLING_TYPE : T_SAMPLING_TYPE := N_SAMPLING) is record<br />

case SAMPLING_TYPE is<br />

when N_SAMPLING =><br />

RESOLUTION : NATURAL := 1;<br />

when TIME_BASED_SAMPLING =><br />

DELTA_T : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_TIME;<br />

EPSILON : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_TIME;<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

–– definition of sampling types<br />

NULL_PACKET_PATHNAME : T_PACKET_PATHNAME := (others => ’ ’);<br />

–– Null pathname of a packet<br />

NULL_PACKET_DESCRIPTOR : constant T_PACKET_DESCRIPTOR := (CHOICE => NO_CHOICE);<br />

–– null descriptor of a packet<br />

DEFAULT_PACKET_TYPE : constant T_PACKET_TYPE := ADU;<br />

–– default packets type


Space Infrastructure<br />

DEFAULT_SAMPLING_<strong>ST</strong>R : constant T_SAMPLING_<strong>ST</strong>R :=<br />

(SAMPLING_TYPE => N_SAMPLING,<br />

RESOLUTION => 1);<br />

DEFAULT_SAMPLING : constant T_SAMPLING :=<br />

(SAMPLING_TYPE => N_SAMPLING,<br />

RESOLUTION => 1);<br />

–– default sampling definitions<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

DEFAULT_PACKET_FORMAT : constant T_PACKET_FORMAT := HEXADECIMAL;<br />

–– default format for packets<br />

DEFAULT_BYTES_LINE : constant POSITIVE := 32;<br />

–– default number of bytes per line<br />

MAX_LENGTH_OF_GRAPH_NAME : constant POSITIVE := 50;<br />

–– maximum length of graph name<br />

MAX_LENGTH_OF_AXIS_NAME : constant POSITIVE := 50;<br />

–– maximum length of axis name<br />

MAX_PARMS_IN_LINE_GRAPH : constant POSITIVE := 5;<br />

–– maximum number of parameters in a line graph<br />

MAX_PARMS_IN_CHART : constant POSITIVE := 5;<br />

–– maximum number of parameters in a bar or pie chart<br />

type T_SID_PATHNAME is<br />

record<br />

SID : MPS_DEFINITIONS.SID := MPS_DEFINITIONS.NULL_SID;<br />

PATHNAME : T_PACKET_PATHNAME;<br />

end record;<br />

NULL_SID_PATHNAME : constant T_SID_PATHNAME<br />

:= (SID => MPS_DEFINITIONS.NULL_SID,<br />

PATHNAME => NULL_PACKET_PATHNAME);<br />

type T_ENTRY_RANGE is<br />

record<br />

FROM_ENTRY : NATURAL := NATURAL’FIR<strong>ST</strong>;<br />

TO_ENTRY : NATURAL := NATURAL’FIR<strong>ST</strong>;<br />

end record;<br />

–– entry range selection criteria for user result tables<br />

type T_GRAPH_TYPE is (LINE, BAR, XY, PIE, UNDEFINED);<br />

–– description of graph types<br />

subtype T_GRAPH_NAME_RANGE is POSITIVE range 1 .. MAX_LENGTH_OF_GRAPH_NAME;<br />

–– range of length of graph name<br />

subtype T_GRAPH_NAME is <strong>ST</strong>RING(T_GRAPH_NAME_RANGE);<br />

–– description of graph name<br />

subtype T_AXIS_NAME_RANGE is POSITIVE range 1 .. MAX_LENGTH_OF_AXIS_NAME;<br />

–– range of length of axis name<br />

subtype T_AXIS_NAME is <strong>ST</strong>RING(T_AXIS_NAME_RANGE);<br />

–– description of axis name<br />

NULL_AXIS_NAME : constant T_AXIS_NAME := (others => ’ ’);<br />

–– null axis name<br />

type T_SCALING_TYPE is (INT_SCALE, FLOAT_SCALE, UNDEFINED);<br />

–– description of graph scaling types<br />

type T_GRAPH_SCALING is<br />

record<br />

SCALING_TYPE : T_SCALING_TYPE := UNDEFINED;<br />

INT_MAX : INTEGER := 0;<br />

INT_MIN : INTEGER := 0;<br />

FLOAT_MAX : FLOAT := 0.0;<br />

FLOAT_MIN : FLOAT := 0.0;<br />

end record;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

499 von/of: 662


Space Infrastructure<br />

–– record giving the graph scaling ie the maximum and minimum<br />

–– values<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

DEFAULT_SCALING : constant T_GRAPH_SCALING := (UNDEFINED, 0, 0, 0.0, 0.0);<br />

subtype T_MAX_MIN_<strong>ST</strong>R is <strong>ST</strong>RING(1 .. 10);<br />

type T_GRAPH_SCALING_<strong>ST</strong>R is<br />

record<br />

MAX : T_MAX_MIN_<strong>ST</strong>R := (others => ’ ’);<br />

MIN : T_MAX_MIN_<strong>ST</strong>R := (others => ’ ’);<br />

end record;<br />

–– record giving the graph scaling in string format ie the<br />

–– maximum and minimum values<br />

type T_COLOUR is (RED, GREEN, BLUE, YELLOW, MAGENTA,<br />

BLACK, WHITE, BROWN, CYAN, ORANGE, GREY);<br />

–– Definition of colours available for graphs<br />

type T_LINE_<strong>ST</strong>YLE is (SOLID, DASHED, DOTTED, DASH_DOT, LONG_DASH);<br />

–– Definition of line styles available for graphs<br />

type T_LINE_THICKNESS is (’0’, ’1’, ’2’, ’4’);<br />

–– Definition of line thickness for graphs (4 is thickest)<br />

subtype T_LINE_GRAPH_RANGE is POSITIVE range 1 .. MAX_PARMS_IN_LINE_GRAPH;<br />

–– range of number of parameters allowed in a line graph<br />

subtype T_CHART_RANGE is POSITIVE range 1 .. MAX_PARMS_IN_CHART;<br />

–– range of number of parameters allowed in a bar or pie chart<br />

type T_PARAMETER_LINE_INFO is<br />

record<br />

COLOUR : T_COLOUR := BLACK;<br />

LINE_<strong>ST</strong>YLE : T_LINE_<strong>ST</strong>YLE := SOLID;<br />

LINE_THICKNESS : T_LINE_THICKNESS := ’0’;<br />

TIME_FRAME : T_TIME_FRAME := NULL_TIME_FRAME;<br />

end record;<br />

–– parameter information for a line graph<br />

type T_LINE_PARAMETERS_INFO is<br />

array(T_LINE_GRAPH_RANGE) of T_PARAMETER_LINE_INFO;<br />

–– array of parameter information for a line graph<br />

DEFAULT_LINE_PARAMETERS_INFO : constant T_LINE_PARAMETERS_INFO :=(<br />

(BLACK, SOLID, ’0’, NULL_TIME_FRAME),<br />

(BLACK, LONG_DASH, ’0’, NULL_TIME_FRAME),<br />

(BLACK, DASHED, ’0’, NULL_TIME_FRAME),<br />

(BLACK, DOTTED, ’0’, NULL_TIME_FRAME),<br />

(BLACK, DASH_DOT, ’0’, NULL_TIME_FRAME) );<br />

type T_PARAMETER_LINE_INFO_<strong>ST</strong>R is<br />

record<br />

PARAMETER : T_PARAMETER_NAME := NULL_PARAMETER_NAME;<br />

ENG_UNIT : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

COLOUR : T_COLOUR := BLACK;<br />

LINE_<strong>ST</strong>YLE : T_LINE_<strong>ST</strong>YLE := SOLID;<br />

LINE_THICKNESS : T_LINE_THICKNESS := ’0’;<br />

TIME_FRAME : T_TIME_FRAME_<strong>ST</strong>R;<br />

Y_SCALING : T_GRAPH_SCALING_<strong>ST</strong>R;<br />

end record;<br />

–– parameter information for a line graph in string format<br />

type T_LINE_PARAMETERS_INFO_<strong>ST</strong>R is<br />

array(T_LINE_GRAPH_RANGE) of T_PARAMETER_LINE_INFO_<strong>ST</strong>R;<br />

–– array of parameter information for a line graph in string<br />

–– format<br />

type T_XY_INFO is<br />

record<br />

–– X_PARAMETER : T_PARAMETER_NAME := NULL_PARAMETER_NAME;<br />

–– Y_PARAMETER : T_PARAMETER_NAME := NULL_PARAMETER_NAME;<br />

–– X_ENG_UNITS : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

–– Y_ENG_UNITS : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

500 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

X_NAME : T_AXIS_NAME := NULL_AXIS_NAME;<br />

Y_NAME : T_AXIS_NAME := NULL_AXIS_NAME;<br />

X_SCALING : T_GRAPH_SCALING;<br />

Y_SCALING : T_GRAPH_SCALING;<br />

COLOUR : T_COLOUR := BLACK;<br />

LINE_<strong>ST</strong>YLE : T_LINE_<strong>ST</strong>YLE := SOLID;<br />

LINE_THICKNESS : T_LINE_THICKNESS := ’0’;<br />

end record;<br />

–– information for an xy graph<br />

type T_XY_INFO_<strong>ST</strong>R is<br />

record<br />

X_PARAMETER : T_PARAMETER_NAME := NULL_PARAMETER_NAME;<br />

Y_PARAMETER : T_PARAMETER_NAME := NULL_PARAMETER_NAME;<br />

X_ENG_UNITS : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

Y_ENG_UNITS : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

X_NAME : T_AXIS_NAME := NULL_AXIS_NAME;<br />

Y_NAME : T_AXIS_NAME := NULL_AXIS_NAME;<br />

X_SCALING : T_GRAPH_SCALING_<strong>ST</strong>R;<br />

Y_SCALING : T_GRAPH_SCALING_<strong>ST</strong>R;<br />

COLOUR : T_COLOUR := BLACK;<br />

LINE_<strong>ST</strong>YLE : T_LINE_<strong>ST</strong>YLE := SOLID;<br />

LINE_THICKNESS : T_LINE_THICKNESS := ’0’;<br />

end record;<br />

–– information for an xy graph in string format<br />

type T_PARAMETER_CHART_INFO is<br />

record<br />

PARAMETER : T_PARAMETER_NAME := NULL_PARAMETER_NAME;<br />

ENG_UNIT : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

COLOUR : T_COLOUR := BLACK;<br />

end record;<br />

subtype T_CHART_GRAPH_RANGE is POSITIVE range 1 .. MAX_PARMS_IN_CHART;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

501 von/of: 662<br />

type T_CHART_COLOURS is array (T_CHART_GRAPH_RANGE) of T_COLOUR;<br />

type T_CHART_PARAMETERS_INFO is array(T_CHART_GRAPH_RANGE) of T_PARAMETER_CHART_INFO;<br />

–– parameter information for a chart<br />

NULL_GRAPH_NAME : constant T_GRAPH_NAME := (others => ’ ’);<br />

–– null graph name<br />

NULL_GRAPH_SCALING : constant T_GRAPH_SCALING :=<br />

(SCALING_TYPE => UNDEFINED,<br />

INT_MAX => 0,<br />

INT_MIN => 0,<br />

FLOAT_MAX => 0.0, FLOAT_MIN => 0.0);<br />

–– null graph scaling<br />

NULL_GRAPH_SCALING_<strong>ST</strong>R : constant T_GRAPH_SCALING_<strong>ST</strong>R :=<br />

(MAX => (others => ’ ’),<br />

MIN => (others => ’ ’));<br />

–– null graph scaling string<br />

MAX_SAS_COMPLETION_<strong>ST</strong>RING : constant POSITIVE := 255;<br />

–– maximum length of a SAS completion string<br />

MAX_SAS_PARAM_<strong>ST</strong>RING : constant POSITIVE := 255;<br />

–– maximum length of a SAS parameter string<br />

subtype T_SAS_COMPLETION is <strong>ST</strong>RING(1 .. MAX_SAS_COMPLETION_<strong>ST</strong>RING);<br />

–– definition of a SAS completion string<br />

subtype T_SAS_PARAMS is <strong>ST</strong>RING(1 .. MAX_SAS_PARAM_<strong>ST</strong>RING);<br />

–– definition of a SAS parameter string<br />

–– ===================================================<br />

–– Instantiation of VICOS_LI<strong>ST</strong> for several list types :<br />

–– ===================================================<br />

package P_RESULT_NAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_RESULT_NAME);<br />

subtype T_RESULT_NAME_L is P_RESULT_NAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of result filenames (via the vicos list)


Space Infrastructure<br />

package P_RESULT_REF_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_RESULT_REF);<br />

subtype T_RESULT_REF_L is P_RESULT_REF_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of result files (via the vicos list)<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

package P_DEFINITION_NAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_DEFINITION_NAME);<br />

subtype T_DEFINITION_NAME_L is P_DEFINITION_NAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of definition filenames (via the vicos list)<br />

package P_SESSION_NAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_SESSION_NAME);<br />

subtype T_SESSION_NAME_L is P_SESSION_NAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of execution session names (via the vicos list)<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

502 von/of: 662<br />

––(V3)<br />

–– package P_SESSION_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(DBS_DEFINITIONS.T_EXECUTION_SESSION_INFO);<br />

–– subtype T_SESSION_L is P_SESSION_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of execution session info (via the vicos list)<br />

package P_TABLE_NAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_TABLE_NAME);<br />

subtype T_TABLE_NAME_L is P_TABLE_NAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of result table names (via the vicos list)<br />

package P_RESULT_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_EVALUATION_RESULT_FILE);<br />

subtype T_RESULT_L is P_RESULT_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of result files (via the vicos list)<br />

package P_PARAMETER_NAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_PARAMETER_NAME);<br />

subtype T_PARAMETER_NAME_L is P_PARAMETER_NAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of parameters (via the vicos list)<br />

package P_FILE_NAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_FILE_NAME);<br />

subtype T_FILE_NAME_L is P_FILE_NAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of filenames (via the vicos list)<br />

package P_ENGINEERING_VALUE_LI<strong>ST</strong> is new<br />

VICOS_LI<strong>ST</strong>(ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE);<br />

subtype T_ENGINEERING_VALUE_L is P_ENGINEERING_VALUE_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of engineering values (via the vicos list)<br />

package P_DATE_AND_TIME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(<strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME);<br />

subtype T_DATE_AND_TIME_L is P_DATE_AND_TIME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of date and time (via the vicos list)<br />

package P_COMPLETE_FILENAME_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_COMPLETE_FILENAME);<br />

subtype T_COMPLETE_FILENAME_L is P_COMPLETE_FILENAME_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of complete filenames (via the vicos list)<br />

package P_PARAMETER_VALUE_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_PARAMETER_VALUE);<br />

subtype T_PARAMETER_VALUE_L is P_PARAMETER_VALUE_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of values (via the vicos list)<br />

–– =========== List operations on T_RESULT_NAME_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_RESULT_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_RESULT_NAME_L) renames P_RESULT_NAME_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_RESULT_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_RESULT_NAME_L) renames P_RESULT_NAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_RESULT_NAME_L) renames P_RESULT_NAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_RESULT_NAME_L;<br />

NEW_LI<strong>ST</strong> : in T_RESULT_NAME_L) renames P_RESULT_NAME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (RESULT_NAME : in T_RESULT_NAME;<br />

THE_LI<strong>ST</strong> : in out T_RESULT_NAME_L) renames P_RESULT_NAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_RESULT_NAME_L) return natural<br />

renames P_RESULT_NAME_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_RESULT_NAME_L) return T_RESULT_NAME<br />

renames P_RESULT_NAME_LI<strong>ST</strong>.HEAD_OF;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

503 von/of: 662<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_RESULT_NAME_L) return T_RESULT_NAME_L<br />

renames P_RESULT_NAME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_RESULT_NAME_L) return boolean<br />

renames P_RESULT_NAME_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_RESULT_NAME_L renames P_RESULT_NAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_RESULT_REF_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_RESULT_REF_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_RESULT_REF_L) renames P_RESULT_REF_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_RESULT_REF_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_RESULT_REF_L) renames P_RESULT_REF_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_RESULT_REF_L) renames P_RESULT_REF_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_RESULT_REF_L;<br />

NEW_LI<strong>ST</strong> : in T_RESULT_REF_L) renames P_RESULT_REF_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (RESULT_REF : in T_RESULT_REF;<br />

THE_LI<strong>ST</strong> : in out T_RESULT_REF_L) renames P_RESULT_REF_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_RESULT_REF_L) return natural<br />

renames P_RESULT_REF_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_RESULT_REF_L) return T_RESULT_REF<br />

renames P_RESULT_REF_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_RESULT_REF_L) return T_RESULT_REF_L<br />

renames P_RESULT_REF_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_RESULT_REF_L) return boolean<br />

renames P_RESULT_REF_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_RESULT_REF_L renames P_RESULT_REF_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_DEFINITION_NAME_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_DEFINITION_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_DEFINITION_NAME_L) renames P_DEFINITION_NAME_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_DEFINITION_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_DEFINITION_NAME_L) renames P_DEFINITION_NAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_DEFINITION_NAME_L)<br />

renames P_DEFINITION_NAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_DEFINITION_NAME_L;<br />

NEW_LI<strong>ST</strong> : in T_DEFINITION_NAME_L) renames P_DEFINITION_NAME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (DEFINITION_NAME : in T_DEFINITION_NAME;<br />

THE_LI<strong>ST</strong> : in out T_DEFINITION_NAME_L) renames P_DEFINITION_NAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_DEFINITION_NAME_L) return natural<br />

renames P_DEFINITION_NAME_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_DEFINITION_NAME_L) return T_DEFINITION_NAME<br />

renames P_DEFINITION_NAME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_DEFINITION_NAME_L) return T_DEFINITION_NAME_L<br />

renames P_DEFINITION_NAME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_DEFINITION_NAME_L) return boolean<br />

renames P_DEFINITION_NAME_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_DEFINITION_NAME_L renames P_DEFINITION_NAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_SESSION_NAME_L ================<br />

procedure COPY(FROM_THE_LI<strong>ST</strong> : in T_SESSION_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_SESSION_NAME_L) renames P_SESSION_NAME_LI<strong>ST</strong>.COPY;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

504 von/of: 662<br />

procedure INVERT(THE_LI<strong>ST</strong> : in T_SESSION_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_SESSION_NAME_L) renames P_SESSION_NAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR(THE_LI<strong>ST</strong> : in out T_SESSION_NAME_L)<br />

renames P_SESSION_NAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN(THE_LI<strong>ST</strong> : in out T_SESSION_NAME_L;<br />

NEW_LI<strong>ST</strong> : in T_SESSION_NAME_L) renames P_SESSION_NAME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT(SESSION_NAME : in T_SESSION_NAME;<br />

THE_LI<strong>ST</strong> : in out T_SESSION_NAME_L) renames P_SESSION_NAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF(THE_LI<strong>ST</strong> : in T_SESSION_NAME_L) return natural<br />

renames P_SESSION_NAME_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF(THE_LI<strong>ST</strong> : in T_SESSION_NAME_L) return T_SESSION_NAME<br />

renames P_SESSION_NAME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_SESSION_NAME_L) return T_SESSION_NAME_L<br />

renames P_SESSION_NAME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL(THE_LI<strong>ST</strong> : in T_SESSION_NAME_L) return boolean<br />

renames P_SESSION_NAME_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_SESSION_NAME_L renames P_SESSION_NAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

procedure REMOVE_ITEM(IN_THE_LI<strong>ST</strong> : in out T_SESSION_NAME_L;<br />

AT_THE_POSITION : in POSITIVE)<br />

renames P_SESSION_NAME_LI<strong>ST</strong>.REMOVE_ITEM;<br />

–– =========== List operations on T_SESSION_L ================<br />

––(V3)<br />

–– procedure INVERT(THE_LI<strong>ST</strong> : in T_SESSION_L;<br />

––<br />

––<br />

TO_THE_LI<strong>ST</strong> : in out T_SESSION_L) renames P_SESSION_LI<strong>ST</strong>.INVERT;<br />

––<br />

––<br />

procedure CLEAR(THE_LI<strong>ST</strong> : in out T_SESSION_L) renames P_SESSION_LI<strong>ST</strong>.CLEAR;<br />

–– procedure ASSIGN(THE_LI<strong>ST</strong> : in out T_SESSION_L;<br />

––<br />

––<br />

NEW_LI<strong>ST</strong> : in T_SESSION_L) renames P_SESSION_LI<strong>ST</strong>.ASSIGN;<br />

–– procedure CON<strong>ST</strong>RUCT(DATA_VALUE : in DBS_DEFINITIONS.T_EXECUTION_SESSION_INFO;<br />

––<br />

––<br />

THE_LI<strong>ST</strong> : in out T_SESSION_L) renames P_SESSION_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

––<br />

––<br />

function NULL_LI<strong>ST</strong> RETURN T_SESSION_L renames P_SESSION_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– function IS_NULL(THE_LI<strong>ST</strong> : in T_SESSION_L) RETURN boolean<br />

––<br />

––<br />

renames P_SESSION_LI<strong>ST</strong>.IS_NULL;<br />

–– function HEAD_OF(THE_LI<strong>ST</strong> : in T_SESSION_L) RETURN DBS_DEFINITIONS.T_EXECUTION_SESSION_INFO<br />

––<br />

––<br />

renames P_SESSION_LI<strong>ST</strong>.HEAD_OF;<br />

–– function TAIL_OF (THE_LI<strong>ST</strong> : in T_SESSION_L) RETURN T_SESSION_L<br />

––<br />

––<br />

renames P_SESSION_LI<strong>ST</strong>.TAIL_OF;<br />

–– function LENGTH_OF(THE_LI<strong>ST</strong> : in T_SESSION_L) RETURN natural<br />

––<br />

––<br />

renames P_SESSION_LI<strong>ST</strong>.LENGTH_OF;<br />

–– procedure COPY(FROM_THE_LI<strong>ST</strong> : in T_SESSION_L;<br />

–– TO_THE_LI<strong>ST</strong> : in out T_SESSION_L) renames P_SESSION_LI<strong>ST</strong>.COPY;<br />

–– =========== List operations on T_TABLE_NAME_L ================<br />

procedure INVERT(THE_LI<strong>ST</strong> : in T_TABLE_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_TABLE_NAME_L) renames P_TABLE_NAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR(THE_LI<strong>ST</strong> : in out T_TABLE_NAME_L)<br />

renames P_TABLE_NAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN(THE_LI<strong>ST</strong> : in out T_TABLE_NAME_L;<br />

NEW_LI<strong>ST</strong> : in T_TABLE_NAME_L) renames P_TABLE_NAME_LI<strong>ST</strong>.ASSIGN;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

505 von/of: 662<br />

procedure CON<strong>ST</strong>RUCT(TABLE_NAME : in T_TABLE_NAME;<br />

THE_LI<strong>ST</strong> : in out T_TABLE_NAME_L)renames P_TABLE_NAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function NULL_LI<strong>ST</strong> RETURN T_TABLE_NAME_L renames P_TABLE_NAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

function IS_NULL(THE_LI<strong>ST</strong> : in T_TABLE_NAME_L) RETURN boolean<br />

renames P_TABLE_NAME_LI<strong>ST</strong>.IS_NULL;<br />

function HEAD_OF(THE_LI<strong>ST</strong> : in T_TABLE_NAME_L) RETURN T_TABLE_NAME<br />

renames P_TABLE_NAME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_TABLE_NAME_L) RETURN T_TABLE_NAME_L<br />

renames P_TABLE_NAME_LI<strong>ST</strong>.TAIL_OF;<br />

function LENGTH_OF(THE_LI<strong>ST</strong> : in T_TABLE_NAME_L) RETURN natural<br />

renames P_TABLE_NAME_LI<strong>ST</strong>.LENGTH_OF;<br />

procedure COPY(FROM_THE_LI<strong>ST</strong> : in T_TABLE_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_TABLE_NAME_L) renames P_TABLE_NAME_LI<strong>ST</strong>.COPY;<br />

–– =========== List operations on T_RESULT_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_RESULT_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_RESULT_L) renames P_RESULT_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_RESULT_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_RESULT_L) renames P_RESULT_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_RESULT_L)<br />

renames P_RESULT_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_RESULT_L;<br />

NEW_LI<strong>ST</strong> : in T_RESULT_L) renames P_RESULT_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (RESULT_FILE : in T_EVALUATION_RESULT_FILE;<br />

THE_LI<strong>ST</strong> : in out T_RESULT_L) renames P_RESULT_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_RESULT_L) return natural<br />

renames P_RESULT_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_RESULT_L) return T_EVALUATION_RESULT_FILE<br />

renames P_RESULT_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_RESULT_L) return T_RESULT_L<br />

renames P_RESULT_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_RESULT_L) return boolean<br />

renames P_RESULT_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_RESULT_L renames P_RESULT_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_PARAMETER_NAME_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_PARAMETER_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_PARAMETER_NAME_L) renames P_PARAMETER_NAME_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_PARAMETER_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_PARAMETER_NAME_L)<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_PARAMETER_NAME_L)<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_PARAMETER_NAME_L;<br />

NEW_LI<strong>ST</strong> : in T_PARAMETER_NAME_L) renames P_PARAMETER_NAME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (PARAMETER_NAME : in T_PARAMETER_NAME;<br />

THE_LI<strong>ST</strong> : in out T_PARAMETER_NAME_L)<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_PARAMETER_NAME_L) return natural<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.LENGTH_OF;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_PARAMETER_NAME_L) return T_PARAMETER_NAME<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_PARAMETER_NAME_L) return T_PARAMETER_NAME_L<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_PARAMETER_NAME_L) return boolean<br />

renames P_PARAMETER_NAME_LI<strong>ST</strong>.IS_NULL;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

506 von/of: 662<br />

function NULL_LI<strong>ST</strong> return T_PARAMETER_NAME_L renames P_PARAMETER_NAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_FILE_NAME_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_FILE_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_FILE_NAME_L) renames P_FILE_NAME_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_FILE_NAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_FILE_NAME_L) renames P_FILE_NAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_FILE_NAME_L)<br />

renames P_FILE_NAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_FILE_NAME_L;<br />

NEW_LI<strong>ST</strong> : in T_FILE_NAME_L) renames P_FILE_NAME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (FILE_NAME : in T_FILE_NAME;<br />

THE_LI<strong>ST</strong> : in out T_FILE_NAME_L) renames P_FILE_NAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_FILE_NAME_L) return natural<br />

renames P_FILE_NAME_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_FILE_NAME_L) return T_FILE_NAME<br />

renames P_FILE_NAME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_FILE_NAME_L) return T_FILE_NAME_L<br />

renames P_FILE_NAME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_FILE_NAME_L) return boolean<br />

renames P_FILE_NAME_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_FILE_NAME_L renames P_FILE_NAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_ENGINEERING_VALUE_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_ENGINEERING_VALUE_L)<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_ENGINEERING_VALUE_L )<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_ENGINEERING_VALUE_L)<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_ENGINEERING_VALUE_L ;<br />

NEW_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L) renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (ENGINEERING_VALUE : in ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE;<br />

THE_LI<strong>ST</strong> : in out T_ENGINEERING_VALUE_L) renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L) return natural<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L)<br />

return ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L) return T_ENGINEERING_VALUE_L<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_ENGINEERING_VALUE_L) return boolean<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.IS_NULL;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

function NULL_LI<strong>ST</strong> return T_ENGINEERING_VALUE_L<br />

renames P_ENGINEERING_VALUE_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_DATE_AND_TIME_L ================<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

507 von/of: 662<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_DATE_AND_TIME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_DATE_AND_TIME_L) renames P_DATE_AND_TIME_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_DATE_AND_TIME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_DATE_AND_TIME_L )<br />

renames P_DATE_AND_TIME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_DATE_AND_TIME_L )<br />

renames P_DATE_AND_TIME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_DATE_AND_TIME_L ;<br />

NEW_LI<strong>ST</strong> : in T_DATE_AND_TIME_L) renames P_DATE_AND_TIME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (DATE_AND_TIME : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

THE_LI<strong>ST</strong> : in out T_DATE_AND_TIME_L) renames P_DATE_AND_TIME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_DATE_AND_TIME_L) return natural<br />

renames P_DATE_AND_TIME_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_DATE_AND_TIME_L) return<br />

<strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME renames P_DATE_AND_TIME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_DATE_AND_TIME_L) return T_DATE_AND_TIME_L<br />

renames P_DATE_AND_TIME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_DATE_AND_TIME_L) return boolean<br />

renames P_DATE_AND_TIME_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_DATE_AND_TIME_L renames P_DATE_AND_TIME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– =========== List operations on T_COMPLETE_FILENAME_L ================<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_COMPLETE_FILENAME_L)<br />

renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.COPY;<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_COMPLETE_FILENAME_L )<br />

renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.INVERT;<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_COMPLETE_FILENAME_L )<br />

renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.CLEAR;<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_COMPLETE_FILENAME_L ;<br />

NEW_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L) renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.ASSIGN;<br />

procedure CON<strong>ST</strong>RUCT (COMPLETE_FILENAME : in T_COMPLETE_FILENAME;<br />

THE_LI<strong>ST</strong> : in out T_COMPLETE_FILENAME_L) renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L) return natural<br />

renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.LENGTH_OF;<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L) return<br />

T_COMPLETE_FILENAME renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.HEAD_OF;<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L) return T_COMPLETE_FILENAME_L<br />

renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.TAIL_OF;<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_COMPLETE_FILENAME_L) return boolean<br />

renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.IS_NULL;<br />

function NULL_LI<strong>ST</strong> return T_COMPLETE_FILENAME_L renames P_COMPLETE_FILENAME_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

procedure INVERT(THE_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_PARAMETER_VALUE_L)<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.INVERT;<br />

––


Space Infrastructure<br />

–– Invert a list into another list<br />

––<br />

–– INVERT is a member of Data_Set_Opns<br />

procedure CLEAR(THE_LI<strong>ST</strong> : in out T_PARAMETER_VALUE_L)<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.CLEAR;<br />

––<br />

–– Clear a list<br />

––<br />

–– CLEAR is a member of Data_Set_Opns<br />

procedure ASSIGN(THE_LI<strong>ST</strong> : in out T_PARAMETER_VALUE_L;<br />

NEW_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L)<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.ASSIGN;<br />

––<br />

––<br />

–– Assign a list with a new value<br />

––<br />

–– ASSIGN is a member of Data_Set_Opns<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure CON<strong>ST</strong>RUCT(DATA_VALUE : in T_PARAMETER_VALUE;<br />

THE_LI<strong>ST</strong> : in out T_PARAMETER_VALUE_L)<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

––<br />

––<br />

–– Construct a list by adding a new item<br />

––<br />

–– CON<strong>ST</strong>RUCT is a member of Data_Set_Opns<br />

function NULL_LI<strong>ST</strong> return T_PARAMETER_VALUE_L<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

––<br />

–– Return a null list<br />

––<br />

–– NULL_LI<strong>ST</strong> is a member of Data_Set_Opns<br />

function IS_NULL(THE_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L)<br />

return BOOLEAN<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.IS_NULL;<br />

––<br />

–– Check if a list is null<br />

––<br />

–– IS_NULL is a member of Data_Set_Opns<br />

function HEAD_OF(THE_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L)<br />

return T_PARAMETER_VALUE<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.HEAD_OF;<br />

––<br />

–– Extract the head of a list<br />

––<br />

–– HEAD_OF is a member of Data_Set_Opns<br />

function TAIL_OF(THE_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L)<br />

return T_PARAMETER_VALUE_L<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.TAIL_OF;<br />

––<br />

–– Extract the tail of a list<br />

––<br />

–– TAIL_OF is a member of Data_Set_Opns<br />

function LENGTH_OF(THE_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L)<br />

return NATURAL<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.LENGTH_OF;<br />

––<br />

–– Get the length of a list<br />

––<br />

–– LENGTH_OF is a member of Data_Set_Opns<br />

procedure COPY(FROM_THE_LI<strong>ST</strong> : in T_PARAMETER_VALUE_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_PARAMETER_VALUE_L)<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.COPY;<br />

––<br />

–– Copy a list into another list;<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

508 von/of: 662


Space Infrastructure<br />

–– COPY is a member of Data_Set_Opns<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure REMOVE_ITEM(IN_THE_LI<strong>ST</strong> : in out T_PARAMETER_VALUE_L;<br />

AT_THE_POSITION : in POSITIVE)<br />

renames P_PARAMETER_VALUE_LI<strong>ST</strong>.REMOVE_ITEM;<br />

––<br />

–– Removes an item from a list;<br />

––<br />

–– REMOVE_ITEM is a member of Data_Set_Opns<br />

–– Provided exceptions :<br />

OVERFLOW : exception;<br />

–– Exception raised during list management<br />

LI<strong>ST</strong>_IS_NULL : exception;<br />

–– Exception raised during list management<br />

NOT_AT_HEAD : exception;<br />

–– Exception raised during list management<br />

PROTECTION_WARNING : exception;<br />

–– Exception raised during list management<br />

PROTECTION_VIOLATION : exception;<br />

–– Exception raised during list management<br />

POSITION_ERROR : exception;<br />

–– Exception raised during list management<br />

LEXICAL_ERROR : exception;<br />

–– Exception raised during conversion of time from string to Ada type.<br />

–– The syntactic format of the string is incorrect.<br />

TIME_ERROR : exception;<br />

–– Exception raised during conversion of time from string to Ada type.<br />

–– The semantic format of the string is incorrect.<br />

end TEV_DEFINITIONS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

509 von/of: 662


Space Infrastructure<br />

7.14 TEV Application Programmer <strong>Interface</strong><br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

510 von/of: 662<br />

The purpose of TEV_API is to give the user the possibility to extend the set of evaluation operations available<br />

with TEV by addition of Special Application Software (SAS). When specific data processing (e.g. specific display,<br />

specific sampling or calculation) is needed but not supported by the TEV standard tools, the user can write<br />

additional programs that use the outputs of TEV tools as input for special processing.<br />

Typical SAS functions may be :<br />

– special statistic processing beyond the scope of the TEV Statistic tool,<br />

– special mathematical processing, like Fourier Function Transfert beyond the scope of the TEV Mathematical<br />

tool,<br />

– data visualization beyond the scope of the TEV Graph tool,<br />

– generation of special output formats, possibly to be included into TEV reports,<br />

– special processing on other TRDB data types like Log Events etc,<br />

– generation of special output formats to adapt to other commercial SW like spreadsheet or DTP...<br />

The SAS gets selected result files to be processed from TEV and produces its own outputs.<br />

The output of a SAS can be :<br />

– a screen display,<br />

– a SAS result file, which has its own internal structure not necessarily known to TEV,<br />

– standard TEV Data Sets, which can be normally processed by standard TEV tools.<br />

The API consists mainly in Abstract Data Types, i.e. Ada packages which describe the TEV result file types,<br />

and which provide also the access operations to it.<br />

The API gives the SAS programmer the freedom to write an Ada program, access the TEV result files via ADT<br />

operations, do his special processing and deliver his result.<br />

The control interface is simple: A SAS will be started from generic TEV together with the parameters needed<br />

by the SAS. If the SAS is started via HLCL command, the parameter line (which is a simple string) is routed<br />

transparently through the HLCL interpreter onto the SAS.<br />

The SAS will become a child process of TEV. When the SAS completed the processing, it delivers the status<br />

back and exits. It is to be seen as a one–shot operation. If an error appears, it normally will be returned with the<br />

exit statement.<br />

The API provides increased software security and also for software compilation and linking, (i.e. no need to reduce<br />

software compilation on addition of a new SAS).<br />

Formal <strong>Interface</strong> Description<br />

In the following pages, you will find the specification of the package TEV_API written in Ada. If inconsistencies<br />

exist with the informal description, then the formal description is superseding.


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_EVENT_RESULT<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides operations to access an events result file.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : HDT_TEV_API.ADT_EVENT_RESULT<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– <strong>CGS</strong> V4.3 at DASA<br />

–– creator: Bruening<br />

–– creation date: 06.09.99<br />

–– comment:<br />

–– Define new type EVENTS_CHAIN to handle undefined number of events.<br />

–– For the merge ADT_DATA_SET/EVENT tool<br />

–– New procedures :<br />

–– function POINTER_TO_FIR<strong>ST</strong>_EVENT<br />

–– procedure LI<strong>ST</strong>_EVENTS_FOR_TIME_TAG<br />

–– function RETURN_LONG_TEXT_FLAG<br />

–– procedure CALL_FORMAT_DEFINITION<br />

–– procedure LI<strong>ST</strong>_EVENTS_AFTER_TIME_TAG<br />

–– function GLOBAL_TIME_FRAME_OF<br />

––<br />

–– Procedures which where internal and now provided :<br />

–– procedure PUT_LONG_<strong>ST</strong>RING<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– <strong>CGS</strong> V4.2 <strong>ICD</strong> Change 27.07.99, W.Tammen:<br />

–– harmonized record components (referenced types)<br />

–– according to COL–RIBRE–IRN–<strong>CGS</strong>–8078<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– V5.2 at Central Repository V4.0 (moon)<br />

–– creator: thvvicos (on host darkvador)<br />

–– creation date: 20.07.97 20:54:36<br />

–– comment:<br />

–– Compliance with 4.1 : Tool id added<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Spacebel Informatique, Brussels<br />

–– creator: rowena (on host moon)<br />

–– creation date: 25.07.95 10:46:40<br />

–– comment:<br />

–– Move from VICOS_CALENDAR to <strong>CGS</strong>_CALENDAR<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Spacebel Informatique, Brussels<br />

–– creator: rowena (on host moon)<br />

–– creation date: 14.07.95 11:05:41<br />

–– comment:<br />

–– Updated with correct version of file from cm_user repository.<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

511 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

––<br />

with TEV_DEFINITIONS;<br />

with VICOS_DEFINITIONS;<br />

with DBS_DEFINITIONS;<br />

with VICOS_LI<strong>ST</strong>;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with DIRECT_IO;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

512 von/of: 662<br />

package ADT_EVENT_RESULT is<br />

–– Provided types and constants :<br />

subtype T_SESSIONS_RANGE_INC_DEF is POSITIVE range<br />

TEV_DEFINITIONS.T_SESSIONS_RANGE’first..TEV_DEFINITIONS.T_SESSIONS_RANGE’last+1;<br />

–– number of sessions including default test session<br />

type T_EVENT is<br />

record<br />

PRODUCER: VICOS_DEFINITIONS.T_APPLICATION_NAME<br />

:= VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING;<br />

GROUP : VICOS_DEFINITIONS.T_LOG_GROUP := VICOS_DEFINITIONS.NULL_LOG_GROUP;<br />

EVENT_TYPE : VICOS_DEFINITIONS.T_LOG_TYPE := VICOS_DEFINITIONS.NULL_LOG_TYPE;<br />

SHORT_TEXT : VICOS_DEFINITIONS.T_LOG_TEXT_SHORT<br />

:= VICOS_DEFINITIONS.NULL_LOG_TEXT_SHORT;<br />

LONG_TEXT : VICOS_DEFINITIONS.T_LOG_TEXT_LONG<br />

:= VICOS_DEFINITIONS.NULL_LOG_TEXT_LONG;<br />

TIME_TAG_LT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME := <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

TIME_TAG_SMT : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME := <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

end record;<br />

–– definition of an event inside an event result<br />

type EVENTS_CHAIN;<br />

type P_EVENTS_CHAIN is access EVENTS_CHAIN;<br />

type EVENTS_CHAIN is<br />

record<br />

EVENT : ADT_EVENT_RESULT.T_EVENT;<br />

NEXT : P_EVENTS_CHAIN;<br />

end record;<br />

procedure FREE_EVENTS_CHAIN is new unchecked_deallocation<br />

(OBJECT => EVENTS_CHAIN,<br />

NAME => P_EVENTS_CHAIN);<br />

NULL_SELECTION_CRITERIA : constant DBS_DEFINITIONS.T_EVENT_SEL_CRIT :=<br />

(APPLICATION => VICOS_DEFINITIONS.EMPTY_NAME_<strong>ST</strong>RING,<br />

TIME_FRAME => DBS_DEFINITIONS.NULL_TIME_RECORD,<br />

LOG_TYPE => VICOS_DEFINITIONS.NULL_LOG_TYPE,<br />

LOG_GROUP => VICOS_DEFINITIONS.NULL_LOG_GROUP,<br />

TEXT => VICOS_DEFINITIONS.NULL_LOG_TEXT_SHORT);<br />

––<br />

–– Null value of a selection criteria<br />

––<br />

type T_SELECTION_CRITERIA_A is array(<br />

DBS_DEFINITIONS.T_EVENT_SEL_CRIT_RANGE) of<br />

DBS_DEFINITIONS.T_EVENT_SEL_CRIT;<br />

–– description of the combined selection criteria array<br />

package P_EVENT_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_EVENT);<br />

subtype T_EVENT_L is P_EVENT_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

–– definition of a list of events (via the vicos list)<br />

type T_EVENT_RESULT is limited private;<br />

–– private adt event_result file<br />

–– Provided operations :<br />

procedure OPEN(EVENT_FILENAME : in <strong>ST</strong>RING;<br />

EVENT_RESULT : in out T_EVENT_RESULT;<br />

ACCESS_<strong>ST</strong>ATUS : in TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS<br />

:= TEV_DEFINITIONS.READ;<br />

ALLOW_OVERWRITE : in BOOLEAN := FALSE);<br />

–– Open an event result with read access if the file already exists,


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

513 von/of: 662<br />

–– write access to create a new one. The EXECUTION_TIME is<br />

–– written if it is a new file<br />

––<br />

–– Parameters :<br />

–– EVENT_FILENAME : filename of the event result<br />

–– EVENT_RESULT : private event result<br />

–– ACCESS_<strong>ST</strong>ATUS : READ only to extract information from an event result<br />

–– WRITE when generating a new event result<br />

–– ALLOW_OVERWRITE : Required when access state is write to<br />

–– allow generation of an event result inside an already<br />

–– existing file.<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_EVENT_RESULT_ALREADY_OPENED : event result is still in<br />

–– open state<br />

–– X_EVENT_RESULT_ALREADY_EXI<strong>ST</strong>S : file exists and overwrite<br />

–– is not allowed<br />

–– X_INVALID_NAME : event result name is too long<br />

––<br />

procedure CLOSE(EVENT_RESULT : in out T_EVENT_RESULT);<br />

–– Close a previously opened event result<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_EVENT_RESULT_NOT_OPENED : event result already closed<br />

––<br />

procedure DEFINE(EVENT_RESULT : in out T_EVENT_RESULT;<br />

EVENT_RESULT_NAME : in TEV_DEFINITIONS.T_RESULT_NAME;<br />

INCLUDE_DEF_SESSION : in BOOLEAN;<br />

SELECT_ON : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

LONG_TEXT_FLAG_ON : in BOOLEAN;<br />

SELECTION_CRITERIA : in T_SELECTION_CRITERIA_A);<br />

–– Build and initialise the definition of an opened event result<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– EVENT_RESULT_NAME : name of the event result<br />

–– INCLUDE_DEF_SESSION : include default session<br />

–– LONG_TEXT_FLAG_ON : display long text<br />

–– SELECTION_CRITERIA : array of event selection criteria (up to 4)<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_WRITE_ACCESS : event result not opened for write access<br />

––<br />

function FILENAME_OF(EVENT_RESULT : in T_EVENT_RESULT)<br />

return <strong>ST</strong>RING;<br />

–– Return the event result file name.<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function GET_SELECTION_CRITERIA(EVENT_RESULT : in T_EVENT_RESULT;<br />

CRITERIA_NO : in DBS_DEFINITIONS.T_EVENT_SEL_CRIT_RANGE)<br />

return DBS_DEFINITIONS.T_EVENT_SEL_CRIT;<br />

–– Get a given normal selection criteria<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– CRITERIA_NO : normal selection criteria identity<br />

–– Exceptions:<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

514 von/of: 662<br />

procedure ADD_EVENTS(EVENT_RESULT : in out T_EVENT_RESULT;<br />

SESSION_NAME : in TEV_DEFINITIONS.T_SESSION_NAME;<br />

EVENT : in out T_EVENT_L);<br />

–– Add a list of events to the event result<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– SESSION_NAME : session owner of the events<br />

–– EVENTS : events to be added<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_WRITE_ACCESS : result file is not opened for write access<br />

–– X_INVALID_SESSION : the named session has already been defined<br />

–– or there is not place for this session<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

––<br />

function SESSIONS_NUMBER_OF(EVENT_RESULT : in T_EVENT_RESULT)<br />

return NATURAL;<br />

–– Return the number of sessions used to build the event result<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function SESSION_NAMES_OF(EVENT_RESULT : in T_EVENT_RESULT)<br />

return TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

–– Return the names of sessions used to build the event result<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function EXECUTION_DATE_OF(EVENT_RESULT : in T_EVENT_RESULT)<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

–– Return the date and time of execution<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function INCLUDE_DEF_SESSION_OF(EVENT_RESULT : in T_EVENT_RESULT)<br />

return boolean;<br />

–– Return a flag to specify if the default session is included<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function LONG_TEXT_FLAG_OF(EVENT_RESULT : in T_EVENT_RESULT)<br />

return boolean;<br />

–– Return a flag to specify if the long text is displayed<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function SELECT_ON(EVENT_RESULT : in T_EVENT_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_TYPE;<br />

–– Return the time type of the selection


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

515 von/of: 662<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function ORDER_BY(EVENT_RESULT : in T_EVENT_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_ORDERING;<br />

–– Return the time ordering of the selection<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

––<br />

function POINTER_TO_FIR<strong>ST</strong>_EVENT(EVENT_RESULT : in T_EVENT_RESULT) return POSITIVE;<br />

procedure PUT_LONG_<strong>ST</strong>RING(TEXT_FILE : in out TEXT_IO.FILE_TYPE;<br />

LINE_WIDTH : in NATURAL;<br />

MARGIN_WIDTH : in NATURAL;<br />

TITLE_<strong>ST</strong>RING : in <strong>ST</strong>RING;<br />

LONG_<strong>ST</strong>RING : in <strong>ST</strong>RING);<br />

procedure EXTRACT_EVENTS(EVENT_RESULT : in T_EVENT_RESULT;<br />

SESSION_NAME : in TEV_DEFINITIONS.T_SESSION_NAME;<br />

EVENT : in out T_EVENT_L);<br />

–– Return a list of events corresponding to the supplied<br />

–– definition<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– SESSION_NAME : session owner of the events<br />

–– EVENTS : extracted events<br />

–– Exceptions :<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

–– X_INVALID_SESSION : the named session is not defined<br />

––<br />

––<br />

X_INVALID_TIME_FRAME : the time frame is invalid<br />

procedure FORMAT_RESULT(EVENT_RESULT : in out T_EVENT_RESULT;<br />

FILENAME : in <strong>ST</strong>RING);<br />

–– Converts the event result to a string format for display<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT : private event result<br />

–– FILENAME : filename of formatted result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : event result file not opened for read access<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

––<br />

––<br />

X_ERROR_ACCESSING_FILE : general error creating formatted result<br />

procedure FORMAT_RESULT_FILE(EVENT_RESULT_FILE : in <strong>ST</strong>RING;<br />

TO_FILENAME : in <strong>ST</strong>RING;<br />

TOOL_ID : in TEV_DEFINITIONS.T_TOOL_ID := POSITIVE’first);<br />

–– Converts the event result to a string format for display<br />

––<br />

–– Parameters :<br />

–– EVENT_RESULT_FILE : event result file to format<br />

–– TO_FILENAME : filename of formatted result<br />

––<br />

–– Exceptions :<br />

TOOL_ID : The tool id<br />

–– X_EVENT_RESULT_NOT_OPENED : event result is not opened<br />

–– X_ERROR_ACCESSING_FILE : general error creating formatted result<br />

––<br />

––<br />

X_INVALID_NAME : event result file does not exist<br />

procedure INVERT(THE_LI<strong>ST</strong> : in T_EVENT_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_EVENT_L) renames P_EVENT_LI<strong>ST</strong>.INVERT;<br />

––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

516 von/of: 662<br />

–– Invert a list into another list<br />

––<br />

procedure CLEAR(THE_LI<strong>ST</strong> : in out T_EVENT_L)<br />

renames P_EVENT_LI<strong>ST</strong>.CLEAR;<br />

––<br />

–– Clear a list<br />

––<br />

procedure ASSIGN(THE_LI<strong>ST</strong> : in out T_EVENT_L;<br />

NEW_LI<strong>ST</strong> : in T_EVENT_L) renames P_EVENT_LI<strong>ST</strong>.ASSIGN;<br />

––<br />

––<br />

–– Assign a list with a new value<br />

––<br />

procedure CON<strong>ST</strong>RUCT(DATA_VALUE : in T_EVENT;<br />

THE_LI<strong>ST</strong> : in out T_EVENT_L) renames P_EVENT_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

––<br />

––<br />

–– Construct a list by adding a new item<br />

––<br />

function NULL_LI<strong>ST</strong> return T_EVENT_L<br />

renames P_EVENT_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

––<br />

–– Return a null list<br />

––<br />

function IS_NULL(THE_LI<strong>ST</strong> : in T_EVENT_L) return BOOLEAN<br />

renames P_EVENT_LI<strong>ST</strong>.IS_NULL;<br />

––<br />

–– Check if a list is null<br />

––<br />

function HEAD_OF(THE_LI<strong>ST</strong> : in T_EVENT_L) return T_EVENT<br />

renames P_EVENT_LI<strong>ST</strong>.HEAD_OF;<br />

––<br />

–– Extract the head of a list<br />

––<br />

function TAIL_OF(THE_LI<strong>ST</strong> : in T_EVENT_L) return T_EVENT_L<br />

renames P_EVENT_LI<strong>ST</strong>.TAIL_OF;<br />

––<br />

–– Extract the tail of a list<br />

––<br />

function LENGTH_OF(THE_LI<strong>ST</strong> : in T_EVENT_L) return NATURAL<br />

renames P_EVENT_LI<strong>ST</strong>.LENGTH_OF;<br />

––<br />

–– Get the length of a list<br />

––<br />

procedure COPY(FROM_THE_LI<strong>ST</strong> : in T_EVENT_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_EVENT_L) renames P_EVENT_LI<strong>ST</strong>.COPY;<br />

––<br />

–– Copy a list into another list;<br />

––<br />

procedure LI<strong>ST</strong>_EVENTS_FOR_TIME_TAG(<br />

EVENT_RESULT_DESC : in T_EVENT_RESULT;<br />

ORDERING_TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

SECOND_TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

EARLIE<strong>ST</strong>_TIMES : in TEV_DEFINITIONS.T_TWO_TIME;<br />

LA<strong>ST</strong>_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

FIR<strong>ST</strong>_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

INDEX_IN_EVENT_FILE : in out NATURAL;<br />

EVENTS_LI<strong>ST</strong> : in out P_EVENTS_CHAIN;<br />

PREVIOUS_EVENTS_LI<strong>ST</strong> : in out P_EVENTS_CHAIN;<br />

EARLIE<strong>ST</strong>_LT_TIME_TAG : in out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

EARLIE<strong>ST</strong>_SMT_TIME_TAG : in out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME<br />

);<br />

procedure LI<strong>ST</strong>_EVENTS_AFTER_TIME_TAG(<br />

EVENT_RESULT_DESC : in T_EVENT_RESULT;<br />

LA<strong>ST</strong>_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

FIR<strong>ST</strong>_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

517 von/of: 662<br />

ORDERING_TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

INDEX_IN_EVENT_FILE : in out NATURAL;<br />

EVENTS_LI<strong>ST</strong> : in out P_EVENTS_CHAIN<br />

);<br />

procedure CALL_FORMAT_DEFINITION(<br />

EVENT_RESULT_DESC : in T_EVENT_RESULT;<br />

RESULT_MERGE_FD : in out TEXT_IO.FILE_TYPE);<br />

function RETURN_LONG_TEXT_FLAG(EVENT_RESULT : in T_EVENT_RESULT) return BOOLEAN;<br />

function GLOBAL_TIME_FRAME_OF(<br />

EVENT_RESULT : in T_EVENT_RESULT) return TEV_DEFINITIONS.T_TIME_FRAME;<br />

–– Provided exceptions :<br />

X_EVENT_RESULT_NOT_OPENED,<br />

X_ERROR_ACCESSING_FILE,<br />

X_EVENT_RESULT_ALREADY_OPENED,<br />

X_EVENT_RESULT_ALREADY_EXI<strong>ST</strong>S,<br />

X_INVALID_NAME,<br />

X_NO_READ_ACCESS,<br />

X_NO_WRITE_ACCESS,<br />

X_INVALID_TIME_FRAME,<br />

X_INVALID_SESSION : exception;<br />

private<br />

type T_EVENTS_NUMBER_A is array (natural range ) of natural;<br />

–– Array containing number of events for each selected sessions<br />

type T_EVENT_DEFINITION is<br />

record<br />

EXECUTION_DATE : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SELECTION_CRITERIA : T_SELECTION_CRITERIA_A;<br />

LONG_TEXT_FLAG_ON : boolean;<br />

SELECT_ON : DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : DBS_DEFINITIONS.T_TIME_ORDERING;<br />

INCLUDE_DEF_SESSION : boolean;<br />

EXECUTION_SESSIONS : TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES<br />

(T_SESSIONS_RANGE_INC_DEF);<br />

EVENTS_NUMBER : T_EVENTS_NUMBER_A(T_SESSIONS_RANGE_INC_DEF);<br />

end record;<br />

–– description of an event definition<br />

package DEFINITION_IO is new DIRECT_IO(ELEMENT_TYPE => T_EVENT_DEFINITION);<br />

–– DEFINITION_IO is used to access the event definition as the<br />

–– header of the file<br />

package EVENT_IO is new DIRECT_IO( ELEMENT_TYPE => T_EVENT);<br />

–– EVENT_IO is used to access the event records inside the file,<br />

–– the first event to access is located at position offset<br />

–– PTR_TO_FIR<strong>ST</strong>_EVENT<br />

type T_EVENT_RESULT is<br />

record<br />

DEFINITION_FILE_TYPE: DEFINITION_IO.FILE_TYPE;<br />

EVENT_FILE_TYPE : EVENT_IO.FILE_TYPE;<br />

FILENAME : TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

ACCESS_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS := TEV_DEFINITIONS.READ;<br />

CURRENT_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_CURRENT_<strong>ST</strong>ATUS := TEV_DEFINITIONS.CLOSED;<br />

EVENT_DEFINITION : T_EVENT_DEFINITION;<br />

RESULT_NAME : TEV_DEFINITIONS.T_RESULT_NAME<br />

:= TEV_DEFINITIONS.NULL_RESULT_NAME;<br />

end record;<br />

–– description of the ADT event result record<br />

end ADT_EVENT_RESULT;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

518 von/of: 662<br />

––<br />

–– ADT_DATA_SET<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

––<br />

–– Provides operations to create and read a data set file.<br />

–– The data set is seen as an ADT.<br />

––<br />

–– Since data are declared in the user’s code and passed as parameter,<br />

–– there is no synchronisation constraint for parallel access.<br />

–– Implementation constraints :<br />

–– – the Open operation must be called before any Get/Set operations,<br />

–– – the Close operation forces a data set in write access to end edition.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : HDT_TEV_API.ADT_DATA_SET<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– <strong>CGS</strong> V4.3 at DASA<br />

–– creator: Bruening<br />

–– creation date: 21.07.99<br />

–– comment:<br />

–– New procedures for the merge adt_data_set / events tool :<br />

–– procedure NEXT_VALUE_FOR_EACH_PARAM<br />

–– procedure FORMAT_DEFINITION<br />

–– Procedures/ functions which were previously internal<br />

–– function GET_TIME_TAG<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

–– Required object : DIRECT_IO<br />

with DIRECT_IO;<br />

–– Required operations :<br />

–– DIRECT_IO.CREATE<br />

–– DIRECT_IO.CLOSE<br />

–– DIRECT_IO.OPEN<br />

–– Required object : <strong>CGS</strong>_CALENDAR<br />

with <strong>CGS</strong>_CALENDAR;<br />

–– Required object : MPS_DEFINITIONS<br />

with DBS_DEFINITIONS;<br />

with MPS_DEFINITIONS;<br />

–– Required types :<br />

–– MPS_DEFINITIONS.all_types<br />

–– Required object : VICOS_LI<strong>ST</strong><br />

with VICOS_LI<strong>ST</strong>;<br />

–– Required object : TEV_DEFINITIONS<br />

with TEV_DEFINITIONS;<br />

–– Required object : ADT_ENGINEERING_VALUE<br />

with ADT_ENGINEERING_VALUE;<br />

–– Required object : ADT_RAW_VALUE<br />

with ADT_RAW_VALUE;<br />

with ADT_ADU_DESCRIPTION;<br />

with TEXT_IO;


Space Infrastructure<br />

use TEV_DEFINITIONS;<br />

package ADT_DATA_SET is<br />

–– Provided types and constants :<br />

type T_DATA_SET is limited private;<br />

type T_PARAMETER_DEFINITION is private;<br />

–– Provided operations :<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure EXTERNAL_FORMAT_FILE(DATA_SET_FILE : in <strong>ST</strong>RING;<br />

TO_FILENAME : in <strong>ST</strong>RING;<br />

EXCEL_SEPARATOR : in CHARACTER := ’,’);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

519 von/of: 662<br />

procedure OPEN(DATA_SET_FILENAME : in <strong>ST</strong>RING;<br />

DATA_SET : in out T_DATA_SET;<br />

ACCESS_<strong>ST</strong>ATUS : in TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS := TEV_DEFINITIONS.READ;<br />

ALLOW_OVERWRITE : in BOOLEAN := FALSE);<br />

–– Description :<br />

–– Open a data set, with read access on an already existing one,<br />

–– or with write access to create a new one. Write current<br />

–– date and time inEXECUTION_TIME if creating a new data set.<br />

––<br />

–– Parameters :<br />

–– DATA_SET_FILENAME : filename of the data set<br />

–– DATA_SET : private data_set<br />

–– ACCESS_<strong>ST</strong>ATUS : – READ only to extract information from<br />

–– data set<br />

–– – WRITE when generating a data set<br />

–– ALLOW_OVERWRITE : when ACCESS_<strong>ST</strong>ATUS is WRITE, needed to<br />

–– allow generation of a data set inside an already existing file<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_DATA_SET_ALREADY_OPENED : data set has not been closed<br />

–– and is still in open state<br />

–– X_DATA_SET_ALREADY_EXI<strong>ST</strong> : file exists and overwrite is not allowed<br />

–– X_INVALID_NAME : data set name is too long<br />

––<br />

procedure CLOSE(DATA_SET : in out T_DATA_SET);<br />

–– Description :<br />

–– Close a previously opened data set.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_DATA_SET_NOT_OPENED : data set already closed<br />

––<br />

procedure DEFINE(DATA_SET : in out T_DATA_SET;<br />

DATA_SET_NAME : in <strong>ST</strong>RING;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME;<br />

SAMPLING : in TEV_DEFINITIONS.T_SAMPLING;<br />

SELECT_ON : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

INCLUDE_DEF_SESSION : in BOOLEAN;<br />

SESSIONS : in TEV_DEFINITIONS.T_SESSION_NAME_L);<br />

–– Description :<br />

–– Build and initialise the definition of an opened data set.<br />

–– This updates the execution date field<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data set<br />

–– DATA_SET_NAME : name of the data set<br />

–– TIME_FRAME : time frame of the data set<br />

–– SAMPLING : private sampling of the data set


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– SELECT_ON : time tag selection type ie SMT or LT<br />

–– ORDER_BY : time order of the data set ie SMT or LT<br />

–– INCLUDE_DEF_SESSION : include default session<br />

–– SESSIONS : list of execution sessions<br />

–– Exceptions :<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

–– X_NO_WRITE_ACCESS : data set not opened for write access<br />

––<br />

function TIME_FRAME_OF(DATA_SET : in T_DATA_SET)<br />

return TEV_DEFINITIONS.T_TIME_FRAME;<br />

–– Description :<br />

–– Return the time frame in which the current data set has been<br />

–– built.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function GET_SELECTED_ON_TIME_TYPE(DATA_SET : in T_DATA_SET)<br />

return DBS_DEFINITIONS.T_TIME_TYPE;<br />

–– Description :<br />

–– Return the selected on time type with which the current data set has been<br />

–– built.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function GET_ORDERED_BY_TIME_TYPE(DATA_SET : in T_DATA_SET)<br />

return DBS_DEFINITIONS.T_TIME_ORDERING;<br />

–– Description :<br />

–– Return the ordered by time type with which the current data set has been<br />

–– built.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function EXECUTION_DATE_OF(DATA_SET : in T_DATA_SET)<br />

–– Description :<br />

–– Return the date and time of execution<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function FILENAME_OF(DATA_SET : in T_DATA_SET) return <strong>ST</strong>RING;<br />

–– Description :<br />

–– Return the data set file name.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

520 von/of: 662<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;


Space Infrastructure<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function SAMPLING_OF(DATA_SET : in T_DATA_SET)<br />

return TEV_DEFINITIONS.T_SAMPLING;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Description :<br />

–– Return the sampling for the current data set.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function PARAMETERS_NUMBER_OF(DATA_SET : in T_DATA_SET)<br />

return NATURAL;<br />

–– Description :<br />

–– Return the number of parameters used to build<br />

–– the current data set.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function PARAMETER_NAME_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

–– Description :<br />

–– Return the name of this parameter.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function SESSIONS_NUMBER_OF(DATA_SET : in T_DATA_SET)<br />

return NATURAL;<br />

–– Description :<br />

–– Return the number of sessions used to build<br />

–– the current data set.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function SESSION_NAMES_OF(DATA_SET : in T_DATA_SET)<br />

return TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

–– Description :<br />

–– return array with session names from definition.<br />

–– Parameters:<br />

–– DATA_SET : private data set<br />

–– Exception:<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

function INCLUDE_DEF_SESSION_OF(DATA_SET : in T_DATA_SET)<br />

return boolean;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

521 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Description :<br />

–– Return a flag to specify if the default session is included<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

522 von/of: 662<br />

function PARAMETER_DEFINITION_OF(DATA_SET : in T_DATA_SET;<br />

PARAMETER_INDEX : in TEV_DEFINITIONS.T_PARAMETERS_RANGE)<br />

return T_PARAMETER_DEFINITION;<br />

–– Description :<br />

–– Extract the definition of a given parameter in<br />

–– the current data set by specifying its ordering number.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– PARAMETER_INDEX : index of the parameter in the data set :<br />

–– valid index is in range<br />

1..PARAMETERS_NUMBER_OF()<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter index is invalid<br />

––<br />

function PARAMETER_DEFINITION_OF_N(DATA_SET : in T_DATA_SET;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME)<br />

return T_PARAMETER_DEFINITION;<br />

–– Description :<br />

–– Extract the definition of a given parameter in<br />

–– the current data set by specifying its name.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data_set<br />

–– PARAMETER_NAME : name of the parameter defined in the data<br />

–– set<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter name is invalid<br />

––<br />

function ENGINEERING_UNIT_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

–– Description :<br />

–– Return the engineering unit of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function SOURCE_FILE_TYPE_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

–– Description :<br />

–– Return the type of the source files used for this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function PRODUCER_NAME_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

–– Description :<br />

–– Return the producer name of this parameter.<br />

––<br />

–– Parameters :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function ITEM_TYPE_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_MEASUREMENT_ALTERNATIVES;<br />

–– Description :<br />

–– Return the item type of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function DATA_NUMBER_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return NATURAL;<br />

–– Description :<br />

–– Return the number of data stored for this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function POINTER_TO_FIR<strong>ST</strong>_DATA(DATA_SET : in T_DATA_SET) return NATURAL;<br />

procedure EXTRACT_DATA(DATA_SET : in T_DATA_SET;<br />

PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION;<br />

PARAMETER_VALUES : in out T_PARAMETER_VALUE_L;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME<br />

:= TEV_DEFINITIONS.NULL_TIME_FRAME);<br />

–– Description :<br />

–– Extract data from a data set for a given parameter in a given<br />

–– time frame.<br />

–– The number of data returned depends on the array size<br />

–– supplied by the user.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data set<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– PARAMETER_VALUES : array of parameter values<br />

–– TIME_FRAME : by default the time frame of the data set<br />

–– Exceptions :<br />

–– X_DATA_SET_NOT_OPENED : supplied data set is not opened<br />

–– X_NO_READ_ACCESS : data set not open with read access<br />

–– X_INVALID_PARAMETER : invalid parameter definition<br />

–– X_NO_DATA_AVAILABLE : data are not available<br />

–– X_ERROR_ACCESSING_FILE : general error accessing data set<br />

–– file<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

523 von/of: 662<br />

procedure ADD_NEW_PARAMETER(DATA_SET : in out T_DATA_SET;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : in MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : in TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

PRODUCER : in TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

ITEM_TYPE : in TEV_DEFINITIONS.T_MEASUREMENT_ALTERNATIVES);<br />

–– Description :<br />

–– Add a new parameter in the data set definition.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data set<br />

–– PARAMETER_NAME : name of the parameter inserted<br />

–– ENGINEERING_UNIT : engineering unit<br />

–– SOURCE_FILE_TYPE : type of the source file<br />

–– PRODUCER : name of the producer<br />

–– ITEM_TYPE : item type<br />

–– Exceptions :<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– X_NO_WRITE_ACCESS : data set not opened for write access<br />

–– X_TOO_MANY_PARAMETERS : maximum number of parameter reached<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

524 von/of: 662<br />

procedure ADD_NEW_VALUE(DATA_SET : in out T_DATA_SET;<br />

RAW_VALUE : in ADT_RAW_VALUE.T_RAW_VALUE;<br />

ENGINEERING_VALUE : in ADT_ENGINEERING_VALUE.T_ENGINEERING_VALUE;<br />

LT_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

SMT_TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME);<br />

–– Description :<br />

–– Add a new value in the data set for the last defined<br />

–– parameter.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data set<br />

–– RAW_VALUE : raw value<br />

–– ENGINEERING_VALUE : engineering value<br />

–– LT_TIME_TAG : lt time tag of the data value<br />

–– SMT_TIME_TAG : smt time tag of the data value<br />

–– Exceptions :<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

–– X_NO_WRITE_ACCESS : data set not opened for write access<br />

–– X_NO_PARAMETER_AVAILABLE : no parameter created yet<br />

–– X_ERROR_ACCESSING_FILE : general error accessing file<br />

––<br />

procedure ADD_NEW_VALUES(DATA_SET : in out T_DATA_SET;<br />

VALUES : in out T_PARAMETER_VALUE_L);<br />

–– Description :<br />

–– Add a list of values in the data set for the last defined<br />

–– parameter.<br />

––<br />

–– Parameters :<br />

–– DATA_SET : private data set<br />

–– VALUES : list of values<br />

–– Exceptions :<br />

–– X_DATA_SET_NOT_OPENED : data set is not opened<br />

–– X_NO_WRITE_ACCESS : data set not opened for write access<br />

–– X_NO_PARAMETER_AVAILABLE : no parameter created yet<br />

–– X_ERROR_ACCESSING_FILE : general error accessing file<br />

––<br />

procedure NEXT_VALUE_FOR_EACH_PARAM(<br />

DATA_SET_DESC : in T_DATA_SET;<br />

NB_PARAM : in NATURAL;<br />

LI<strong>ST</strong>ING_POSITION : in TEV_DEFINITIONS.T_POSITION_IN_LI<strong>ST</strong>ING;<br />

LA<strong>ST</strong>_POSITION : in TEV_DEFINITIONS.T_POSITION_IN_LI<strong>ST</strong>ING;<br />

ORDERING_TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

SECOND_TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

PARAMETER_VALUES : in out TEV_DEFINITIONS.T_PARAMETER_VALUES;<br />

EARLIE<strong>ST</strong>_TIMES : in out TEV_DEFINITIONS.T_TWO_TIME;<br />

EARLIE<strong>ST</strong>_LT_TIME_TAG : in out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

EARLIE<strong>ST</strong>_SMT_TIME_TAG : in out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME<br />

);<br />

procedure FORMAT_DEFINITION(<br />

DATA_SET : in T_DATA_SET;<br />

FILE_ID : in TEXT_IO.FILE_TYPE);<br />

function GET_TIME_TAG(<br />

PARAMETER_VALUE : in T_PARAMETER_VALUE;<br />

TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING)<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

X_DATA_SET_ALREADY_OPENED,<br />

X_DATA_SET_NOT_OPENED,<br />

X_NO_WRITE_ACCESS,<br />

X_INVALID_NAME,<br />

X_INVALID_PARAMETER,


Space Infrastructure<br />

X_NO_DATA_AVAILABLE,<br />

X_NO_READ_ACCESS,<br />

X_NO_PARAMETER_AVAILABLE,<br />

X_TOO_MANY_PARAMETERS,<br />

X_ERROR_ACCESSING_FILE,<br />

X_DATA_SET_ALREADY_EXI<strong>ST</strong> : exception;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

525 von/of: 662<br />

private<br />

type T_PARAMETER_DEFINITION is<br />

record<br />

PARAMETER_INDEX : TEV_DEFINITIONS.T_PARAMETERS_RANGE;<br />

PARAMETER_NAME : TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

ITEM_TYPE : TEV_DEFINITIONS.T_MEASUREMENT_ALTERNATIVES;<br />

PRODUCER : TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

DATA_NUMBER : natural := natural’first;<br />

DATA_PTR : natural := natural’first;<br />

end record;<br />

–– definition of a parameter in the data set<br />

type T_PARAMETER_DEFINITIONS_ARRAY is array(TEV_DEFINITIONS.T_PARAMETERS_RANGE) of<br />

T_PARAMETER_DEFINITION;<br />

–– definition of an array of a parameter definition<br />

type T_DATA_SET_DEFINITION is<br />

record<br />

TIME_FRAME : TEV_DEFINITIONS.T_TIME_FRAME;<br />

SAMPLING : TEV_DEFINITIONS.T_SAMPLING;<br />

SELECT_ON : DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : DBS_DEFINITIONS.T_TIME_ORDERING;<br />

PARAMETERS_NUMBER : NATURAL := 0;<br />

PARAMETER_DEFINITIONS : T_PARAMETER_DEFINITIONS_ARRAY;<br />

SESSIONS_NUMBER : NATURAL := 0;<br />

SESSIONS : TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES(<br />

TEV_DEFINITIONS.T_SESSIONS_RANGE<br />

);<br />

INCLUDE_DEF_SESSION : BOOLEAN;<br />

EXECUTION_DATE : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

end record;<br />

–– Description of private types<br />

––package definition to access data set file<br />

package DEFINITION_IO is new DIRECT_IO( ELEMENT_TYPE => T_DATA_SET_DEFINITION);<br />

–– DEFINITION_IO is used to access the data set definition<br />

–– as the header of the file<br />

package DATA_IO is new DIRECT_IO( ELEMENT_TYPE => T_PARAMETER_VALUE);<br />

–– DATA_IO is used to access the data value records inside<br />

–– the file,<br />

–– the first data to access is locatec at byte offset PTR_TO_FIR<strong>ST</strong>_DATA<br />

type T_DATA_SET is<br />

record<br />

DEFINITION_FILE_TYPE : DEFINITION_IO.FILE_TYPE;<br />

DATA_FILE_TYPE : DATA_IO.FILE_TYPE;<br />

FILENAME : TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

ACCESS_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS<br />

TEV_DEFINITIONS.READ;<br />

CURRENT_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_CURRENT_<strong>ST</strong>ATUS<br />

TEV_DEFINITIONS.CLOSED;<br />

DATA_SET_DEFINITION : T_DATA_SET_DEFINITION;<br />

end record;<br />

EXCEL_LINE_MAX_SIZE : constant NATURAL := 4096;<br />

subtype T_EXCEL_LINE is <strong>ST</strong>RING(1..EXCEL_LINE_MAX_SIZE);<br />

end ADT_DATA_SET;<br />

:=<br />

:=


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_LI<strong>ST</strong>ING_RESULT<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides operations to access a listing result file.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : HDT_TEV_API.ADT_LI<strong>ST</strong>ING_RESULT<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– <strong>CGS</strong> V4.3 at DASA<br />

–– creator: Bruening<br />

–– creation date: 06.07.99<br />

–– comment:<br />

–– New procedure for the merge ADT_DATA_SET/ADT_EVENT_RESULT tool :<br />

–– FORMAT_LINE<br />

–– CREATE_HEADER_DATE_TIME<br />

–– Procedures which were before internal and now provided<br />

–– FORMAT_HEADER<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

–– Required object : DBS_DEFINITIONS<br />

with DBS_DEFINITIONS;<br />

–– Required object : TEV_DEFINITIONS<br />

with TEV_DEFINITIONS;<br />

–– Required object : DIRECT_IO<br />

with DIRECT_IO;<br />

–– Required object : MPS_DEFINITIONS<br />

with MPS_DEFINITIONS;<br />

–– Required object : VICOS_LI<strong>ST</strong><br />

with VICOS_LI<strong>ST</strong>;<br />

–– Required object : <strong>CGS</strong>_CALENDAR<br />

with <strong>CGS</strong>_CALENDAR;<br />

–– Required object : ADT_ENGINEERING_VALUE<br />

with ADT_ENGINEERING_VALUE;<br />

with TEXT_IO;<br />

use TEV_DEFINITIONS;<br />

package ADT_LI<strong>ST</strong>ING_RESULT is<br />

the_file : text_io.file_type;<br />

–– Provided types and constants :<br />

type T_LI<strong>ST</strong>ING_RESULT is limited private;<br />

–– private adt listing result file<br />

type T_PARAMETER_DEFINITION is private;<br />

–– Provided operations :<br />

procedure EXTERNAL_FORMAT(<br />

LI<strong>ST</strong>ING_RESULT : in out T_LI<strong>ST</strong>ING_RESULT;<br />

EXTRACT_LI<strong>ST</strong>ING_FILE : in <strong>ST</strong>RING;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

526 von/of: 662


Space Infrastructure<br />

EXCEL_SEPARATOR : in CHARACTER := ’,’);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure EXTERNAL_FORMAT_FILE(<br />

LI<strong>ST</strong>ING_RESULT_FILE : in <strong>ST</strong>RING;<br />

TO_FILENAME : in <strong>ST</strong>RING;<br />

EXCEL_SEPARATOR : in CHARACTER := ’,’);<br />

procedure FORMAT_RESULT(<br />

LI<strong>ST</strong>ING_RESULT : in out T_LI<strong>ST</strong>ING_RESULT;<br />

FILENAME : in <strong>ST</strong>RING);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

527 von/of: 662<br />

–– Converts the listing result to a landscape string format<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– FILENAME : filename of formatted result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : listing result file not opened for read<br />

access<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_ERROR_ACCESSING_FILE : general error creating formatted<br />

result<br />

–– X_PARMS_DO_NOT_FIT_IN_LANDSCAPE_WIDTH<br />

procedure FORMAT_RESULT_FILE(LI<strong>ST</strong>ING_RESULT_FILE : in <strong>ST</strong>RING;<br />

TO_FILENAME : in <strong>ST</strong>RING;<br />

TOOL_ID : in TEV_DEFINITIONS.T_TOOL_ID := POSITIVE’first);<br />

–– Converts the listing result to a string format for display<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT_FILE : listing result file to format<br />

–– TO_FILENAME : filename of formatted result<br />

–– TOOL_ID : the tool id<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_ERROR_ACCESSING_FILE : general error creating formatted<br />

result<br />

–– X_INVALID_NAME : listing result file does not exist<br />

procedure OPEN(LI<strong>ST</strong>ING_RESULT_FILENAME : in <strong>ST</strong>RING;<br />

LI<strong>ST</strong>ING_RESULT : in out T_LI<strong>ST</strong>ING_RESULT;<br />

ACCESS_<strong>ST</strong>ATUS : in TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS :=<br />

TEV_DEFINITIONS.READ;<br />

ALLOW_OVERWRITE : in BOOLEAN := FALSE);<br />

–– Open a listing result, with read access if it already exists,<br />

–– or with write access to create a new one. The current date<br />

–– and time<br />

–– will be written in EXECUTION_TIME if creating a new listing<br />

–– result<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT_FILENAME : filename of the listing result<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– ACCESS_<strong>ST</strong>ATUS : Read only to extract information from a<br />

–– listing result<br />

–– Write when generating a listing result<br />

–– ALLOW_OVERWRITE : When ACCESS_<strong>ST</strong>ATUS is write this is<br />

–– required to allow generation<br />

–– of a listing result inside an already<br />

existing file<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_LI<strong>ST</strong>ING_RESULT_ALREADY_OPENED : listing result is in open<br />

–– state<br />

–– X_LI<strong>ST</strong>ING_RESULT_ALREADY_EXI<strong>ST</strong>S : file exists and overwrite<br />

–– is not allowed<br />

–– X_INVALID_NAME : listing result name is too long<br />

––<br />

procedure CLOSE(LI<strong>ST</strong>ING_RESULT : in out T_LI<strong>ST</strong>ING_RESULT);


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

528 von/of: 662<br />

–– Close a previously opened listing result<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result already open<br />

––<br />

procedure DEFINE(LI<strong>ST</strong>ING_RESULT : in out T_LI<strong>ST</strong>ING_RESULT;<br />

LI<strong>ST</strong>ING_RESULT_NAME : in <strong>ST</strong>RING;<br />

DATA_SET : in TEV_DEFINITIONS.T_RESULT_REF;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

SAMPLING : in TEV_DEFINITIONS.T_SAMPLING;<br />

SESSIONS : in TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

INCLUDE_DEF_SESSIONS : in BOOLEAN);<br />

–– Build and initialise the definition of an opened listing<br />

–– result<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– LI<strong>ST</strong>ING_RESULT_NAME : name of the listing result<br />

–– DATA_SET : name and location of data set<br />

–– TIME_FRAME : time frame of the listing result<br />

–– SAMPLING : private sampling of the data set<br />

–– SESSIONS : list of execution sessions in the data set<br />

–– INCLUDE_DEF_SESSIONS : include default session<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_NO_WRITE_ACCESS : listing result not opened for write<br />

–– access<br />

––<br />

function TIME_FRAME_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return TEV_DEFINITIONS.T_TIME_FRAME;<br />

–– Return the time frame in which the current listing result has<br />

–– been built.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function FILENAME_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return <strong>ST</strong>RING;<br />

–– Return the listing result file name.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function DATA_SET_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return TEV_DEFINITIONS.T_RESULT_REF;<br />

–– Return the data set and location of data set with which<br />

–– listing result was built<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

529 von/of: 662<br />

function TITLE_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return TEV_DEFINITIONS.T_TITLE;<br />

–– Return the title of the listing result<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function SAMPLING_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return TEV_DEFINITIONS.T_SAMPLING;<br />

–– Return the sampling for the data set from which the listing<br />

–– was built.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function PARAMETERS_NUMBER_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return NATURAL;<br />

–– Return the number of parameters used to build the listing<br />

–– result.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private data_set<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function PARAMETER_NAME_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

–– Return the name of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function SESSION_NUMBER_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return NATURAL;<br />

–– Return the number of sessions used to build the data set with<br />

–– which the listing result was created.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function SESSION_NAMES_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

–– Return the list of session names used to build the data set<br />

–– with which the listing result was created<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

530 von/of: 662<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function INCLUDE_DEF_SESSION_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return boolean;<br />

–– Return a flag to indicate the inclustion of the default test session<br />

–– Parameters:<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_NO_READ_ACCESS : listing result file not opened for<br />

read access<br />

––<br />

function EXECUTION_DATE_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

–– Return the date and time of execution<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

––<br />

function PARAMETER_DEFINITION_OF(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT;<br />

PARAMETER_INDEX : in TEV_DEFINITIONS.T_PARAMETERS_RANGE)<br />

return T_PARAMETER_DEFINITION;<br />

–– Extract the definition of a given parameter in<br />

–– the current listing result by specifying its ordering<br />

–– number.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– PARAMETER_INDEX : index of the parameter in the listing<br />

–– result :<br />

–– valid index is in range<br />

1..PARAMETERS_NUMBER_OF()<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_INVALID_PARAMETER : given parameter index is invalid<br />

––<br />

function PARAMETER_DEFINITION_OF_N(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME)<br />

return T_PARAMETER_DEFINITION;<br />

–– Extract the definition of a given parameter in<br />

–– the current listing result by specifying its name.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– PARAMETER_NAME : name of the parameter defined in the<br />

–– listing rsult<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_LI<strong>ST</strong>ING_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_INVALID_PARAMETER : given parameter name is invalid<br />

––<br />

function ENGINEERING_UNIT_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

–– Return the engineering unit of this parameter.<br />

––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

531 von/of: 662<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is invalid<br />

––<br />

function PARAMETER_INDEX_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return POSITIVE;<br />

–– Return the index of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is invalid<br />

––<br />

function SOURCE_FILE_TYPE_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

–– Return the type of the source files used for this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is invalid<br />

––<br />

function PRODUCER_NAME_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

–– Return the producer name of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function DATA_NUMBER_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return NATURAL;<br />

–– Return the number of data stored for this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is invalid<br />

––<br />

function GET_SELECTED_ON_TIME_TYPE(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_TYPE;<br />

–– Return the time type of the selection<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_NO_READ_ACCESS : listing result file not opened for<br />

read access<br />

––<br />

function GET_ORDERED_BY_TIME_TYPE(LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_ORDERING;<br />

–– Return the time ordering of the selection<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_NO_READ_ACCESS : listing result file not opened for<br />

read access<br />

––<br />

procedure EXTRACT_DATA(<br />

LI<strong>ST</strong>ING_RESULT : in T_LI<strong>ST</strong>ING_RESULT;<br />

PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION;<br />

LI<strong>ST</strong>ING_VALUES : in out TEV_DEFINITIONS.T_PARAMETER_VALUE_L;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

532 von/of: 662<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME<br />

:= TEV_DEFINITIONS.NULL_TIME_FRAME);<br />

–– Extract data from a listing result for a given parameter in a<br />

–– given time frame.<br />

–– The number of data returned depends on the array size<br />

–– supplied by the user.<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– LI<strong>ST</strong>ING_VALUES : array of listing values<br />

–– TIME_FRAME : by default the time frame of the listing<br />

–– result<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : supplied listing result is<br />

–– not opened<br />

–– X_NO_READ_ACCESS : listing result not open with read access<br />

–– X_INVALID_PARAMETER : invalid parameter definition<br />

–– X_NO_DATA_AVAILABLE : data are not available<br />

–– X_ERROR_ACCESSING_FILE : general error accessing listing<br />

–– result file<br />

––<br />

procedure ADD_LI<strong>ST</strong>_OF_VALUES(LI<strong>ST</strong>ING_RESULT : in out T_LI<strong>ST</strong>ING_RESULT;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : in MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : in TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

PRODUCER : in TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

LI<strong>ST</strong>_TO_ADD : in T_PARAMETER_VALUE_L);<br />

–– Add a parameter and list of values in the listing result for the next<br />

–– empty parameter<br />

––<br />

–– Parameters :<br />

–– LI<strong>ST</strong>ING_RESULT : private listing result<br />

–– PARAMETER_NAME : parameter name to be added<br />

–– ENGINEERING_UNIT : engineering unit for the parameter<br />

–– SOURCE_FILE_TYPE : source file type for the parameter<br />

–– PRODUCER : producer of the parameter<br />

–– LI<strong>ST</strong>_TO_ADD : list of listing values<br />

–– Exceptions :<br />

–– X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED : listing result is not opened<br />

–– X_NO_WRITE_ACCESS : listing result not opened for write<br />

–– access<br />

–– X_NO_PARAMETER_AVAILABLE : no parameter created yet<br />

–– X_ERROR_ACCESSING_FILE : general error accessing file<br />

–– X_INVALID_PARAMETER : the parameter is invalid<br />

–– X_INVALID_VALUE : the value is invalid<br />

––<br />

procedure FORMAT_LINE(<br />

ORDERING_TIME_TYPE : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

NB_PARAM : in NATURAL;<br />

ARRAY_HEAD_OF_VALUES : in TEV_DEFINITIONS.T_PARAMETER_VALUES;<br />

CURRENT_SMT_TIME : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

CURRENT_LT_TIME : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

FILE_ID : in TEXT_IO.FILE_TYPE;<br />

ALL_BYTE_<strong>ST</strong>REAM : in BOOLEAN;<br />

PREVIOUS_TIME : in out <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

LI<strong>ST</strong>ING_POSITION : in out TEV_DEFINITIONS.T_POSITION_IN_LI<strong>ST</strong>ING<br />

);<br />

––==============================================================<br />

––<br />

–– Operation Name: CREATE_HEADER_DATE_TIME<br />

–– Description:<br />

–– Creates the header for a specific listing result :<br />

–– Current date<br />

–– Current time<br />

–– LI<strong>ST</strong>ING RESULT:<br />

–– –––––––––––––––––––––––––––––––––––––––––


Space Infrastructure<br />

––<br />

––<br />

–– Parameters :<br />

–– none<br />

––<br />

––==============================================================<br />

procedure CREATE_HEADER_DATE_TIME;<br />

––==============================================================<br />

––<br />

–– Operation Name: WRITE_HEADER_DATE_TIME<br />

–– Description:<br />

–– Creates the header for a specific listing result :<br />

–– Current date<br />

–– Current time<br />

–– LI<strong>ST</strong>ING RESULT:<br />

–– –––––––––––––––––––––––––––––––––––––––––<br />

––<br />

––<br />

–– Parameters :<br />

–– none<br />

––<br />

––==============================================================<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure WRITE_HEADER_DATE_TIME(FILE_ID : in TEXT_IO.FILE_TYPE);<br />

procedure FORMAT_HEADER(<br />

NB_PARAM : in NATURAL;<br />

FIR<strong>ST</strong>_LINE : out <strong>ST</strong>RING;<br />

SECOND_LINE : out <strong>ST</strong>RING;<br />

FILE_ID : in TEXT_IO.FILE_TYPE);<br />

–– Provided exceptions :<br />

X_LI<strong>ST</strong>ING_RESULT_NOT_OPENED,<br />

X_ERROR_ACCESSING_FILE,<br />

X_LI<strong>ST</strong>ING_RESULT_ALREADY_OPENED,<br />

X_LI<strong>ST</strong>ING_RESULT_ALREADY_EXI<strong>ST</strong>S,<br />

X_INVALID_NAME,<br />

X_NO_READ_ACCESS,<br />

X_NO_WRITE_ACCESS,<br />

X_INVALID_TIME_FRAME,<br />

X_INVALID_PARAMETER,<br />

X_PARMS_DO_NOT_FIT_IN_LANDSCAPE_WIDTH,<br />

X_INVALID_VALUE : exception;<br />

private<br />

type T_PARAMETER_DEFINITION is<br />

record<br />

PARAMETER_INDEX : TEV_DEFINITIONS.T_PARAMETERS_RANGE;<br />

PARAMETER_NAME : TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

PRODUCER : TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

DATA_NUMBER : NATURAL := 0;<br />

end record;<br />

–– description of a parameter definition<br />

subtype T_PARAMETER_RANGE_L is<br />

NATURAL range 1 .. TEV_DEFINITIONS.MAX_NUMBER_OF_PARAMETERS_IN_LI<strong>ST</strong>ING;<br />

type T_PARAMETER_DEFINITIONS_ARRAY is<br />

array(T_PARAMETER_RANGE_L) of T_PARAMETER_DEFINITION;<br />

–– definition of an array of a parameter definition<br />

type T_LI<strong>ST</strong>ING_DEFINITION is<br />

record<br />

TIME_FRAME : TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : DBS_DEFINITIONS.T_TIME_ORDERING;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

533 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

534 von/of: 662<br />

DATA_SET : TEV_DEFINITIONS.T_RESULT_REF;<br />

TITLE : TEV_DEFINITIONS.T_TITLE;<br />

SAMPLING : TEV_DEFINITIONS.T_SAMPLING;<br />

SESSIONS_NUMBER : NATURAL := 0;<br />

SESSIONS :<br />

TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES(TEV_DEFINITIONS.T_SESSIONS_RANGE);<br />

INCLUDE_DEF_SESSIONS : BOOLEAN;<br />

EXECUTION_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

ASCII_DEFINED : BOOLEAN := False;<br />

PARAMETERS_NUMBER : NATURAL := 0;<br />

PARAMETER_DEFINITIONS : T_PARAMETER_DEFINITIONS_ARRAY;<br />

end record;<br />

–– description of a listing definition<br />

package DEFINITION_IO is new DIRECT_IO( ELEMENT_TYPE => T_LI<strong>ST</strong>ING_DEFINITION);<br />

–– DEFINITION_IO is used to access the listing result definition as<br />

–– the header of the file<br />

package LI<strong>ST</strong>ING_IO is new DIRECT_IO( ELEMENT_TYPE => T_PARAMETER_VALUE);<br />

–– LI<strong>ST</strong>ING_IO is used to access the listing value records inside<br />

–– the file, the first listing value to access is located at byte<br />

–– offset<br />

–– PTR_TO_FIR<strong>ST</strong>_LI<strong>ST</strong>ING<br />

type T_LI<strong>ST</strong>ING_RESULT is<br />

record<br />

DEFINITION_FILE_TYPE : DEFINITION_IO.FILE_TYPE;<br />

LI<strong>ST</strong>ING_FILE_TYPE : LI<strong>ST</strong>ING_IO.FILE_TYPE;<br />

FILENAME : TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

ACCESS_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS :=<br />

TEV_DEFINITIONS.READ;<br />

CURRENT_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_CURRENT_<strong>ST</strong>ATUS :=<br />

TEV_DEFINITIONS.CLOSED;<br />

LI<strong>ST</strong>ING_DEFINITION : T_LI<strong>ST</strong>ING_DEFINITION;<br />

end record;<br />

EXCEL_LINE_MAX_SIZE : constant NATURAL := 1024;<br />

subtype T_EXCEL_LINE is <strong>ST</strong>RING(1..EXCEL_LINE_MAX_SIZE);<br />

end ADT_LI<strong>ST</strong>ING_RESULT;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides operations to access a statistics result file.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : HDT_TEV_API.ADT_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.3 at Spacebel Informatique, Brussels<br />

–– creator: jm (on host asimov)<br />

–– creation date: 29.09.95 18:42:30<br />

–– comment:<br />

–– Update for SMT/LT (Req.485)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Spacebel Informatique, Brussels<br />

–– creator: rowena (on host moon)<br />

–– creation date: 25.07.95 10:50:52<br />

–– comment:<br />

–– Move from VICOS_CALENDAR to <strong>CGS</strong>_CALENDAR<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

––<br />

with DBS_DEFINITIONS;<br />

with TEV_DEFINITIONS;<br />

with VICOS_LI<strong>ST</strong>;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with DIRECT_IO;<br />

with MPS_DEFINITIONS;<br />

with ADT_ENGINEERING_VALUE;<br />

use TEV_DEFINITIONS;<br />

package ADT_<strong>ST</strong>ATI<strong>ST</strong>ICS_RESULT is<br />

–– Provided types and constants :<br />

type T_<strong>ST</strong>ATI<strong>ST</strong>IC_VALUE is<br />

record<br />

IS_NUMERIC : BOOLEAN := TRUE;<br />

MINIMUM : FLOAT := 0.0;<br />

MAXIMUM : FLOAT := 0.0;<br />

MEAN : FLOAT := 0.0;<br />

MEDIAN : FLOAT := 0.0;<br />

VARIANCE : FLOAT := 0.0;<br />

NB : NATURAL := 0;<br />

end record;<br />

–– definition of a statistics result within the statistics result<br />

–– file<br />

type T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT is limited private;<br />

type T_PARAMETER_DEFINITION is private;<br />

subtype T_PARAMETERS_RANGE is POSITIVE range 1 .. 50;<br />

MAXIMUM_NUMBER_OF_PARAMETERS : constant POSITIVE :=<br />

T_PARAMETERS_RANGE’LA<strong>ST</strong>;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

535 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

536 von/of: 662<br />

–– maximum number of parameters allowed in the statistics result<br />

MAX_PARAMETER_NUMBER : constant NATURAL := 10;<br />

–– Provided operations :<br />

procedure FORMAT_RESULT(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in out T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

FILENAME : in <strong>ST</strong>RING);<br />

–– Converts the statistic result to a string format<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– FILENAME : filename of formatted result<br />

–– Exceptions :<br />

––<br />

read access<br />

X_NO_READ_ACCESS : statistic result file not opened for<br />

––<br />

opened<br />

X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

––<br />

matted result<br />

X_ERROR_ACCESSING_FILE : general error creating for-<br />

procedure FORMAT_RESULT_FILE(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_FILE : in <strong>ST</strong>RING;<br />

TO_FILENAME : in <strong>ST</strong>RING);<br />

–– Converts the statistic result to a string format for display<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_FILE : statistic result file to for-<br />

mat<br />

–– TO_FILENAME : filename of formatted result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

opened<br />

–– X_ERROR_ACCESSING_FILE : general error creating formatted<br />

result<br />

–– X_INVALID_NAME : statistic result file does not exist<br />

procedure OPEN(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_FILENAME : in <strong>ST</strong>RING;<br />

<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in out T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

ACCESS_<strong>ST</strong>ATUS : in TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS := TEV_DE-<br />

FINITIONS.READ;<br />

ALLOW_OVERWRITE : in BOOLEAN := FALSE);<br />

–– Open a statistic result, with read access if it already exists<br />

–– or with write access to create a new one. The current date<br />

–– and time will be written in EXECUTION_TIME if creating a new<br />

––<br />

––<br />

statistic result<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_FILENAME : filename of the statistic result<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– ACCESS_<strong>ST</strong>ATUS : Read only to extract information from a<br />

–– statistic result<br />

–– Write when generating a statistic result<br />

–– ALLOW_OVERWRITE : When ACCESS_<strong>ST</strong>ATUS is write this is<br />

–– required to allow generation<br />

–– of a statistic result inside an already existing<br />

file<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

––<br />

in<br />

X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ALREADY_OPENED : statistic result is<br />

–– open state<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ALREADY_EXI<strong>ST</strong>S : file exists and<br />

–– overwrite is not allowed<br />

––<br />

––<br />

X_INVALID_NAME : statistic result name is too long<br />

procedure CLOSE(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in out T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT);<br />

–– Close a previously opened statistic result<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

537 von/of: 662<br />

–– accessing the file<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result already<br />

–– open<br />

––<br />

procedure DEFINE(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in out T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NAME : in <strong>ST</strong>RING;<br />

DATA_SET : in TEV_DEFINITIONS.T_RESULT_REF;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

SAMPLING : in TEV_DEFINITIONS.T_SAMPLING;<br />

SESSIONS : in TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

INCLUDE_DEF_SESSION : in BOOLEAN);<br />

–– Build and initialise the definition of an opened statistic<br />

–– result<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NAME : name of the statistic result<br />

–– DATA_SET : name and location of data set<br />

–– TIME_FRAME : time frame of the statistic result<br />

–– SAMPLING : private sampling of the data set<br />

–– SESSIONS : list of execution sessions in the data set<br />

–– INCLUDE_DEF_SESSION : include default session<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

–– X_NO_WRITE_ACCESS : statistic result not opened for<br />

write<br />

–– access<br />

––<br />

function TIME_FRAME_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return TEV_DEFINITIONS.T_TIME_FRAME;<br />

–– Return the time frame in which the current statistic result has<br />

–– been built.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

is<br />

is<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function FILENAME_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return <strong>ST</strong>RING;<br />

–– Return the statistic result file name.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function DATA_SET_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return TEV_DEFINITIONS.T_RESULT_REF;<br />

–– Return the data set and location of data set with which<br />

–– statistic result was built<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result


Space Infrastructure<br />

is<br />

is<br />

is<br />

is<br />

is<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

538 von/of: 662<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function SAMPLING_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return TEV_DEFINITIONS.T_SAMPLING;<br />

–– Return the sampling for the data set from which the statistic<br />

–– was built.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function PARAMETERS_NUMBER_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return NATURAL;<br />

–– Return the number of parameters used to build the statistic<br />

–– result.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private data_set<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function PARAMETER_NAME_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

–– Return the name of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function SESSION_NUMBER_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return NATURAL;<br />

–– Return the number of sessions used to build the data set with<br />

–– which the statistic result was created.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function SESSION_NAMES_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

–– Return the list of session names used to build the data set<br />

–– with which the statistic result was created<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

539 von/of: 662<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given listing result is<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function INCLUDE_DEF_SESSION_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return boolean;<br />

–– Return a flag to indicate the inclusion of the default test session<br />

–– Parameters:<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

opened<br />

–– X_NO_READ_ACCESS : statistic result file not<br />

opened for read access<br />

––<br />

function EXECUTION_DATE_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

–– Return the date and time of execution<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

is<br />

tic<br />

–– invalid<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

function PARAMETER_DEFINITION_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

PARAMETER_INDEX : in T_PARAMETERS_RANGE)<br />

return T_PARAMETER_DEFINITION;<br />

–– Extract the definition of a given parameter in<br />

–– the current statistic result by specifying its ordering number.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– PARAMETER_INDEX : index of the parameter in the statis-<br />

–– result :<br />

––<br />

METERS_NUMBER_OF()<br />

valid index is in range 1..PARA-<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

––<br />

is<br />

X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

–– invalid<br />

––<br />

––<br />

X_INVALID_PARAMETER : given parameter index is invalid<br />

function PARAMETER_DEFINITION_OF_N(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME)<br />

return T_PARAMETER_DEFINITION;<br />

–– Extract the definition of a given parameter in the current<br />

–– statistic result by specifying its name.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– PARAMETER_NAME : name of the parameter defined in the<br />

–– statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ERROR : the given statistic result<br />

is<br />

–– invalid<br />

–– X_INVALID_PARAMETER : given parameter name is invalid<br />

––<br />

function ENGINEERING_UNIT_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

540 von/of: 662<br />

return MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

–– Return the engineering unit of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is<br />

invalid<br />

––<br />

function PARAMETER_INDEX_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return POSITIVE;<br />

–– Return the index of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is<br />

invalid<br />

––<br />

function SOURCE_FILE_TYPE_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

–– Return the type of the source files used for this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

–– X_INVALID_PARAMETER : given parameter definition is<br />

invalid<br />

––<br />

function PRODUCER_NAME_OF(PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION)<br />

return TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

–– Return the producer name of this parameter.<br />

––<br />

–– Parameters :<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– Exceptions :<br />

––<br />

function TITLE_OF(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return TEV_DEFINITIONS.T_TITLE;<br />

–– Return the statistic result title.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

opened<br />

–– X_NO_READ_ACCESS : statistic result file not<br />

opened for read access<br />

––<br />

function GET_SELECTED_ON_TIME_TYPE(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_TYPE;<br />

–– Return the time type of the selection<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

opened<br />

–– X_NO_READ_ACCESS : statistic result file<br />

not opened for read access<br />

––<br />

function GET_ORDERED_BY_TIME_TYPE(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_ORDERING;<br />

–– Return the time ordering of the selection<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– Exceptions :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

541 von/of: 662<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

opened<br />

–– X_NO_READ_ACCESS : statistic result file<br />

not opened for read access<br />

––<br />

procedure EXTRACT_<strong>ST</strong>ATI<strong>ST</strong>ICS(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

PARAMETER_DEFINITION : in T_PARAMETER_DEFINITION;<br />

<strong>ST</strong>ATI<strong>ST</strong>IC_VALUES : in out T_<strong>ST</strong>ATI<strong>ST</strong>IC_VALUE);<br />

–– Extract data from a statistic result for a given parameter.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– PARAMETER_DEFINITION : private parameter definition<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_VALUES : statistic values<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : supplied statistic result<br />

–– is not opened<br />

–– X_NO_READ_ACCESS : statistic result not open with read<br />

–– access<br />

–– X_INVALID_PARAMETER : invalid parameter definition<br />

–– X_NO_DATA_AVAILABLE : data are not available<br />

–– X_ERROR_ACCESSING_FILE : general error accessing listing<br />

–– result file<br />

––<br />

procedure ADD_<strong>ST</strong>ATI<strong>ST</strong>ICS(<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : in out T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : in MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : in TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

PRODUCER : in TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

PARAM_VALUES : in T_PARAMETER_VALUE_L);<br />

–– Add a new value in the statistic result for the next empty<br />

–– parameter.<br />

––<br />

–– Parameters :<br />

–– <strong>ST</strong>ATI<strong>ST</strong>IC_RESULT : private statistic result<br />

–– PARAMETER_NAME : parameter name to be added<br />

–– ENGINEERING_UNIT : engineering unit for the parameter<br />

–– SOURCE_FILE_TYPE : source file type for the parameter<br />

–– PRODUCER : producer of the parameter<br />

–– PARAM_VALUES : list of parameter values for which to<br />

calculate the statistics<br />

–– Exceptions :<br />

–– X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED : statistic result is not<br />

–– opened<br />

–– X_NO_WRITE_ACCESS : statistic result not opened for<br />

write<br />

–– access<br />

–– X_NO_PARAMETER_AVAILABLE : no parameter created yet<br />

–– X_ERROR_ACCESSING_FILE : general error accessing file<br />

–– X_INVALID_PARAMETER : the parameter is invalid<br />

–– X_INVALID_VALUE : an inconsistency exists in the values<br />

–– Provided exceptions :<br />

X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_NOT_OPENED,<br />

X_ERROR_ACCESSING_FILE,<br />

X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ALREADY_OPENED,<br />

X_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT_ALREADY_EXI<strong>ST</strong>S,<br />

X_INVALID_NAME,<br />

X_NO_READ_ACCESS,<br />

X_NO_WRITE_ACCESS,<br />

X_INVALID_PARAMETER,<br />

X_PARMS_DO_NOT_FIT_IN_PORTRAIT_WIDTH,<br />

X_INVALID_VALUE : exception;<br />

private<br />

type T_PARAMETER_DEFINITION is<br />

record<br />

PARAMETER_INDEX : TEV_DEFINITIONS.T_PARAMETERS_RANGE;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

542 von/of: 662<br />

PARAMETER_NAME : TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

PRODUCER : TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

end record;<br />

subtype T_PARAMETER_RANGE_L is<br />

NATURAL range 1 .. TEV_DEFINITIONS.MAX_NUMBER_OF_PARAMETERS_IN_DEF;<br />

type T_PARAMETER_DEFINITIONS_ARRAY is<br />

array(T_PARAMETER_RANGE_L) of T_PARAMETER_DEFINITION;<br />

–– definition of an array of a parameter definition<br />

type T_<strong>ST</strong>ATI<strong>ST</strong>IC_DEFINITION is<br />

record<br />

TIME_FRAME : TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : DBS_DEFINITIONS.T_TIME_ORDERING;<br />

DATA_SET : TEV_DEFINITIONS.T_RESULT_REF;<br />

TITLE : TEV_DEFINITIONS.T_TITLE;<br />

SAMPLING : TEV_DEFINITIONS.T_SAMPLING;<br />

SESSIONS_NUMBER : NATURAL := 0;<br />

SESSIONS :<br />

TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES(TEV_DEFINITIONS.T_SESSIONS_RANGE);<br />

INCLUDE_DEF_SESSION : BOOLEAN;<br />

EXECUTION_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

PARAMETERS_NUMBER : NATURAL := 0;<br />

PARAMETER_DEFINITIONS : T_PARAMETER_DEFINITIONS_ARRAY;<br />

end record;<br />

package DEFINITION_IO is new DIRECT_IO( ELEMENT_TYPE => T_<strong>ST</strong>ATI<strong>ST</strong>IC_DEFINITION);<br />

–– DEFINITION_IO is used to access the listing result definition as<br />

––<br />

––<br />

the header of the file<br />

package <strong>ST</strong>ATI<strong>ST</strong>ICS_IO is new DIRECT_IO( ELEMENT_TYPE => T_<strong>ST</strong>ATI<strong>ST</strong>IC_VALUE);<br />

–– <strong>ST</strong>ATI<strong>ST</strong>ICS_IO is used to access the statistic value records inside<br />

–– the file, the statistic value to access is located at byte offset<br />

––<br />

––<br />

PTR_TO_<strong>ST</strong>ATI<strong>ST</strong>IC<br />

type T_<strong>ST</strong>ATI<strong>ST</strong>IC_RESULT is<br />

record<br />

DEFINITION_FILE_TYPE : DEFINITION_IO.FILE_TYPE;<br />

<strong>ST</strong>ATI<strong>ST</strong>IC_FILE_TYPE : <strong>ST</strong>ATI<strong>ST</strong>ICS_IO.FILE_TYPE;<br />

FILENAME :<br />

TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

ACCESS_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS :=<br />

TEV_DEFINITIONS.READ;<br />

CURRENT_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_CURRENT_<strong>ST</strong>ATUS :=<br />

TEV_DEFINITIONS.CLOSED;<br />

<strong>ST</strong>ATI<strong>ST</strong>IC_DEFINITION : T_<strong>ST</strong>ATI<strong>ST</strong>IC_DEFINITION;<br />

end record;<br />

end ADT_<strong>ST</strong>ATI<strong>ST</strong>ICS_RESULT;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_GRAPH_RESULT<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides operations to access a graphs result file.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : HDT_TEV_API.ADT_GRAPH_RESULT<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V5.2 at Central Repository V4.0 (moon)<br />

–– creator: thvvicos (on host darkvador)<br />

–– creation date: 20.07.97 20:54:52<br />

–– comment:<br />

–– Compliance with 4.1 : Tool id added<br />

––<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.4 at Spacebel Informatique, Brussels<br />

–– creator: jm (on host asimov)<br />

–– creation date: 15.12.95 16:26:02<br />

–– comment:<br />

–– Not numeric data refused<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.3 at Spacebel Informatique, Brussels<br />

–– creator: jm (on host asimov)<br />

–– creation date: 29.09.95 18:09:42<br />

–– comment:<br />

–– Update for SMT/LT (Req.485)<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at Spacebel Informatique, Brussels<br />

–– creator: rowena (on host moon)<br />

–– creation date: 25.07.95 10:47:44<br />

–– comment:<br />

–– Move from VICOS_CALENDAR to <strong>CGS</strong>_CALENDAR<br />

––<br />

––*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with DBS_DEFINITIONS;<br />

with TEV_DEFINITIONS;<br />

with MPS_DEFINITIONS;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with ADT_ENGINEERING_VALUE;<br />

with VICOS_LI<strong>ST</strong>;<br />

with TEXT_IO;<br />

package ADT_GRAPH_RESULT is<br />

type T_GRAPH_RESULT is limited private;<br />

–– private graph result<br />

–– Provided operations :<br />

procedure OPEN(<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

543 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

GRAPH_RESULT_FILENAME : in <strong>ST</strong>RING;<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

ACCESS_<strong>ST</strong>ATUS : in TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS<br />

:= TEV_DEFINITIONS.READ;<br />

ALLOW_OVERWRITE : in BOOLEAN := FALSE);<br />

–– Description:<br />

–– Open a graph result with read access if it already exists,<br />

–– or with write access to create a new one.<br />

–– If opened with read access translate the definition into<br />

–– T_GRAPH_RESULT and write current date and time in EXECUTION_TIME.<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT_FILENAME : filename of the graph result<br />

–– GRAPH_RESULT : private graph result<br />

–– ACCESS_<strong>ST</strong>ATUS : – READ only to extract information from<br />

–– graph result<br />

–– WRITE when generating a graph result<br />

–– ALLOW_OVERWRITE : when ACCESS_<strong>ST</strong>ATUS is WRITE,<br />

–– needed to allow generation of a graph result inside an already<br />

–– existing file<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_GRAPH_RESULT_ALREADY_OPENED : graph result has not<br />

–– been closed<br />

–– X_GRAPH_RESULT_ALREADY_EXI<strong>ST</strong>S : file exists and<br />

–– overwrite is not allowed<br />

–– X_INVALID_NAME: graph result name is too long<br />

––<br />

procedure CLOSE(GRAPH_RESULT : in out T_GRAPH_RESULT);<br />

–– Description:<br />

–– if graph result opened for write access then write graph<br />

–– result file and close, otherwise close.<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result already closed<br />

–– X_NO_WRITE_ACCESS : graph result not opened with write<br />

–– access<br />

–– X_UNABLE_TO_REMOVE_FILE : unable to remove temporary<br />

–– file<br />

–– X_NOT_NUMERIC_DATA : graph result contains a not numeric<br />

–– data<br />

–– X_INVALID_PROLOG_NAME : the prolog file does not exist<br />

–– X_NO_DATA_AVAILABLE : no parameters selected<br />

–– X_INVALID_SCALING : the value is outside the scaling or of the<br />

wrong type<br />

procedure DEFINE(<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

GRAPH_TYPE : in TEV_DEFINITIONS.T_GRAPH_TYPE;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

INCLUDE_DEF_SESSION : in BOOLEAN;<br />

SESSIONS : in TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

DATA_SET : in TEV_DEFINITIONS.T_RESULT_REF;<br />

GRAPH_NAME : in TEV_DEFINITIONS.T_RESULT_NAME);<br />

–– Description:<br />

–– Build and initialise the definition of an opened graph result<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private event result<br />

–– TIME_FRAME : time frame for the graph result<br />

–– INCLUDE_DEF_SESSION : default session included in data set<br />

–– SESSIONS : execution sessions included in data set<br />

–– DATA_SET : the data set from which the graph result is<br />

–– built<br />

–– GRAPH_NAME : the graph name<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

544 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result not opened for write<br />

–– access<br />

–– X_TOO_MANY_SESSIONS : too many sessions selected<br />

procedure SET_LINE_CHARACTERI<strong>ST</strong>ICS(<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

PARAMETERS_INFO :in<br />

TEV_DEFINITIONS.T_LINE_PARAMETERS_INFO;<br />

X_NAME : in TEV_DEFINITIONS.T_AXIS_NAME;<br />

Y_NAME : in TEV_DEFINITIONS.T_AXIS_NAME;<br />

Y_SCALING : in TEV_DEFINITIONS.T_GRAPH_SCALING;<br />

RELATIVE_TIME : in boolean := false);<br />

–– Set the characteristics for a line graph<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– PARAMETERS_INFO : parameter details for line graph<br />

–– Y_NAME : name of y axis<br />

–– RELATIVE_TIME : true if time info is relative<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result not opened for write<br />

–– access<br />

––<br />

procedure SET_CHART_CHARACTERI<strong>ST</strong>ICS(<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

CHART_COLOURS : in TEV_DEFINITIONS.T_CHART_COLOURS);<br />

–– Set the pie/bar chart characteristics<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– CHART_COLOURS : allowed colours for the parameters<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result is not opened for write<br />

–– access<br />

–– X_INVALID_PARAMETER_NO : invalid number of parameters<br />

–– X_INVALID_GRAPH_TYPE : not a pie or bar chart<br />

procedure SET_XY_CHARACTERI<strong>ST</strong>ICS(<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

PARAMETERS_INFO : in TEV_DEFINITIONS.T_XY_INFO);<br />

–– Set the xy graph characteristics<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– CHARACTERI<strong>ST</strong>ICS : xy graph parameters info<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result is not opened for write<br />

–– access<br />

––<br />

function DATA_SET_NAME_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return TEV_DEFINITIONS.T_RESULT_REF;<br />

–– Get the name of the data set<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

–– X_NO_READ_ACCESS : graph result not opened for read access<br />

function TITLE_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return TEV_DEFINITIONS.T_RESULT_NAME;<br />

–– Get the title of the graph result<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

545 von/of: 662


Space Infrastructure<br />

––<br />

––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

–– X_NO_READ_ACCESS : graph result not opened for read access<br />

function TIME_FRAME_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return TEV_DEFINITIONS.T_TIME_FRAME;<br />

–– Get the time frame of the graph result<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

–– X_NO_READ_ACCESS : graph result not opened for read access<br />

––<br />

function GRAPH_TYPE_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return TEV_DEFINITIONS.T_GRAPH_TYPE;<br />

–– Get the graph type of the graph result file<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

–– X_NO_READ_ACCESS : graph result not opened for read access<br />

function SESSION_NUMBER_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return NATURAL;<br />

–– Get the number of execution sessions in the data set<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT ; private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

–– X_NO_READ_ACCESS : graph result not opened for read access<br />

function SESSION_NAMES_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

–– Get the execution session names from the data set<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : the graph result is not open<br />

–– X_NO_READ_ACCESS : graph result not opened for read access<br />

––<br />

function NUMBER_OF_PARAMETERS(<br />

GRAPH_RESULT : in T_GRAPH_RESULT) return NATURAL;<br />

–– Get the number of parameters for a graph result<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : the graph result is not open<br />

–– X_NO_READ_ACCESS: graph result not opened for read acces<br />

procedure PARAMETER_DETAILS(<br />

GRAPH_RESULT : in T_GRAPH_RESULT;<br />

PARAMETER_NO : in NATURAL;<br />

PARAMETER_NAME: out<br />

TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT: out<br />

MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE: out<br />

TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

ITEM_TYPE: out<br />

TEV_DEFINITIONS.T_MEASUREMENT_ALTERNATIVES;<br />

TEV_DEFINITIONS.T_PRODUCER_NAME);<br />

–– Get the parameter details of a graph result<br />

––<br />

PRODUCER : out<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

546 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– PARAMETER_NO: the number of the parameter index<br />

–– PARAMETER_NAME: the parameter name<br />

–– ENGINEERING_UNIT: the engineering unit<br />

–– SOURCE_FILE_TYPE: the source file type<br />

–– ITEM_TYPE : the item type<br />

–– PRODUCER : the producer<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : the graph result is not open<br />

–– X_NO_READ_ACCESS: graph result not opened for read acces<br />

–– X_INVALID_PARAMETER_INDEX : invalid parameter index<br />

procedure GET_LINE_GRAPH_CHARACTERI<strong>ST</strong>ICS(<br />

GRAPH_RESULT : in T_GRAPH_RESULT;<br />

LINE_INFO: out<br />

TEV_DEFINITIONS.T_LINE_PARAMETERS_INFO;<br />

X_NAME : out TEV_DEFINITIONS.T_AXIS_NAME;<br />

Y_NAME : out TEV_DEFINITIONS.T_AXIS_NAME;<br />

NO_PARAMETERS : out<br />

TEV_DEFINITIONS.T_LINE_GRAPH_RANGE;<br />

Y_SCALING : out TEV_DEFINITIONS.T_GRAPH_SCALING;<br />

X_REL_TIME : out BOOLEAN);<br />

–– Get the characteristics of a line graph<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– LINE_INFO : the characteristics of a line graph<br />

–– X_NAME : the name of the x axis<br />

–– Y_NAME : the name of the y axis<br />

–– Y_SCALING : the y scaling<br />

–– X_REL_TIME : relative time on the x axis<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

–– X_INVALID_GRAPH_TYPE : the graph result is not of the type line<br />

–– X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

547 von/of: 662<br />

procedure GET_CHART_CHARACTERI<strong>ST</strong>ICS(GRAPH_RESULT : in T_GRAPH_RESULT;<br />

CHART_COLOURS : out TEV_DEFINITIONS.T_CHART_COLOURS);<br />

–– Get the characteristics of a pie/bar chart<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– CHART_COLOURS : allowed colours for the parameters<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : the graph result is not open<br />

–– X_INVALID_GRAPH_TYPE : the graph result is not of type bar<br />

X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

procedure GET_XY_CHARACTERI<strong>ST</strong>ICS(GRAPH_RESULT : in T_GRAPH_RESULT;<br />

XY_INFO : out TEV_DEFINITIONS.T_XY_INFO);<br />

–– Get the characteristics of an xy graph<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– XY_INFO : the characteristics of an xy graph<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : the graph result is not open<br />

–– X_INVALID_GRAPH_TYPE : the graph result is not of type XY<br />

X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

––<br />

function EXECUTION_TIME_OF(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

–– return the execution date and time of the graph result<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

––<br />

––<br />

function INCLUDE_DEFAULT_SESSION(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return BOOLEAN;<br />

–– return true if the default session is included<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

––<br />

function GET_SELECTED_ON_TIME_TYPE(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_TYPE;<br />

–– return the time type of the selection<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

––<br />

function GET_ORDERED_BY_TIME_TYPE(GRAPH_RESULT : in T_GRAPH_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_ORDERING;<br />

–– return the time type of the selection<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not open<br />

X_NO_READ_ACCESS : the graph result is not opened for read<br />

–– access<br />

––<br />

procedure ADD_NEW_PARAMETER(GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

PARAMETER_NAME : in TEV_DEFINITIONS.T_PARAMETER_NAME;<br />

ENGINEERING_UNIT : in MPS_DEFINITIONS.T_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : in TEV_DEFINITIONS.T_SOURCE_FILE_TYPE;<br />

PRODUCER : in TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

ITEM_TYPE :in TEV_DEFINITIONS.T_MEASUREMENT_ALTERNATIVES);<br />

–– Add a new parameter in the graph result definition.<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– PARAMETER_NAME : name of the parameter inserted<br />

–– ENGINEERING_UNIT : engineering unit<br />

–– SOURCE_FILE_TYPE : type of the source file<br />

–– PRODUCER : name of the producer<br />

–– ITEM_TYPE : item type<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result not opened for write<br />

–– access<br />

–– X_TOO_MANY_PARAMETERS : maximum number of parameter<br />

–– reached<br />

–– X_DIFFERENT_ENGINEERING_UNITS_FOR_PIE_CHART :<br />

–– parameters of a pie chart have different engineering units<br />

––<br />

procedure ADD_NEW_VALUES(<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

VALUES : in out<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

548 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

TEV_DEFINITIONS.T_PARAMETER_VALUE_L);<br />

–– Add a list of values in the graph result for the last defined<br />

–– parameter. This operation may not be used for an XY graph.<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– VALUES : list of values<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result not opened for write<br />

–– access<br />

–– X_NO_PARAMETER_AVAILABLE : no parameter created yet<br />

–– X_ERROR_ACCESSING_FILE : general error accessing file<br />

–– X_NOT_ALLOWED_FOR_XY : operation not allowed for XY<br />

–– graph<br />

–– X_VALUES_ALREADY_SET : values have already been added<br />

procedure ADD_VALUES_FOR_XY_GRAPH(<br />

GRAPH_RESULT : in out T_GRAPH_RESULT;<br />

X_VALUES : in out<br />

TEV_DEFINITIONS.T_ENGINEERING_VALUE_L;<br />

Y_VALUES : in out<br />

TEV_DEFINITIONS.T_ENGINEERING_VALUE_L;<br />

LT_TIME_VALUES : in out<br />

TEV_DEFINITIONS.T_DATE_AND_TIME_L;<br />

SMT_TIME_VALUES : in out<br />

TEV_DEFINITIONS.T_DATE_AND_TIME_L);<br />

–– Add the values for an XY graph. There must be the same number<br />

–– of elements in each list.<br />

––<br />

–– Parameters :<br />

–– GRAPH_RESULT : private graph result<br />

–– X_VALUES : list of x values<br />

–– Y_VALUES : list of corresponding y values<br />

–– LT_TIME_VALUES : list of corresponding LT time tags<br />

–– SMT_TIME_VALUES : list of corresponding SMT time tags<br />

–– Exceptions :<br />

–– X_GRAPH_RESULT_NOT_OPENED : graph result is not opened<br />

–– X_NO_WRITE_ACCESS : graph result not opened for write access<br />

–– X_X_AND_Y_PARAMETERS_NOT_AVAILABLE : no x and y<br />

–– parameters created yet<br />

–– X_ERROR_ACCESSING_FILE : general error accessing file<br />

–– X_INVALID_GRAPH_TYPE : Graph type not XY<br />

–– X_LI<strong>ST</strong>S_DO_NOT_MATCH : the x values, y values and time<br />

–– values do not match<br />

––<br />

procedure FORMAT_RESULT(FILE_TO_FORMAT : in <strong>ST</strong>RING;<br />

FORMATTED_FILE : in <strong>ST</strong>RING;<br />

TOOL_ID : in TEV_DEFINITIONS.T_TOOL_ID := POSITIVE’first);<br />

–– Operation retained for orthogonal processing through the<br />

–– tools. No formatting is undertaken as the file is already in<br />

–– postscript format.<br />

––<br />

–– Parameters :<br />

–– FILE_TO_FORMAT : file to format<br />

–– FORMATTED_FILE : filename of formatted result<br />

–– TOOL_ID : the tool id<br />

–– Exceptions :<br />

–– X_FILE_DOES_NOT_EXI<strong>ST</strong> : the file to format does not exist<br />

–– X_ACCESS_VIOLATION : unable to access the file to format<br />

–– X_ERROR_READNG_FILE : general error reading file to format<br />

–– X_ERROR_CREATING_FILE : general error creating formatted<br />

–– result<br />

X_GRAPH_RESULT_ALREADY_OPENED,<br />

X_GRAPH_RESULT_ALREADY_EXI<strong>ST</strong>S,<br />

X_GRAPH_RESULT_NOT_OPENED,<br />

X_DIFFERENT_ENGINEERING_UNITS_FOR_PIE_CHART,<br />

X_NOT_ALLOWED_FOR_XY,<br />

X_X_AND_Y_PARAMETERS_NOT_AVAILABLE,<br />

X_LI<strong>ST</strong>S_DO_NOT_MATCH,<br />

X_NO_WRITE_ACCESS,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

549 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

X_NO_READ_ACCESS,<br />

X_ERROR_ACCESSING_FILE,<br />

X_TOO_MANY_SESSIONS,<br />

X_TOO_MANY_PARAMETERS,<br />

X_NO_PARAMETER_AVAILABLE,<br />

X_VALUES_ALREADY_SET,<br />

–– added by JCT@SIF (dec.95) : data in graph must be numeric.<br />

X_NOT_NUMERIC_DATA,<br />

X_INVALID_SCALING,<br />

X_INVALID_GRAPH_TYPE,<br />

X_INVALID_PARAMETER_INDEX,<br />

X_INVALID_NAME,<br />

X_INVALID_PROLOG_NAME,<br />

X_NO_DATA_AVAILABLE : exception;<br />

private<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

550 von/of: 662<br />

type T_GRAPH_CHARACTERI<strong>ST</strong>IC(GRAPH_TYPE :<br />

TEV_DEFINITIONS.T_GRAPH_TYPE := TEV_DEFINITIONS.UNDEFINED) is<br />

record<br />

case GRAPH_TYPE is<br />

when TEV_DEFINITIONS.LINE =><br />

LINE_PARAMETER_INFO : TEV_DEFINITIONS.T_LINE_PARAMETERS_INFO;<br />

X_NAME : TEV_DEFINITIONS.T_AXIS_NAME;<br />

Y_NAME : TEV_DEFINITIONS.T_AXIS_NAME;<br />

X_REL_TIME : BOOLEAN := FALSE;<br />

Y_SCALING : TEV_DEFINITIONS.T_GRAPH_SCALING<br />

:= TEV_DEFINI-<br />

TIONS.DEFAULT_SCALING;<br />

when TEV_DEFINITIONS.BAR | TEV_DEFINITIONS.PIE =><br />

CHART_COLOURS : TEV_DEFINITIONS.T_CHART_COLOURS;<br />

when TEV_DEFINITIONS.XY =><br />

XY_PARAMETER_INFO : TEV_DEFINITIONS.T_XY_INFO;<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

type T_PARAMETER_DEFINITION is<br />

record<br />

PARAMETER_NAME : TEV_DEFINITIONS.T_PARAMETER_NAME :=<br />

TEV_DEFINITION-<br />

S.NULL_PARAMETER_NAME;<br />

ENGINEERING_UNIT : MPS_DEFINITIONS.T_ENGINEERING_UNIT:=<br />

TEV_DEFINITION-<br />

S.NULL_TEV_ENGINEERING_UNIT;<br />

SOURCE_FILE_TYPE : TEV_DEFINITIONS.T_SOURCE_FILE_TYPE:=<br />

TEV_DEFINITIONS.AR-<br />

CHIVED_FILE;<br />

ITEM_TYPE : TEV_DEFINITIONS.T_MEASUREMENT_ALTERNATIVES:=<br />

TEV_DEFINITIONS.EGSE_IN-<br />

TEGER_MEASUREMENT;<br />

PRODUCER : TEV_DEFINITIONS.T_PRODUCER_NAME:=<br />

TEV_DEFINITIONS.NULL_PRO-<br />

DUCER_NAME;<br />

DATA_NUMBER : natural := natural’first;<br />

DATA_LI<strong>ST</strong> : TEV_DEFINITIONS.T_PARAMETER_VALUE_L;<br />

end record;<br />

–– definition of a parameter<br />

type T_GRAPH_DEFINITION is<br />

record<br />

DATA_SET : TEV_DEFINITIONS.T_RESULT_REF;<br />

TIME_FRAME : TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : DBS_DEFINITIONS.T_TIME_ORDERING;<br />

GRAPH_NAME : TEV_DEFINITIONS.T_RESULT_NAME;<br />

GRAPH_CHARACTERI<strong>ST</strong>IC : T_GRAPH_CHARACTERI<strong>ST</strong>IC;<br />

SESSIONS_NO : natural;<br />

SESSIONS : TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES(<br />

TEV_DEFINITION-<br />

S.T_SESSIONS_RANGE);<br />

INCLUDE_DEF_SESSION : BOOLEAN;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

EXECUTION_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

end record;<br />

–– definition of a graph. The execution sessions are the<br />

–– execution sessions included in the data set<br />

type T_PARAMETER_VALUE_DETAILS is array(<br />

T_PARAMETER_DEFINITION;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

551 von/of: 662<br />

1..TEV_DEFINITIONS.MAX_PARMS_IN_CHART)<br />

of<br />

type T_GRAPH_RESULT is<br />

record<br />

FILE_TYPE : TEXT_IO.FILE_TYPE;<br />

FILENAME : TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

ACCESS_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS<br />

:= TEV_DEFINITIONS.READ;<br />

CURRENT_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_CURRENT_<strong>ST</strong>ATUS<br />

:= TEV_DEFINITION-<br />

S.CLOSED;<br />

GRAPH_DEFINITION : T_GRAPH_DEFINITION;<br />

PARAMETERS_NO : natural := natural’first;<br />

GRAPH_DATA : T_PARAMETER_VALUE_DETAILS;<br />

end record;<br />

end ADT_GRAPH_RESULT;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– ADT_PACKET_RESULT<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– Provides operations to access a packet result file as an ADT.<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : HDT_TEV_API.ADT_PACKET_RESULT<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.3 at DASA<br />

–– creator: Bruening<br />

–– creation date: 01.02.00<br />

–– comment:<br />

–– Add CAL_<strong>ST</strong>ATE_CODE for a GDU in T_PACKET_RECORD. The calibrated value<br />

–– is then stored in the ADT, to avoid calling MDB for the formatting<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at DASA<br />

–– creator: Bruening<br />

–– creation date: 03.05.99<br />

–– comment:<br />

–– The record T_PACKET_DEFINITION contains two new components :<br />

–– ADU_SID_PATHNAME List of SID–pathname for the ADU which<br />

–– have been dumped<br />

–– GDU_SID_PATHNAME List of SID–pathname for the GDU which<br />

–– have been dumped<br />

––<br />

–– The two new components of the record can be set up through<br />

–– the procedure DEFINE<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– V4.2 at DASA<br />

–– creator: Bruening<br />

–– creation date: 28.04.99<br />

–– comment:<br />

–– New procedure CHANGE_TIME_FRAME_WHEN_INTERRUPTION used<br />

–– to store into the result file the end time tag as the<br />

–– interruption time tag<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

with TEV_DEFINITIONS;<br />

with DBS_DEFINITIONS;<br />

with <strong>CGS</strong>_CALENDAR;<br />

with VICOS_LI<strong>ST</strong>;<br />

with DIRECT_IO;<br />

with ADT_ADU;<br />

with ADT_GDU;<br />

with VICOS_DEFINITIONS;<br />

with MPS_DEFINITIONS;<br />

package ADT_PACKET_RESULT is<br />

–– Provided types and constants :<br />

SPEC_SCCSID_ADS : constant <strong>ST</strong>RING := ”%Z%%Z%”;<br />

type T_PACKET_RECORD(PACKET : TEV_DEFINITIONS.T_PACKET_TYPE<br />

:= TEV_DEFINITIONS.NO_CHOICE) is record<br />

PACKET_ID : POSITIVE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

552 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

553 von/of: 662<br />

ARCHIVED_TIME : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME := <strong>CGS</strong>_CALENDAR.NULL_DATE_AND_TIME;<br />

PRODUCER : VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

case PACKET is<br />

when TEV_DEFINITIONS.ADU =><br />

ADU_PACKET : ADT_ADU.T_ADU;<br />

when TEV_DEFINITIONS.GDU =><br />

GDU_PACKET : ADT_GDU.T_GDU;<br />

CAL_<strong>ST</strong>ATE_CODE : MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE := (others => ’ ’);<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

–– Packet record containing any kind of record : ADU or GDU<br />

–– definition of a list of packets (via the vicos list)<br />

package P_PACKET_LI<strong>ST</strong> is new VICOS_LI<strong>ST</strong>(T_PACKET_RECORD);<br />

subtype T_PACKET_L is P_PACKET_LI<strong>ST</strong>.LI<strong>ST</strong>;<br />

type T_ADU_GDU_PATHNAME_LI<strong>ST</strong> is array (integer range 1..20) of<br />

TEV_DEFINITIONS.T_PACKET_PATHNAME;<br />

type T_SID_PATHNAME_LI<strong>ST</strong> is array (integer range 1..20) of TEV_DEFINITIONS.T_SID_PATHNAME;<br />

–– T_PACKET_RESULT_ACCESS added by RSE for SPR_2391<br />

type T_PACKET_RESULT_ACCESS_<strong>ST</strong>ATUS is (READ,WRITE,UPDATE_DISPLAY_CHARACTERI<strong>ST</strong>ICS);<br />

type T_PACKET_RESULT is limited private;<br />

–– Packet result ADT record<br />

–– Provided operations :<br />

procedure SAFE_OPEN(PACKET_RESULT_FILENAME : in <strong>ST</strong>RING;<br />

PACKET_RESULT : in out T_PACKET_RESULT);<br />

–– Description :<br />

–– Open a packet result, with read access,<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT_FILENAME : filename of the packet result<br />

–– PACKET_RESULT : private packet result<br />

––<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_INVALID_NAME : packet result name is too long<br />

––<br />

procedure SAFE_CLOSE(PACKET_RESULT : in out T_PACKET_RESULT);<br />

–– Description :<br />

–– Close a previously opened packet result file.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions : none<br />

––<br />

–– modified by RSE for SPR_2391<br />

procedure OPEN(PACKET_RESULT_FILENAME : in <strong>ST</strong>RING;<br />

PACKET_RESULT : in out T_PACKET_RESULT;<br />

–– ACCESS_<strong>ST</strong>ATUS : in TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS<br />

–– := TEV_DEFINITIONS.READ;<br />

ACCESS_<strong>ST</strong>ATUS : in T_PACKET_RESULT_ACCESS_<strong>ST</strong>ATUS := READ;<br />

ALLOW_OVERWRITE : in BOOLEAN := FALSE);<br />

–– Description :<br />

–– Open a packet result, with read access on an existing one,<br />

–– with write access to create a new one.<br />

–– with update_display_characteristics access to modify an existing one.<br />

–– Read definition.<br />

–– Write current date and time in EXECUTION_TIME if creating a new<br />

–– packet result.<br />

–– Close file<br />

–– Open file at offset PTR_TO_FIR<strong>ST</strong>_PACKET<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT_FILENAME : filename of the packet result<br />

–– PACKET_RESULT : private packet result


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

554 von/of: 662<br />

–– ACCESS_<strong>ST</strong>ATUS : – READ only to extract information from<br />

–– packet result<br />

–– – WRITE when generating a packet result<br />

–– – UPDATE_DISPLAY_CHARACTERI<strong>ST</strong>ICS to modify an existing result<br />

–– ALLOW_OVERWRITE : when ACCESS_<strong>ST</strong>ATUS is WRITE, needed to allow<br />

–– generation of a packet result inside an already existing file<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_PACKET_RESULT_ALREADY_OPENED : packet result is still in<br />

–– open state<br />

–– X_PACKET_RESULT_ALREADY_EXI<strong>ST</strong>S : file exists and overwrite<br />

–– is not allowed<br />

–– X_INVALID_NAME : packet result name is too long<br />

––<br />

procedure CLOSE(PACKET_RESULT : in out T_PACKET_RESULT);<br />

–– Description :<br />

–– Close a previously opened packet result file.<br />

–– Open file<br />

–– Write definition if opened for write access<br />

–– Close file<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_ERROR_ACCESSING_FILE : general error reported when<br />

–– accessing the file<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result already closed<br />

––<br />

procedure DEFINE(<br />

PACKET_RESULT : in out T_PACKET_RESULT;<br />

PACKET_RESULT_NAME : in TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

PRODUCER : in TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

INCLUDE_DEF_SESSION : in boolean;<br />

EXECUTION_SESSIONS : in TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

CHARACTERI<strong>ST</strong>IC : in TEV_DEFINITIONS.T_PACKET_TYPE<br />

:= TEV_DEFINITIONS.ADUS;<br />

FORMAT : in TEV_DEFINITIONS.T_PACKET_FORMAT<br />

:= TEV_DEFINITIONS.DEFAULT_PACKET_FORMAT;<br />

BYTES_PER_LINE : in TEV_DEFINITIONS.T_PACKET_BYTES_LINE<br />

:= TEV_DEFINITIONS.DEFAULT_BYTES_LINE;<br />

PATHNAME : in TEV_DEFINITIONS.T_PACKET_PATHNAME;<br />

SUMMARY_FORMAT : in boolean := False;<br />

SELECTED_ADUS : in T_ADU_GDU_PATHNAME_LI<strong>ST</strong>;<br />

SELECTED_GDUS : in T_ADU_GDU_PATHNAME_LI<strong>ST</strong>;<br />

ADU_SID_PATHNAME : in T_SID_PATHNAME_LI<strong>ST</strong>;<br />

GDU_SID_PATHNAME : in T_SID_PATHNAME_LI<strong>ST</strong>);<br />

–– Description :<br />

–– Build and initialise the definition of an opened packet<br />

–– result. Sets the field PTR_TO_FIR<strong>ST</strong>_PACKET<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– PACKET_RESULT_NAME : name of the packet result<br />

–– TIME_FRAME : time frame of the packet result<br />

–– SELECT_ON : time tag selection type ie SMT or LT<br />

–– ORDER_BY : time order of the data set ie SMT or LT<br />

–– PRODUCER : producer of packet result<br />

–– INCLUDE_DEF_SESSION : flag to include default session<br />

–– EXECUTION_SESSIONS : list of execution session names<br />

–– CHARACTERI<strong>ST</strong>IC : specific adu/gdu, all adu’s/gdu’s<br />

–– FORMAT : output format<br />

–– BYTES_PER_LINE : number of bytes per line<br />

–– PATHNAME : pathname<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_WRITE_ACCESS : packet result not opened for write access<br />

–– X_TOO_MANY_SESSIONS : too many sessions defined


Space Infrastructure<br />

––<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

555 von/of: 662<br />

procedure CHANGE_TIME_FRAME_WHEN_INTERRUPTION(<br />

PACKET_RESULT : in out T_PACKET_RESULT;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME);<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– TIME_FRAME : new time frame of the packet result, up to the interruption<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_WRITE_ACCESS : packet result not opened for write access<br />

procedure SET_DISPLAY_CHARACTERI<strong>ST</strong>ICS(<br />

PACKET_RESULT : in out T_PACKET_RESULT;<br />

FORMAT : in TEV_DEFINITIONS.T_PACKET_FORMAT<br />

:= TEV_DEFINITIONS.DEFAULT_PACKET_FORMAT;<br />

BYTES_PER_LINE : in TEV_DEFINITIONS.T_PACKET_BYTES_LINE<br />

:= TEV_DEFINITIONS.DEFAULT_BYTES_LINE;<br />

SUMMARY_FORMAT : in boolean := False);<br />

–– Description :<br />

–– Set formatting informations. This operation can be called at<br />

–– any time, when writing or reading a result file.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– FORMAT : output format<br />

–– BYTES_PER_LINE : number of bytes per line<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

function TIME_FRAME_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return TEV_DEFINITIONS.T_TIME_FRAME;<br />

–– Description :<br />

–– Return the time frame in which the current packet result has<br />

–– been built.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

––<br />

function GET_SELECTED_ON_TIME_TYPE( PACKET_RESULT : in T_PACKET_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_TYPE;<br />

–– Description :<br />

–– Return the selected on time type with which the current packet result has been<br />

–– built.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

function GET_ORDERED_BY_TIME_TYPE( PACKET_RESULT : in T_PACKET_RESULT)<br />

return DBS_DEFINITIONS.T_TIME_ORDERING;<br />

–– Description :<br />

–– Return the ordered by time type with which the current packet result has been<br />

–– built.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_DATA_SET_NOT_OPENED : packet result is not opened<br />

function FILENAME_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return <strong>ST</strong>RING;<br />

–– Description :


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Return the packet result file name.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

––<br />

function PRODUCER_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

–– Description :<br />

–– Return the packet result producer<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

function NO_OF_PACKETS(PACKET_RESULT : in T_PACKET_RESULT)<br />

return NATURAL;<br />

–– Description :<br />

–– Return the number of packets<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

function INCLUDE_DEF_SESSION_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return boolean;<br />

–– Description :<br />

–– Return the include default session flag<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

function SESSIONS_NUMBER_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return NATURAL;<br />

–– Description :<br />

–– Return the number of sessions used to build the current packet<br />

–– result<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

function SESSION_NAMES_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES;<br />

–– Description :<br />

–– Extract the list of execution session names from the packet<br />

–– result definition<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

function EXECUTION_DATE_OF(PACKET_RESULT : in T_PACKET_RESULT)<br />

return <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

556 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Description :<br />

–– Return the date and time of execution<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not opened for read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

procedure ADD_PACKET(PACKET_RESULT : in out T_PACKET_RESULT;<br />

PACKET : in out T_PACKET_RECORD);<br />

–– Description :<br />

–– Add the supplied Packet to the packet result. The Packet Id<br />

–– is the key to access data.<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– PACKET : Packet to add<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_WRITE_ACCESS : packet result not opened for write access<br />

–– X_ERROR_ACCESSING_FILE : general error writing the record<br />

––<br />

procedure GET_A_PACKET(<br />

PACKET_RESULT : in T_PACKET_RESULT;<br />

PACKET_ID : in positive;<br />

PACKET : in out T_PACKET_RECORD);<br />

–– Description :<br />

–– Extract a given packet packet from a packet result<br />

––<br />

––<br />

by specifying its Id.<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– PACKET_ID : id of the packet to retrieve<br />

–– PACKET : private packet record<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : supplied packet result file is<br />

–– not open<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_NO_PACKETS_AVAILABLE : packets are not available<br />

–– X_ERROR_ACCESSING_FILE : general error accessing packet<br />

––<br />

––<br />

result file<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

557 von/of: 662<br />

procedure GET_A_PACKET(<br />

PACKET_RESULT : in T_PACKET_RESULT;<br />

TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

PACKET_TYPE : in TEV_DEFINITIONS.T_PACKET_TYPE;<br />

PACKET : in out T_PACKET_RECORD);<br />

–– Description :<br />

–– Extract a given packet packet from a packet result<br />

––<br />

––<br />

by specifying its time tag and type.<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– TIME_TAG : time tag of the packet to retrieve<br />

–– PACKET_TYPE : type of record to retrieve<br />

–– PACKET : private packet record<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : supplied packet result file is<br />

–– not open<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_NO_PACKETS_AVAILABLE : packets are not available<br />

–– X_ERROR_ACCESSING_FILE : general error accessing packet<br />

––<br />

––<br />

result file<br />

procedure GET_PACKETS(<br />

PACKET_RESULT : in T_PACKET_RESULT;<br />

PACKET_LI<strong>ST</strong> : in out T_PACKET_L;<br />

PACKET_TYPE : in TEV_DEFINITIONS.T_PACKET_TYPE


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

:= TEV_DEFINITIONS.NO_CHOICE;<br />

TIME_FRAME : in TEV_DEFINITIONS.T_TIME_FRAME<br />

:= TEV_DEFINITIONS.NULL_TIME_FRAME;<br />

ONLY_THE_FIR<strong>ST</strong> : in boolean := false);<br />

–– Description :<br />

––<br />

––<br />

Extract packets from a packet result for a given time frame<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– PACKET_LI<strong>ST</strong> : extracted list of packets<br />

–– PACKET_TYPE : type of record to retrieve<br />

–– TIME_FRAME : time frame for which to make the selection<br />

––<br />

–– Exceptions :<br />

ONLY_THE_FIR<strong>ST</strong> : if true only the first record is returned<br />

–– X_PACKET_RESULT_NOT_OPENED : supplied packet result file is<br />

–– not open<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_ERROR_ACCESSING_FILE : general error accessing packet<br />

–– result file<br />

–– X_INVALID_PACKET : a packet is invalid in the file<br />

––<br />

procedure FORMAT_A_PACKET(<br />

PACKET_RESULT : in T_PACKET_RESULT;<br />

FILENAME : in string;<br />

PACKET_ID : in POSITIVE;<br />

TOOL_ID : in TEV_DEFINITIONS.T_TOOL_ID);<br />

–– Description :<br />

–– Converts a given packet into a result file to a string format<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– PACKET_ID : id of the packet to format<br />

–– FILENAME : filename of formatted result<br />

–– TOOL_ID : Tool id used for error logging<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_ERROR_CREATING_FILE : general error creating formatted result<br />

––<br />

procedure FORMAT_A_PACKET(<br />

PACKET_RESULT : in T_PACKET_RESULT;<br />

TIME_TAG : in <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

PACKET_TYPE : in TEV_DEFINITIONS.T_PACKET_TYPE;<br />

FILENAME : in string;<br />

TOOL_ID : in TEV_DEFINITIONS.T_TOOL_ID);<br />

–– Description :<br />

–– Converts a given packet into a result file to a string format<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– TIME_TAG : time tag of the packet to format<br />

–– PACKET_TYPE : type of record to retrieve<br />

–– FILENAME : filename of formatted result<br />

–– TOOL_ID : Tool id used for error logging<br />

–– Exceptions :<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_ERROR_CREATING_FILE : general error creating formatted result<br />

––<br />

procedure FORMAT_RESULT_FILE(<br />

FILE_TO_FORMAT : in <strong>ST</strong>RING;<br />

FORMATTED_FILE : in <strong>ST</strong>RING;<br />

TOOL_ID : in TEV_DEFINITIONS.T_TOOL_ID);<br />

–– Description :<br />

–– Converts a packet result file to a string format for display<br />

––<br />

–– Parameters :<br />

–– FILE_TO_FORMAT : filename of packet result to format<br />

–– FORMATTED_FILE : filename of formatted result<br />

–– PACKET_ID : the packet id<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

558 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Exceptions :<br />

–– X_INVALID_NAME : packet result name is invalid<br />

–– X_ERROR_ACCESSING_FILE : general error accessing packet<br />

–– result file<br />

–– X_ERROR_CREATING_FILE : general error creating formatted result<br />

––<br />

procedure FORMAT_RESULT_IN_SUMMARY(<br />

FILE_TO_FORMAT : in <strong>ST</strong>RING;<br />

FORMATTED_FILE : in <strong>ST</strong>RING);<br />

–– Description :<br />

–– Converts a packet result file to a string format for display<br />

–– only summary info<br />

––<br />

–– Parameters :<br />

–– FILE_TO_FORMAT : filename of packet result to format<br />

–– FORMATTED_FILE : filename of formatted result<br />

–– Exceptions :<br />

–– X_INVALID_NAME : packet result name is invalid<br />

–– X_ERROR_ACCESSING_FILE : general error accessing packet<br />

–– result file<br />

–– X_ERROR_CREATING_FILE : general error creating formatted result<br />

––<br />

function IS_SUMMARY(<br />

PACKET_RESULT : in T_PACKET_RESULT) return boolean;<br />

–– Description :<br />

–– Return true if summary format is set<br />

––<br />

–– Parameters :<br />

–– PACKET_RESULT : private packet result<br />

–– Exceptions :<br />

–– X_NO_READ_ACCESS : packet result not open with read access<br />

–– X_PACKET_RESULT_NOT_OPENED : packet result is not opened<br />

––<br />

procedure FORMAT_PRINT_RESULT_FILE(<br />

FILE_TO_FORMAT : in <strong>ST</strong>RING;<br />

FORMATTED_FILE : in <strong>ST</strong>RING);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

559 von/of: 662<br />

procedure INVERT (THE_LI<strong>ST</strong> : in T_PACKET_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_PACKET_L) renames P_PACKET_LI<strong>ST</strong>.INVERT;<br />

–– Invert a list into another list<br />

procedure CLEAR (THE_LI<strong>ST</strong> : in out T_PACKET_L) renames P_PACKET_LI<strong>ST</strong>.CLEAR;<br />

–– Clear a list<br />

procedure ASSIGN (THE_LI<strong>ST</strong> : in out T_PACKET_L;<br />

NEW_LI<strong>ST</strong> : in T_PACKET_L) renames P_PACKET_LI<strong>ST</strong>.ASSIGN;<br />

–– Assign a list with a new value<br />

procedure CON<strong>ST</strong>RUCT (A_PACKET : in T_PACKET_RECORD;<br />

THE_LI<strong>ST</strong> : in out T_PACKET_L) renames P_PACKET_LI<strong>ST</strong>.CON<strong>ST</strong>RUCT;<br />

–– Construct a list by adding a new item<br />

function NULL_LI<strong>ST</strong> RETURN T_PACKET_L renames P_PACKET_LI<strong>ST</strong>.NULL_LI<strong>ST</strong>;<br />

–– Return a null list<br />

function IS_NULL (THE_LI<strong>ST</strong> : in T_PACKET_L) RETURN boolean<br />

renames P_PACKET_LI<strong>ST</strong>.IS_NULL;<br />

–– Check if a list is null<br />

function HEAD_OF (THE_LI<strong>ST</strong> : in T_PACKET_L) RETURN T_PACKET_RECORD<br />

renames P_PACKET_LI<strong>ST</strong>.HEAD_OF;<br />

–– Extract the head of a list<br />

function TAIL_OF (THE_LI<strong>ST</strong> : in T_PACKET_L) RETURN T_PACKET_L<br />

renames P_PACKET_LI<strong>ST</strong>.TAIL_OF;<br />

–– Extract the tail of a list<br />

function LENGTH_OF (THE_LI<strong>ST</strong> : in T_PACKET_L) RETURN natural<br />

renames P_PACKET_LI<strong>ST</strong>.LENGTH_OF;<br />

–– Get the length of a list


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure COPY (FROM_THE_LI<strong>ST</strong> : in T_PACKET_L;<br />

TO_THE_LI<strong>ST</strong> : in out T_PACKET_L) renames P_PACKET_LI<strong>ST</strong>.COPY;<br />

–– Copy a list into another list;<br />

private<br />

X_PACKET_RESULT_ALREADY_OPENED,<br />

X_PACKET_RESULT_NOT_OPENED,<br />

X_PACKET_RESULT_ALREADY_EXI<strong>ST</strong>S,<br />

X_INVALID_NAME,<br />

X_INVALID_PACKET,<br />

X_NO_PACKETS_AVAILABLE,<br />

X_TOO_MANY_SESSIONS,<br />

X_NO_READ_ACCESS,<br />

X_NO_WRITE_ACCESS,<br />

X_ERROR_CREATING_FILE,<br />

X_ERROR_ACCESSING_FILE : exception;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

560 von/of: 662<br />

type T_PACKET_DEFINITION is<br />

record<br />

EXECUTION_DATE : <strong>CGS</strong>_CALENDAR.<strong>CGS</strong>_DATE_AND_TIME;<br />

––rhn Begin Modification for SPR 2886 07/02/97<br />

–– RESULT_NAME : TEV_DEFINITIONS.T_RESULT_NAME;<br />

RESULT_NAME : TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

––rhn End Modification for SPR 2886 07/02/97<br />

CHARACTERI<strong>ST</strong>IC : TEV_DEFINITIONS.T_PACKET_TYPE<br />

:= TEV_DEFINITIONS.ADUS;<br />

PATHNAME : TEV_DEFINITIONS.T_PACKET_PATHNAME;<br />

PRODUCER : TEV_DEFINITIONS.T_PRODUCER_NAME;<br />

FORMAT : TEV_DEFINITIONS.T_PACKET_FORMAT<br />

:= TEV_DEFINITIONS.DEFAULT_PACKET_FORMAT;<br />

BYTES_PER_LINE : TEV_DEFINITIONS.T_PACKET_BYTES_LINE<br />

:= TEV_DEFINITIONS.DEFAULT_BYTES_LINE;<br />

SUMMARY_FORMAT : BOOLEAN := FALSE;<br />

TIME_FRAME : TEV_DEFINITIONS.T_TIME_FRAME;<br />

SELECT_ON : DBS_DEFINITIONS.T_TIME_TYPE;<br />

ORDER_BY : DBS_DEFINITIONS.T_TIME_ORDERING;<br />

EXECUTION_SESSIONS : TEV_DEFINITIONS.T_DEFINITION_SESSION_NAMES(<br />

TEV_DEFINITIONS.T_SESSIONS_RANGE);<br />

INCLUDE_DEF_SESSION : BOOLEAN;<br />

PACKET_NUMBER : NATURAL := natural’first;<br />

SELECTED_ADUS : T_ADU_GDU_PATHNAME_LI<strong>ST</strong>;<br />

SELECTED_GDUS : T_ADU_GDU_PATHNAME_LI<strong>ST</strong>;<br />

ADU_SID_PATHNAME : T_SID_PATHNAME_LI<strong>ST</strong>;<br />

GDU_SID_PATHNAME : T_SID_PATHNAME_LI<strong>ST</strong>;<br />

end record;<br />

–– package definition to access packet result file<br />

––<br />

package DEFINITION_IO is new DIRECT_IO(ELEMENT_TYPE => T_PACKET_DEFINITION);<br />

–– DEFINITION_IO is used to access the packet result<br />

–– definition as the header of the file<br />

package PACKET_IO is new DIRECT_IO(ELEMENT_TYPE => T_PACKET_RECORD);<br />

–– PACKET_IO is used to access the packet records inside the file.<br />

–– The first data to access is located at position offset PTR_TO_FIR<strong>ST</strong>_PACKET<br />

type T_PACKET_RESULT is<br />

record<br />

DEFINITION_FILE_TYPE : DEFINITION_IO.FILE_TYPE;<br />

PACKET_FILE_TYPE : PACKET_IO.FILE_TYPE;<br />

FILENAME : TEV_DEFINITIONS.T_COMPLETE_FILENAME;<br />

–– modified by RSE 12.06.96 for SPR_2391<br />

–– ACCESS_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_ACCESS_<strong>ST</strong>ATUS<br />

–– := TEV_DEFINITIONS.READ;<br />

ACCESS_<strong>ST</strong>ATUS : T_PACKET_RESULT_ACCESS_<strong>ST</strong>ATUS := READ;<br />

CURRENT_<strong>ST</strong>ATUS : TEV_DEFINITIONS.T_CURRENT_<strong>ST</strong>ATUS<br />

:= TEV_DEFINITIONS.CLOSED;<br />

PACKET_RESULT_DEFINITION : T_PACKET_DEFINITION;<br />

end record;<br />

end ADT_PACKET_RESULT;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– TDCS_DEFINITIONS<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

–– This object provides common types needed by<br />

–– tdcs objects.<br />

––<br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : TEV_DEFINITIONS<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.1 at Spacebel Informatique, Brussels<br />

–– creator: rowena (on host moon)<br />

–– creation date: 23.08.95 10:18:53<br />

–– added Standard Header by command include_header<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

package TDCS_DEFINITIONS is<br />

subtype T_TEV_TOOL_ID is NATURAL;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Return status type<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type T_TDCS_ERROR is (<br />

OK,<br />

––The operation has been successfully performed<br />

BAD_TDCS_SELECTION_CRITERIA,<br />

––This selection criteria cannot be fulfilled by TDCS<br />

DATA_ONLINE_IN_30_MIN,<br />

––The requested data is not online<br />

––Please come back and ask again after in 30 minutes<br />

DATA_ONLINE_IN_24_HOURS,<br />

––The requested data is not online<br />

––Please come back and ask again after in 24 hours<br />

DATA_ONLINE_IN_72_HOURS,<br />

––The requested data is not online<br />

––Please come back and ask again after in 72 hours<br />

TDCS_<strong>ST</strong>OPPED,<br />

––TDCS is not running<br />

TDCS_CONNECT_PROBLEM,<br />

––Connection to TDCS failed.<br />

TDCS_DISCONNECT_PROBLEM,<br />

––Disconnection from TDCS returns an error.<br />

TDCS_INIT_PROBLEM,<br />

––Initialisation of communication services failed.<br />

TDCS_NOT_CONNECTED,<br />

––TDCS connection not correctly established<br />

LT_SELECT_NOT_SUPPORTED_BY_TDCS,<br />

–– TDCS does not support selection according to LT timeframes<br />

TDCS_COMMUNICATION_PROBLEM);<br />

–– a problem in the TEV–TDCS communication occured<br />

type T_DATA_CHARACTERI<strong>ST</strong>IC is (<br />

SELECTED_ADU_GDU,<br />

––Selected ADU’s, GDU’s<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

561 von/of: 662


Space Infrastructure<br />

ALL_ADUS,<br />

––All ADU’s in the Archive File<br />

ALL_GDUS,<br />

––All GDU’s in the Archive File<br />

ALL_ADUS_GDUS);<br />

––All ADU’s, GDUS’s in the Archive File<br />

end TDCS_DEFINITIONS;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

562 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

–– TDCS_RPI<br />

––<br />

––****************************************************************************<br />

––AB<strong>ST</strong>RACT––<br />

––<br />

–– This package provides the operations of the TDCS – TEV <strong>Interface</strong><br />

––<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––IDENTIFICATION––<br />

–– PROJECT NAME : <strong>CGS</strong><br />

–– PRODUCT NAME : TEV<br />

–– CI–NUMBER : 1216 858<br />

–– OBJECT NAME : TDCS_RPI<br />

––*–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––CONTENTS––<br />

–– COMPILER : VERDIX ADA 6.0.3.C<br />

–– LANGUAGE : ADA<br />

–– SPECIAL CONTENTS:<br />

–– CHANGE HI<strong>ST</strong>ORY<br />

–– V4.1 at Spacebel Informatique, Brussels<br />

–– creator: rowena (on host moon)<br />

–– creation date: 23.08.95 10:24:18<br />

–– added Standard Header by command include_header<br />

––<br />

–– END HI<strong>ST</strong>ORY<br />

––****************************************************************************<br />

––<br />

with MPS_DEFINITIONS;<br />

with MDB_SESSION;<br />

with VICOS_DEFINITIONS;<br />

with DBS_DEFINITIONS;<br />

with DBS_LI<strong>ST</strong>S;<br />

with TDCS_DEFINITIONS;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

package TDCS_RPI is<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Operations to control connect/disconnect activities<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure CONNECT_TDCS(<br />

SOURCE : in VICOS_DEFINITIONS.T_APPLICATION_NAME ;<br />

<strong>ST</strong>ATUS : out TDCS_DEFINITIONS.T_TDCS_ERROR);<br />

–– DESCRIPTION<br />

–– This operation allows the evaluation user to connect to the TRDB database<br />

–– for evaluation purposes.<br />

–– SOURCE : Reference of the User Application Name.<br />

–– RETURN_<strong>ST</strong>ATES<br />

–– OK<br />

–– TDCS_<strong>ST</strong>OPPED<br />

–– TDCS_CONNECT_PROBLEM<br />

–– TDCS_INIT_PROBLEM<br />

procedure DISCONNECT_TDCS (<br />

<strong>ST</strong>ATUS : out TDCS_DEFINITIONS.T_TDCS_ERROR);<br />

–– DESCRIPTION<br />

–– This operation allows TEV user to disconnect from TDCS.<br />

–– His selected sessions are automatically deallocated.<br />

–– RETURN_<strong>ST</strong>ATES<br />

–– OK<br />

–– TDCS_NOT_CONNECTED<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

563 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

564 von/of: 662<br />

–– TDCS_<strong>ST</strong>OPPED<br />

–– TDCS_DISCONNECT_PROBLEM<br />

–– TDCS_COMMUNICATION_PROBLEM<br />

procedure ALLOCATE_EXECUTION_SESSIONS (<br />

ALLOCATED_SESSIONS : in DBS_DEFINITIONS.T_SELECTED_SESSIONS;<br />

<strong>ST</strong>ATUS : out TDCS_DEFINITIONS.T_TDCS_ERROR) ;<br />

–– DESCRIPTION<br />

–– This operation allows the user to allocate execution sessions for<br />

–– evaluation purposes. TDCS only returns OK. No more data is returned to TEV.<br />

––<br />

––<br />

A later allocate commnand overwrite the the current allocation table.<br />

–– ALLOCATED_SESSIONS : the list of execution sessions to allocate.<br />

–– RETURN_<strong>ST</strong>ATES<br />

–– OK<br />

–– TDCS_NOT_CONNECTED<br />

–– TDCS_COMMUNICATION_PROBLEM<br />

–– TDCS_<strong>ST</strong>OPPED<br />

subtype T_RAW_DATA_FILE_INFO_LI<strong>ST</strong> is DBS_LI<strong>ST</strong>S.T_RAW_DATA_FILE_INFO_LI<strong>ST</strong>;<br />

procedure GET_FOREIGN_RAW_DATA_FILE_INFO_LI<strong>ST</strong>_BY_ADU_GDU (<br />

TEV_TOOL_ID : in TDCS_DEFINITIONS.T_TEV_TOOL_ID;<br />

SESSION_NAMES : in DBS_DEFINITIONS.T_SELECTED_SESSIONS;<br />

TIME_SELECTION : in DBS_DEFINITIONS.T_TIME_RECORD;<br />

TIME_FRAME_TYPE : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

LI<strong>ST</strong>_ORDER : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

PRODUCER : in VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

ADU_GDU_LI<strong>ST</strong> : in MPS_DEFINITIONS.T_SID_ARRAY;<br />

FILE_LI<strong>ST</strong> : in out T_RAW_DATA_FILE_INFO_LI<strong>ST</strong>;<br />

DATA_CHARACTERI<strong>ST</strong>IC : in TDCS_DEFINITIONS.T_DATA_CHARACTERI<strong>ST</strong>IC;<br />

<strong>ST</strong>ATUS : out TDCS_DEFINITIONS.T_TDCS_ERROR);<br />

–– DESCRIPTION<br />

–– This operation returns the raw data files list (Archive Files) matching<br />

–– a selection criteria. TDCS parses a list of ADUs to obtain the session<br />

–– name to which it applies.This supports the TEV Raw Data Dump Tool.<br />

––<br />

–– TEV_TOOL_ID : Identifier of the TEV user tool<br />

–– SESSION_NAMES : Names of the test execution sessions to which<br />

–– raw data files are related.<br />

–– TIME_SELECTION : The selected time frame.<br />

–– A null value is accepted.<br />

–– TIME_FRAME_TYPE : The time type applied to the time frame (LT/SMT)<br />

–– LI<strong>ST</strong>_ORDER : The time type applied for the list ordering (LT/SMT)<br />

–– PRODUCER : Producer Name, a null value is accepted.<br />

–– ADU_GDU_LI<strong>ST</strong> : List of ADUs, GDU’s, as additional selection criteria for raw data<br />

–– when DATA_CHARACTERI<strong>ST</strong>ICS is SELECTED_ADU_GDU<br />

–– DATA_CHARACTERI<strong>ST</strong>IC : This defines the type of data to be retrieved :<br />

–– Selected ADU’s, GDU’s<br />

–– All ADU’s in Archive File<br />

–– All GDU’s in Archive File<br />

–– All ADU’s, GDU’s in Archive File<br />

–– FILE_LI<strong>ST</strong> : The selected raw data files.<br />

–– List of Files must be in Chronological Order<br />

––<br />

–– RETURN_<strong>ST</strong>ATES<br />

Data in each File must be in Chronological Order<br />

–– OK<br />

–– BAD_TDCS_SELECTION_CRITERIA<br />

–– DATA_ONLINE_IN_30_MIN<br />

–– DATA_ONLINE_IN_24_HOURS<br />

–– DATA_ONLINE_IN_72_HOURS<br />

–– TDCS_NOT_CONNECTED<br />

–– TDCS_<strong>ST</strong>OPPED<br />

–– LT_SELECT_NOT_SUPPORTED_BY_TDCS<br />

–– TDCS_COMMUNICATION_PROBLEM<br />

procedure GET_FOREIGN_RAW_DATA_FILE_INFO_LI<strong>ST</strong>_BY_MEASUREMENT (<br />

TEV_TOOL_ID : in TDCS_DEFINITIONS.T_TEV_TOOL_ID;<br />

SESSION_NAMES : in DBS_DEFINITIONS.T_SELECTED_SESSIONS;<br />

TIME_SELECTION : in DBS_DEFINITIONS.T_TIME_RECORD;<br />

TIME_FRAME_TYPE : in DBS_DEFINITIONS.T_TIME_TYPE;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

565 von/of: 662<br />

LI<strong>ST</strong>_ORDER : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

PRODUCER : in VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

MEASUREMENT_LI<strong>ST</strong> : in MPS_DEFINITIONS.T_SID_ARRAY;<br />

FILE_LI<strong>ST</strong> : in out T_RAW_DATA_FILE_INFO_LI<strong>ST</strong>;<br />

<strong>ST</strong>ATUS : out TDCS_DEFINITIONS.T_TDCS_ERROR);<br />

–– DESCRIPTION<br />

–– This operation returns the raw data files list (Archive Files) matching<br />

–– a selection criteria. TDCS parses a list of measurements to obtain the<br />

–– session name to which it applies.<br />

–– Internally TDCS maps the measurements to the ADUs in which they are<br />

–– contained and creates the required ADU list. This supports the TEV<br />

–– Data Set Tool.<br />

–– TEV_TOOL_ID : Identifier of the TEV user tool<br />

–– SESSION_NAMES : Names of the test execution sessions to which<br />

–– raw data files are related.<br />

–– TIME_SELECTION : The selected time frame.<br />

–– A null value is accepted.<br />

–– PRODUCER : Producer Name, a null value is accepted.<br />

–– TIME_FRAME_TYPE : The time type applied to the time frame (LT/SMT)<br />

–– LI<strong>ST</strong>_ORDER : The time type applied for the list ordering (LT/SMT)<br />

–– MEASUREMENT_LI<strong>ST</strong> : List of parameters as additional selection criteria<br />

–– for raw data<br />

–– FILE_LI<strong>ST</strong> : The selected raw data files.<br />

–– RETURN_<strong>ST</strong>ATES<br />

–– OK<br />

–– BAD_TDCS_SELECTION_CRITERIA<br />

–– DATA_ONLINE_IN_30_MIN<br />

–– DATA_ONLINE_IN_24_HOURS<br />

–– DATA_ONLINE_IN_72_HOURS<br />

–– TDCS_NOT_CONNECTED<br />

–– TDCS_<strong>ST</strong>OPPED<br />

–– LT_SELECT_NOT_SUPPORTED_BY_TDCS<br />

–– TDCS_COMMUNICATION_PROBLEM<br />

procedure GET_FOREIGN_DATA_SET(<br />

TEV_TOOL_ID : in TDCS_DEFINITIONS.T_TEV_TOOL_ID;<br />

SESSION_NAMES : in DBS_DEFINITIONS.T_SELECTED_SESSIONS;<br />

TIME_SELECTION : in DBS_DEFINITIONS.T_TIME_RECORD;<br />

TIME_FRAME_TYPE : in DBS_DEFINITIONS.T_TIME_TYPE;<br />

LI<strong>ST</strong>_ORDER : in DBS_DEFINITIONS.T_TIME_ORDERING;<br />

PRODUCER : in VICOS_DEFINITIONS.T_APPLICATION_NAME;<br />

MEASUREMENT_LI<strong>ST</strong> : in MPS_DEFINITIONS.T_SID_ARRAY;<br />

CCU_SPECIFICATION : in MDB_SESSION.T_CCU_VERSION_IDENTIFICATION;<br />

FILE : in out DBS_DEFINITIONS.T_FILENAME;<br />

<strong>ST</strong>ATUS : out TDCS_DEFINITIONS.T_TDCS_ERROR);<br />

–– This operation returns a Data Set generated externally matching<br />

–– a selection criteria. TDCS processes this command exactly the same way<br />

–– as GET_FOREIGN_RAW_DATA_FILE_INFO_LI<strong>ST</strong>_BY_MEASUREMENT, excepts that it<br />

–– passes the input data to the Data Set Formating Tool instead of the<br />

–– Archive File Formating Tool.<br />

–– This supports the TEV Data Set Generation Tool.<br />

––<br />

–– TEV_TOOL_ID : Identifier of the TEV user tool<br />

–– SESSION_NAMES : Names of the test execution sessions to which<br />

–– raw data files are related.<br />

–– TIME_SELECTION : The selected time frame.<br />

–– A null value is accepted.<br />

–– TIME_FRAME_TYPE : The time type applied to the time frame (LT/SMT)<br />

–– LI<strong>ST</strong>_ORDER : The time type applied for the list ordering (LT/SMT)<br />

–– PRODUCER : Producer Name, a null value is accepted.<br />

–– MEASUREMENT_LI<strong>ST</strong> : List of parameters as additional selection criteria<br />

–– for raw data<br />

–– CCU_SPECIFICATION : Defines the CCU to be used for calibration<br />

–– FILE : Unix pathname for the generated Data Set.<br />

–– RETURN_<strong>ST</strong>ATES<br />

–– OK<br />

–– BAD_TDCS_SELECTION_CRITERIA<br />

–– DATA_ONLINE_IN_30_MIN<br />

–– DATA_ONLINE_IN_24_HOURS<br />

–– DATA_ONLINE_IN_72_HOURS


Space Infrastructure<br />

–– TDCS_NOT_CONNECTED<br />

–– TDCS_<strong>ST</strong>OPPED<br />

–– LT_SELECT_NOT_SUPPORTED_BY_TDCS<br />

–– TDCS_COMMUNICATION_PROBLEM<br />

end TDCS_RPI;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

566 von/of: 662


Space Infrastructure<br />

7.15 Test Evaluation Invocation <strong>Interface</strong><br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

567 von/of: 662<br />

For the integration of TEV into <strong>CGS</strong>, TEV provides interface functions for the invocation of the product. Since<br />

TEV can run interactively or in batch mode, the command line takes two alternatives.<br />

7.15.1 TEV Invocation for Interactive Mode<br />

If called without any parameter, TEV will run interactively and then the program expects all inputs via the<br />

graphical user interface.<br />

In this case TEV will be started as following:<br />

$TEV_HOME/bin/common/start_tev<br />

7.15.2 TEV Batch Mode<br />

Using the TEV Command Line <strong>Interface</strong> (TEV CLI), TEV will run in batch mode and will not show up<br />

with a graphical user interface.Thus, the command line for invoking TEV takes the following form:<br />

$TEV_HOME/bin/common/start_tev –to \<br />

–se \<br />

–de \<br />

–re <br />

where the command parameters have the following meaning:<br />

is the name of the tool to be executed. It can be one of the following:<br />

LOG_EVENT: Execute the Logging Event evaluation tool<br />

RAW_DATA: Execute the Raw Data Dump tool<br />

DATA_SET: Execute the Data Set Generation tool<br />

includes the sessions to be evaluated and the CCU information.<br />

The Format of this ASCII–file is shown below. The session_file is read from the user’s working<br />

directory $VICOS_TEV_WD/SESSIONS.<br />

includes all tool–specific information to execute the tool.<br />

It is to be generated either with interactive TEV or by using the appropriate procedures from<br />

the TEV_API in Ada program. The definition_file is in binary format. It will be read from the<br />

user’s working directory $VICOS_TEV_WD/DEFINTIONS/.<br />

is the output of the tool.<br />

The result_file will be put into the user’s working directory<br />

$VICOS_TEV_WD/RESULTS/.<br />

For logging error messages of the TEV batch mode operation there are 3 different possibilities:<br />

1) No additional parameter given: TEV sends the error messages to the <strong>CGS</strong>I error window and to<br />

stdout (which is the shell tool from where TEV was started).<br />

2) The command line can be extended for output redirection with standard Unix features like<br />

$TEV_HOME/bin/common/start_tev –to LOG_ENVET ... >logfile. In this case the output is written<br />

to the logfile only.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

568 von/of: 662<br />

3) The output can be duplicated using the tee standard Unix duplicator like $TEV_HOME/bin/common/start_tev<br />

–to LOG_EVENT ... |&tee logfile. In this case the output of error messages would also<br />

be sent to stdout.<br />

Session File Format:<br />

The format for the session_file will be as follows:<br />

SESSION:<br />

.<br />

.<br />

SESSION:<br />

DEFAULT_TE<strong>ST</strong>_SESSION<br />

CCU:<br />

Up to 10 sessions other than the DEFAULT_TE<strong>ST</strong>_SESSION can be selected.<br />

The selection of the DEFAULT_TE<strong>ST</strong>_SESSION is optional. If it is added to the selection, a total selection of<br />

11 sessions (including the DEFAULT_TE<strong>ST</strong>_SESSION) is possible.<br />

The last record in the file must be the CCU information, which gives the CCU_PATHNAME that shall be used<br />

for the evaluation.<br />

The command will return after checking the parameters or after the evaluation is finished (which may take from<br />

some minutes to some hours) with the following return codes:<br />

–1 success<br />

–101 invalid tool type<br />

–102 invalid session file<br />

–103 invalid definition file<br />

–104 duplicate result file<br />

–105 invalid session name<br />

–106 invalid CCU<br />

–107 error accessing TRDB<br />

–108 error accessing MDB<br />

7.15.3 TEV in Office Mode<br />

TEV may be started in the Office Mode. In this case, It runs in a standalone configuration with TEV and DBS<br />

only.<br />

In the default mode (EGSE mode), DBS is started by the overall <strong>CGS</strong> startup script for a given EGSE configuration.<br />

In Office mode, however,TEV is responsible for starting and stopping Central DBS (i.e. invoking the DBS startup<br />

script at the beginnin and stopping the DBS processes, when the last TEV process disconnects). The Office<br />

mode is indicated in the TEV startup command by the option ”–o”.<br />

The following gives an example for this:<br />

$TEV_HOME/bin/common/start_tev –o<br />

The option does not require any further parameters.


Space Infrastructure<br />

7.16 EXCEL Representation Format<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

569 von/of: 662<br />

The detailed description of this format is defined in the commercial MICROSOFT EXCEL documentation.


Space Infrastructure<br />

7.17 Command and Measurement Adaptation <strong>System</strong><br />

Informal <strong>Interface</strong> Description<br />

CMAS Invocation<br />

CMAS is started by the CSS kernel using the following command:<br />

$CMAS_HOME/bin/common/start_cmas<br />

with the following parameters:<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

<br />

: the value of this parameter is always ”local”<br />

: this parameter denotes the UNIX pathname of the configuration file<br />

containing the information about the CSS model external I/O’s,<br />

e.g. calibration information.<br />

: identifier of the shared memory region between CSS and CMAS<br />

containing the values of the external I/O’s of a CSS model<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

570 von/of: 662<br />

: identifier of the shared memory region between CSS and CMAS<br />

containing commands and static information for communication<br />

purposes<br />

: denotes the name of the machine where the CSS kernel has been started.<br />

Invocation of the CMAS Database Server<br />

The CMAS DataBase Server is called by the CSS DB Server in case a milbus configuration file has<br />

to be generated. The milbus configuration file contains the information about the external I/O’s of a<br />

CSS model, e.g. CCSDS packet information, calibration/decalibration parameters. The CSS DB<br />

Server tries to start the CMAS DB Server via the following command:<br />

$CMAS_HOME/bin/common/start_db_server <br />

where the parameters have the following meaning:<br />

: This file contains the necessary information to access the database for the<br />

currently edited model. The contents is stored in binary form and can be<br />

retrieved by the CMAS DB Server via the procedure GET_FROM_FILE<br />

provided by the ADA package CSS_MESSAGE_CONNECTION<br />

(see specification).<br />

: This ASCII file can be used by the CMAS DB Server to store any<br />

messages produced during the generation phase of the milbus<br />

configuration file, i.e. error messages, warning messages. The file is<br />

displayed by the CSS MDE afterwards.<br />

In case the start_db_server command cannot be found, the CSS DB Server will generate the milbus<br />

configuration file. This will be done in order to keep the DB Server compatible to CMAS installations<br />

other than SSA.


Space Infrastructure<br />

Informal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

571 von/of: 662<br />

The interface between CSS and the Command and Measurement Adaptation <strong>System</strong> (CMAS) is constituted by<br />

a procedural interface and a representation interface.<br />

The representation interface is formed by an ASCII – file generated by the DB_SERVER being a component<br />

of CSS. The name of the ASCII – file is ’external_model_configuration’. This file contains the following information:<br />

• 1. logical Milbus structures like:<br />

– Bus Identification in case of multiple Milbusses,<br />

– Remote Terminal Identification for a specific Milbus,<br />

– Subaddress/Slot Identification for a specific Remote Terminal,<br />

– Channel Identification (as offset) for a specific Subaddress/Slot,<br />

– Mapping from Channel to CSS–Runtime–Identifier(RID),<br />

– Sizing–Information:<br />

– Number of all implemented Milbusses<br />

– Number of all implemented Remote Terminals for a specific Milbus<br />

– Number of all implemented Channels for a specific Remote Terminal<br />

– Bit–Offset for all boolean values<br />

• 2. Calibration/Decalibration:<br />

– Identification of the RID’s to be calibrated<br />

– Identification of the RID’s to be decalibrated<br />

– Identification of the specific calibration/decalibration method per RID<br />

• 3. Serial Packets:<br />

– Mapping Serial Packets to Subaddresses<br />

– Internal structure of a Serial Packet(length, offsets)<br />

– Mapping internal packet items to RIDs<br />

– Send–Interval of Serial Packets to be sent to LAN<br />

• 4. External Model I/O:<br />

– First External Input<br />

– Last External Input<br />

– First External Output<br />

– Last External Output<br />

– Number of all external Inputs<br />

– Number of all external Outputs<br />

– Physical size(for channel representation) in Bits for each I/O–Item(RID)<br />

The CMAS receives the necessary information in order to interface with CSS in the following order:<br />

• 1. the CSS simulator is started<br />

• 2. CSS initializes the shared memory region<br />

• 3. CMAS is started


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

• 4. CMAS loads external_model_configuration file<br />

• 5. CMAS attaches to shared memory (ready to operate on dynamic region)<br />

Formal <strong>Interface</strong> Description<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

572 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– CSS_TYPES<br />

–– Provides the set of types defined for CSS MDE model variables.<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– CSS_TYPES<br />

–– Project CSS–Downsizing<br />

–– <br />

–– HOOD object CSS_TYPES<br />

–– MDE model variable types<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– CSS_TYPES<br />

––<br />

–– Type: Package Spec (+ implicit body)<br />

––<br />

–– Version:<br />

–– 2.1, 10.11.93, J.Hoyng: initial version<br />

–– 3.1, 21.07.94, J.Hoyng: the TIME type depends now on SMT_CALENDAR.TIME<br />

–– deleted type declaration DURATION<br />

–– 3.2, 06.04.95, J.Hoyng: implemented new types<br />

–– 4.1, 23.08.95, J.Hoyng: build_2 version<br />

–– 4.2, R. Lamb: added <strong>ST</strong>RING_ACCESS_TYPE.<br />

–– 5.1, 26.08.97, Th. Behrens: Replaced DB_DEFINITIONS by MPS_DEFINITIONS.<br />

–– 5.2, 12.12.97, W. Tammen: merged DMS–R prototype with <strong>CGS</strong> V4.1.1<br />

––<br />

–– Purpose:<br />

–– Provide CSS defined typeset<br />

––<br />

–– External:<br />

–– From Ada system:<br />

–– CALENDAR<br />

––<br />

–– From <strong>CGS</strong>:<br />

–– MPS_DEFINITIONS<br />

–– NUMERIC_TYPES<br />

––<br />

–– From CSS:<br />

–– DB_DEFINITIONS<br />

–– SMT_CALENDAR<br />

––<br />

–– Machine Dependencies:<br />

–– none<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

£<br />

–– imports from Ada system:<br />

with CALENDAR;<br />

with UNCHECKED_DEALLOCATION;<br />

–– imports from <strong>CGS</strong>:<br />

with MPS_DEFINITIONS;<br />

with NUMERIC_TYPES;<br />

–– imports from CSS:<br />

with SMT_CALENDAR;<br />

package CSS_TYPES is<br />

type CSS_SW_TYPES is (<br />

NONE,<br />

UNSIGNED_BYTE_TYPE,<br />

SIGNED_BYTE_TYPE,<br />

UNSIGNED_SHORT_WORD_TYPE,<br />

SIGNED_SHORT_WORD_TYPE,<br />

UNSIGNED_INTEGER_TYPE,<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

573 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

SIGNED_INTEGER_TYPE,<br />

REAL_TYPE,<br />

LONG_REAL_TYPE,<br />

COMPLEX_TYPE,<br />

BOOLEAN_TYPE,<br />

TIME_TYPE,<br />

LONG_DURATION_TYPE,<br />

<strong>ST</strong>ATE_CODE_TYPE,<br />

PULSE_TYPE,<br />

BUR<strong>ST</strong>_PULSE_TYPE,<br />

UNSIGNED_BYTE_VECTOR_TYPE,<br />

SIGNED_BYTE_VECTOR_TYPE,<br />

UNSIGNED_SHORT_WORD_VECTOR_TYPE,<br />

SIGNED_SHORT_WORD_VECTOR_TYPE,<br />

UNSIGNED_INTEGER_VECTOR_TYPE,<br />

SIGNED_INTEGER_VECTOR_TYPE,<br />

REAL_VECTOR_TYPE,<br />

LONG_REAL_VECTOR_TYPE,<br />

COMPLEX_VECTOR_TYPE,<br />

BOOLEAN_VECTOR_TYPE,<br />

UNSIGNED_BYTE_MATRIX_TYPE,<br />

SIGNED_BYTE_MATRIX_TYPE,<br />

UNSIGNED_SHORT_WORD_MATRIX_TYPE,<br />

SIGNED_SHORT_WORD_MATRIX_TYPE,<br />

UNSIGNED_INTEGER_MATRIX_TYPE,<br />

SIGNED_INTEGER_MATRIX_TYPE,<br />

REAL_MATRIX_TYPE,<br />

LONG_REAL_MATRIX_TYPE,<br />

COMPLEX_MATRIX_TYPE,<br />

BOOLEAN_MATRIX_TYPE,<br />

BYTE_<strong>ST</strong>REAM_TYPE,<br />

<strong>ST</strong>RING_ACCESS_TYPE,<br />

LA<strong>ST</strong>_TYPE);<br />

–– all CSS_SW_TYPES used during runtime<br />

subtype CSS_RUNTIME_SW_TYPES is CSS_SW_TYPES range<br />

CSS_SW_TYPES’SUCC(NONE) .. CSS_SW_TYPES’PRED (LA<strong>ST</strong>_TYPE);<br />

type UNSIGNED_INTEGER is new NUMERIC_TYPES.UNSIGNED_INTEGER32<br />

range 0 .. NUMERIC_TYPES.UNSIGNED_INTEGER32’LA<strong>ST</strong>;<br />

––––––––––––––––––––––––––––––<br />

–– SIGNED_BYTE<br />

––––––––––––––––––––––––––––––<br />

type SIGNED_BYTE is new NUMERIC_TYPES.INTEGER8;<br />

SIGNED_BYTE_INITIAL_VALUE : constant SIGNED_BYTE := 0;<br />

type SIGNED_BYTE_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of SIGNED_BYTE;<br />

type SIGNED_BYTE_VECTOR_ACCESS is access SIGNED_BYTE_VECTOR;<br />

type SIGNED_BYTE_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of SIGNED_BYTE;<br />

type SIGNED_BYTE_MATRIX_ACCESS is access SIGNED_BYTE_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– UNSIGNED_BYTE<br />

––––––––––––––––––––––––––––––<br />

type UNSIGNED_BYTE is new NUMERIC_TYPES.BYTE;<br />

UNSIGNED_BYTE_INITIAL_VALUE : constant UNSIGNED_BYTE := 0;<br />

type UNSIGNED_BYTE_VECTOR is array (UNSIGNED_INTEGER range ) of UNSIGNED_BYTE;<br />

type UNSIGNED_BYTE_VECTOR_ACCESS is access UNSIGNED_BYTE_VECTOR;<br />

type UNSIGNED_BYTE_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of UNSIGNED_BYTE;<br />

type UNSIGNED_BYTE_MATRIX_ACCESS is access UNSIGNED_BYTE_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– UNSIGNED_SHORT_WORD<br />

––––––––––––––––––––––––––––––<br />

type UNSIGNED_SHORT_WORD is new NUMERIC_TYPES.UNSIGNED_INTEGER16;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

574 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

UNSIGNED_SHORT_WORD_INITIAL_VALUE : constant UNSIGNED_SHORT_WORD := 0;<br />

type UNSIGNED_SHORT_WORD_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of UNSIGNED_SHORT_WORD;<br />

type UNSIGNED_SHORT_WORD_VECTOR_ACCESS is access UNSIGNED_SHORT_WORD_VECTOR;<br />

type UNSIGNED_SHORT_WORD_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of UNSIGNED_SHORT_WORD;<br />

type UNSIGNED_SHORT_WORD_MATRIX_ACCESS is access UNSIGNED_SHORT_WORD_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– SIGNED_SHORT_WORD<br />

––––––––––––––––––––––––––––––<br />

type SIGNED_SHORT_WORD is new NUMERIC_TYPES.INTEGER16;<br />

SIGNED_SHORT_WORD_INITIAL_VALUE : constant SIGNED_SHORT_WORD := 0;<br />

type SIGNED_SHORT_WORD_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of SIGNED_SHORT_WORD;<br />

type SIGNED_SHORT_WORD_VECTOR_ACCESS is access SIGNED_SHORT_WORD_VECTOR;<br />

type SIGNED_SHORT_WORD_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of SIGNED_SHORT_WORD;<br />

type SIGNED_SHORT_WORD_MATRIX_ACCESS is access SIGNED_SHORT_WORD_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– SIGNED_INTEGER<br />

––––––––––––––––––––––––––––––<br />

type SIGNED_INTEGER is new NUMERIC_TYPES.INTEGER32;<br />

SIGNED_INTEGER_INITIAL_VALUE : constant SIGNED_INTEGER := 0;<br />

type SIGNED_INTEGER_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of SIGNED_INTEGER;<br />

type SIGNED_INTEGER_VECTOR_ACCESS is access SIGNED_INTEGER_VECTOR;<br />

type SIGNED_INTEGER_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of SIGNED_INTEGER;<br />

type SIGNED_INTEGER_MATRIX_ACCESS is access SIGNED_INTEGER_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– UNSIGNED_INTEGER<br />

––––––––––––––––––––––––––––––<br />

UNSIGNED_INTEGER_INITIAL_VALUE : constant UNSIGNED_INTEGER := 0;<br />

type UNSIGNED_INTEGER_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of UNSIGNED_INTEGER;<br />

type UNSIGNED_INTEGER_VECTOR_ACCESS is access UNSIGNED_INTEGER_VECTOR;<br />

type UNSIGNED_INTEGER_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of UNSIGNED_INTEGER;<br />

type UNSIGNED_INTEGER_MATRIX_ACCESS is access UNSIGNED_INTEGER_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– REAL<br />

––––––––––––––––––––––––––––––<br />

type REAL is new NUMERIC_TYPES.SINGLE_FLOAT;<br />

REAL_INITIAL_VALUE : constant REAL := 0.0;<br />

type REAL_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of REAL;<br />

type REAL_VECTOR_ACCESS is access REAL_VECTOR;<br />

type REAL_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of REAL;<br />

type REAL_MATRIX_ACCESS is access REAL_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– LONG_REAL<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

575 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––<br />

type LONG_REAL is new NUMERIC_TYPES.DOUBLE_FLOAT;<br />

LONG_REAL_INITIAL_VALUE : constant LONG_REAL := 0.0;<br />

type LONG_REAL_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of LONG_REAL;<br />

type LONG_REAL_VECTOR_ACCESS is access LONG_REAL_VECTOR;<br />

type LONG_REAL_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of LONG_REAL;<br />

type LONG_REAL_MATRIX_ACCESS is access LONG_REAL_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– COMPLEX<br />

––––––––––––––––––––––––––––––<br />

type COMPLEX is<br />

record<br />

RE, IM : LONG_REAL;<br />

end record;<br />

COMPLEX_INITIAL_VALUE : constant COMPLEX := (0.0, 0.0);<br />

type COMPLEX_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of COMPLEX;<br />

type COMPLEX_VECTOR_ACCESS is access COMPLEX_VECTOR;<br />

type COMPLEX_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of COMPLEX;<br />

type COMPLEX_MATRIX_ACCESS is access COMPLEX_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– BOOLEAN<br />

––––––––––––––––––––––––––––––<br />

BOOLEAN_INITIAL_VALUE : constant BOOLEAN := TRUE;<br />

type BOOLEAN_VECTOR is<br />

array (UNSIGNED_INTEGER range ) of BOOLEAN;<br />

type BOOLEAN_VECTOR_ACCESS is access BOOLEAN_VECTOR;<br />

type BOOLEAN_MATRIX is<br />

array (UNSIGNED_INTEGER range ,<br />

UNSIGNED_INTEGER range ) of BOOLEAN;<br />

type BOOLEAN_MATRIX_ACCESS is access BOOLEAN_MATRIX;<br />

––––––––––––––––––––––––––––––<br />

–– LONG_DURATION<br />

––––––––––––––––––––––––––––––<br />

subtype LONG_DURATION is SMT_CALENDAR.LONG_DURATION;<br />

function ”+”(RIGHT: LONG_DURATION) return LONG_DURATION<br />

renames SMT_CALENDAR.”+”;<br />

function ”–”(RIGHT: LONG_DURATION) return LONG_DURATION<br />

renames SMT_CALENDAR.”–”;<br />

function ”abs”(RIGHT: LONG_DURATION) return LONG_DURATION<br />

renames SMT_CALENDAR.”abs”;<br />

function ”+”(LEFT: LONG_DURATION; RIGHT: LONG_DURATION) return LONG_DURATION<br />

renames SMT_CALENDAR.”+”;<br />

function ”–”(LEFT: LONG_DURATION; RIGHT: LONG_DURATION) return LONG_DURATION<br />

renames SMT_CALENDAR.”–”;<br />

function ”*”(LEFT: LONG_DURATION; RIGHT: INTEGER) return LONG_DURATION<br />

renames SMT_CALENDAR.”*”;<br />

–– function ”*”(LEFT: INTEGER; RIGHT: LONG_DURATION) return LONG_DURATION<br />

–– renames SMT_CALENDAR.MUL;<br />

function ”/”(LEFT: LONG_DURATION; RIGHT: INTEGER) return LONG_DURATION<br />

renames SMT_CALENDAR.”/”;<br />

function ”=”(LEFT: LONG_DURATION; RIGHT: LONG_DURATION) return BOOLEAN<br />

renames SMT_CALENDAR.”=”;<br />

function ”


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

renames SMT_CALENDAR.””(LEFT: LONG_DURATION; RIGHT: LONG_DURATION) return BOOLEAN<br />

renames SMT_CALENDAR.”>”;<br />

function ”>=”(LEFT: LONG_DURATION; RIGHT: LONG_DURATION) return BOOLEAN<br />

renames SMT_CALENDAR.”>=”;<br />

LONG_DURATION_INITIAL_VALUE : constant LONG_DURATION := 0.0;<br />

––––––––––––––––––––––––––––––<br />

–– TIME<br />

––––––––––––––––––––––––––––––<br />

subtype TIME is SMT_CALENDAR.TIME;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

577 von/of: 662<br />

subtype YEAR_NUMBER is INTEGER range 1901 .. 2099;<br />

subtype MONTH_NUMBER is INTEGER range 1 .. 12;<br />

subtype DAY_NUMBER is INTEGER range 1 .. 31;<br />

subtype DAY_DURATION is LONG_DURATION range 0.0 .. 86_400.0;<br />

function CLOCK return TIME renames SMT_CALENDAR.CLOCK;<br />

function YEAR (DATE: TIME) return YEAR_NUMBER renames SMT_CALENDAR.YEAR;<br />

function MONTH (DATE: TIME) return MONTH_NUMBER renames SMT_CALENDAR.MONTH;<br />

function DAY (DATE: TIME) return DAY_NUMBER renames SMT_CALENDAR.DAY;<br />

function SECONDS(DATE: TIME) return DAY_DURATION renames SMT_CALENDAR.SECONDS;<br />

procedure SPLIT (DATE : in TIME;<br />

YEAR : out YEAR_NUMBER;<br />

MONTH : out MONTH_NUMBER;<br />

DAY : out DAY_NUMBER;<br />

SECONDS: out DAY_DURATION) renames SMT_CALENDAR.SPLIT;<br />

function TIME_OF(YEAR : YEAR_NUMBER;<br />

MONTH : MONTH_NUMBER;<br />

DAY : DAY_NUMBER;<br />

SECONDS: DAY_DURATION := 0.0) return TIME<br />

renames SMT_CALENDAR.TIME_OF;<br />

function ”+” (LEFT: TIME; RIGHT: LONG_DURATION) return TIME<br />

renames SMT_CALENDAR.”+”;<br />

function ”+” (LEFT: LONG_DURATION; RIGHT: TIME) return TIME<br />

renames SMT_CALENDAR.”+”;<br />

function ”–” (LEFT: TIME; RIGHT: LONG_DURATION) return TIME<br />

renames SMT_CALENDAR.”–”;<br />

function ”–” (LEFT: TIME; RIGHT: TIME) return LONG_DURATION<br />

renames SMT_CALENDAR.”–”;<br />

function ”=” (LEFT, RIGHT: TIME) return BOOLEAN<br />

renames SMT_CALENDAR.”=”;<br />

function ”=”;<br />

function GET_MINFRAME_INTERVAL return LONG_DURATION<br />

renames SMT_CALENDAR.GET_MINFRAME_INTERVAL;<br />

TIME_INITIAL_VALUE : constant TIME := TIME_OF (1994, 1, 1, 0.0); –– 1.1.1994 why not<br />

––––––––––––––––––––––––––––––<br />

–– <strong>ST</strong>ATE_CODE<br />

––––––––––––––––––––––––––––––<br />

type <strong>ST</strong>ATE_CODE is new MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

<strong>ST</strong>ATE_CODE_INITIAL_VALUE : constant <strong>ST</strong>ATE_CODE := (others => ’ ’);<br />

––––––––––––––––––––––––––––––<br />

–– PULSE<br />

––––––––––––––––––––––––––––––<br />

type PULSE is new BOOLEAN;<br />

PULSE_INITIAL_VALUE : constant PULSE := TRUE;<br />

PULSE_NOT_TRIGGERED : constant PULSE := FALSE;<br />

PULSE_TRIGGERED : constant PULSE := TRUE;<br />

––––––––––––––––––––––––––––––<br />

–– BUR<strong>ST</strong>_PULSE<br />

––––––––––––––––––––––––––––––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type BUR<strong>ST</strong>_PULSE is new NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

BUR<strong>ST</strong>_PULSE_INITIAL_VALUE : constant BUR<strong>ST</strong>_PULSE := 0;<br />

BUR<strong>ST</strong>_PULSE_NOT_TRIGGERED : constant BUR<strong>ST</strong>_PULSE := 0;<br />

––––––––––––––––––––––––––––––<br />

–– BYTE_<strong>ST</strong>REAM<br />

––––––––––––––––––––––––––––––<br />

type BYTE_<strong>ST</strong>REAM (MAX_LENGTH : UNSIGNED_INTEGER) is<br />

record<br />

ACTUAL : UNSIGNED_INTEGER;<br />

ELEMENTS: UNSIGNED_BYTE_VECTOR (1 .. MAX_LENGTH);<br />

end record;<br />

type BYTE_<strong>ST</strong>REAM_ACCESS is access BYTE_<strong>ST</strong>REAM;<br />

–– several functions concerning BYTE_<strong>ST</strong>REAM<br />

BYTE_<strong>ST</strong>REAM_INITIAL_VALUE : constant BYTE_<strong>ST</strong>REAM_ACCESS := null;<br />

–– W.Tammen: changes made for DMS–R prototype merge with <strong>CGS</strong> V4.1.1<br />

––<br />

–– string_access_type has to be declared redundantly here in order to<br />

–– avoid circular compilation dependencies: css_types uses db_definitions<br />

–– and vice versa !!<br />

–– BOB: One day someone will have to rationalise strings.<br />

type <strong>ST</strong>RING_ACCESS is access <strong>ST</strong>RING;<br />

<strong>ST</strong>RING_ACCESS_INITIAL_VALUE: constant <strong>ST</strong>RING_ACCESS := null;<br />

procedure FREE is new UNCHECKED_DEALLOCATION (<strong>ST</strong>RING, <strong>ST</strong>RING_ACCESS);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

578 von/of: 662<br />

type IO_VALUE_TYPE (SW_TYPE : CSS_SW_TYPES := NONE) is<br />

record<br />

case SW_TYPE is<br />

when NONE => null;<br />

when UNSIGNED_BYTE_TYPE =><br />

UNSIGNED_BYTE_VALUE: UNSIGNED_BYTE := UNSIGNED_BYTE_INITIAL_VALUE;<br />

when SIGNED_BYTE_TYPE =><br />

SIGNED_BYTE_VALUE: SIGNED_BYTE := SIGNED_BYTE_INITIAL_VALUE;<br />

when UNSIGNED_SHORT_WORD_TYPE => UNSIGNED_SHORT_WORD_VALUE:<br />

UNSIGNED_SHORT_WORD := UNSIGNED_SHORT_WORD_INITIAL_VALUE;<br />

when SIGNED_SHORT_WORD_TYPE => SIGNED_SHORT_WORD_VALUE:<br />

SIGNED_SHORT_WORD := SIGNED_SHORT_WORD_INITIAL_VALUE;<br />

when UNSIGNED_INTEGER_TYPE =><br />

UNSIGNED_INTEGER_VALUE: UNSIGNED_INTEGER := UNSIGNED_INTEGER_INITIAL_VALUE;<br />

when SIGNED_INTEGER_TYPE =><br />

SIGNED_INTEGER_VALUE: SIGNED_INTEGER := SIGNED_INTEGER_INITIAL_VALUE;<br />

when LONG_REAL_TYPE =><br />

LONG_REAL_VALUE: LONG_REAL := LONG_REAL_INITIAL_VALUE;<br />

when COMPLEX_TYPE =><br />

COMPLEX_VALUE: COMPLEX := COMPLEX_INITIAL_VALUE;<br />

when BOOLEAN_TYPE =><br />

BOOLEAN_VALUE: BOOLEAN := BOOLEAN_INITIAL_VALUE;<br />

when TIME_TYPE =><br />

TIME_VALUE: TIME := TIME_INITIAL_VALUE;<br />

when LONG_DURATION_TYPE =><br />

LONG_DURATION_VALUE: LONG_DURATION := LONG_DURATION_INITIAL_VALUE;<br />

when UNSIGNED_BYTE_VECTOR_TYPE =><br />

UNSIGNED_BYTE_VECTOR_VALUE: UNSIGNED_BYTE_VECTOR_ACCESS := null;<br />

when SIGNED_BYTE_VECTOR_TYPE => SIGNED_BYTE_VECTOR_VALUE:<br />

SIGNED_BYTE_VECTOR_ACCESS := null;<br />

when UNSIGNED_SHORT_WORD_VECTOR_TYPE => UNSIGNED_SHORT_WORD_VECTOR_VALUE:<br />

UNSIGNED_SHORT_WORD_VECTOR_ACCESS := null;<br />

when SIGNED_SHORT_WORD_VECTOR_TYPE => SIGNED_SHORT_WORD_VECTOR_VALUE:<br />

SIGNED_SHORT_WORD_VECTOR_ACCESS := null;<br />

when UNSIGNED_INTEGER_VECTOR_TYPE => UNSIGNED_INTEGER_VECTOR_VALUE:<br />

UNSIGNED_INTEGER_VECTOR_ACCESS := null;<br />

when SIGNED_INTEGER_VECTOR_TYPE => SIGNED_INTEGER_VECTOR_VALUE:<br />

SIGNED_INTEGER_VECTOR_ACCESS := null;<br />

when REAL_VECTOR_TYPE => REAL_VECTOR_VALUE : REAL_VECTOR_ACCESS := null;<br />

when LONG_REAL_VECTOR_TYPE => LONG_REAL_VECTOR_VALUE:<br />

LONG_REAL_VECTOR_ACCESS := null;<br />

when COMPLEX_VECTOR_TYPE => COMPLEX_VECTOR_VALUE: COMPLEX_VECTOR_ACCESS := null;<br />

when BOOLEAN_VECTOR_TYPE => BOOLEAN_VECTOR_VALUE: BOOLEAN_VECTOR_ACCESS := null;<br />

when UNSIGNED_BYTE_MATRIX_TYPE =><br />

UNSIGNED_BYTE_MATRIX_VALUE: UNSIGNED_BYTE_MATRIX_ACCESS := null;<br />

when SIGNED_BYTE_MATRIX_TYPE => SIGNED_BYTE_MATRIX_VALUE:


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

579 von/of: 662<br />

SIGNED_BYTE_MATRIX_ACCESS := null;<br />

when UNSIGNED_SHORT_WORD_MATRIX_TYPE => UNSIGNED_SHORT_WORD_MATRIX_VALUE:<br />

UNSIGNED_SHORT_WORD_MATRIX_ACCESS := null;<br />

when SIGNED_SHORT_WORD_MATRIX_TYPE => SIGNED_SHORT_WORD_MATRIX_VALUE:<br />

SIGNED_SHORT_WORD_MATRIX_ACCESS := null;<br />

when UNSIGNED_INTEGER_MATRIX_TYPE => UNSIGNED_INTEGER_MATRIX_VALUE:<br />

UNSIGNED_INTEGER_MATRIX_ACCESS := null;<br />

when SIGNED_INTEGER_MATRIX_TYPE => SIGNED_INTEGER_MATRIX_VALUE:<br />

SIGNED_INTEGER_MATRIX_ACCESS := null;<br />

when REAL_MATRIX_TYPE => REAL_MATRIX_VALUE : REAL_MATRIX_ACCESS := null;<br />

when LONG_REAL_MATRIX_TYPE => LONG_REAL_MATRIX_VALUE:<br />

LONG_REAL_MATRIX_ACCESS := null;<br />

when COMPLEX_MATRIX_TYPE => COMPLEX_MATRIX_VALUE: COMPLEX_MATRIX_ACCESS := null;<br />

when BOOLEAN_MATRIX_TYPE => BOOLEAN_MATRIX_VALUE: BOOLEAN_MATRIX_ACCESS := null;<br />

when REAL_TYPE =><br />

REAL_VALUE : REAL := REAL_INITIAL_VALUE;<br />

when <strong>ST</strong>ATE_CODE_TYPE =><br />

<strong>ST</strong>ATE_CODE_VALUE: <strong>ST</strong>ATE_CODE := <strong>ST</strong>ATE_CODE_INITIAL_VALUE;<br />

when PULSE_TYPE =><br />

PULSE_VALUE: PULSE := PULSE_INITIAL_VALUE;<br />

when BUR<strong>ST</strong>_PULSE_TYPE =><br />

BUR<strong>ST</strong>_PULSE_VALUE : BUR<strong>ST</strong>_PULSE := BUR<strong>ST</strong>_PULSE_INITIAL_VALUE;<br />

when BYTE_<strong>ST</strong>REAM_TYPE =><br />

BYTE_<strong>ST</strong>REAM_VALUE : BYTE_<strong>ST</strong>REAM_ACCESS := null;<br />

when <strong>ST</strong>RING_ACCESS_TYPE =><br />

<strong>ST</strong>RING_VALUE : <strong>ST</strong>RING_ACCESS := null;<br />

when LA<strong>ST</strong>_TYPE => null;<br />

end case;<br />

end record;<br />

type IO_SCALAR_VALUE_TYPE (SW_TYPE : CSS_SW_TYPES := NONE) is<br />

record<br />

case SW_TYPE is<br />

when NONE => null;<br />

when UNSIGNED_BYTE_TYPE =><br />

UNSIGNED_BYTE_VALUE: UNSIGNED_BYTE := UNSIGNED_BYTE_INITIAL_VALUE;<br />

when SIGNED_BYTE_TYPE =><br />

SIGNED_BYTE_VALUE: SIGNED_BYTE := SIGNED_BYTE_INITIAL_VALUE;<br />

when UNSIGNED_SHORT_WORD_TYPE => UNSIGNED_SHORT_WORD_VALUE:<br />

UNSIGNED_SHORT_WORD := UNSIGNED_SHORT_WORD_INITIAL_VALUE;<br />

when SIGNED_SHORT_WORD_TYPE => SIGNED_SHORT_WORD_VALUE:<br />

SIGNED_SHORT_WORD := SIGNED_SHORT_WORD_INITIAL_VALUE;<br />

when UNSIGNED_INTEGER_TYPE =><br />

UNSIGNED_INTEGER_VALUE: UNSIGNED_INTEGER := UNSIGNED_INTEGER_INITIAL_VALUE;<br />

when SIGNED_INTEGER_TYPE =><br />

SIGNED_INTEGER_VALUE: SIGNED_INTEGER := SIGNED_INTEGER_INITIAL_VALUE;<br />

when LONG_REAL_TYPE =><br />

LONG_REAL_VALUE: LONG_REAL := LONG_REAL_INITIAL_VALUE;<br />

when COMPLEX_TYPE =><br />

COMPLEX_VALUE: COMPLEX := COMPLEX_INITIAL_VALUE;<br />

when BOOLEAN_TYPE =><br />

BOOLEAN_VALUE: BOOLEAN := BOOLEAN_INITIAL_VALUE;<br />

when TIME_TYPE =><br />

TIME_VALUE: TIME := TIME_INITIAL_VALUE;<br />

when LONG_DURATION_TYPE =><br />

LONG_DURATION_VALUE: LONG_DURATION := LONG_DURATION_INITIAL_VALUE;<br />

when REAL_TYPE =><br />

REAL_VALUE : REAL := REAL_INITIAL_VALUE;<br />

when <strong>ST</strong>ATE_CODE_TYPE =><br />

<strong>ST</strong>ATE_CODE_VALUE: <strong>ST</strong>ATE_CODE := <strong>ST</strong>ATE_CODE_INITIAL_VALUE;<br />

when PULSE_TYPE =><br />

PULSE_VALUE: PULSE := PULSE_INITIAL_VALUE;<br />

when BUR<strong>ST</strong>_PULSE_TYPE =><br />

BUR<strong>ST</strong>_PULSE_VALUE : BUR<strong>ST</strong>_PULSE := BUR<strong>ST</strong>_PULSE_INITIAL_VALUE;<br />

when others => null;<br />

end case;<br />

end record;<br />

type IO_COMPOSITE_VALUE_TYPE (SW_TYPE : CSS_SW_TYPES := NONE) is<br />

record<br />

case SW_TYPE is<br />

when UNSIGNED_BYTE_VECTOR_TYPE =><br />

UNSIGNED_BYTE_VECTOR_VALUE: UNSIGNED_BYTE_VECTOR_ACCESS := null;<br />

when SIGNED_BYTE_VECTOR_TYPE => SIGNED_BYTE_VECTOR_VALUE:


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

580 von/of: 662<br />

SIGNED_BYTE_VECTOR_ACCESS := null;<br />

when UNSIGNED_SHORT_WORD_VECTOR_TYPE => UNSIGNED_SHORT_WORD_VECTOR_VALUE:<br />

UNSIGNED_SHORT_WORD_VECTOR_ACCESS := null;<br />

when SIGNED_SHORT_WORD_VECTOR_TYPE => SIGNED_SHORT_WORD_VECTOR_VALUE:<br />

SIGNED_SHORT_WORD_VECTOR_ACCESS := null;<br />

when UNSIGNED_INTEGER_VECTOR_TYPE => UNSIGNED_INTEGER_VECTOR_VALUE:<br />

UNSIGNED_INTEGER_VECTOR_ACCESS := null;<br />

when SIGNED_INTEGER_VECTOR_TYPE => SIGNED_INTEGER_VECTOR_VALUE:<br />

SIGNED_INTEGER_VECTOR_ACCESS := null;<br />

when REAL_VECTOR_TYPE => REAL_VECTOR_VALUE : REAL_VECTOR_ACCESS := null;<br />

when LONG_REAL_VECTOR_TYPE => LONG_REAL_VECTOR_VALUE:<br />

LONG_REAL_VECTOR_ACCESS := null;<br />

when COMPLEX_VECTOR_TYPE => COMPLEX_VECTOR_VALUE: COMPLEX_VECTOR_ACCESS := null;<br />

when BOOLEAN_VECTOR_TYPE => BOOLEAN_VECTOR_VALUE: BOOLEAN_VECTOR_ACCESS := null;<br />

when UNSIGNED_BYTE_MATRIX_TYPE =><br />

UNSIGNED_BYTE_MATRIX_VALUE: UNSIGNED_BYTE_MATRIX_ACCESS := null;<br />

when SIGNED_BYTE_MATRIX_TYPE => SIGNED_BYTE_MATRIX_VALUE:<br />

SIGNED_BYTE_MATRIX_ACCESS := null;<br />

when UNSIGNED_SHORT_WORD_MATRIX_TYPE => UNSIGNED_SHORT_WORD_MATRIX_VALUE:<br />

UNSIGNED_SHORT_WORD_MATRIX_ACCESS := null;<br />

when SIGNED_SHORT_WORD_MATRIX_TYPE => SIGNED_SHORT_WORD_MATRIX_VALUE:<br />

SIGNED_SHORT_WORD_MATRIX_ACCESS := null;<br />

when UNSIGNED_INTEGER_MATRIX_TYPE => UNSIGNED_INTEGER_MATRIX_VALUE:<br />

UNSIGNED_INTEGER_MATRIX_ACCESS := null;<br />

when SIGNED_INTEGER_MATRIX_TYPE => SIGNED_INTEGER_MATRIX_VALUE:<br />

SIGNED_INTEGER_MATRIX_ACCESS := null;<br />

when REAL_MATRIX_TYPE => REAL_MATRIX_VALUE : REAL_MATRIX_ACCESS := null;<br />

when LONG_REAL_MATRIX_TYPE => LONG_REAL_MATRIX_VALUE:<br />

LONG_REAL_MATRIX_ACCESS := null;<br />

when COMPLEX_MATRIX_TYPE => COMPLEX_MATRIX_VALUE: COMPLEX_MATRIX_ACCESS := null;<br />

when BOOLEAN_MATRIX_TYPE => BOOLEAN_MATRIX_VALUE: BOOLEAN_MATRIX_ACCESS := null;<br />

when BYTE_<strong>ST</strong>REAM_TYPE =><br />

BYTE_<strong>ST</strong>REAM_VALUE : BYTE_<strong>ST</strong>REAM_ACCESS := null;<br />

when <strong>ST</strong>RING_ACCESS_TYPE =><br />

<strong>ST</strong>RING_VALUE : <strong>ST</strong>RING_ACCESS := null;<br />

when others => null;<br />

end case;<br />

end record;<br />

end CSS_TYPES;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– MODEL_CONNECTION<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– MODEL_CONNECTION<br />

–– Project CSS<br />

–– ADD, section 5.2<br />

–– HOOD object MODEL_CONNECTION<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– MODEL_CONNECTION<br />

––<br />

–– Type: Package Spec<br />

––<br />

–– Version:<br />

–– 2.1, 10.11.93, : initial_version<br />

–– 3.1, 21.07.94, J.Hoyng: build_0 version<br />

–– 4.1, 23.08.95, N.Heyder: SW_VALUE_TYPE (record!), Byte_Stream_Value,<br />

–– Unix–Shared_Memory, fork CMAS–Process<br />

–– 4.2, 01.12.95, N.Heyder: added error report–list from CMAS<br />

–– 5.1, 20.02.97, W.Tammen: merge with DMS–R Prototype<br />

–– 5.2, 17.07.97, W.Tammen: introduced new error numbers due to IRN 7015<br />

–– (modification in TSS initialization)<br />

–– 5.3, 18.08.97, W.Tammen: modified error handling<br />

–– 5.4, 11.09.97, J.Hoyng: added CMAS_SIGNAL<br />

–– 5.5, 12.09.97, J.Hoyng: added KERNEL_SIGNAL<br />

–– 6.1, 10.09.98, W.Tammen: added procedure RESET_ALL_OUTPUT_PULSES<br />

–– COL–RIBRE–SPR–5260,CSS handles pulses not correctly<br />

–– 6.2, 17.12.98, J.Hoyng: added NULL_RID, changed COMMAND_TYPE (added SV_LOADED)<br />

––<br />

–– Purpose:<br />

–– To provide an abstract state machine describing the shared<br />

–– model structure between the model software and the Adaptation <strong>System</strong><br />

––<br />

–– External:<br />

–– From Ada system:<br />

–– none<br />

––<br />

–– From <strong>CGS</strong><br />

–– NUMERIC_TYPES<br />

–– UNIX_INTERFACE<br />

–– From CSS:<br />

–– CSS_TYPES<br />

–– CSS_DEFINITIONS<br />

––<br />

–– I/O:<br />

–– –––<br />

––<br />

–– Machine Dependencies:<br />

–– none<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

––<br />

–– UNIX signals:<br />

–– –––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with CSS_TYPES;<br />

with CSS_DEFINITIONS;<br />

with NUMERIC_TYPES;<br />

with UNIX_INTERFACE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

581 von/of: 662


Space Infrastructure<br />

package MODEL_CONNECTION is<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– Unix–Signal to be sent to the CMAS–Process from the kernel process<br />

–– (synchronization between Kernel/CMAS)<br />

CMAS_SIGNAL : constant UNIX_INTERFACE.UNIX_SIGNAL<br />

:= UNIX_INTERFACE.SIGUSR1;<br />

–– Unix–Signal to be sent to the Kernel–Process from the CMAS process<br />

–– (synchronization between Kernel/CMAS)<br />

KERNEL_SIGNAL : constant UNIX_INTERFACE.UNIX_SIGNAL<br />

:= UNIX_INTERFACE.SIGUSR1;<br />

–– The following ERROR_CODE_TYPE defines all possible error situations during<br />

–– a simulation run produced by the CMAS software. Note that this type is<br />

–– compatible to the error_code_type as defined in the GLOBAL_DATA package<br />

–– of the CSS Kernel software.<br />

–– error codes will be read from file<br />

subtype CMAS_ERROR_CODE_TYPE is Integer;<br />

–– the following error codes will identify the messages read from the file<br />

–– $CSS_KERNEL_MESSAGES. These error codes will build the message field<br />

–– together with the CSS kernel messages. Therefore, the used message codes<br />

–– have to be different from those defined in the package GLOBAL_DATA of<br />

–– the CSS kernel software. Both identifier ranges should build a contiguous<br />

–– range of message numbers to minimize memory utilization.<br />

––––––––––––––––––––––––––––––––––––––––––––<br />

–– CMAS–Errors:<br />

––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

582 von/of: 662<br />

INITIAL_<strong>ST</strong>ATE: constant CMAS_ERROR_CODE_TYPE := 50133;<br />

NONE_<strong>ST</strong>ATE: constant CMAS_ERROR_CODE_TYPE := 50134;<br />

OTHER_ERROR: constant CMAS_ERROR_CODE_TYPE := 50135;<br />

CMAS_MAIN_PROC_EXCEPTION_RAISED_WHILE_<strong>ST</strong>ARTUP_CALIB: constant CMAS_ERROR_CODE_TYPE := 50136;<br />

CMAS_MAIN_PROC_EXCEPTION_RAISED_WHILE_<strong>ST</strong>ARTUP: constant CMAS_ERROR_CODE_TYPE := 50137;<br />

CALIB_CANNOT_SELECT_CALIBRATION_TREATMENT: constant CMAS_ERROR_CODE_TYPE := 50138;<br />

CALIB_CANNOT_SELECT_DECALIBRATION_TREATMENT: constant CMAS_ERROR_CODE_TYPE := 50139;<br />

CALIB_CANNOT_INITIALIZE_CALIBRATION_TREATMENT_ARRAY: constant CMAS_ERROR_CODE_TYPE := 50140;<br />

CALIB_TOO_MANY_BITS_REQUIRED_FOR_A_TC_PACKETS_USER_DATA_ENTRY: constant CMAS_ERROR_CODE_TYPE :=<br />

50141;<br />

CALIB_TOO_MANY_BITS_REQUIRED_FOR_A_TM_PACKETS_USER_DATA_ENTRY: constant CMAS_ERROR_CODE_TYPE :=<br />

50142;<br />

CALIB_CANNOT_CALIBRATE: constant CMAS_ERROR_CODE_TYPE := 50143;<br />

CALIB_CANNOT_DECALIBRATE: constant CMAS_ERROR_CODE_TYPE := 50144;<br />

PACKETIZER_UNDEFINED_PACKET_RECEIVED: constant CMAS_ERROR_CODE_TYPE := 50145;<br />

PACKETIZER_CANNOT_INIT_PACKETIZER: constant CMAS_ERROR_CODE_TYPE := 50146;<br />

PACKETIZER_CANNOT_DEFINE_CCSDS_TM_PACKET: constant CMAS_ERROR_CODE_TYPE := 50147;<br />

PACKETIZER_CANNOT_DEFINE_CCSDS_TC_PACKET: constant CMAS_ERROR_CODE_TYPE := 50148;<br />

PACKETIZER_CANNOT_DE_PACKETIZE: constant CMAS_ERROR_CODE_TYPE := 50149;<br />

PACKETIZER_CANNOT_PACKETIZE: constant CMAS_ERROR_CODE_TYPE := 50150;<br />

PACKETIZER_CANNOT_WRITE_CCSDS_PACKET: constant CMAS_ERROR_CODE_TYPE := 50151;<br />

PACKETIZER_CANNOT_READ_CCSDS_PACKET: constant CMAS_ERROR_CODE_TYPE := 50152;<br />

PACKETIZER_CANNOT_GET_RT_SA_TC_FIR<strong>ST</strong>_SA: constant CMAS_ERROR_CODE_TYPE := 50153;<br />

ILLEGAL_PARAMETERS_READ_FROM_MODEL_CONFIG_FILE: constant CMAS_ERROR_CODE_TYPE := 50154;<br />

ILLEGAL_CALIB_DECALIB_DEFINITION: constant CMAS_ERROR_CODE_TYPE := 50155;<br />

ILLEGAL_SW_TYPE_READ_FROM_MILBUS_CONFIG_FILE: constant CMAS_ERROR_CODE_TYPE := 50156;<br />

ILLEGAL_MILBUS_CLASS_READ_FROM_MILBUS_CONFIG_FILE: constant CMAS_ERROR_CODE_TYPE := 50157;<br />

INVALID_OPCODE_READ_FROM_MILBUS_CONFIG_FILE: constant CMAS_ERROR_CODE_TYPE := 50158;<br />

LAN_IF_UNDEFINED_COMMAND_RECEIVED: constant CMAS_ERROR_CODE_TYPE := 50159;<br />

CONVERSION_ERROR_UNSIGNED_INTEGER32_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50160;<br />

CONVERSION_ERROR_INTEGER32_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50161;<br />

CONVERSION_ERROR_BIT_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50162;<br />

WRONG_UNSIGNED_INTEGER32_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50163;<br />

WRONG_INTEGER32_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50164;<br />

WRONG_BIT_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50165;<br />

LAN_IF_CANNOT_<strong>ST</strong>ART_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50166;<br />

LAN_IF_CANNOT_SHUTDOWN_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50167;<br />

LAN_IF_CANNOT_OPEN_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50168;<br />

LAN_IF_CANNOT_CLOSE_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50169;<br />

LAN_IF_CANNOT_READ_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50170;<br />

LAN_IF_CANNOT_WRITE_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50171;<br />

LAN_IF_CANNOT_TERMINAL_CMD_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50172;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

583 von/of: 662<br />

SHM_ACCESS_RAISED_OTHER_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50173;<br />

SHM_ACCESS_CANNOT_COPY_EVERYTHING_UPDATED_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50174;<br />

SHM_ACCESS_CANNOT_INITIALIZE_ALL_OUTPUT_PINS_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50175;<br />

LAN_ACCESSS_RAISED_OTHER_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50176;<br />

<strong>ST</strong>ATUS_RAISED_OTHER_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50177;<br />

PIN_RAISED_OTHER_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50178;<br />

PIN_CANNOT_CREATE_ALL_ITEMS_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50179;<br />

PIN_CANNOT_INPUT_RANGE_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50180;<br />

PIN_CANNOT_UPDATED_FLAG_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50181;<br />

PIN_CANNOT_WRITE_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50182;<br />

PIN_CANNOT_READ_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50183;<br />

SCHEDULER_RAISED_OTHER_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50184;<br />

SCHEDULER_CANNOT_BEGIN_TO_COPY_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50185;<br />

SCHEDULER_CANNOT_PREVENT_FROM_SHM_ACCESS_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50186;<br />

SCHEDULER_CANNOT_SIMULATOR_EVENT_ACTIVITIES_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50187;<br />

SCHEDULER_CANNOT_LAN_EVENT_ACTIVITIES_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50188;<br />

SCHEDULER_CANNOT_SHM_ACCESS_DONE_ACTIVITIES_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50189;<br />

SCHEDULER_CANNOT_LAN_ACCESS_DONE_ACTIVITIES_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50190;<br />

SCHEDULER_CANNOT_SHUTDOWN_ACTIVITIES_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50191;<br />

SCHEDULER_CANNOT_INITIALIZE_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50192;<br />

CANNOT_<strong>ST</strong>ART_DMS_CONNECTION: constant CMAS_ERROR_CODE_TYPE := 50193;<br />

CMAS_MAIN_PROCEDURE_RAISED_OTHER_EXCEPTION: constant CMAS_ERROR_CODE_TYPE := 50194;<br />

INVALID_MODEL_OUTPUT_ID: constant CMAS_ERROR_CODE_TYPE := 50195;<br />

UNKNOWN_EXT_SW_TYPE: constant CMAS_ERROR_CODE_TYPE := 50196;<br />

CONVERSION_ERROR_SIGNED_INTEGER_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50197;<br />

CONVERSION_ERROR_UNSIGNED_INTEGER_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50198;<br />

CONVERSION_ERROR_LONG_REAL_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50199;<br />

CONVERSION_ERROR_BOOLEAN_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50200;<br />

CONVERSION_ERROR_<strong>ST</strong>ATE_CODE_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50201;<br />

CONVERSION_ERROR_PULSE_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50202;<br />

CONVERSION_ERROR_BUR<strong>ST</strong>_PULSE_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50203;<br />

CONVERSION_ERROR_BYTE_<strong>ST</strong>REAM_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50204;<br />

CONVERSION_ERROR_UNKNOWN_EXT_SW_TYPE: constant CMAS_ERROR_CODE_TYPE := 50205;<br />

CONVERSION_ERROR_UNSIGNED_BYTE_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50206;<br />

CONVERSION_ERROR_SIGNED_BYTE_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50207;<br />

CONVERSION_ERROR_UNSIGNED_SHORT_WORD_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50208;<br />

CONVERSION_ERROR_SIGNED_SHORT_WORD_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50209;<br />

CONVERSION_ERROR_REAL_TO_BYTES: constant CMAS_ERROR_CODE_TYPE := 50210;<br />

INVALID_MODEL_INPUT_ID: constant CMAS_ERROR_CODE_TYPE := 50211;<br />

WRONG_SIGNED_INTEGER_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50212;<br />

WRONG_UNSIGNED_INTEGER_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50213;<br />

WRONG_LONG_REAL_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50214;<br />

WRONG_BOOLEAN_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50215;<br />

WRONG_<strong>ST</strong>ATE_CODE_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50216;<br />

WRONG_PULSE_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50217;<br />

WRONG_BUR<strong>ST</strong>_PULSE_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50218;<br />

WRONG_BYTE_<strong>ST</strong>REAM_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50219;<br />

WRONG_SIGNED_BYTE_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50220;<br />

WRONG_UNSIGNED_BYTE_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50221;<br />

WRONG_UNSIGNED_SHORT_WORD_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50222;<br />

WRONG_SIGNED_SHORT_WORD_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50223;<br />

WRONG_REAL_BYTE_SIZE: constant CMAS_ERROR_CODE_TYPE := 50224;<br />

CANNOT_CALIBRATE: constant CMAS_ERROR_CODE_TYPE := 50225;<br />

CANNOT_DECALIBRATE: constant CMAS_ERROR_CODE_TYPE := 50226;<br />

MISSING_PROCESS_ARGUMENTS: constant CMAS_ERROR_CODE_TYPE := 50227;<br />

CANNOT_<strong>ST</strong>ART_MODEL_CONNECTION_BECAUSE_SHM_ERROR: constant CMAS_ERROR_CODE_TYPE := 50228;<br />

CANNOT_<strong>ST</strong>ART_MODEL_CONNECTION_BECAUSE_SHM_ATTACH_ERROR: constant CMAS_ERROR_CODE_TYPE := 50229;<br />

CANNOT_<strong>ST</strong>ART_MODEL_CONNECTION_BECAUSE_SHM_GET_ERROR: constant CMAS_ERROR_CODE_TYPE := 50230;<br />

CANNOT_<strong>ST</strong>ART_MODEL_CONNECTION_BECAUSE_SHM_CREATION_ERROR: constant CMAS_ERROR_CODE_TYPE := 50231;<br />

CANNOT_<strong>ST</strong>ART_MODEL_CONFIG: constant CMAS_ERROR_CODE_TYPE := 50232;<br />

LAN_ACCESS_CANNOT_DEFINE_MY_RID_DOMAINE: constant CMAS_ERROR_CODE_TYPE := 50233;<br />

LAN_ACCESS_CANNOT_OPEN_OUTPUT_CHANNEL: constant CMAS_ERROR_CODE_TYPE := 50234;<br />

LAN_ACCESS_CANNOT_OPEN_INPUT_CHANNEL: constant CMAS_ERROR_CODE_TYPE := 50235;<br />

LAN_ACCESS_CANNOT_CLOSE_OUTPUT_CHANNEL: constant CMAS_ERROR_CODE_TYPE := 50236;<br />

LAN_ACCESS_CANNOT_CLOSE_INPUT_CHANNEL: constant CMAS_ERROR_CODE_TYPE := 50237;<br />

LAN_ACCESS_CANNOT_COPY_MODEL_INPUT_FROM_LAN_TO_PIN: constant CMAS_ERROR_CODE_TYPE := 50238;<br />

SHM_ACCESS_CANNOT_COPY_MODEL_INPUT_TO_SHM: constant CMAS_ERROR_CODE_TYPE := 50239;<br />

SHM_ACCESS_CANNOT_COPY_MODEL_OUTPUT_TO_PIN: constant CMAS_ERROR_CODE_TYPE := 50240;<br />

type IO_CLASS_TYPE is(INPUT, OUTPUT);


Space Infrastructure<br />

type CLIENT_TYPE is (CMAS,<br />

KERNEL,<br />

CTG);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type MODE_TYPE is (NO_CMAS, –– no CMAS–Process need to be started!<br />

WITH_CMAS); –– CMAS–Process to be started!<br />

type SHARED_MEM_TYPE is (UNIX_SHM,<br />

VME_SHM);<br />

LOCAL_<strong>ST</strong>R : constant string := ”local”;<br />

REMOTE_<strong>ST</strong>R : constant string := ”remote”;<br />

type TOGGLE_FLAG_TYPE is new BOOLEAN;<br />

type RETURN_<strong>ST</strong>ATUS_TYPE is (OK,<br />

NOK);<br />

type RETURN_<strong>ST</strong>ARTUP_TYPE is (OK,<br />

CMAS_NOT_CONNECTED, –– (can only appear if Client=Kernel)<br />

SHM_ERROR);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

584 von/of: 662<br />

–– Kernel–Commands to command CMAS<br />

type COMMAND_TYPE is(INITIAL,<br />

NOMINAL, –– only ’Static Information’ may be accessed from the<br />

Shared Memory<br />

IO_ACCESS_PERMISSION, –– ’Static’ and ’I/O–Variables’ may be accessed<br />

NO_IO_ACCESS, –– do not access ’I/O–Variables’ from the Shared Memory<br />

SHUTDOWN, –– CMAS shall Shutdown<br />

SV_LOADED); –– the kernel has loaded the State Vector<br />

type CMAS_<strong>ST</strong>ATUS_TYPE is(INITIAL,<br />

INITIALIZING,<br />

NORMAL_IO_OPERATION,<br />

CURRENTLY_OVERLOAD,<br />

FAULTY,<br />

SHUTDOWN_IN_PROGRESS,<br />

SHUTDOWN_COMPLETED);<br />

type RUNTIME_ID_TYPE is new CSS_DEFINITIONS.RUNTIME_ID_TYPE;<br />

–– invalid RID<br />

NULL_RID : constant RUNTIME_ID_TYPE := RUNTIME_ID_TYPE(0);<br />

type ID_RANGE_TYPE is<br />

record<br />

NUMBER_OF_ITEMS : NATURAL := 0;<br />

FIR<strong>ST</strong>_ID : RUNTIME_ID_TYPE := 1;<br />

LA<strong>ST</strong>_ID : RUNTIME_ID_TYPE := 0;<br />

end record;<br />

type ID_RANGE_PER_CSS_SW_TYPE is array(CSS_TYPES.CSS_SW_TYPES) of ID_RANGE_TYPE;<br />

–– array for MAX. SIZE per single Byte–Stream<br />

type SIZE_ARRAY_TYPE is array (RUNTIME_ID_TYPE range ) of CSS_TYPES.UNSIGNED_INTEGER;<br />

type SIZE_ARRAY_ACCESS_TYPE is access SIZE_ARRAY_TYPE;<br />

–– this specifies the overall size (Configuration) of the ext. dyn. I/O–Memory<br />

type SH_MODEL_CONFIGURATION_TYPE is<br />

record<br />

–– all ext. I/Os<br />

EXTERNAL_IOS_RANGE : ID_RANGE_TYPE;<br />

EXTERNAL_INPUTS_RANGE : ID_RANGE_TYPE;<br />

EXTERNAL_OUTPUTS_RANGE : ID_RANGE_TYPE;<br />

–– Input–Array over all sw_types<br />

EXTERNAL_INPUTS : ID_RANGE_PER_CSS_SW_TYPE;<br />

–– Input–Array over all byte_streams<br />

EXTERNAL_INPUTS_BSS : SIZE_ARRAY_ACCESS_TYPE;<br />

–– Output–Array over all sw_types<br />

EXTERNAL_OUTPUTS : ID_RANGE_PER_CSS_SW_TYPE;


Space Infrastructure<br />

–– Output–Array over all byte_streams<br />

EXTERNAL_OUTPUTS_BSS : SIZE_ARRAY_ACCESS_TYPE;<br />

end record;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type SH_MODEL_CONFIGURATION_ACCESS_TYPE is access SH_MODEL_CONFIGURATION_TYPE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

585 von/of: 662<br />

type <strong>ST</strong>ARTUP_TYPE(CLIENT : CLIENT_TYPE := KERNEL) is<br />

record<br />

case CLIENT is<br />

when KERNEL =><br />

MODEL_CONFIGURATION : SH_MODEL_CONFIGURATION_TYPE;<br />

MODE : MODE_TYPE;<br />

CMAS_HO<strong>ST</strong> : css_definitions.<strong>ST</strong>RING_ACCESS;<br />

when CTG =><br />

SH_MODEL_CONFIGURATION : SH_MODEL_CONFIGURATION_TYPE;<br />

when CMAS =><br />

SHM : SHARED_MEM_TYPE;<br />

–– the Unix–Shared–Memory–Ids (only needed when SHM = UNIX_SHM):<br />

SHM_ID : css_definitions.<strong>ST</strong>RING_ACCESS := new <strong>ST</strong>RING’(””); –– ’External State Vector’<br />

<strong>ST</strong>AT_ID : css_definitions.<strong>ST</strong>RING_ACCESS := new <strong>ST</strong>RING’(””); –– ’Command/Status part’<br />

when others =><br />

null;<br />

end case;<br />

end record;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Operations for CTG + Kernel + CMAS –––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– <strong>ST</strong>ART<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– If the client is CTG|KERNEL the ’Shared Memory’ will<br />

–– be initialized(type/class/max_length).<br />

––<br />

–– If the client is KERNEL this function starts the CMAS–Process(via CREATE_EXT_MEMORY)!<br />

––<br />

–– The <strong>ST</strong>ART operation shall create memory regions on heap or shared<br />

–– depending on the client.<br />

––<br />

–– If the client is KERNEL, after successful initialization of the static–part of SHM this<br />

–– procedure sends the NOMINAL–CMD to CMAS<br />

––<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – SHM_ATTACH_ERROR<br />

–– – SHMGET_ERROR<br />

–– – SHM_CREATION_ERROR<br />

–– – FORK_ERROR<br />

–– – LOAD_CMAS_SHMIDS_ERROR<br />

–– – language_predefined_exceptions<br />

––<br />

––<br />

function <strong>ST</strong>ART(<br />

<strong>ST</strong>ARTUP : in <strong>ST</strong>ARTUP_TYPE;<br />

MILBUS_CONFIG_UNIX_PATH : <strong>ST</strong>RING := ”” –– will be needed by CMAS<br />

) return RETURN_<strong>ST</strong>ARTUP_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– UPDATE_VALUE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– the ’UPDATE_FLAG’ will be set to ’TRUE’<br />

––<br />

–– In case of Ext. Model Input: The value will be updated in the WRITE–Buffer.<br />

––


Space Infrastructure<br />

–– (Ext. Model Output is not toggled!)<br />

––<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – UPDATE_VALUE_ERROR<br />

––<br />

––<br />

procedure UPDATE_VALUE( IO : in RUNTIME_ID_TYPE;<br />

VALUE : in CSS_TYPES.IO_VALUE_TYPE);<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– READ_VALUE<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– This procedure returns for both Inputs and Output the last value assigned<br />

–– to the IO variable. If the IO has been updated in the last cycle then<br />

–– the IS_UPDATED parameter is set.<br />

––<br />

–– in case of Ext.Model–Input: reading will performed from<br />

–– the ’WRITE–Buffer’ of the requested Input<br />

––<br />

–– (Ext. Model Output is not toggled!)<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – READ_VALUE_ERROR<br />

––<br />

––<br />

procedure READ_VALUE( IO : in RUNTIME_ID_TYPE;<br />

IS_UPDATED : out BOOLEAN;<br />

VALUE : in out CSS_TYPES.IO_VALUE_TYPE);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– GET_SW_TYPE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– returns the Software type of the specified variable<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – GET_SW_TYPE_ERROR<br />

––<br />

––<br />

function GET_SW_TYPE(IO : in RUNTIME_ID_TYPE) return CSS_TYPES.CSS_SW_TYPES;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– IS_EXTERNAL<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– returns ’TRUE’if the given SW–TYPE is an External Type<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – IS_EXTERNAL_ERROR<br />

––<br />

––<br />

function IS_EXTERNAL(SW_TYPE : in css_types.CSS_SW_TYPES) return boolean;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– RESET_OUTPUTS_UPDATED_FLAG<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– restricted to ext. Output!<br />

–– Set the Output’s Read Updated–Flag to False<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

586 von/of: 662


Space Infrastructure<br />

––<br />

–– List of exceptions:<br />

–– – RESET_OUTPUTS_UPDATED_FLAG_ERROR<br />

––<br />

––<br />

procedure RESET_OUTPUTS_UPDATED_FLAG;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– SHUTDOWN<br />

–– – return unix system resources<br />

–– – if called by KERNEL this terminates also the CMAS–Process by command<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– List of exceptions:<br />

–– – SHUTDOWN_ERROR<br />

––<br />

––<br />

procedure SHUTDOWN;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Operations for CTG + Kernel ––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– INITIALIZE_VALUE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– this procedure ’initializes’ an ext. Input/Output, but it does not set<br />

–– the ’Updated–Flag’!<br />

–– (might be useful for CTG!)<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – INITIALIZE_VALUE_ERROR<br />

––<br />

––<br />

procedure INITIALIZE_VALUE(IO : in RUNTIME_ID_TYPE;<br />

VALUE : in CSS_TYPES.IO_VALUE_TYPE);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

587 von/of: 662<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– MONITOR<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– reads/monitors Input or Output always from the write–buffer<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – MONITOR_ERROR<br />

––<br />

––<br />

–– in case of Ext.Model–Input: Monitoring is will performed from<br />

–– the ’WRITE–Buffer’ of the requested Input<br />

––<br />

–– reading Ext. Model Input from the ’WRITE–Buffer’ is based on the concept that:<br />

–– 1. the producer has written its value into the ’WRITE–Buffer’<br />

–– 2. the frame is already completed<br />

–– 3. the Toggle–Bit has not been switched between producing and<br />

–– monitoring the requested variable<br />

––<br />

–– (Ext. Model Output is not toggled!)<br />

––<br />

procedure MONITOR( IO : in RUNTIME_ID_TYPE; –– RID<br />

ON_CHANGE : in BOOLEAN; –– requests change–indication(––>IS_CHANGE) restricted to<br />

Input<br />

IS_CHANGE : out BOOLEAN; –– change–indication (restricted to Input)


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

588 von/of: 662<br />

VALUE : in out CSS_TYPES.IO_VALUE_TYPE); –– the reported monitored value<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– INJECT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Change the value of the IO External Input.<br />

––<br />

–– If not INITIALIZE then<br />

–– change the value just in case the variable is not<br />

–– inhibited, and set the future inhibited state according to the<br />

–– CONNECT_FLAG parameter.<br />

––<br />

–– If INITIALIZE then<br />

–– change the value without making any check and<br />

–– without setting the UPDATED flag<br />

––<br />

–– Inject writes the new value into both Read– and Write–Buffer!<br />

––<br />

–– List of exceptions:<br />

–– – INJECT_ERROR<br />

––<br />

––<br />

procedure INJECT( IO : in RUNTIME_ID_TYPE;<br />

VALUE : in CSS_TYPES.IO_VALUE_TYPE;<br />

CONNECT_FLAG : in BOOLEAN := TRUE;<br />

INITIALIZE : in BOOLEAN);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CONNECT (Set the ext. Input as ’writable’)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– restricted to ext. Input!<br />

––<br />

–– List of exceptions:<br />

–– – CONNECT_ERROR<br />

––<br />

––<br />

procedure CONNECT(IO : in RUNTIME_ID_TYPE);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– DISCONNECT (Set the ext. Input as ’not writable’)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– restricted to ext. Input!<br />

–– prevent the ext. Input from beeing written<br />

––<br />

–– List of exceptions:<br />

–– – DISCONNECT_ERROR<br />

––<br />

––<br />

procedure DISCONNECT(IO : in RUNTIME_ID_TYPE);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CMAS_PERFORMANCE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– reads the actual ’Load–Value’ from the Shared Memory<br />

––<br />

–– The ’Load–Value’ is the time(in seconds) the CMAS needs to access<br />

–– the Shared Memory for reading/writing the ext. IOs<br />

––<br />

–– List of exceptions:


Space Infrastructure<br />

–– – CMAS_PERFORMANCE_ERROR<br />

––<br />

––<br />

function CMAS_PERFORMANCE return duration;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CHECK_CMAS_<strong>ST</strong>ATUS<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Status of the Adaptation <strong>System</strong><br />

––<br />

function CHECK_CMAS_<strong>ST</strong>ATUS return CMAS_<strong>ST</strong>ATUS_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– BLOCK_CMAS (prevent CMAS from accessing the Shared State Vector)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– signalize CMAS: no further writes/reads to/from the I/O–Variables<br />

––<br />

–– List of exceptions:<br />

–– – UNIX_KILL_ERROR<br />

–– – CMAS_OUT_OF_TIME_ERROR<br />

–– – BLOCK_CMAS_ERROR<br />

––<br />

––<br />

procedure BLOCK_CMAS;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– UNBLOCK_CMAS (allow CMAS to access the Shared State Vector)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– signalize CMAS: writes/reads to/from Shared Memory allowed<br />

––<br />

–– List of exceptions:<br />

–– – UNIX_KILL_ERROR<br />

–– – UNBLOCK_CMAS_ERROR<br />

––<br />

––<br />

procedure UNBLOCK_CMAS;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– resets all Ext. Input–Pulses(Pulse/Burst–Pulse) within the read–buffer<br />

–– sets the Input’s Updated–Flag(true)<br />

–– has to be called after switching the toggling–bit!!!<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure RESET_ALL_INPUT_PULSES;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– resets all Ext. Output–Pulses(Pulse/Burst–Pulse)<br />

–– resets the Output’s Updated–Flag(false)<br />

–– has to be called after each frame (after monitoring)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure RESET_ALL_OUTPUT_PULSES;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– SWITCH_TOGGLE_BIT<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

589 von/of: 662


Space Infrastructure<br />

–– This procedure inverts the external toggle bit<br />

–– (may only be used by the Kernel!)<br />

––<br />

–– List of exceptions:<br />

–– – SWITCH_TOGGLE_BIT_ERROR<br />

––<br />

––<br />

procedure SWITCH_TOGGLE_BIT;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– RESET_INPUTS_UPDATED_FLAG<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Set the Input’s Updated–Flag to False<br />

––<br />

–– restricted to ext. Input!<br />

–– Set the Input’s Updated–Flag to False<br />

––<br />

–– List of exceptions:<br />

–– – RESET_INPUTS_UPDATED_FLAG_ERROR<br />

––<br />

––<br />

procedure RESET_INPUTS_UPDATED_FLAG;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– LOAD_MODEL<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Load the external shared memory: (––>SHM)<br />

––<br />

–– Fill the shared memory with the values previously stored in the file in<br />

–– the PATHNAME directory.<br />

––<br />

–– It is provided that the needed space for storing these values has been<br />

–– created by a previous call to the <strong>ST</strong>ART function.<br />

––<br />

–– ’MODEL_CONFIGURATION’ should have been loaded by the ’<strong>ST</strong>ART’–Function.<br />

––<br />

–– List of exceptions:<br />

–– – predefined exceptions<br />

––<br />

––<br />

procedure LOAD_MODEL(PATHNAME : in <strong>ST</strong>RING);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– <strong>ST</strong>ORE_MODEL<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Store the external shared memory: (SHM––>)<br />

––<br />

–– List of exceptions:<br />

–– – predefined exceptions<br />

––<br />

procedure <strong>ST</strong>ORE_MODEL(PATHNAME : in <strong>ST</strong>RING);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– READ_ACKNOWLEDGE<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– returns the actual cmd–acknowledge–variable inside SHM<br />

––<br />

function READ_ACKNOWLEDGE return boolean;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

590 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– SET_TERM_CMD<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– this procedure passes a ’Remote–Terminal–Command’ to CMAS<br />

––<br />

–– List of exceptions:<br />

–– – SET_TERM_CMD_ERROR<br />

––<br />

procedure SET_TERM_CMD(MILBUS : in natural; –– Milbus–ID<br />

RT : in natural; –– Remote Terminal to be switched<br />

SWITCH : in boolean); –– TRUE=ON, FALSE=OFF<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– GET_CMAS_ERROR_CODE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Reads the actual CMAS_ERROR_CODE from Shared Memory<br />

––<br />

–– List of exceptions:<br />

–– – GET_CMAS_ERROR_CODE_ERROR<br />

––<br />

––<br />

function GET_CMAS_ERROR_CODE return CMAS_ERROR_CODE_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– SET_CMAS_CMD<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Sends a command to CMAS<br />

––<br />

–– Note: if SIMULATOR_HW_INTERRUPT_IMPLEMENTED = TRUE, an Interrupt/Signal<br />

–– will be combined with the Command to be sent<br />

function SET_CMAS_CMD(CMD : in COMMAND_TYPE) return RETURN_<strong>ST</strong>ATUS_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PUT_KERNEL_PROCESS_ID<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– writes the CMAS Process ID into Shared–Memory<br />

––<br />

–– List of exceptions:<br />

–– – PUT_KERNEL_PROCESS_ID_ERROR<br />

––<br />

––<br />

procedure PUT_KERNEL_PROCESS_ID(PROCESS_ID : in numeric_types.INTEGER32);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Operations for CMAS only –––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– EXT_IO_CLASS (Return the class of the given Runtime–ID)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Returns the class (Input or Output) of the given Runtime–ID<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

591 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

function EXT_IO_CLASS(RID : in RUNTIME_ID_TYPE) return IO_CLASS_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– GET_COMMAND<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Get the command as set by the Kernel, give acknowledge<br />

––<br />

–– List of exceptions:<br />

–– – GET_COMMAND_ERROR<br />

––<br />

––<br />

function GET_COMMAND return COMMAND_TYPE;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– SET_CMAS_<strong>ST</strong>ATUS<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– procedure used by the Adaptation <strong>System</strong> to inform the model about<br />

–– its status (may be written by CMAS at any time)<br />

––<br />

–– List of exceptions:<br />

–– – SET_CMAS_<strong>ST</strong>ATUS_ERROR<br />

––<br />

––<br />

procedure SET_CMAS_<strong>ST</strong>ATUS(<strong>ST</strong>ATUS : in CMAS_<strong>ST</strong>ATUS_TYPE);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– GET_TERM_CMD<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– this procedure reads a ’Remote–Terminal–Command’<br />

––<br />

–– List of exceptions:<br />

–– – GET_TERM_CMD_ERROR<br />

––<br />

procedure GET_TERM_CMD(MILBUS : out natural; –– Milbus–Identifier<br />

RT : out natural; –– Remote Terminal to be switched<br />

SWITCH : out boolean; –– TRUE=ON, FALSE=OFF<br />

FLAG : out boolean); –– CMD update flag<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– OUTPUT_UPDATED<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the value of the output’s ’UPDATED_FLAG’<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – OUTPUT_UPDATED_ERROR<br />

––<br />

function OUTPUT_UPDATED(RID : in RUNTIME_ID_TYPE) return BOOLEAN;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– FIR<strong>ST</strong>_IO<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the first of all ext. I/O<br />

––<br />

–– List of exceptions:<br />

–– – FIR<strong>ST</strong>_IO_ERROR<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

592 von/of: 662


Space Infrastructure<br />

––<br />

––<br />

function FIR<strong>ST</strong>_IO return RUNTIME_ID_TYPE;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– LA<strong>ST</strong>_IO<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the last of all ext. I/O<br />

––<br />

–– List of exceptions:<br />

–– – LA<strong>ST</strong>_IO_ERROR<br />

––<br />

––<br />

function LA<strong>ST</strong>_IO return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– FIR<strong>ST</strong>_INPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the first ext. Input<br />

––<br />

–– List of exceptions:<br />

–– – FIR<strong>ST</strong>_INPUT_ERROR<br />

––<br />

––<br />

function FIR<strong>ST</strong>_INPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– LA<strong>ST</strong>_INPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the last ext. Input<br />

––<br />

–– List of exceptions:<br />

–– – LA<strong>ST</strong>_INPUT_ERROR<br />

––<br />

––<br />

function LA<strong>ST</strong>_INPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– FIR<strong>ST</strong>_OUTPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the first ext. Output<br />

––<br />

–– List of exceptions:<br />

–– – FIR<strong>ST</strong>_OUTPUT_ERROR<br />

––<br />

––<br />

function FIR<strong>ST</strong>_OUTPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– LA<strong>ST</strong>_OUTPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the last ext. Output<br />

––<br />

–– List of exceptions:<br />

–– – LA<strong>ST</strong>_OUTPUT_ERROR<br />

––<br />

––<br />

function LA<strong>ST</strong>_OUTPUT return RUNTIME_ID_TYPE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

593 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the first ext. Byte–Stream–Input<br />

––<br />

–– List of exceptions:<br />

–– – FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT_ERROR<br />

––<br />

––<br />

function FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the last ext. Byte–Stream–Input<br />

––<br />

–– List of exceptions:<br />

–– – LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT_ERROR<br />

––<br />

––<br />

function LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the first ext. Byte–Stream–Output<br />

––<br />

–– List of exceptions:<br />

–– – FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT_ERROR<br />

––<br />

––<br />

function FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the Runtime–ID of the last ext. Byte–Stream–Output<br />

––<br />

–– List of exceptions:<br />

–– – LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT_ERROR<br />

––<br />

––<br />

function LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT return RUNTIME_ID_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– MAX_LENGTH_OF_INPUT_BYTE_<strong>ST</strong>REAM<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the maximum length of the given ext. Byte–Stream–Input<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – MAX_LENGTH_OF_INPUT_BYTE_<strong>ST</strong>REAM_ERROR<br />

––<br />

––<br />

function MAX_LENGTH_OF_INPUT_BYTE_<strong>ST</strong>REAM(RID : in RUNTIME_ID_TYPE)<br />

return CSS_TYPES.UNSIGNED_INTEGER;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

594 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– MAX_LENGTH_OF_OUTPUT_BYTE_<strong>ST</strong>REAM<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Returns the maximum length of the given ext. Byte–Stream–Output<br />

––<br />

–– List of exceptions:<br />

–– – INVALID_ID<br />

–– – MAX_LENGTH_OF_OUTPUT_BYTE_<strong>ST</strong>REAM_ERROR<br />

––<br />

––<br />

function MAX_LENGTH_OF_OUTPUT_BYTE_<strong>ST</strong>REAM(RID : in RUNTIME_ID_TYPE) return<br />

CSS_TYPES.UNSIGNED_INTEGER;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– WRITE_CMAS_ERROR_CODE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– writes the CMAS_ERROR_CODE into Shared–Memory<br />

––<br />

–– List of exceptions:<br />

–– – WRITE_CMAS_ERROR_CODE_ERROR<br />

––<br />

––<br />

procedure WRITE_CMAS_ERROR_CODE(CODE : in CMAS_ERROR_CODE_TYPE);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PUT_CMAS_PROCESS_ID<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– writes the CMAS Process ID into Shared–Memory<br />

––<br />

–– List of exceptions:<br />

–– – PUT_CMAS_PROCESS_ID_ERROR<br />

––<br />

––<br />

procedure PUT_CMAS_PROCESS_ID(PROCESS_ID : in numeric_types.INTEGER32);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CMAS_PROCESS_ID<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– reads the CMAS Process ID from Shared–Memory<br />

––<br />

––<br />

function CMAS_PROCESS_ID return numeric_types.INTEGER32;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– KERNEL_PROCESS_ID<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– reads the Kernel Process ID from Shared–Memory<br />

––<br />

––<br />

function KERNEL_PROCESS_ID return numeric_types.INTEGER32;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– PUT_CMAS_PERFORMANCE<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– writes the actual ’Load–Value’ into the Shared Memory<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

595 von/of: 662


Space Infrastructure<br />

––<br />

–– The ’Load–Value’ is the time(in seconds) the CMAS needs to access<br />

–– the Shared Memory for reading/writing the ext. IOs<br />

––<br />

–– List of exceptions:<br />

–– – PUT_CMAS_PERFORMANCE_ERROR<br />

––<br />

––<br />

procedure PUT_CMAS_PERFORMANCE(DURATION_VALUE : in duration);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– complete list of all possible specific exceptions<br />

–– (no predefined exceptions!)<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

PUT_CMAS_PERFORMANCE_ERROR,<br />

CMAS_PERFORMANCE_ERROR,<br />

PUT_CMAS_PROCESS_ID_ERROR,<br />

PUT_KERNEL_PROCESS_ID_ERROR,<br />

SHM_ATTACH_ERROR,<br />

SHMGET_ERROR,<br />

SHM_CREATION_ERROR,<br />

INVALID_ID,<br />

INVALID_PIN,<br />

SHM_DETACH_ERROR,<br />

SHM_REMOVE_ERROR,<br />

FORK_ERROR,<br />

SHUTDOWN_ERROR,<br />

UNIX_KILL_ERROR,<br />

BLOCK_CMAS_ERROR,<br />

UNBLOCK_CMAS_ERROR,<br />

BYTE_<strong>ST</strong>REAM_SIZE_ERROR,<br />

CMAS_OUT_OF_TIME_ERROR,<br />

LOAD_CMAS_SHMIDS_ERROR,<br />

RESET_INPUTS_UPDATED_FLAG_ERROR,<br />

RESET_OUTPUTS_UPDATED_FLAG_ERROR,<br />

INJECT_ERROR,<br />

CONNECT_ERROR,<br />

DISCONNECT_ERROR,<br />

SET_TERM_CMD_ERROR,<br />

GET_TERM_CMD_ERROR,<br />

SET_CMAS_<strong>ST</strong>ATUS_ERROR,<br />

GET_COMMAND_ERROR,<br />

GET_SW_TYPE_ERROR,<br />

IS_EXTERNAL_ERROR,<br />

SWITCH_TOGGLE_BIT_ERROR,<br />

UPDATE_VALUE_ERROR,<br />

INITIALIZE_VALUE_ERROR,<br />

READ_VALUE_ERROR,<br />

SET_PIN_INFO_ERROR,<br />

OUTPUT_UPDATED_ERROR,<br />

FIR<strong>ST</strong>_IO_ERROR,<br />

LA<strong>ST</strong>_IO_ERROR,<br />

FIR<strong>ST</strong>_INPUT_ERROR,<br />

LA<strong>ST</strong>_INPUT_ERROR,<br />

FIR<strong>ST</strong>_OUTPUT_ERROR,<br />

LA<strong>ST</strong>_OUTPUT_ERROR,<br />

FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT_ERROR,<br />

LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_INPUT_ERROR,<br />

FIR<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT_ERROR,<br />

LA<strong>ST</strong>_BYTE_<strong>ST</strong>REAM_OUTPUT_ERROR,<br />

MAX_LENGTH_OF_INPUT_BYTE_<strong>ST</strong>REAM_ERROR,<br />

MAX_LENGTH_OF_OUTPUT_BYTE_<strong>ST</strong>REAM_ERROR,<br />

GET_CMAS_ERROR_CODE_ERROR,<br />

WRITE_CMAS_ERROR_CODE_ERROR,<br />

MONITOR_ERROR,<br />

GIVE_ACKNOWLEDGE_ERROR : exception;<br />

end MODEL_CONNECTION;<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

596 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

597<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– SMT_CALENDAR<br />

––<br />

–– To provide types and operations on the Simulated Mission Time similar the Ada standard<br />

–– package CALENDAR.<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– SMT_CALENDAR<br />

–– Project CSS<br />

–– ADD, section ??<br />

–– HOOD object SMT_CALENDAR<br />

–– basic types, utilities<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– SMT_CALENDAR<br />

––<br />

–– Type: Package Specification<br />

––<br />

–– Version:<br />

–– 3.1, 21.07.94, J.Hoyng: initial_version<br />

–– 3.2, 06.04.95, J.Hoyng: new implementation<br />

–– 4.1, 23.08.95, J.Hoyng: changed comment<br />

––<br />

––<br />

–– Purpose:<br />

–– To provide types and operations on the Simulated Mission Time<br />

––<br />

–– External:<br />

–– From Ada system:<br />

–– CALENDAR<br />

––<br />

––<br />

–– From CSS:<br />

––<br />

––<br />

–– I/O:<br />

–– –––<br />

––<br />

–– Machine Dependencies:<br />

–– none<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

––<br />

–– UNIX signals:<br />

–– –––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

£<br />

–– imports from Ada system:<br />

with CALENDAR;<br />

–– imports from <strong>CGS</strong>:<br />

–– imports from CSS:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

597 von/of: 662


Space Infrastructure<br />

598<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

package SMT_CALENDAR is<br />

type LONG_DURATION is new DURATION;<br />

type TIME is private;<br />

subtype YEAR_NUMBER is INTEGER range 1901 .. 2099;<br />

subtype MONTH_NUMBER is INTEGER range 1 .. 12;<br />

subtype DAY_NUMBER is INTEGER range 1 .. 31;<br />

subtype DAY_DURATION is LONG_DURATION range 0.0 .. 86_400.0;<br />

function CLOCK return TIME;<br />

–– used only by the kernel<br />

procedure SET_TIME (ITEM: TIME);<br />

function YEAR (DATE: TIME) return YEAR_NUMBER;<br />

function MONTH (DATE: TIME) return MONTH_NUMBER;<br />

function DAY (DATE: TIME) return DAY_NUMBER;<br />

function SECONDS(DATE: TIME) return DAY_DURATION;<br />

procedure SPLIT (DATE : in TIME;<br />

YEAR : out YEAR_NUMBER;<br />

MONTH : out MONTH_NUMBER;<br />

DAY : out DAY_NUMBER;<br />

SECONDS: out DAY_DURATION);<br />

function TIME_OF(YEAR : YEAR_NUMBER;<br />

MONTH : MONTH_NUMBER;<br />

DAY : DAY_NUMBER;<br />

SECONDS: DAY_DURATION := 0.0) return TIME;<br />

function ”+” (LEFT: TIME; RIGHT: LONG_DURATION) return TIME;<br />

function ”+” (LEFT: LONG_DURATION; RIGHT: TIME) return TIME;<br />

function ”–” (LEFT: TIME; RIGHT: LONG_DURATION) return TIME;<br />

function ”–” (LEFT: TIME; RIGHT: TIME) return LONG_DURATION;<br />

function ”=” (LEFT, RIGHT: TIME) return BOOLEAN;<br />

function TO_CALENDAR_TIME (ITEM: TIME) return CALENDAR.TIME;<br />

function TO_CSS_TIME (ITEM: CALENDAR.TIME) return TIME;<br />

procedure SET_MINFRAME_INTERVAL (MINFRAME_INTERVAL : LONG_DURATION);<br />

function GET_MINFRAME_INTERVAL return LONG_DURATION;<br />

TIME_ERROR : exception;<br />

private<br />

type TIME is new CALENDAR.TIME;<br />

end SMT_CALENDAR;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

598 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

599<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– DB_DEFINITIONS (SUN)<br />

––<br />

–– Definitions of types used for database structure modeling,<br />

–– based on MPS definitions.<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– DB_DEFINITIONS (SUN)<br />

–– Project CSS<br />

–– ADD, section 5.2.11 (CSS_DB)<br />

–– HOOD Object DB_DEFINITIONS_SUN<br />

–– database type definitions<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– DB_DEFINITIONS (SUN)<br />

––<br />

–– Type: Package Specification<br />

––<br />

–– Version:<br />

–– 2.1, 10.11.93, : initial version<br />

–– 3.1, 06.04.95, J.Hoyng: added GET_SV_DIR_NAME, GET_INITIAL_SV_DIR_NAME<br />

–– GET_MAPPING_TABLE_NAME, GET_MILBUS_CONFIG_NAME,<br />

–– changed MODEL_ID<br />

–– A.Schulz: imported T_CDU_DOMAIN from MPS_DEFINITIONS<br />

–– changed UNIX path access for DB version<br />

–– 4.1, 23.08.95, A.Schulz, J.Hoyng:<br />

–– INIT_UNIX_PATH modified : no ROOT_PATH; when<br />

–– file system based : exception if path in ID is<br />

–– empty<br />

–– 4.2, 01.12.95, A.Schulz: Added procedures for improved exception message<br />

–– handling<br />

–– 4.3, 07.10.96, A.Schulz: Added support for CDU test versions<br />

–– 5.1, 26.09.96, V.Schultz: SPR–2547: Improved procedures for error message<br />

–– handling<br />

–– 25.08.97, Th. Behrens: Added new types IO_DESCS and IO_DESCS_POINTER<br />

–– to be able to pass information from CSS DB<br />

–– Server to CMAS DB Server.<br />

––<br />

––<br />

–– Purpose:<br />

–– definitions of types used for database structure modeling<br />

––<br />

–– Function:<br />

–– –––<br />

––<br />

–– External:<br />

–– External:<br />

–– From Ada system:<br />

–– UNCHECKED_DEALLOCATION<br />

––<br />

–– From <strong>CGS</strong>:<br />

–– NUMERIC_TYPES –– portable types with fixed representation<br />

–– DYNAMIC_<strong>ST</strong>RINGS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

599 von/of: 662


Space Infrastructure<br />

600<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– MPS_DEFINITIONS –– MPS interface<br />

––<br />

–– I/O:<br />

–– –––<br />

––<br />

–– Machine Dependencies:<br />

–– MPS interface available for the Sun platform only.<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

––<br />

–– UNIX signals:<br />

–– –––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– imports from Ada system:<br />

with UNCHECKED_DEALLOCATION;<br />

–– imports from <strong>CGS</strong>:<br />

with MPS_DEFINITIONS, NUMERIC_TYPES, DYNAMIC_<strong>ST</strong>RINGS;<br />

with <strong>ST</strong>RING_POINTERS;<br />

with CSS_TYPES;<br />

package DB_DEFINITIONS is<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– TYPE DEFINITIONS PROVIDED BY THIS PACKAGE:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– In this package, in contast to the corresponding package for the HP<br />

–– target, most declared types are inherited from MPS as subtypes.<br />

–– Only new types (adding semantics not present in existing MPS types)<br />

–– use derived types.<br />

–– Of course, with every change of the MPS interface, consistency with<br />

–– the HP version must be checked.<br />

–––– general types ––––<br />

type TYPES_OF_ENVIRONMENT is (SY<strong>ST</strong>EM, USER, LIB);<br />

type SID is new MPS_DEFINITIONS.SID;<br />

NULL_SID : constant SID := SID(MPS_DEFINITIONS.NULL_SID);<br />

type SID_ARRAY is new MPS_DEFINITIONS.T_SID_ARRAY;<br />

type SUBITEM_ID is new NUMERIC_TYPES.UNSIGNED_INTEGER32;<br />

type IO_ID is record<br />

PARENT_SID : SID;<br />

IO_ID : SUBITEM_ID;<br />

end record;<br />

type COMPLETION_CODE is new MPS_DEFINITIONS.COMPLETION_CODE;<br />

type <strong>ST</strong>ATE_CODE is new MPS_DEFINITIONS.<strong>ST</strong>ATE_CODE;<br />

–––– names based on fixed length <strong>ST</strong>RINGs –––<br />

type NAME is new MPS_DEFINITIONS.T_NAME;<br />

type ELEMENT_CONFIGURATION_NAME is new<br />

MPS_DEFINITIONS.T_ELEMENT_CONFIGURATION_NAME;<br />

type MISSION_NAME is new MPS_DEFINITIONS.T_MISSION_NAME;<br />

type CONFIGURATION_NAME is new MPS_DEFINITIONS.T_CONFIGURATION_NAME;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

600 von/of: 662


Space Infrastructure<br />

601<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

601 von/of: 662<br />

subtype FUNCTION_NAME is NAME;<br />

–––– variable length names ––––<br />

type DYNAMIC_<strong>ST</strong>RING is new MPS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

type NAME_TREE_PATH is new MPS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

type LIBRARY_PATHNAME is new MPS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

–––– string– and char constants ––––<br />

NULL_PATHNAME : constant <strong>ST</strong>RING := MPS_DEFINITIONS.NULL_PATHNAME;<br />

SEPARATOR_CHAR : constant CHARACTER := MPS_DEFINITIONS.NODE_NAME_SEPARATOR(1);<br />

SEPARATOR : constant <strong>ST</strong>RING := MPS_DEFINITIONS.NODE_NAME_SEPARATOR;<br />

SUBITEM_SEPARATOR : constant <strong>ST</strong>RING := ”.”;<br />

SUBITEM_SEPARATOR_CHAR : constant CHARACTER := SUBITEM_SEPARATOR(1);<br />

PAD_CHAR : constant CHARACTER := ’ ’;<br />

–– the character with which left–aligned fixed strings are filled<br />

–– The directory below the user’s home directory where all<br />

–– files related to models in the database are stored :<br />

MODEL_ROOT_DIR : constant <strong>ST</strong>RING := ”models.lib”;<br />

–––– other variable length arrays ––––<br />

subtype BYTE_ARRAY is NUMERIC_TYPES.BYTE_ARRAY;<br />

type BYTE_<strong>ST</strong>REAM is new MPS_DEFINITIONS.T_BYTE_<strong>ST</strong>REAM;<br />

–––– database object versions ––––<br />

subtype VERSION_NUMBER is MPS_DEFINITIONS.T_VERSION_NUMBER;<br />

type SY<strong>ST</strong>EM_TREE_VERSION is new VERSION_NUMBER;<br />

type VERSION_<strong>ST</strong>ATUS is new MPS_DEFINITIONS.T_VERSION_<strong>ST</strong>ATUS;<br />

subtype VERSION_RECORD is MPS_DEFINITIONS.T_VERSION;<br />

function IMAGE (V: VERSION_RECORD) return <strong>ST</strong>RING;<br />

function ”=” (V1, V2: VERSION_RECORD) return BOOLEAN<br />

renames MPS_DEFINITIONS.”=”;<br />

subtype LIBRARY_VERSION is MPS_DEFINITIONS.T_CDU_VERSION;<br />

function IMAGE (V: LIBRARY_VERSION) return <strong>ST</strong>RING;<br />

function NULL_LIBRARY_VERSION return LIBRARY_VERSION;<br />

function ”=” (LIB1, LIB2: LIBRARY_VERSION) return BOOLEAN<br />

renames MPS_DEFINITIONS.”=”;<br />

type T_CDU_DOMAIN is new MPS_DEFINITIONS.T_CDU_DOMAIN;<br />

–––– compound types ––––<br />

–– Subroutines ASSIGN and = provided for use as actual parameters<br />

–– for generic instantiations.<br />

–– subroutines NULL_* supplied so thast input parameters can be set<br />

–– to a default value.<br />

type LIBRARY is record<br />

LIBRARY_SID : SID;<br />

PATHNAME : LIBRARY_PATHNAME;<br />

VERSION : LIBRARY_VERSION;<br />

end record;<br />

function NULL_LIBRARY return LIBRARY;


Space Infrastructure<br />

602<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure ASSIGN( TARGET : in out LIBRARY; SOURCE : LIBRARY);<br />

function ”=” (LEFT, RIGHT: LIBRARY) return BOOLEAN;<br />

procedure DEALLOCATE (LIB : in out LIBRARY);<br />

type SY<strong>ST</strong>EM_ENVIRONMENT is record<br />

ELEMENT_CONFIGURATION : ELEMENT_CONFIGURATION_NAME;<br />

MISSION : MISSION_NAME;<br />

SYS_TREE_VERSION : SY<strong>ST</strong>EM_TREE_VERSION;<br />

end record;<br />

function NULL_SY<strong>ST</strong>EM_ENVIRONMENT return SY<strong>ST</strong>EM_ENVIRONMENT;<br />

procedure ASSIGN ( TARGET : in out SY<strong>ST</strong>EM_ENVIRONMENT;<br />

SOURCE : SY<strong>ST</strong>EM_ENVIRONMENT);<br />

–– function ”=” (LEFT, RIGHT: SY<strong>ST</strong>EM_ENVIRONMENT) is implicit;<br />

type USER_ENVIRONMENT is record<br />

SY<strong>ST</strong>EM_TREE_NODE_PATHNAME : NAME_TREE_PATH;<br />

CONFIGURATION : CONFIGURATION_NAME;<br />

CCU_VERSION : VERSION_RECORD;<br />

end record;<br />

function NULL_USER_ENVIRONMENT return USER_ENVIRONMENT;<br />

procedure ASSIGN ( TARGET : in out USER_ENVIRONMENT;<br />

SOURCE : USER_ENVIRONMENT);<br />

function ”=” (LEFT, RIGHT: USER_ENVIRONMENT) return BOOLEAN;<br />

procedure DEALLOCATE (USER_ENV : in out USER_ENVIRONMENT);<br />

type ENVIRONMENT is record<br />

SYS_ENV : SY<strong>ST</strong>EM_ENVIRONMENT;<br />

USER_ENV : USER_ENVIRONMENT;<br />

LIB : LIBRARY;<br />

end record;<br />

procedure ASSIGN ( TARGET : in out ENVIRONMENT; SOURCE : ENVIRONMENT);<br />

function ”=” (LEFT, RIGHT: ENVIRONMENT) return BOOLEAN;<br />

procedure DEALLOCATE (ENV : in out ENVIRONMENT);<br />

type TOP_LEVEL_FB_ID is record<br />

NAME : FUNCTION_NAME;<br />

FB_SID : SID;<br />

PARENT_LIBRARY : LIBRARY;<br />

end record;<br />

procedure ASSIGN ( TARGET : in out TOP_LEVEL_FB_ID;<br />

SOURCE : TOP_LEVEL_FB_ID);<br />

function ”=” (LEFT, RIGHT : TOP_LEVEL_FB_ID ) return BOOLEAN;<br />

procedure DEALLOCATE (ID : in out TOP_LEVEL_FB_ID);<br />

type TOP_LEVEL_FB_ID_ARRAY is array ( NATURAL range ) of TOP_LEVEL_FB_ID;<br />

procedure ASSIGN ( TARGET : in out TOP_LEVEL_FB_ID_ARRAY;<br />

SOURCE : TOP_LEVEL_FB_ID_ARRAY);<br />

function ”=” (LEFT, RIGHT : TOP_LEVEL_FB_ID_ARRAY ) return BOOLEAN;<br />

procedure DEALLOCATE (ID_ARRAY : in out TOP_LEVEL_FB_ID_ARRAY);<br />

type <strong>ST</strong>ORAGE_VERSION is (FILE_BASED, DB_BASED);<br />

type <strong>ST</strong>RING_ACCESS is access <strong>ST</strong>RING;<br />

procedure FREE is new UNCHECKED_DEALLOCATION (<strong>ST</strong>RING, <strong>ST</strong>RING_ACCESS);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

602 von/of: 662


Space Infrastructure<br />

603<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

type MODEL_ID( <strong>ST</strong>ORAGE_KIND: <strong>ST</strong>ORAGE_VERSION := DB_BASED) is<br />

record<br />

TOP_LEVEL_FB_NAME : <strong>ST</strong>RING_ACCESS;<br />

TOP_LEVEL_FB_SID : SID;<br />

LIBRARY_NAME : <strong>ST</strong>RING_ACCESS;<br />

MODEL_UNIX_PATH : <strong>ST</strong>RING_ACCESS;<br />

ROOT : <strong>ST</strong>RING_ACCESS;<br />

case <strong>ST</strong>ORAGE_KIND is<br />

when DB_BASED =><br />

ELEMENT_CONFIGURATION : <strong>ST</strong>RING_ACCESS;<br />

MISSION : <strong>ST</strong>RING_ACCESS;<br />

SYS_TREE_VERSION : SY<strong>ST</strong>EM_TREE_VERSION;<br />

LIBRARY_SID : SID;<br />

LIB_VERSION : LIBRARY_VERSION;<br />

when FILE_BASED => null;<br />

end case;<br />

end record;<br />

type MODEL_ID_ACCESS is access MODEL_ID;<br />

procedure ASSIGN ( TARGET : in out MODEL_ID; SOURCE : MODEL_ID);<br />

procedure DEALLOCATE (ID : in out MODEL_ID);<br />

procedure DEALLOCATE (ID : in out MODEL_ID_ACCESS);<br />

type OBJECT_REFERENCE is record<br />

LIB_PATHNAME : NAME_TREE_PATH;<br />

LIB_VERSION : LIBRARY_VERSION;<br />

RELATIVE_NAME : NAME_TREE_PATH;<br />

end record;<br />

procedure ASSIGN ( TARGET : in out OBJECT_REFERENCE;<br />

SOURCE : OBJECT_REFERENCE);<br />

function ”=” (LEFT, RIGHT: OBJECT_REFERENCE) return BOOLEAN;<br />

procedure DEALLOCATE (OBJECT : in out OBJECT_REFERENCE);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Types to exchange data between CSS DB Server and CMAS DB Server<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type IO_DESC_IO_ID is record<br />

IO_NAME : <strong>ST</strong>RING_ACCESS;<br />

INDEX : SUBITEM_ID;<br />

end record;<br />

type CSS_IO_TYPES is (INPUT, OUTPUT);<br />

type <strong>ST</strong>ATE_CODE_LI<strong>ST</strong> is access MPS_DEFINITIONS.T_<strong>ST</strong>ATE_CODE_ARRAY;<br />

type REF_DESC is record<br />

CDU_NAME : <strong>ST</strong>RING_ACCESS;<br />

ONB_NAME : <strong>ST</strong>RING_ACCESS;<br />

REF_SID : SID;<br />

end record;<br />

type REF_DESC_ACCESS is access REF_DESC;<br />

type IO_DESC is record<br />

NAME_INDEX : IO_DESC_IO_ID;<br />

CSS_IO_TYPE : CSS_IO_TYPES;<br />

CSS_SW_TYPE : CSS_TYPES.CSS_SW_TYPES<br />

:= CSS_TYPES.NONE;<br />

–– Valid only, if CSS_SW_TYPE /= CSS_TYPES.NONE.<br />

ENG_UNIT : <strong>ST</strong>RING_ACCESS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

603 von/of: 662


Space Infrastructure<br />

604<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

:= null;<br />

–– Valid only, if CSS_SW_TYPE is real type and<br />

–– ENG_UNIT /= null.<br />

<strong>ST</strong>ATE_CODES : <strong>ST</strong>ATE_CODE_LI<strong>ST</strong><br />

:= null;<br />

–– Valid only, if CSS_SW_TYPE = CSS_TYPES.<strong>ST</strong>ATECODE_TYPES and<br />

–– <strong>ST</strong>ATE_CODES /= null.<br />

ONB_REF : REF_DESC_ACCESS<br />

:= null;<br />

–– Valid only, if ONB_REF /= null.<br />

end record;<br />

type IO_DESC_LI<strong>ST</strong><br />

is array (POSITIVE range )<br />

of IO_DESC;<br />

type IO_DESC_LI<strong>ST</strong>_POINTER<br />

is access IO_DESC_LI<strong>ST</strong>;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– UNIX PATH NAMES FOR CSS MODEL DATA:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

EMPTY_ROOT_PATH : exception;<br />

–– will be raised if MODEL_ID.MODEL_UNIX_PATH is empty when<br />

–– a user tries to get a UNIX path for the model.<br />

procedure INIT_UNIX_PATH<br />

(MODEL : in out MODEL_ID);<br />

–– This operation is used to determine for the db–based version<br />

–– the unix pathname of the root directory in the UNIX file system<br />

–– where the data of a specific version of a model is stored and stores<br />

–– it into the corresponding field of the MODEL_ID. The full path to the<br />

–– model is determined from the other attributes of MODEL_ID to:<br />

––<br />

–– $HOME/models.lib/–./<br />

–– library_sid_–V../model_sid_<br />

–– resp. for test versions (not yet supported) :<br />

–– library_sid_–..––/<br />

–– model_sid_<br />

––<br />

–– For the file–system based version, MODEL_ID.MODEL_UNIX_PATH has to be set<br />

–– by the user before calling INIT_UNIX_PATH. The procedure will raise<br />

–– EMPTY_ROOT_PATH when called and MODEL_ID.MODEL_UNIX_PATH is undefined.<br />

––<br />

–– Since this construction is hidden from the user, any call of<br />

–– the following functions will raise EMPTY_ROOT_PATH whenever<br />

–– MODEL_ID.MODEL_UNIX_PATH is undefined.<br />

function GET_UNIX_PATH<br />

(MODEL : in MODEL_ID;<br />

ARCHITECTURE : in <strong>ST</strong>RING := ””) return <strong>ST</strong>RING;<br />

–– This function returns the path to the UNIX root directory<br />

–– where the architecture specific data for the specified model<br />

–– is stored.<br />

–– It will raise EMPTY_ROOT_PATH if the MODEL_UNIX_PATH in the<br />

–– MODEL_ID is empty, i.e. hasn’t been initialised.<br />

––<br />

–– ===> See comment in HO<strong>ST</strong>_SY<strong>ST</strong>EM for pathname conventions.


Space Infrastructure<br />

605<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

605 von/of: 662<br />

SV_NAME : in <strong>ST</strong>RING;<br />

ARCHITECTURE : in <strong>ST</strong>RING) return <strong>ST</strong>RING;<br />

–– This function returns the path to the UNIX directory where<br />

–– the architecture specific state vector for the specified model<br />

–– is stored.<br />

–– It will raise EMPTY_ROOT_PATH if the MODEL_UNIX_PATH in the<br />

–– MODEL_ID is empty, i.e. hasn’t been initialised.<br />

function GET_INITIAL_SV_NAME return <strong>ST</strong>RING;<br />

–– This function returns name the initial state vector for a model.<br />

function GET_EXECUTABLE_NAME<br />

(MODEL : in MODEL_ID;<br />

ARCHITECTURE : in <strong>ST</strong>RING) return <strong>ST</strong>RING;<br />

–– This function returns the path to the UNIX file where<br />

–– the architecture specific mapping table for the specified model<br />

–– is stored.<br />

–– It will raise EMPTY_ROOT_PATH if the MODEL_UNIX_PATH in the<br />

–– MODEL_ID is empty, i.e. hasn’t been initialised.<br />

function GET_MILBUS_CONFIG_NAME<br />

(MODEL : in MODEL_ID;<br />

ARCHITECTURE : in <strong>ST</strong>RING) return <strong>ST</strong>RING;<br />

–– This function returns the path to the UNIX file where<br />

–– the architecture specific MIL–bus configuration data<br />

–– for the specified model is stored.<br />

–– It will raise EMPTY_ROOT_PATH if the MODEL_UNIX_PATH in the<br />

–– MODEL_ID is empty, i.e. hasn’t been initialised.<br />

–––––––––––––––––––Error handling types and procedures–––––––––––––––<br />

–– raised in the case that HANDLE_DB_EXCEPTION fails:<br />

EXCEPTION_HANDLING_FAILED : exception;<br />

–– raised in the case of fatal internal errors:<br />

CSS_DB_INTERNAL_ERROR : exception;<br />

–– propagated MPS_DEFINITIONS (or other) exceptions :<br />

type T_PROPAGATED_EXCEPTION is<br />

( MDB_ERROR, AUTHORIZATION_ERROR, USE_ERROR, ORACLE_ERROR, OTHER, NONE );<br />

–– allows any package to declare a common exception, e.g. GENERAL_ERROR<br />

–– and an exported variable, e.g. RAISED_EXCEPTION : T_PROPAGATED_EXCEPTION,<br />

–– which may be read by the calling procedure.<br />

––––––––––––––––––––––RAISE_PROPAGATED_EXCEPTION–––––––––––––––––––––<br />

procedure RAISE_PROPAGATED_EXCEPTION(<br />

TO_RAISE : in T_PROPAGATED_EXCEPTION);<br />

––––––––––––––––––––––––––––––––––––PREPEND––––––––––––––––––––––––––<br />

procedure PREPEND(<br />

ERROR_MESSAGE : in out DB_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

PREFIX : in <strong>ST</strong>RING );<br />

––––––––––––––––––––––––PROPAGATE_EXCEPTION––––––––––––––––––––––––––<br />

procedure PROPAGATE_EXCEPTION(<br />

MY_ERROR_MESSAGE: in out DB_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

MY_EXCEPTION : out T_PROPAGATED_EXCEPTION;<br />

CALLER : in <strong>ST</strong>RING;<br />

CALLER_MESSAGE : in DB_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

CALLER_EXCEPTION: in T_PROPAGATED_EXCEPTION);


Space Infrastructure<br />

606<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––HANDLE_DB_EXCEPTION–––––––––––––––––––––––––<br />

–– set standard ERROR_MESSAGE, depending on CALLER, name of raised<br />

–– exception (from CURRENT_EXEPTION or user message) and FOR_ITEM<br />

–– (Pathname –preferred–, SID, RID or IO_ID, depending on context)<br />

procedure HANDLE_DB_EXCEPTION(<br />

ERROR_MESSAGE : in out DB_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

RAISED_EXCEPTION: out T_PROPAGATED_EXCEPTION;<br />

EXCEPTION_NAME : in <strong>ST</strong>RING;<br />

CALLER : in <strong>ST</strong>RING;<br />

FOR_ITEM : in <strong>ST</strong>RING := ””);<br />

––––––––––––––––––––––––––––HANDLE_USER_EXCEPTION–––––––––––––––––––––––––<br />

–– set standard ERROR_MESSAGE, depending on CALLER and Caller’s<br />

–– message<br />

procedure HANDLE_USER_EXCEPTION(<br />

ERROR_MESSAGE : in out DB_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

USER_MESSAGE : in <strong>ST</strong>RING;<br />

CALLER : in <strong>ST</strong>RING);<br />

end DB_DEFINITIONS;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

606 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

607<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

607 von/of: 662<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– CSS_DEFINITIONS<br />

––<br />

–– To provide commonly used types, utility subprogram(s) and exception(s).<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– CSS_DEFINITIONS<br />

–– Project CSS<br />

–– ADD, section 5.3 (CSS Repository)<br />

–– HOOD object CSS_DEFINITIONS<br />

–– basic types, utilities<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– CSS_DEFINITIONS<br />

––<br />

–– Type: Package Specification<br />

––<br />

–– Version:<br />

–– 2.1, 10.11.93, J.Hoyng: initial_version<br />

–– 3.1, 21.07.94, J.Hoyng: change CTG_VERSION to CSS_VERSION, include type CSS_PORTS<br />

–– moved CSS_SW_TYPES to CSS_TYPES<br />

–– 3.2, 25.08.94, J.Hoyng: deleted MODEL_<strong>ST</strong>RUCTURES_DIR_NAME,<br />

–– added CSS_MODEL_PARENT, CSS_TEMPLATE_DIR inside<br />

–– CSS_ENVIRONMENT_VARIABLES, included TEMPLATE_FILENAME<br />

–– deleted KERNEL_LIBRARY_NAME<br />

–– added CSS_SIM_DIR in CSS_ENVIRONMENT_VARIABLES<br />

–– 3.3, 31.08.94, J.Hoyng: added CSS_EXECUTABLE in CSS_ENVIRONMENT_VARIABLES<br />

–– 3.4, 08.09.94, J.Hoyng: changed CSS_ENVIRONMENT_VARIABLES<br />

–– 3.5, 06.04.95, J.Hoyng: deleted GET_SV_DIR_NAME and MAPPING_TABLE_FILE<br />

–– changed for CSS built1<br />

–– 4.1, 23.08.95, J.Hoyng: many changes, build_2 version<br />

–– 4.2. 25.08.95, J.Hoyng: changed CSS_ENVIRONMENT_VARIABLES, added CMAS_HOME<br />

–– 4.3, 31.08.95, J.Hoyng: added VERBOSE<br />

–– 4.4, 04.01.96, J.Hoyng: supporting now sun5<br />

–– 4.5 1997–04–04 R.Lamb Added Free_String.<br />

–– 5.0, 02.07.97, W.Tammen: introduced new environment_variable CSS_LOG_DATA_SET_DIR<br />

–– 5.1, 15.08.97, W.Tammen: introduced new environment_variable CSS_KERNEL_MESSAGES<br />

–– 5.2, 22.09.97, Th.Behrens: Introduced new definitions MAX_ARCHITECTURES,<br />

–– ARCHITECTURE_RANGE, and ARCHITECTURE_ARRAY<br />

–– (moved from HO<strong>ST</strong>_SYTEM, which now contains links<br />

–– to these objects).<br />

–– 6.1, 17.12.98, J.Hoyng: added <strong>ST</strong>RING_ACCESS_ARRAY, <strong>ST</strong>RING_LI<strong>ST</strong><br />

––<br />

––<br />

–– Purpose:<br />

–– to provide commonly used types, utility subprogram(s) and exception(s)<br />

––<br />

–– External:<br />

–– From Ada system:<br />

–– UNCHECKED_DEALLOCATION<br />

–– SY<strong>ST</strong>EM<br />

––<br />

–– From <strong>CGS</strong>:<br />

–– NUMERIC_TYPES<br />

––<br />

–– From CSS:<br />

–– DB_DEFINITIONS<br />

–– CSS_TYPES<br />

––


Space Infrastructure<br />

608<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

608 von/of: 662<br />

–– I/O:<br />

–– –––<br />

––<br />

–– Machine Dependencies:<br />

–– none<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

––<br />

–– UNIX signals:<br />

–– –––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

£<br />

–– imports from Ada system:<br />

with UNCHECKED_DEALLOCATION;<br />

with SY<strong>ST</strong>EM;<br />

–– imports from <strong>CGS</strong>:<br />

with NUMERIC_TYPES;<br />

–– imports from CSS:<br />

with DB_DEFINITIONS;<br />

with CSS_TYPES;<br />

package CSS_DEFINITIONS is<br />

type RUNTIME_ID_TYPE is new CSS_TYPES.UNSIGNED_INTEGER;<br />

COPYRIGHT : constant <strong>ST</strong>RING := ”(C) 1997 DASA –– Daimler–Benz Aerospace”;<br />

type CSS_VERSION is<br />

record<br />

VERSION : CSS_TYPES.UNSIGNED_INTEGER;<br />

ISSUE : CSS_TYPES.UNSIGNED_INTEGER;<br />

–– REVISION : CSS_TYPES.UNSIGNED_INTEGER;<br />

end record;<br />

function CSS_VERSION_<strong>ST</strong>RING (THE_CSS_VERSION : CSS_VERSION) return <strong>ST</strong>RING;<br />

function CURRENT_CSS_VERSION return CSS_VERSION;<br />

–– string of the current (!) CSS_VERSION + date<br />

–– ”<strong>CGS</strong>/CSS Version x.y from dd.mm.yy”<br />

function CSS_VERSION_<strong>ST</strong>RING return <strong>ST</strong>RING;<br />

function GET_DATE_<strong>ST</strong>RING return <strong>ST</strong>RING;<br />

–––– basic types and utilities ––––––––––––––––––––––––––––––––––––––––––––––––<br />

subtype BYTE_ARRAY is DB_DEFINITIONS.BYTE_ARRAY;<br />

type BYTE_ARRAY_ACCESS is access BYTE_ARRAY;<br />

procedure FREE is new UNCHECKED_DEALLOCATION (BYTE_ARRAY, BYTE_ARRAY_ACCESS);<br />

type BYTE_<strong>ST</strong>REAM is new DB_DEFINITIONS.BYTE_<strong>ST</strong>REAM;<br />

type DYNAMIC_<strong>ST</strong>RING is new DB_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING;<br />

type <strong>ST</strong>RING_ACCESS is new DB_DEFINITIONS.<strong>ST</strong>RING_ACCESS;<br />

type <strong>ST</strong>RING_ACCESS_ARRAY is array (NATURAL range ) of <strong>ST</strong>RING_ACCESS;<br />

type <strong>ST</strong>RING_LI<strong>ST</strong> is access CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS_ARRAY;<br />

––<br />

–– The following definitions have been moved from HO<strong>ST</strong>_SYTEM<br />

––<br />

MAX_ARCHITECTURES : constant := 20; –– this will hardly ever happen<br />

subtype ARCHITECTURES_RANGE is POSITIVE range 1..MAX_ARCHITECTURES;<br />

type ARCHITECTURE_ARRAY is<br />

array (ARCHITECTURES_RANGE range ) of <strong>ST</strong>RING_ACCESS;


Space Infrastructure<br />

609<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––<br />

––<br />

––<br />

procedure Free_String is new UNCHECKED_DEALLOCATION (<strong>ST</strong>RING, <strong>ST</strong>RING_ACCESS);<br />

LOWE<strong>ST</strong>_PRIORITY: constant SY<strong>ST</strong>EM.PRIORITY := SY<strong>ST</strong>EM.PRIORITY’first + 3;<br />

HIGHE<strong>ST</strong>_PRIORITY: constant SY<strong>ST</strong>EM.PRIORITY := SY<strong>ST</strong>EM.PRIORITY’last – 7;<br />

subtype EXECUTIVE_PRIORITY_RANGE is SY<strong>ST</strong>EM.PRIORITY range<br />

LOWE<strong>ST</strong>_PRIORITY .. HIGHE<strong>ST</strong>_PRIORITY;<br />

function DEBUG return BOOLEAN;<br />

function VERBOSE return BOOLEAN;<br />

function PARENT_OF_THE_MODEL_LIBRARY return <strong>ST</strong>RING;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

609 von/of: 662<br />

function KERNEL_COMPILATION_UNIT_NAME return <strong>ST</strong>RING;<br />

function TEMPLATE_FILENAME return <strong>ST</strong>RING;<br />

–– list of CSS environment variables used inside ”the Ada world”<br />

type CSS_ENVIRONMENT_VARIABLES is<br />

(COMMON_<strong>ST</strong>ART,<br />

ADALIB_DIR, <strong>CGS</strong>_ARCH, COMMON_SOURCES_DIR, CSS_ARCHITECTURES,<br />

CSS_CLIBS, CSS_EXECUTABLE, CSS_HOME, CSS_LOG_DIR, CSS_LOG_DATA_SET_DIR,<br />

CSS_KERNEL_MESSAGES, CSS_MODEL_PARENT, CSS_SIM_DIR,<br />

CSS_TEMPLATE_DIR, HOME, TARGET_ARCH,<br />

CMAS_HOME,<br />

LM_LICENSE_FILE, –– needed for compilation<br />

COMMON_END,<br />

SUN_<strong>ST</strong>ART,<br />

SUN_END,<br />

HP_<strong>ST</strong>ART,<br />

ALSYCOMP_DIR, –– needed for compilation<br />

CSS_FAMILY, –– needed for compilation<br />

HP_END,<br />

HP_RT_<strong>ST</strong>ART,<br />

HPRTroot, –– needed for compilation<br />

HP_RT_END<br />

);<br />

function GET_NAME(CSS_ENVIRONMENT_VARIABLE: CSS_ENVIRONMENT_VARIABLES) return <strong>ST</strong>RING;<br />

function GET_VALUE(CSS_ENVIRONMENT_VARIABLE: CSS_ENVIRONMENT_VARIABLES) return <strong>ST</strong>RING;<br />

type CSS_PORTS is new NATURAL range 8900 .. 8999;<br />

–– utility operations needed by CSS_MESSAGE_COONECTION (to de/encode CSS_SW_TYPES<br />

–– inside the socket protocol and by the db_server to de/encode CSS_SW_TYPES<br />

–– inside MDE_INFO of a FB_IO –––––––––<br />

function CSS_SW_TYPES_DECODING (VALUE: CSS_TYPES.CSS_SW_TYPES)<br />

return CSS_TYPES.UNSIGNED_BYTE;<br />

function CSS_SW_TYPES_ENCODING (VALUE: CSS_TYPES.UNSIGNED_BYTE)<br />

return CSS_TYPES.CSS_SW_TYPES;<br />

type IO_VALUE_KIND is (SCALAR, NON_SCALAR);<br />

function IS_SCALAR (VALUE: CSS_TYPES.CSS_SW_TYPES) return BOOLEAN;<br />

function EQUAL (LEFT, RIGHT : CSS_TYPES.IO_VALUE_TYPE) return BOOLEAN;<br />

procedure COPY (TO : out CSS_TYPES.IO_VALUE_TYPE; FROM : CSS_TYPES.IO_VALUE_TYPE);<br />

–– this procedure shall be calles either with a variable TO (with TO.SW_TYPE = NONE)<br />

–– or TO (with TO.SW_TYPE = FROM.SW_TYPE and if FROM is a vector or matrix the size<br />

–– of to must be the same, if not COPY_ERROR will be raised)<br />

procedure COPY_INTO<br />

(TO : in out CSS_TYPES.IO_VALUE_TYPE; FROM : CSS_TYPES.IO_VALUE_TYPE);


Space Infrastructure<br />

610<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

610 von/of: 662<br />

procedure FREE (VALUE : in out CSS_TYPES.IO_VALUE_TYPE);<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– NAT_IMAGE (Support function)<br />

––<br />

–– Description : This function returns the image of a natural number without blanks<br />

––<br />

–– Parameters:<br />

––<br />

–– N : the natural lnumer<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function NAT_IMAGE (N: NATURAL) return <strong>ST</strong>RING;<br />

–––– exceptions: ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

INTERNAL_ERROR: exception;<br />

MAPPING_ERROR : exception; –– raised by CSS_SW_TYPES_DECODING and CSS_SW_TYPES_ENCODING<br />

COPY_ERROR : exception; –– raised by COPY and COPY_INTO<br />

end CSS_DEFINITIONS;


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

611<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– model_config<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– model_config<br />

–– Project CSS–Downsizing<br />

–– <br />

–– HOOD object model_config<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– model_config<br />

––<br />

–– Type: Package Spec<br />

––<br />

–– Version:<br />

–– 4.1, 23.08.95, N.Heyder: initial version<br />

–– 4.2, 22.11.95, N.Heyder: introduced ’Packet–Info’ and ’Non–Standard–Class’<br />

–– 4.3, 05.03.96, N.Heyder: editorial corrections within comment–lines<br />

–– 4.4, 05.07.96, N.Heyder: changed comments<br />

–– 4.5 1997–03–21 R.Lamb Add MEASUREMENT_64_BIT <strong>ST</strong>IMULUS_64_BIT to SLOT_CLASS<br />

–– Add CMD_1 CMD_2 to PUT_ENTRY, add default values.<br />

–– Add COMMAND_1 COMMAND_2 functions.<br />

–– 4.5a 1997–03–26 R.Lamb Commented out MEASUREMENT_64_BIT <strong>ST</strong>IMULUS_64_BIT<br />

–– to be completed for DOUBLE_FLOAT, later.<br />

––<br />

–– 4.6 1997–04–09 R.Lamb Changed comments to allow Remote Terminal range 0.30<br />

–– 4.7 1997–05–16 R.Lamb Added SLOT_CLASS_TYPE 64 bit enumerated values.<br />

––<br />

–– 5.1, 01.10.97, A.Schulz: fixed uninitialized <strong>ST</strong>ART_TYPE (crashes DB server)<br />

––<br />

–– Purpose:<br />

–– Provide information about Milbus Configuration for CMAS<br />

––<br />

–– Machine Dependencies:<br />

–– none<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

with css_definitions;<br />

with mps_definitions;<br />

with calibration;<br />

with numeric_types;<br />

with ADT_CCSDS_PACKET;<br />

package model_config is<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

611 von/of: 662<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– this package provides detailed model–specific information about:<br />

––<br />

–– – logical Milbus structures like:<br />

–– * Bus Identification in case of multiple Milbusses,<br />

–– * Remote Terminal Identification for a specific Milbus,<br />

–– * Subaddress/Slot Identification for a specific Remote Terminal,<br />

–– * Channel Identification (as offset) for a specific Subaddress/Slot,<br />

–– * Mapping from Channel to CSS–Runtime–Identifier(RID),<br />

–– * Sizing–Information like:<br />

–– @ Number of all implemented Milbusses<br />

–– @ Number of all implemented Remote Terminals for a specific Milbus<br />

–– @ Number of all implemented Channels for a specific Remote Terminal<br />

––<br />

––<br />

–– – Calibration/Decalibration:<br />

–– * Identification of the RID’s to be calibrated<br />

–– * Identification of the RID’s to be decalibrated<br />

–– * Identification of the specific calibration/decalibration method per RID<br />

––<br />

––


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– – Serial Packets:<br />

–– * Mapping Serial Packets to Subaddresses?<br />

–– * Internal structure of a Serial Packet(length, offsets, etc.)<br />

–– * Mapping of internal packet items to RIDs<br />

––<br />

––<br />

–– – External Model I/O:<br />

–– * First Model Input<br />

–– * Last Model Input<br />

–– * First Model Output<br />

–– * Last Model Output<br />

–– * Amount of all ext. Inputs<br />

–– * Amount of all ext. Outputs<br />

––<br />

––<br />

––..............................................................................<br />

––<br />

––<br />

–– (Milbus)–Configuration is specified by the following items:<br />

––<br />

––<br />

–– n Milbusses<br />

–– |<br />

–– |<br />

–– |<br />

–– 31 Remote Terminals<br />

–– |<br />

–– |<br />

–– |<br />

–– 30 Slots/Subaddresses, Milbus Class<br />

–– |<br />

–– |<br />

–– |<br />

–– 16..512 Channels, CSS_RID,<br />

––<br />

–– 8 Channels to be added for non–standard DOUBLE_FLOAT<br />

––<br />

––<br />

–– REMOTE TERMINAL valid range: 0 .. 30<br />

––<br />

–– SLOT valid range: 1 .. 30<br />

––<br />

–– CHANNEL–Ranges per SLOT:<br />

––<br />

–– Packet => 0 .. 0<br />

–– 64–Bit => 0 .. 7<br />

–– 32–Bit => 0 .. 15<br />

–– 16–Bit => 0 .. 31<br />

–– 8–Bit => 0 .. 63<br />

–– 1–Bit => 0 .. 511<br />

–– NON_<strong>ST</strong>ANDARD => 0 .. 511<br />

––<br />

––******************************************************************************<br />

type CLIENT_TYPE is (API, ––> DB–SERVER<br />

CMAS<br />

);<br />

type <strong>ST</strong>ART_TYPE(CLIENT : CLIENT_TYPE := CMAS) is<br />

record<br />

case CLIENT is<br />

when CMAS =><br />

MILBUS_CONFIG_FILE_PATHNAME : css_definitions.<strong>ST</strong>RING_ACCESS := null;<br />

when API =><br />

PATHNAME : css_definitions.<strong>ST</strong>RING_ACCESS := null;<br />

FIR<strong>ST</strong>_MILBUS : NATURAL := 0;<br />

LA<strong>ST</strong>_MILBUS : NATURAL := 0;<br />

FIR<strong>ST</strong>_EXT_IO_ID : NATURAL := 0;<br />

LA<strong>ST</strong>_EXT_IO_ID : NATURAL := 0;<br />

TOTAL_PACKETS : natural := 0; –– total number of packets<br />

when others => null;<br />

end case;<br />

end record;<br />

612<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

612 von/of: 662


Space Infrastructure<br />

613<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

613 von/of: 662<br />

–– to be returned by several operations<br />

––<br />

type RETURN_<strong>ST</strong>ATUS_TYPE is (OK, NOT_OK);<br />

–– to be returned by the <strong>ST</strong>ART–Function<br />

––<br />

type <strong>ST</strong>ART_RETURN_<strong>ST</strong>ATUS_TYPE is (<br />

OK,<br />

INVALID_OPCODE_READ_FROM_FILE,<br />

INVALID_SLOT_CLASS_ERROR,<br />

OTHER_EXCEPTION_RAISED,<br />

LOAD_EXCEPTION,<br />

WRONG_MAPPING_DEFINITIONS);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– types for the Milbus business –––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

type SLOT_CLASS_TYPE is(<br />

MEASUREMENT_64_BIT,<br />

<strong>ST</strong>IMULUS_64_BIT,<br />

MEASUREMENT_32_BIT,<br />

<strong>ST</strong>IMULUS_32_BIT,<br />

MEASUREMENT_16_BIT,<br />

<strong>ST</strong>IMULUS_16_BIT,<br />

MEASUREMENT_8_BIT,<br />

<strong>ST</strong>IMULUS_8_BIT,<br />

MEASUREMENT_1_BIT,<br />

<strong>ST</strong>IMULUS_1_BIT,<br />

TM_PACKET,<br />

TC_PACKET,<br />

MEASUREMENT_NON_<strong>ST</strong>ANDARD,<br />

<strong>ST</strong>IMULUS_NON_<strong>ST</strong>ANDARD,<br />

NOT_IN_USE);<br />

––******************************************************************************<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––<br />

–– ’<strong>ST</strong>ART’ must be called by DB–SERVER/CMAS before calling any other operation of this package!<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––<br />

––<br />

–– exception:<br />

–– LOAD_EXCEPTION<br />

––<br />

function <strong>ST</strong>ART(<strong>ST</strong>ART_UP : <strong>ST</strong>ART_TYPE) return <strong>ST</strong>ART_RETURN_<strong>ST</strong>ATUS_TYPE;<br />

–– returns Bus–Media; like Milbus, Socket etc. in ”UPPER_CASE”<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

MAX_<strong>ST</strong>RING_LENGTH : constant := 256;<br />

––<br />

function BUS_MEDIA return string;<br />

–– returns Hostname for Bus–Counterpart(DMS)<br />

––<br />

type <strong>ST</strong>RING_RECORD_TYPE is<br />

record<br />

TEXT : string(1..MAX_<strong>ST</strong>RING_LENGTH) := (others => ’ ’);<br />

CNT : natural := 0;<br />

end record;<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function DMS_HO<strong>ST</strong>NAME return <strong>ST</strong>RING_RECORD_TYPE;<br />

–– TRUE => <strong>ST</strong>ANDARD<br />

–– FALSE => NON_<strong>ST</strong>ANDARD<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function <strong>ST</strong>ANDARD_IF(BUS : natural) return boolean;<br />

–– returns the socket port numbers MEAS_PORT + CMD_PORT for the given BUS<br />

––


Space Infrastructure<br />

614<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

614 von/of: 662<br />

type SOCKET_PORT_NUMBER_RECORD_TYPE is<br />

record<br />

MEAS_PORT : natural;<br />

CMD_PORT : natural;<br />

end record;<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function SOCKET_PORT_NUMBERS(BUS : in natural) return SOCKET_PORT_NUMBER_RECORD_TYPE;<br />

–– returns the Class of a given Slot<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function SLOT_CLASS(MILBUS : natural;<br />

RT : natural;<br />

SLOT : natural) return SLOT_CLASS_TYPE;<br />

–– returns the CHANNEL for a given IO,SLOT,RT,MILBUS(except slot class TM_PACKET/TC_PACKET)<br />

–– (TM/TC–Packets always start at Channel 0!)<br />

––<br />

–– exceptions:<br />

–– INVALID_MILBUS_ID<br />

–– INVALID_RT_ID<br />

–– INVALID_SLOT_ID<br />

–– INVALID_RID<br />

–– INVALID_SLOT_CLASS<br />

––<br />

function CHANNEL(MILBUS : natural;<br />

RT : natural;<br />

SLOT : natural;<br />

RID : natural) return natural;<br />

–– returns the CSS–RUNTIME–ID for a given CHANNEL,SLOT,RT,MILBUS(except packet–members!)<br />

–– As part of the NON_<strong>ST</strong>ANDARD changes, if there are more than one Runtime–Ids<br />

–– for the given Channel,Slot,RT,Milbus then returns the first one found.<br />

––<br />

–– exceptions:<br />

–– INVALID_MILBUS_ID<br />

–– INVALID_RT_ID<br />

–– INVALID_SLOT_ID<br />

–– OTHER_EXCEPTION<br />

––<br />

function CSS_RID(MILBUS : natural;<br />

RT : natural;<br />

SLOT : natural;<br />

CHANNEL : natural) return natural;<br />

–– returns the ID of the first Milbus<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function FIR<strong>ST</strong>_MILBUS return natural;<br />

–– returns the ID of the last Milbus<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function LA<strong>ST</strong>_MILBUS return natural;<br />

–– returns the system–address for the Board supporting the given Milbus<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function MILBUS_SY<strong>ST</strong>EM_ADDRESS(MILBUS_ID : natural) return natural;<br />

–– returns the MILBUS–Identifier for the given IO<br />

––<br />

–– (This operation should be called only during initialization phase!)<br />

––<br />

–– exceptions:<br />

–– INVALID_SLOT_CLASS<br />

–– RID_ENTRY_NOT_FOUND<br />

––<br />

function MILBUS(RID : natural) return natural;<br />

–– returns the Remote–Termninal–Identifier for the given IO<br />

––


Space Infrastructure<br />

615<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

615 von/of: 662<br />

–– (This operation should be called only during initialization phase!)<br />

––<br />

–– exceptions:<br />

–– INVALID_SLOT_CLASS<br />

–– RID_ENTRY_NOT_FOUND<br />

––<br />

function RT(RID : natural) return natural;<br />

–– returns the Slot–Identifier for the given IO<br />

––<br />

–– (This operation should be called only during initialization phase!)<br />

––<br />

–– exceptions:<br />

–– INVALID_SLOT_CLASS<br />

–– RID_ENTRY_NOT_FOUND<br />

––<br />

function SLOT(RID : natural) return natural;<br />

–– returns the CHANNEL for the given IO<br />

––<br />

–– RIDs out of CCSDS–Packets are not supported (all packets always starting at channel 0!)<br />

––<br />

–– (This operation should be called only during initialization phase!)<br />

––<br />

–– exceptions:<br />

–– INVALID_SLOT_CLASS<br />

–– RID_ENTRY_NOT_FOUND<br />

––<br />

function CHANNEL(RID : natural) return natural;<br />

–– This function returns the string COMMAND_1 for the given I/O<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function COMMAND_1(RID : natural) return String;<br />

–– This function returns the string COMMAND_2 for the given I/O<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function COMMAND_2(RID : natural) return String;<br />

–– This function returns the calibration/decalibration description for the given I/O<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function CALIBRATION_INFO(RID : natural) return calibration.CALIBRATION_DECALIBRATION_TYPE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CCSDS PACKET INFO only:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– returns the total number of CCSDS–Packets<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

––<br />

function GET_TOTAL_PACKETS return natural;<br />

–– returns the CCSDS Packet’s Primary– and Secondary Header for the given RID<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

–– PACKET_HEADER_NOT_FOUND<br />

––<br />

procedure GET_PACKET_HEADERS(RID : in natural;<br />

PRIMARY_HEADER : out ADT_CCSDS_PACKET.T_CCSDS_HEADER;<br />

SECONDARY_HEADER : out ADT_CCSDS_PACKET.T_CCSDS_SECOND-<br />

ARY_HEADER); –– valid only if secondary haeder flag is set!<br />

–– returns the CCSDS Packet–ID for the given RID<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

–– PACKET_ID_NOT_FOUND<br />

––<br />

procedure GET_PACKET_ID(RID : in natural;<br />

PACKET_ID : out ADT_CCSDS_PACKET.T_CCSDS_PACKET_ID);<br />

–– returns the Bit_Offset for the given RID(required to substitute/retrieve the packets user<br />

data)


Space Infrastructure<br />

616<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

616 von/of: 662<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

–– BIT_OFFSET_NOT_FOUND<br />

––<br />

procedure GET_BIT_OFFSET(RID : in natural;<br />

BIT_OFFSET : out natural);<br />

–– returns the number of bits for the given RID(required to substitute/retrieve the packets<br />

user data)<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

–– NUMBER_OF_BITS_NOT_FOUND<br />

––<br />

procedure GET_NUMBER_OF_BITS(RID : in natural;<br />

NUMBER_OF_BITS : out natural);<br />

–– returns the number RIDs for the given CCSDS–Packet–ID<br />

––<br />

–– exceptions: predefined Ada exceptions<br />

–– PACKET_NOT_FOUND<br />

––<br />

function GET_NUMBER_OF_RIDS_PER_PACKET(PACKET_ID : ADT_CCSDS_PACKET.T_CCSDS_PACKET_ID)<br />

return natural;<br />

––******************************************************************************<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Operations provided exclusively for DB–SERVER:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– set Milbus–Address<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– valid ’CHANNEL’–ranges(per SLOT) are:<br />

––<br />

–– CLASS | CHANNEL–Range<br />

–– –––––––––––––––––––––––––––––<br />

–– Packet => 0 .. 0<br />

–– 64–Bit => 0 .. 7<br />

–– 32–Bit => 0 .. 15<br />

–– 16–Bit => 0 .. 31<br />

–– 8–Bit => 0 .. 63<br />

–– 1–Bit => 0 .. 511<br />

–– NON_<strong>ST</strong>ANDARD => 0 .. 511<br />

––<br />

–– Notice that a CLASS primary defined for a SLOT must be kept constant for all<br />

–– further PUT_ENTRY calls on that same SLOT!!!<br />

––<br />

–– Exceptions:<br />

–– – ILLEGAL_MILBUS_CLASS_REDEFINITION<br />

–– – INVALID_RT_ID<br />

–– – INVALID_SLOT_ID<br />

–– – CANNOT_PUT_ENTRY_ERROR<br />

––<br />

procedure PUT_ENTRY(<br />

ID : in natural := 0; –– ext.I/O–CSS–RID or ’Packet–ID’<br />

MILBUS : in natural := 0; –– Milbus–ID (0..n)<br />

RT : in natural := 0; –– Remote Terminal (0..30)<br />

SLOT : in natural := 1; –– Slot–ID (1..30)<br />

CLASS : in slot_class_type := NOT_IN_USE;<br />

CHANNEL : in natural := 0;<br />

CMD_1 : in string := ””;<br />

CMD_2 : in string := ””);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– set CCSDS Packet Header (this must be called before setting the packet’s ”User Data”!)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Exceptions:<br />

–– INVALID_SLOT_CLASS<br />

––<br />

procedure PUT_PACKET_HEADER(PACKET_ID : natural; –– CCSDS–Packet–ID<br />

PRIMARY_HEADER : ADT_CCSDS_PACKET.T_CCSDS_HEADER;<br />

SECONDARY_HEADER : ADT_CCSDS_PACKET.T_CCSDS_SECONDARY_HEADER; ––<br />

valid only if secondary haeder flag is set!


Space Infrastructure<br />

617<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

617 von/of: 662<br />

MILBUS : natural; –– Milbus–ID (0..n)<br />

RT : natural; –– Remote Terminal (0..30)<br />

SLOT : natural; –– Slot–ID (1..30)<br />

CLASS : slot_class_type; –– (TM or TC only!)<br />

TOTAL_RIDS : natural);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– set Packet User Data (”Packet Header” must have been set before!)<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– Exceptions:<br />

–– CANNOT_PUT_ENTRY_ERROR<br />

–– BIT_LENGTH_EXCEEDED<br />

––<br />

procedure PUT_PACKET_USER_DATA(PACKET_ID : natural; –– CCSDS–PACKET–ID<br />

RID : natural; –– CSS–Runtime–Identifier<br />

BIT_OFFSET : natural;<br />

BIT_LENGTH : natural); –– max. 32 Bit due to CSS–Types!<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– Set the Calibration/Decalibration description for a given CSS–RID<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– sets default calibration for<br />

–– raw/engineering types: integer32, unsigned_integer32, real, long_real<br />

––<br />

–– exception:<br />

–– (language predefined exceptions)<br />

––<br />

procedure PUT_CON<strong>ST</strong>ANT_CALIBRATION(<br />

RID : in NATURAL;<br />

RAW_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR);<br />

procedure PUT_POLYNOM_CALIBRATION(<br />

RID : in NATURAL;<br />

COEFFICIENTS : in calibration.POLYNOM_COEFFICIENTS;<br />

RAW_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR);<br />

procedure PUT_POINT_PAIR_CALIBRATION(<br />

RID : in NATURAL;<br />

POINT_PAIRS : in calibration.ANALOG_POINT_PAIR_ARRAY;<br />

RAW_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR);<br />

procedure PUT_DISCRETE_CALIBRATION(<br />

RID : in NATURAL;<br />

POINT_PAIRS : in calibration.DISCRETE_POINT_PAIR_ARRAY;<br />

RAW_VALUE_TYPE : in mps_definitions.T_SW_TYPE);<br />

procedure PUT_BOOLEAN_CALIBRATION(<br />

RID : in NATURAL;<br />

BY_TRUE : in numeric_types.BIT;<br />

BY_FALSE : in numeric_types.BIT);<br />

–––––––<br />

procedure PUT_CON<strong>ST</strong>ANT_DECALIBRATION(<br />

RID : in NATURAL;<br />

RAW_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR);<br />

procedure PUT_POLYNOM_DECALIBRATION(<br />

RID : in NATURAL;<br />

COEFFICIENTS : in calibration.POLYNOM_COEFFICIENTS;<br />

RAW_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR);<br />

procedure PUT_POINT_PAIR_DECALIBRATION(<br />

RID : in NATURAL;<br />

POINT_PAIRS : in calibration.ANALOG_POINT_PAIR_ARRAY;<br />

RAW_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR;<br />

ENG_VALUE_DESCRIPTOR : in mps_definitions.T_SW_TYPE_DESCRIPTOR);<br />

procedure PUT_DISCRETE_DECALIBRATION(<br />

RID : in NATURAL;<br />

POINT_PAIRS : in calibration.DISCRETE_POINT_PAIR_ARRAY;<br />

RAW_VALUE_TYPE : in mps_definitions.T_SW_TYPE);


Space Infrastructure<br />

618<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure PUT_BOOLEAN_DECALIBRATION(<br />

RID : in NATURAL;<br />

BY_TRUE : in numeric_types.BIT;<br />

BY_FALSE : in numeric_types.BIT);<br />

–– Store the complete model information into file with the Unix–Path as<br />

–– defined by the previous <strong>ST</strong>ART–Operation<br />

––<br />

–– !!!!!! This should be the final call by DB–SERVER !!!!!!!<br />

––<br />

function <strong>ST</strong>ORE return RETURN_<strong>ST</strong>ATUS_TYPE;<br />

INVALID_SW_TYPE,<br />

INVALID_RID,<br />

INVALID_MILBUS_ID,<br />

INVALID_RT_ID,<br />

INVALID_SLOT_ID,<br />

ILLEGAL_MILBUS_CLASS_REDEFINITION,<br />

OTHER_EXCEPTION,<br />

RID_ENTRY_NOT_FOUND,<br />

PACKET_HEADER_NOT_FOUND,<br />

PACKET_ID_NOT_FOUND,<br />

BIT_OFFSET_NOT_FOUND,<br />

NUMBER_OF_BITS_NOT_FOUND,<br />

PACKET_NOT_FOUND,<br />

LOAD_ERROR,<br />

INVALID_SLOT_CLASS,<br />

GET_SW_TYPE_ERROR,<br />

FIR<strong>ST</strong>_INPUT_ERROR,<br />

LA<strong>ST</strong>_INPUT_ERROR,<br />

FIR<strong>ST</strong>_OUTPUT_ERROR,<br />

LA<strong>ST</strong>_OUTPUT_ERROR,<br />

CANNOT_PUT_ENTRY_ERROR,<br />

MAX_LENGTH_OF_INPUT_BYTE_<strong>ST</strong>REAM_ERROR,<br />

BIT_LENGTH_EXCEEDED,<br />

MAX_LENGTH_OF_OUTPUT_BYTE_<strong>ST</strong>REAM_ERROR : exception;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

end model_config;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

618 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

619<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– MAPPING_TABLE<br />

––<br />

–– Purpose:<br />

––<br />

–– This package includes all routines for access to a model’s mapping table<br />

–– file, i.e. the handling of the different sections and the format of the<br />

–– entry lines.<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– MAPPING_TABLE<br />

–– Project CSS<br />

–– DDD section 5.2.10.5<br />

–– HOOD object MAPPING_TABLE<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– MAPPING_TABLE<br />

––<br />

–– Type: package spec<br />

––<br />

–– Version:<br />

–– 4.1, 23.08.95, A.Schulz: initial version (extracted from LOGGER)<br />

–– 5.0, 25.06.97, W.Tammen, introduced modifications used for Central Logging<br />

–– changed parameter profile of PUT_ENTRY<br />

–– introduced new procedure GET_ENTRY<br />

–– introduced new procedure OPEN_TABLE<br />

––<br />

–– Purpose:<br />

––<br />

–– This package includes all routines for access to a model’s mapping table<br />

–– file, i.e. the handling of the different sections and the format of the<br />

–– entry lines.<br />

––<br />

–– External:<br />

––<br />

–– From CSS:<br />

––<br />

–– MODEL_<strong>ST</strong>ATE, (MODEL_ID_TYPE)<br />

––<br />

–– DB_DEFINITIONS, (SID,<br />

–– SUBITEM_ID)<br />

––<br />

–– CSS_DEFINITIONS, (<strong>ST</strong>RING_ACCESS)<br />

––<br />

RUNTIME_ID_TYPE)<br />

––<br />

––<br />

–– I/O:<br />

–– ––<br />

––<br />

–– Machine Dependencies:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

619 von/of: 662


Space Infrastructure<br />

620<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– none<br />

––<br />

–– Compiler Dependencies:<br />

–– none<br />

––<br />

–– UNIX signals:<br />

–– ––<br />

––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

£<br />

–– imports from CSS<br />

with DB_DEFINITIONS,<br />

CSS_DEFINITIONS;<br />

package MAPPING_TABLE is<br />

–––––types––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following enumeration type is used to return to the caller of<br />

–– GET_ENTRY the current section of the mapping table resp. to<br />

–– specify the section for PUT_ENTRY and SELECT_SECTION.<br />

type MAPPING_SECTION is<br />

(NO_SECTION, –– before opened (internal use only)<br />

SENDERS_SECTION, –– current entry is sender of a value<br />

RECEIVERS_SECTION, –– current entry is receiver of a value<br />

FBS_SECTION, –– current entry is function block<br />

END_SECTION);<br />

–– no more entries available<br />

–––––exceptions–––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following exception will be raised if<br />

–– a) OPEN_TABLE fails to open the mapping table<br />

–– b) no table has been opened via OPEN_TABLE when calling<br />

–– SELECT_SECTION or GET_ENTRY<br />

NO_MAPPING_TABLE_FOUND : exception;<br />

–– The following exception will be raised if an error occurs<br />

–– when scanning a mapping table line<br />

ENTRY_FORMAT_ERROR : exception;<br />

–– support operations ––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– This function returns the path to the UNIX file where<br />

–– the architecture specific executable for the specified model<br />

–– is stored.<br />

–– It will raise DB_DEFINITIONS.EMPTY_ROOT_PATH if the<br />

–– MODEL_UNIX_PATH in the MODEL_ID is empty, i.e. hasn’t been<br />

–– initialised.<br />

function GET_MAPPING_TABLE_NAME<br />

(MODEL : in DB_DEFINITIONS.MODEL_ID;<br />

ARCHITECTURE : in <strong>ST</strong>RING) return <strong>ST</strong>RING;<br />

–– reading operations ––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure opens the Mapping Table File for the<br />

–– specified model and architecture for reading.<br />

–– A following call to GET_ENTRY will return the first entry.<br />

–– This procedure must be called before reading the first entry via<br />

–– GET_ENTRY or selecting a special section via SELECT_SECTION.<br />

–– NO_MAPPING_TABLE_FOUND will be raised if no mapping table exists<br />

–– for the specified Model and architecture.<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

620 von/of: 662


Space Infrastructure<br />

621<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

procedure OPEN_TABLE(<br />

MODEL_ID : in out DB_DEFINITIONS.MODEL_ID;<br />

ARCHITECTURE : in <strong>ST</strong>RING);<br />

–– The following procedure opens the Mapping Table File in case<br />

–– the filename is available instead of a model id (e.g. logger_be)<br />

procedure OPEN_TABLE(MAPTAB_FILE_NAME: in <strong>ST</strong>RING);<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure positions the cursor such that the<br />

–– next call to GET_ENTRY will return the first entry of the next<br />

–– section of the specified type, resp. the next entry if a<br />

–– section of the specified type is already active.<br />

–– If no (more) such section is found, NO_SECTION is returned,<br />

–– otherwise the specified section type.<br />

–– NO_MAPPING_TABLE_FOUND will be raised if OPEN_TABLE hasn’t been<br />

–– called before.<br />

procedure GET_SELECTED_SECTION(<br />

SECTION : in out MAPPING_SECTION );<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure returns the next mapping table entry, i.e.<br />

–– its SECTION, SID, IO_ID (invalid, =0 if in FBS_SECTION), RUNTIME_ID,<br />

–– and PATHNAME. Additionally, the engineering unit, onboard reference SID<br />

–– and the pathname of the onboard reference are returned, The latter<br />

–– values are needed for central logging purposes. In case of model internal<br />

–– I/O’s engineering unit is set to ””, OB_REF_SID is set to 0 and the pathname<br />

–– of the OB reference is set to \. If NO_SECTION is returned, no more entries<br />

–– are available and the remaining returned values are invalid.<br />

–– NO_MAPPING_TABLE_FOUND will be raised if OPEN_TABLE hasn’t been<br />

–– called before.<br />

procedure GET_ENTRY(<br />

SECTION : out MAPPING_SECTION;<br />

SID : out DB_DEFINITIONS.SID;<br />

IO_ID : out DB_DEFINITIONS.SUBITEM_ID;<br />

RUNTIME_ID : out CSS_DEFINITIONS.RUNTIME_ID_TYPE;<br />

PATHNAME : out CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS;<br />

ENGINEERING_UNIT: out CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS;<br />

OB_REF_SID : out DB_DEFINITIONS.SID;<br />

OB_REF_PATHNAME : out CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS);<br />

procedure GET_ENTRY(<br />

SECTION : out MAPPING_SECTION;<br />

SID : out DB_DEFINITIONS.SID;<br />

IO_ID : out DB_DEFINITIONS.SUBITEM_ID;<br />

RUNTIME_ID : out CSS_DEFINITIONS.RUNTIME_ID_TYPE;<br />

PATHNAME : out CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS);<br />

–– writing operations ––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure creates a new, empty Mapping Table File for<br />

–– the specified model and architecture for writing.<br />

–– This procedure must be called before writing the first entry via<br />

–– PUT_ENTRY.<br />

–– NO_MAPPING_TABLE_FOUND will be raised if no mapping table could be<br />

–– created for the specified Model and architecture.<br />

procedure CREATE_TABLE(<br />

MODEL_ID : in out DB_DEFINITIONS.MODEL_ID;<br />

ARCHITECTURE : in <strong>ST</strong>RING);<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

621 von/of: 662


Space Infrastructure<br />

622<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure marks the beginning of a new section<br />

–– in the mapping table file, except when SECTION is the same<br />

–– as before.<br />

–– NO_MAPPING_TABLE_FOUND will be raised if CREATE_TABLE hasn’t been<br />

–– called before.<br />

procedure PUT_NEW_SECTION(SECTION : in MAPPING_SECTION );<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure appends a new entry, i.e. SID, IO_ID (ignored<br />

–– if in FBS_SECTION), RUNTIME_ID and PATHNAME to the currently opened<br />

–– (via CREATE_TABLE) mapping table file, for the currently active<br />

–– section (via NEW_SECTION).<br />

–– The values for engineering_unit, ob_ref_sid and ob_ref_pathname are<br />

–– ignored, too, in case of FBS_SECTION. They are used for central logging<br />

–– purposes.<br />

–– NO_MAPPING_TABLE_FOUND will be raised if CREATE_TABLE hasn’t been<br />

–– called before.<br />

procedure PUT_ENTRY(<br />

SID : in DB_DEFINITIONS.SID;<br />

IO_ID : in DB_DEFINITIONS.SUBITEM_ID;<br />

RUNTIME_ID : in CSS_DEFINITIONS.RUNTIME_ID_TYPE;<br />

PATHNAME : in <strong>ST</strong>RING;<br />

ENGINEERING_UNIT: in <strong>ST</strong>RING;<br />

OB_REF_SID : in DB_DEFINITIONS.SID;<br />

OB_REF_PATHNAME : in <strong>ST</strong>RING);<br />

–– closing operations ––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– The following procedure closes any currently opened Mapping Table File.<br />

–– No exception will be raised in the case that no file is opened.<br />

procedure CLOSE_TABLE;<br />

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

end MAPPING_TABLE;<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

622 von/of: 662


Space Infrastructure<br />

Formal <strong>Interface</strong> Description<br />

623<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– AB<strong>ST</strong>RACT –– CSS_MESSAGE_CONNECTION<br />

––<br />

–– This package provides socket connections for the CSS specific<br />

–– message communication protocol.<br />

–– Each message consists of a mandatory 12–byte header (4 byte opcode,<br />

–– 4 byte opcode extension, 4 bytes total message length in longwords)<br />

–– followed by an optional data field of arbitrary length (but padded<br />

–– to a longword boundary, since the total message length (header + data)<br />

–– is measured in longwords, see above).<br />

–– A special case of communication is read/write from/to persistent<br />

–– media (files), which can be characterized as ”offline” communication.<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– KEYWORDS –– CSS_MESSAGE_CONNECTION<br />

–– Project CSS<br />

–– ADD section 5.3.11<br />

–– HOOD object CSS_MESSAGE_CONNECTION<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

––<br />

–– CONTENTS –– CSS_MESSAGE_CONNECTION<br />

––<br />

–– Type: Package specification<br />

––<br />

–– Version:<br />

–– 2.1, 10.11.93, Th. Kendelbacher: initial version<br />

–– 3.1, 21.07.94, J. Hoyng: changed CSS_TYPES.DURATION to DURATION<br />

–– 3.2, 06.04.95: J. Hoyng: implemented new protocol<br />

–– 4.1, 08.10.96: A.Schulz: SPR–2713 : added support for CDU test versions<br />

–– (added procedures to PUT/GET library versions)<br />

–– 25.08.96: Th. Behrens: Added new procedures PUT and GET for exchange<br />

–– of messages between CMAS DB Server and CSS DB<br />

–– Server<br />

–– 22.09.97: Th. Behrens: Replaced links to HO<strong>ST</strong>_SY<strong>ST</strong>EM by links to<br />

–– CSS_DEFINITIONS.<br />

–– 03.11.97: A.Schulz : <strong>System</strong>_Environment added to GET_FROM_FILE<br />

–– parameters<br />

––<br />

–– Purpose:<br />

–– message–oriented connection of processes<br />

––<br />

–– Function:<br />

–– communication via bytestream–like OS communication channels<br />

––<br />

–– External:<br />

–– From Ada system:<br />

–– SY<strong>ST</strong>EM<br />

––<br />

–– From <strong>CGS</strong>:<br />

–– NUMERIC_TYPES<br />

––<br />

–– From CSS:<br />

–– CSS_DEFINITIONS<br />

–– CSS_TYPES<br />

–– UNIX_INTERFACE<br />

––<br />

–– I/O:<br />

–– either via UNIX sockets, via stdin/stdout pipes or via files,<br />

–– depending on OPEN_CONNECTION call<br />

––<br />

–– Machine Dependencies:<br />

–– –––<br />

––<br />

–– Compiler Dependencies:<br />

–– –––<br />

––<br />

–– UNIX signals:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

623 von/of: 662


Space Infrastructure<br />

624<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– SIGPIPE (handler included)<br />

–– SIGTERM only while in ACCEPT_LOOP (handler included)<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– imports from Ada system:<br />

with SY<strong>ST</strong>EM;<br />

–– imports from <strong>CGS</strong>:<br />

with NUMERIC_TYPES;<br />

–– imports from CSS:<br />

with CSS_DEFINITIONS, CSS_TYPES;<br />

with UNIX_INTERFACE;<br />

with DB_DEFINITIONS;<br />

with CSS_TYPES;<br />

package CSS_MESSAGE_CONNECTION is<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– CAUTION!!! ––<br />

–– The procedures and data structures in this package are currently not ––<br />

–– protected against concurrent accesses, so make sure that there is at ––<br />

–– most one task using each connection. Thank you for your attention. ––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––– abstract MESSAGE type for the general CSS message format –––––––––––––––––<br />

type MESSAGE is limited private;<br />

–– General note: The message length field as required by the protocol is<br />

–– automatically filled by the WRITE operation depending on the current<br />

–– data length (as set by a previous READ or PUT_xyz operation).<br />

procedure INITIALIZE<br />

(THE_MESSAGE: in out MESSAGE;<br />

OPCODE: CSS_TYPES.UNSIGNED_INTEGER := 0;<br />

DETAIL: CSS_TYPES.SIGNED_INTEGER := 0);<br />

–– this procedure also empties the data field of MESSAGE (!)<br />

function OPCODE (THE_MESSAGE: MESSAGE) return CSS_TYPES.UNSIGNED_INTEGER;<br />

function DETAIL (THE_MESSAGE: MESSAGE) return CSS_TYPES.SIGNED_INTEGER;<br />

procedure RESET_POSITION (THE_MESSAGE: in out MESSAGE);<br />

–– reset the read–/write–position for the following procedures<br />

–– to the initial position (start of data field).<br />

–– The data length is set to the current write position after each<br />

–– PUT_xyz operation.<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.CSS_SW_TYPES);<br />

–– GET operations for (scalar) CSS_TYPES:<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_BYTE);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_BYTE);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_SHORT_WORD);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_SHORT_WORD);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_INTEGER);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_INTEGER);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.REAL);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.LONG_REAL);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.COMPLEX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out BOOLEAN);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.TIME);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.LONG_DURATION);<br />

procedure GET<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

624 von/of: 662


Space Infrastructure<br />

625<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

625 von/of: 662<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.<strong>ST</strong>ATE_CODE);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.PULSE);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.BUR<strong>ST</strong>_PULSE);<br />

–– GET operations for (composite) CSS_TYPES:<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_BYTE_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_BYTE_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_SHORT_WORD_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_SHORT_WORD_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_INTEGER_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_INTEGER_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.REAL_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.LONG_REAL_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.COMPLEX_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.BOOLEAN_VECTOR);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_BYTE_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_BYTE_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_SHORT_WORD_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_SHORT_WORD_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.UNSIGNED_INTEGER_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.SIGNED_INTEGER_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.REAL_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.LONG_REAL_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.COMPLEX_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.BOOLEAN_MATRIX);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.BYTE_<strong>ST</strong>REAM);<br />

–– GET operations for other types:<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.<strong>ST</strong>RING_ACCESS);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE;<br />

BUFFER : out <strong>ST</strong>RING;<br />

CHARS_READ : out NATURAL);<br />

–– gets a string from MESSAGE, copies it into BUFFER and returns the<br />

–– number of valid chars in BUFFER (rest of BUFFER is unchanged).<br />

–– Raises BAD_LENGTH if BUFFER is insufficient.<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in out CSS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING);<br />

–– VALUE must be in out due to RM 7.4.4(4)<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_DEFINITIONS.BYTE_ARRAY_ACCESS);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE;<br />

BUFFER : in out CSS_DEFINITIONS.BYTE_ARRAY;<br />

CHARS_READ : out NATURAL);<br />

–– gets a byte array from MESSAGE, copies it into BUFFER and returns the


Space Infrastructure<br />

626<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

626 von/of: 662<br />

–– number of valid bytes in BUFER.<br />

–– Raises BAD_LENGTH if BUFFER is insufficient.<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in out CSS_DEFINITIONS.BYTE_<strong>ST</strong>REAM);<br />

–– VALUE must be in out due to RM 7.4.4(4)<br />

–– GET operations for library version related information:<br />

procedure GET<br />

(THE_MESSAGE: in out CSS_MESSAGE_CONNECTION.MESSAGE;<br />

VERSION : out DB_DEFINITIONS.VERSION_RECORD);<br />

procedure GET<br />

(THE_MESSAGE: in out CSS_MESSAGE_CONNECTION.MESSAGE;<br />

LIB_VERSION: out DB_DEFINITIONS.LIBRARY_VERSION);<br />

procedure GET<br />

(THE_MESSAGE: in out MESSAGE; VALUE: out CSS_TYPES.IO_VALUE_TYPE);<br />

–– This procedure shall be used, if the caller ”knows” the SW_TYPE and the size<br />

–– of VALUE; this means if VALUE.SW_TYPE and/or the size of VALUE is wrong, if VALUE is<br />

–– vector or matrix, then GET_INTO_ERROR will be raised<br />

procedure GET_INTO<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in out CSS_TYPES.IO_VALUE_TYPE);<br />

GET_INTO_ERROR: exception;<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.CSS_SW_TYPES);<br />

–– PUT operations for (scalar) CSS_TYPES:<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_BYTE);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_BYTE);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_SHORT_WORD);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_SHORT_WORD);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_INTEGER);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_INTEGER);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.REAL);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.LONG_REAL);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.COMPLEX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in BOOLEAN);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.TIME);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.LONG_DURATION);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.<strong>ST</strong>ATE_CODE);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.PULSE);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.BUR<strong>ST</strong>_PULSE);<br />

–– PUT operations for (composite) CSS_TYPES:<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_BYTE_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_BYTE_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_SHORT_WORD_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_SHORT_WORD_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_INTEGER_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_INTEGER_VECTOR);<br />

procedure PUT


Space Infrastructure<br />

627<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

627 von/of: 662<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.REAL_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.LONG_REAL_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.COMPLEX_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.BOOLEAN_VECTOR);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_BYTE_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_BYTE_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_SHORT_WORD_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_SHORT_WORD_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.UNSIGNED_INTEGER_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.SIGNED_INTEGER_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.REAL_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.LONG_REAL_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.COMPLEX_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.BOOLEAN_MATRIX);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.BYTE_<strong>ST</strong>REAM);<br />

–– PUT operations for other types:<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_DEFINITIONS.<strong>ST</strong>RING_ACCESS);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in <strong>ST</strong>RING);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_DEFINITIONS.DYNAMIC_<strong>ST</strong>RING);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_DEFINITIONS.BYTE_ARRAY_ACCESS);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_DEFINITIONS.BYTE_ARRAY);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_DEFINITIONS.BYTE_<strong>ST</strong>REAM);<br />

procedure PUT<br />

(THE_MESSAGE: in out MESSAGE; VALUE: in CSS_TYPES.IO_VALUE_TYPE);<br />

–– PUT operations for library version related information:<br />

procedure PUT<br />

(THE_MESSAGE: in out CSS_MESSAGE_CONNECTION.MESSAGE;<br />

VERSION : in DB_DEFINITIONS.VERSION_RECORD);<br />

procedure PUT<br />

(THE_MESSAGE: in out CSS_MESSAGE_CONNECTION.MESSAGE;<br />

LIB_VERSION: in DB_DEFINITIONS.LIBRARY_VERSION);<br />

––– deallocation:<br />

procedure FREE (THE_MESSAGE: in out MESSAGE);<br />

–– deallocate dynamic storage space allocated for a message<br />

–– (is automatically reallocated when this message is subsequently used<br />

–– in PUT_xyz calls)<br />

–– Only necessary before a MESSAGE variable becomes inaccessible,<br />

–– not before every READ/WRITE operation!<br />

–––– connection related types –––––––––––––––––––––––––––––––––––––––––––––––––<br />

type CONNECTION_MODE is<br />

(CLIENT, SERVER, –– for sockets (online)<br />

PIPE_READER, PIPE_WRITER, –– for pipes (on/offline)<br />

PERSI<strong>ST</strong>ENT_READER, PERSI<strong>ST</strong>ENT_WRITER); –– for files (offline)<br />

type CONNECTION (MODE: CONNECTION_MODE) is limited private;<br />

subtype CLIENT_CONNECTION is CONNECTION (MODE => CLIENT);<br />

subtype SERVER_CONNECTION is CONNECTION (MODE => SERVER);


Space Infrastructure<br />

628<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

subtype READ_PIPE is CONNECTION (MODE => PIPE_READER);<br />

subtype WRITE_PIPE is CONNECTION (MODE => PIPE_WRITER);<br />

subtype READ_PERSI<strong>ST</strong>ENT is CONNECTION (MODE => PERSI<strong>ST</strong>ENT_READER);<br />

subtype WRITE_PERSI<strong>ST</strong>ENT is CONNECTION (MODE => PERSI<strong>ST</strong>ENT_WRITER);<br />

–– Note that, in contrast to sockets, pipes and especially the<br />

–– offline communication represented by persistents are unidirectional<br />

–– by their very nature.<br />

–– Hence, inappropriate operations (READ–operations on WRITERs and<br />

–– WRITE–operations on READERs) will raise MODE_ERROR (see exceptions).<br />

–––– connection creation ––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

–––– socket oriented online connections –––––––––––––––––––––––––––––––––––<br />

–––– based on symbolic service names:<br />

procedure OPEN_SERVER_CONNECTION<br />

(THE_CONNECTION: in out SERVER_CONNECTION; SERVICE: <strong>ST</strong>RING;<br />

BUFFERING: BOOLEAN := TRUE; NON_BLOCKING: BOOLEAN := FALSE);<br />

procedure OPEN_CLIENT_CONNECTION<br />

(THE_CONNECTION: in out CLIENT_CONNECTION; SERVICE, HO<strong>ST</strong>NAME: <strong>ST</strong>RING;<br />

BUFFERING: BOOLEAN := TRUE; NON_BLOCKING: BOOLEAN := FALSE);<br />

–––– based on port numbers:<br />

procedure OPEN_SERVER_CONNECTION<br />

(THE_CONNECTION: in out SERVER_CONNECTION; PORT: NATURAL;<br />

BUFFERING: BOOLEAN := TRUE; NON_BLOCKING: BOOLEAN := FALSE);<br />

procedure OPEN_CLIENT_CONNECTION<br />

(THE_CONNECTION: in out CLIENT_CONNECTION; PORT: NATURAL; HO<strong>ST</strong>NAME: <strong>ST</strong>RING;<br />

BUFFERING: BOOLEAN := TRUE; NON_BLOCKING: BOOLEAN := FALSE);<br />

–– NOTES:<br />

–– If BUFFERING = FALSE, then Flush is a no–op.<br />

–– If BUFFERING = TRUE, then an actual transmission will only take place<br />

–– on an explicit or implicit FLUSH (several WRITE messages may be collected<br />

–– and transmitted in a larger block to save net transactions and overhead).<br />

–– If NON_BLOCKING = FALSE, then READ and WRITE calls may lead to the<br />

–– suspension of the UNIX process –– nice if you have just one client<br />

–– at a time to serve, not so nice otherwise.<br />

–– If NON_BLOCKING = TRUE, then no suspension of the UNIX process<br />

–– will ever occur, so that other Ada tasks have a chance to run; on the<br />

–– other hand, this involves polling. The decision is up to you.<br />

–– NO MESSAGES EXCEEDING A TOTAL LENGTH OF 4096 BYTES (HEADER + DATA)<br />

–– CAN BE READ FROM NON–BLOCKING SOCKETS!!!<br />

–––– pipe oriented online connections –––––––––––––––––––––––––––––––––––––<br />

procedure OPEN_READING_CONNECTION<br />

(THE_CONNECTION: in out READ_PIPE; NON_BLOCKING: BOOLEAN := FALSE);<br />

–– open a connection reading from the UNIX stdin channel<br />

procedure OPEN_WRITING_CONNECTION<br />

(THE_CONNECTION: in out WRITE_PIPE;<br />

BUFFERING: BOOLEAN := TRUE; NON_BLOCKING: BOOLEAN := FALSE);<br />

–– open a connection writing to the UNIX stdout channel<br />

–––– persistent media (offline connections) –––––––––––––––––––––––––––––––<br />

–– These operations may raise the usual IO_EXCEPTIONS for files.<br />

procedure OPEN_READING_CONNECTION<br />

(THE_CONNECTION: in out READ_PERSI<strong>ST</strong>ENT;<br />

PERSI<strong>ST</strong>ENT_OBJECT: in <strong>ST</strong>RING; –– the file path name<br />

NON_BLOCKING: BOOLEAN := FALSE);<br />

procedure OPEN_WRITING_CONNECTION<br />

(THE_CONNECTION: in out WRITE_PERSI<strong>ST</strong>ENT;<br />

PERSI<strong>ST</strong>ENT_OBJECT: in <strong>ST</strong>RING; –– the file path name<br />

BUFFERING: BOOLEAN := TRUE; NON_BLOCKING: BOOLEAN := FALSE);<br />

–––– connection termination –––––––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure CLOSE (THE_CONNECTION: in out CONNECTION);<br />

–– CAUTION: Please ENSURE that CLOSE is called at least once for each opened<br />

–– connection! (Multiple calls won’t hurt.)<br />

–– Otherwise, (sub–)programs might hang (not be terminated properly)<br />

–– due to an unterminated internal task (the SIGPIPE interrupt handler).<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

628 von/of: 662


Space Infrastructure<br />

629<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– NOTES: This always includes an implicit flush. It never actually closes<br />

–– pipes.<br />

–––– connection I/O procedures ––––––––––––––––––––––––––––––––––––––––––––––––<br />

–– NOTE: These procedures are only legal for a connected CONNECTION,<br />

–– i.e. an un–CLOSEd CONNECTION after an OPEN_CLIENT_CONNECTION call,<br />

–– or the CLIENT_CONNECTION returned by a successful ACCEPT_SINGLE call,<br />

–– or the CLIENT_CONNECTION handed over to the HANDLE_CONNECTION<br />

–– procedure parameter of an instantiated ACCEPT_LOOP.<br />

–– In all other cases, NO_CONNECTION is raised if any of the I/O<br />

–– procedures are called.<br />

procedure READ<br />

(THE_CONNECTION : in out CONNECTION;<br />

THE_MESSAGE : in out MESSAGE);<br />

–– this version always returns with a complete message read<br />

–– (or NO_CONNECTION is raised if all else fails).<br />

–– Don’t confuse this with process suspension; in the non–blocking case<br />

–– it is actually implemented by polling.<br />

–– READ does an implicit FLUSH before reading.<br />

procedure READ<br />

(THE_CONNECTION: in out CONNECTION;<br />

THE_MESSAGE: in out MESSAGE;<br />

SUCCESS: out BOOLEAN);<br />

–– if SUCCESS = FALSE, then no message header was currently available<br />

–– (even blocking connections will return immediately with the appropriate<br />

–– SUCCESS return value).<br />

–– READ does an implicit FLUSH before reading.<br />

procedure WRITE<br />

(THE_CONNECTION : in out CONNECTION;<br />

THE_MESSAGE : in out MESSAGE);<br />

–– when this procedure returns, the message has been completely delivered.<br />

–– Don’t confuse this with process suspension; in the non–blocking case<br />

–– it is actually implemented by polling.<br />

–– For the WRITE case, no immediately–returning version is given, because<br />

–– message delivery must be complete (or not at all).<br />

procedure FLUSH (THE_CONNECTION: in out CONNECTION);<br />

–– Actually sends all messages which may have been buffered by the<br />

–– implementation. No–op if BUFFERING = FALSE (see connection creation).<br />

–– An implicit FLUSH occurs before a socket is closed and when the<br />

–– accumulated length of buffered messages exceeds the (UNIX–internal)<br />

–– socket buffer length of 4096 bytes.<br />

–––– connection testing –––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

function IS_OPEN (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– has CONNECTION successfully been opened, and is it still connected<br />

–– to its peer?<br />

function IS_CONNECTED (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– was CONNECTION successfully connected by OPEN_CLIENT_CONNECTION,<br />

–– OPEN_READING_CONNECTION, OPEN_WRITING_CONNECTION, ACCEPT_SINGLE or<br />

–– ACCEPT_LOOP, and not closed yet?<br />

–– (does NOT check if the connection is still alive!!)<br />

function IS_BUFFERED (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– was CONNECTION opened with BUFFERED => TRUE?<br />

function IS_NON_BLOCKING (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– was CONNECTION opened with NON_BLOCKING => TRUE?<br />

function IS_READING (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– can READ be applied to THE_CONNECTION (i.e. connected<br />

–– and not a unidirectional writer)?<br />

function IS_WRITING (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– can WRITE be applied to THE_CONNECTION (i.e. connected<br />

–– and not a unidirectional reader)?<br />

function IS_BUFFER_EMPTY (THE_CONNECTION: CONNECTION) return BOOLEAN;<br />

–– does CONNECTIONs buffer (if present) still contain unsent messages?<br />

procedure IS_INPUT_READY<br />

(THE_CONNECTION: in out CONNECTION; RESULT: out BOOLEAN);<br />

–– has an up–to–now un–READ message arrived?<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

629 von/of: 662


Space Infrastructure<br />

630<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

–– (i.e., would READ immediately return a message if called now?)<br />

–– NOTE: Only the availability of a complete message header is checked,<br />

–– assuming that in this case the contents of the message will be<br />

–– resp. will become available immediately.<br />

pragma INLINE –– these are really short, so make them inline<br />

(IS_OPEN, IS_CONNECTED, IS_BUFFERED, IS_NON_BLOCKING,<br />

IS_READING, IS_WRITING, IS_BUFFER_EMPTY, IS_INPUT_READY);<br />

–––– server oriented procedures –––––––––––––––––––––––––––––––––––––––––––––––<br />

procedure ACCEPT_SINGLE<br />

(LI<strong>ST</strong>ENING_CONNECTION : in SERVER_CONNECTION;<br />

CLIENT_CONNECTION : out SERVER_CONNECTION);<br />

–– With an already opened server connection, a single connection<br />

–– from a client can be accepted using this call.<br />

–– If it returns normally, then a NEW_CONNECTION has been established.<br />

–– NO_CONNECTION is raised only if something is wrong with CONNECTION.<br />

procedure ACCEPT_SINGLE<br />

(LI<strong>ST</strong>ENING_CONNECTION : in SERVER_CONNECTION;<br />

CLIENT_CONNECTION : out SERVER_CONNECTION;<br />

SUCCESS : out BOOLEAN);<br />

–– this version immediately returns (if non–blocking) and flags<br />

–– by SUCCESS if a connection was established.<br />

–– NO_CONNECTION is raised only if something is wrong with CONNECTION.<br />

generic<br />

with procedure HANDLE_CONNECTION<br />

(CLIENT_CONNECTION: in out SERVER_CONNECTION);<br />

procedure ACCEPT_LOOP (LI<strong>ST</strong>ENING_CONNECTION: in out SERVER_CONNECTION);<br />

–– With an already opened server connection, an ACCEPT_LOOP may be entered<br />

–– which accepts connections from clients and forks UNIX child processes<br />

–– to handle these connections. Each child, when forked successfully,<br />

–– will call the application specific generic parameter procedure<br />

–– HANDLE_CONNECTION and will terminate after its return.<br />

–– Inside ACCEPT_LOOP, the LI<strong>ST</strong>ENING_CONNECTION will be made non–blocking,<br />

–– but the CLIENT_CONNECTION passed to HANDLE_CONNECTION will have the<br />

–– original blocking/non–blocking status.<br />

–– The process which called ACCEPT_LOOP will remain in an endless loop and<br />

–– must be KILLed by whoever started it (the user using a shell command or<br />

–– an appliaction starting it via fork/exec). Orderly termination (by a<br />

–– regular return from ACCEPT_LOOP) may be achieved by sending it a<br />

–– SIGTERM signal (which is caught only while in ACCEPT_LOOP, and e.g.<br />

–– not by the children).<br />

procedure GET_FROM_FILE<br />

(FROM_FILE : in <strong>ST</strong>RING;<br />

MODEL_ID : out DB_DEFINITIONS.MODEL_ID;<br />

SYS_ENV : in out DB_DEFINITIONS.SY<strong>ST</strong>EM_ENVIRONMENT;<br />

USER_ENV : in out DB_DEFINITIONS.USER_ENVIRONMENT;<br />

IO_DESCS_LI<strong>ST</strong> : out DB_DEFINITIONS.IO_DESC_LI<strong>ST</strong>_POINTER;<br />

NO_OF_ARCHS : out CSS_DEFINITIONS.ARCHITECTURES_RANGE;<br />

ARCH_LI<strong>ST</strong> : out CSS_DEFINITIONS.ARCHITECTURE_ARRAY);<br />

––<br />

–– This procedure may be used by the CMAS DB Server only to read parameters<br />

–– written by the CSS DB Server to a file when starting the CMAS DB Server.<br />

–– The file denoted by FROM_FILE will be deleted after reading its data.<br />

––<br />

procedure PUT_TO_FILE<br />

(THE_MESSAGE : in out MESSAGE;<br />

TO_FILE : in <strong>ST</strong>RING);<br />

––<br />

–– This may be used the CSS DB Server only to put a message to a file when<br />

–– passing the message to the CMAS DB Server.<br />

–– The following items are written to the specified file:<br />

–– * transaction ID<br />

–– * system environment for the model<br />

–– * current user environment for the model<br />

–– * library pathname<br />

–– * library SID<br />

–– * library version<br />

–– * relative name of the model root<br />

–– * SID of the model root, if known (otherwise 0)<br />

–– * flag for FILE_BASE or DB_BASED information<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

630 von/of: 662


Space Infrastructure<br />

631<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

631 von/of: 662<br />

–– * if FILE_BASED: name of the root of the css library (absolute UNIX path<br />

–– without the dirname of the library an with trailing<br />

–– slash)<br />

–– * if FILE_BASED: name of the css library (relative UNIX path (relative<br />

–– to ROOT (prior item)) without .lib extension and<br />

–– without trailing slash)<br />

–– * if FILE_BASED: name of the model (relative UNIX path (relative to<br />

–– ROOT) incl. .mod extension but without trailing slash)<br />

–– * the list of architectures a configuration table should be generated<br />

–– for (only architectures for which previously a simulator kernel has<br />

–– been configured)<br />

–– * model (ie TLFB) interface items referencing onboard items<br />

–––– exceptions –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

NO_CONNECTION, –– a connection couldn’t be established, broke down<br />

–– or was disconnected during a READ, WRITE or ACCEPT call<br />

BAD_LENGTH, –– an attempt was made to GET_xyz beyond the end of a message<br />

–– or to GET_<strong>ST</strong>RING with an insufficient BUFFER<br />

–– an attempt was made to GET_xyz with a wrong vector or matrix size<br />

MODE_ERROR, –– a READ operation was attempted on a PIPE– or PERSI<strong>ST</strong>ENT–<br />

–– WRITER or vice versa<br />

PROTOCOL_ERROR: –– a READ of CSS_SW_TYPE got an illegal number<br />

exception;<br />

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

private –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />

type MESSAGE_BUFFER;<br />

type MESSAGE_BUFFER_ACCESS is access MESSAGE_BUFFER;<br />

MESSAGE_HEADER_LENGTH : constant := 12;<br />

type CONNECTION (MODE: CONNECTION_MODE) is record<br />

FD : UNIX_INTERFACE.FILE_HANDLE := UNIX_INTERFACE.FILE_HANDLE (–1);<br />

CONNECTED : BOOLEAN := FALSE;<br />

NON_BLOCK : BOOLEAN := FALSE;<br />

BUFFERED : BOOLEAN := TRUE;<br />

BUFFER : MESSAGE_BUFFER_ACCESS := null;<br />

PEEKED : NUMERIC_TYPES.INTEGER32 range 0..MESSAGE_HEADER_LENGTH := 0;<br />

PEEK_BUFFER: CSS_DEFINITIONS.BYTE_ARRAY (1..MESSAGE_HEADER_LENGTH);<br />

end record;<br />

type MESSAGE is record<br />

OPCODE: NUMERIC_TYPES.UNSIGNED_INTEGER32 := 0;<br />

DETAIL: NUMERIC_TYPES.INTEGER32 := 0;<br />

LENGTH: NUMERIC_TYPES.INTEGER32 := 1;<br />

DATA_LEN: NUMERIC_TYPES.INTEGER32 := 0;<br />

ALLOC_LEN: NUMERIC_TYPES.INTEGER32 := 0;<br />

POSITION: NUMERIC_TYPES.INTEGER32 := 1;<br />

DATA: CSS_DEFINITIONS.BYTE_ARRAY_ACCESS;<br />

end record;<br />

LONGWORD: constant := NUMERIC_TYPES.INTEGER32’SIZE / SY<strong>ST</strong>EM.<strong>ST</strong>ORAGE_UNIT;<br />

–– let’s hope there are no machines with SY<strong>ST</strong>EM.<strong>ST</strong>ORAGE_UNIT > INTEGER32’SIZE<br />

–– or with (INTEGER32’SIZE mod SY<strong>ST</strong>EM.<strong>ST</strong>ORAGE_UNIT /= 0)<br />

for MESSAGE use record<br />

OPCODE at 0*LONGWORD range 0 .. 31;<br />

DETAIL at 1*LONGWORD range 0 .. 31;<br />

LENGTH at 2*LONGWORD range 0 .. 31;<br />

DATA_LEN at 3*LONGWORD range 0 .. 31;<br />

ALLOC_LEN at 4*LONGWORD range 0 .. 31;<br />

POSITION at 5*LONGWORD range 0 .. 31;<br />

DATA at 6*LONGWORD range 0 .. 31;<br />

end record;<br />

for MESSAGE’SIZE use 7*NUMERIC_TYPES.INTEGER32’SIZE;<br />

end CSS_MESSAGE_CONNECTION;


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

7.18 Data Types supported by <strong>CGS</strong> in TES_API and CMAS_IF<br />

7.18.1 <strong>CGS</strong> Data Types Supported<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

632 von/of: 662<br />

The following section gives an overview on datatypes supported by <strong>CGS</strong> for usage in external interfaces<br />

(e.g. within CCSDS Packets).<br />

The types are described as supported at the TES_API interface, where complete CCSDS packets are<br />

exchanged within ADUs or GDUs or where stimuli are sent within GDUs, resp. at the CSS/CMAS<br />

interface, where values are exchanged, that can be taken by CMAS to/from CCSDS Packets or to/from<br />

other data types on the onboard bus.<br />

Legend:<br />

Type in <strong>Interface</strong>.: The type of the value as it is written/read to/from the ADU or GDU<br />

resp. the CCSDS Packet (Data Part)<br />

TM: Telemetry Packet (received in TES inside an ADU via the TES_API)<br />

The following types are supported at this I/F:<br />

UNSIGNED_INTEGER<br />

(SIGNED_)INTEGER<br />

REAL<br />

BYTE_<strong>ST</strong>REAM (can be interpreted / displayed as <strong>ST</strong>RING)<br />

TC: Telecommand Packet (sent by <strong>CGS</strong> inside a GDU via the TES_API)<br />

The following types are supported at this I/F:<br />

UNSIGNED_INTEGER<br />

SIGNED_INTEGER<br />

<strong>ST</strong>ATE_CODE (bypassing decalibration)<br />

REAL<br />

<strong>ST</strong>RING<br />

SID (converted from PATHNAME)<br />

TIME<br />

SW: Software Command / Response Packets<br />

(sent by <strong>CGS</strong> inside a GDU resp. received inside an ADU via the TES_API)<br />

The following types are supported at this I/F:<br />

UNSIGNED_INTEGER<br />

SIGNED_INTEGER<br />

<strong>ST</strong>ATE_CODE (bypassing decalibration)<br />

REAL<br />

BYTE_<strong>ST</strong>REAM (<strong>ST</strong>RING)<br />

SID (converted from PATHNAME) (not in reponse packets)<br />

TIME (not in reponse packets)<br />

AS: Analog Stimulus (sent by <strong>CGS</strong> inside a GDU via the TES_API)<br />

The following types are supported at this I/F:<br />

REAL


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

DS: Discrete Stimulus (sent by <strong>CGS</strong> inside a GDU via the TES_API)<br />

The following types are supported at this I/F:<br />

SIGNED_INTEGER<br />

BP: Binary Packet (sent by <strong>CGS</strong> inside a GDU via the TES_API)<br />

The following types are supported at this I/F:<br />

UNSIGNED_INTEGER<br />

SIGNED_INTEGER<br />

<strong>ST</strong>ATE_CODE (bypassing decalibration)<br />

REAL<br />

<strong>ST</strong>RING<br />

SID (converted from PATHNAME)<br />

SIM: Simulation Measurement: A measurement given to the CMAS I/F<br />

The following types are supported at this I/F:<br />

UNSIGNED_BYTE, UNSIGNED_INTEGER, UNSIGNED_SHORT_WORD<br />

SIGNED_BYTE, SIGNED_INTEGER, SIGNED_SHORT_WORD<br />

<strong>ST</strong>ATE_CODE<br />

BOOLEAN<br />

REAL,LONG_REAL<br />

PULSE, BUR<strong>ST</strong>_PULSE (currently not used by CMAS in CCSDS Packets)<br />

SIS: Simulation Stimulus: A stimulus received from the CMAS I/F<br />

The following types are supported at this I/F:<br />

UNSIGNED_BYTE, UNSIGNED_INTEGER, UNSIGNED_SHORT_WORD<br />

SIGNED_BYTE, SIGNED_INTEGER, SIGNED_SHORT_WORD<br />

<strong>ST</strong>ATE_CODE<br />

BOOLEAN<br />

REAL, LONG_REAL<br />

PULSE, BUR<strong>ST</strong>_PULSE (currently not used by CMAS in CCSDS Packets)<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

633 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Type in <strong>Interface</strong> TM TC SW SIS SIM DS AS BP Comment<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

634 von/of: 662<br />

Integer x x x x x x – x SIS/SIM: 8/16/32 bit<br />

other: 1..32 bits<br />

Unsigned Integer x x x x x x – x SIS/SIM: 8/16/32 bit<br />

other: 1..32 bits<br />

SID (32 bits) – x x (x) (x) – – x converted from Pathname<br />

SIS/SIM:<br />

as normal integer<br />

State Code x x x x x – – x 8 Character<br />

String x x x x x – – x Strings in CCSDS Packets:<br />

up to 255 character<br />

Real/Float x x x x x – x x Floating Point IEEE Std<br />

(32 bits)<br />

Long_Real/Float – – – x x – – Floating Point IEEE Std<br />

(64 bits)<br />

Single Bit x x x x x – – x SIS/SIM: converted to/<br />

from boolean or statecode<br />

other: converted<br />

to/from statecode<br />

Byte Stream x x – (x) (x) – – – Display: as String<br />

(up to 255 bytes)<br />

SIS/SIM:<br />

converted by CMAS<br />

to other types (e.g.integer)<br />

TC: predefined in MDB<br />

CCSDS unsegmented – x x – – – – – refer to CCSDS Standard<br />

time code<br />

CCSDS segmented – – – – – – – – refer to CCSDS Standard<br />

time code


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

7.18.2 <strong>CGS</strong> Data Types: UCL to Raw Value Conversion<br />

UCL Type TM TC SW DS AS BP Format / Comments<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

635 von/of: 662<br />

INTEGER x x x – (1) x GDU: CCSDS: integer (1..32 bit)<br />

GDU: Binary_Packet: integer (1..32 bit)<br />

GDU: Analog Stimulus:<br />

via UCL conversion to REAL (1)<br />

ADU: CCSDS: integer (1..32 bit)<br />

or unsigned_integer (1..32 bit)<br />

ADU: Unstructured: integer (1..32 bit)<br />

or unsigned_integer (1..32 bit)<br />

ADU: Structured: integer (32 bit)<br />

or unsigned_integer (32 bit)<br />

UNSIGNED_INTEGERx x x – (1) x GDU: TC/SW: unsigned_integer (1..32 bit)<br />

GDU:Bin_Pack.:unsigned_integer(1..32 bit)<br />

GDU: Analog Stimulus:<br />

via UCL conversion to REAL (1)<br />

ADU: CCSDS: unsigned_integer (1..32 bit)<br />

ADU: Unstruct: unsigned_integer (1..32 bit)<br />

ADU: Structured: unsigned_integer (32 bit)<br />

ENUMERATION (1) (1) (1) – (1) (1) via UCL conversion to INTEGER<br />

BOOLEAN (2) (2) (2) – (2) (2) via UCL conversion to INTEGER<br />

<strong>ST</strong>RING x x x – – x Up to 256 character<br />

CHARACTER *) *) *) – – *) *) A character can be interpreted as<br />

a string of length 1 (see <strong>ST</strong>RING)<br />

COMPLETION_CODE (2) (2) (2) – (2) (2) via UCL conversion to INTEGER<br />

REAL x x x – x x ADU,GDU (all types):<br />

IEEE FLOATING Point format (32 bits)<br />

or integer (1..32 bit)<br />

or unsigned_integer(1..32 bit)<br />

LONG REAL (1) (1) (1) – (1) (1) via UCL conversion to REAL, if value allows<br />

DURATION (3) (3) (3) – (3) (3) via UCL conversion to REAL<br />

TIME – x x – – – CCSDS Unsegmented Time Code


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

UCL Type TM TC SW DS AS BP Format / Comments<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

636 von/of: 662<br />

PATHNAME – x x – – – GDU: TC/SW: SID (32 bit integer)<br />

GDU: Binary_Packet: SID (32 bit integer)<br />

<strong>ST</strong>ATECODE x x x x – x GDU: CCSDS: unsigned_integer (1..32 bit)<br />

or <strong>ST</strong>ATECODE (8 byte / string)<br />

GDU: Bin_Pack.:unsigned_integer(1..32bit)<br />

or <strong>ST</strong>ATECODE (8 byte / string)<br />

GDU: Discrete_Stimulus:<br />

unsigned_integer (1..32 bit)<br />

ADU: CCSDS:unsigned_integer(1..32 bit)<br />

ADU: Unstruct: unsigned_integer (1..32 bit)<br />

ADU: Structured: unsigned_integer (32 bit)<br />

SETS – – – – – –<br />

BITSET (1) (1) (1) – (1) (1) via UCL conversion to INTEGER or REAL<br />

ARRAY – – – – – –<br />

RECORD – – – – – –<br />

WORD (4) (4) (4) – (4) (4) via UCL conversion to INTEGER or REAL<br />

Notes:<br />

(1) Conversion is supported in UCL between the following types (see UCL LRM):<br />

– INTEGER REAL, LONG_REAL,CHARACTER, ENUMERATION, BITSET<br />

– REAL LONG_REAL<br />

(2) As BOOLEAN and COMPLETION_CODE are enumeration types in UCL, the conversion<br />

BOOLEAN INTEGER and COMPLETION_CODE INTEGER apply.<br />

(3) DURATION is defined as a unitized type. UCL supports conversion from unitized types to REAL<br />

(4) WORD may be converted in UCL to any type which uses one storage unit (32 bits), including INTEGER<br />

(5) The value range in UCL/<strong>CGS</strong> for unsigned integer is defined by 0 .. 2**31–1


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

APPENDIX A :<br />

ACRONYMS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

637 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

A<br />

AD Applicable Document<br />

ADD Architectural Design Document<br />

ADT Abstract Data Type<br />

ADU Acquisition Data Unit<br />

AIL Atomic Implementation Language<br />

AIV Assembly, Integration and Verification<br />

AIT Assembly, Integration and Test<br />

ANSI American National Standards Institute<br />

AP Automated Procedure<br />

API Application Programmer <strong>Interface</strong><br />

APM Attached Pressurized Module<br />

AS Adaptation <strong>System</strong><br />

ASCII American Standard Code for Information Interchange<br />

a.m. above mentioned<br />

B<br />

BNF Backus–Naur Format<br />

BSD Berkeley Software Distribution<br />

C<br />

CASE Computer Aided Software Engineering<br />

CAT Configuration Administration Tool<br />

CCSDS Consultative Committee for Space Data <strong>System</strong>s<br />

CCU Configuration Control Unit<br />

CDI Configuration Data Item<br />

CDU Configuration Data Unit<br />

CEGSE Core EGSE<br />

<strong>CGS</strong> Columbus Ground <strong>System</strong><br />

CEGSE Core Electrical Ground Support Equipment<br />

<strong>CGS</strong>I Columbus Ground <strong>System</strong> Infrastructure<br />

CI Configuration Item<br />

CLS Columbus Language <strong>System</strong><br />

CM Configuration Management<br />

CPA Central Processing Assembly<br />

CPMS Columbus Project Management <strong>System</strong><br />

CSS Core Simulation Software<br />

CTG Code & Table Generator<br />

CU Configuration Unit<br />

C/O CheckOut<br />

D<br />

DADIMA Data Dictionary Maintenance Application<br />

DB DataBase<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

638 von/of: 662


Space Infrastructure<br />

DBA DataBase Administrator<br />

DBMS DataBase Management <strong>System</strong><br />

DBS DataBase <strong>Service</strong>s<br />

DDO Dynamic Display Object<br />

DDS Data Dispatch <strong>Service</strong><br />

DMS Data Management <strong>System</strong><br />

DN Discrepancy Notice<br />

DNI Sun Microsystems DECnet compatible product<br />

DOCT DOCumentation Tools<br />

DPE Data Processing Environment<br />

DS Directory <strong>Service</strong>s<br />

DSA DMS Simulator Assembly<br />

E<br />

ECA EGSE Console Assembly<br />

EDB Engineering DataBase<br />

EEA Error Effects Analysis tool<br />

EGSE Electrical Ground Support Equipment<br />

EPS Electrical Power Subsystem<br />

ESA European Space Agency<br />

ESE Electrical Support Equipment<br />

EVL Engineering Value Log<br />

F<br />

FB Function Block<br />

FC Flight Configuration<br />

FDDI Fibre Distributed Data <strong>Interface</strong><br />

FDIR Fault Detection Isolation and Recovery<br />

FEE Front End Equipment<br />

FIPS Federal Information Processing Standard<br />

FOC Final Operating Capability<br />

FSP FTDSW Server Process<br />

F<strong>ST</strong>P Functional Standard Target Processor<br />

FT File Transfer<br />

FTAM File Transfer, Access and Management<br />

FTDS File Transfer and Directory <strong>Service</strong>s<br />

FTDSW File Transfer And Directory SoftWare<br />

FTP File Transfer Protocol<br />

FWDU Flight Window Definition Utility<br />

FWDU_FE FWDU format editor<br />

FWDU_TE FWDU text editor<br />

G<br />

GDE Ground DMS Equipment<br />

GDI Ground Data Item<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

639 von/of: 662


Space Infrastructure<br />

GDU Generation Data Unit<br />

GMT Greenwich Mean Time<br />

GNC Guidance, Navigation and Control<br />

GSAF Ground Software and Avionics Facility<br />

GSE launch site Ground Support Equipment<br />

GWDU Ground Window Definition Utility<br />

H<br />

HCI Human Computer <strong>Interface</strong> software<br />

HK HouseKeeping (data)<br />

HLCL High Level Command Language<br />

HOOD Hierarchical Object Oriented Design<br />

HP Hewlett Packard<br />

HP–UX HP UNIX<br />

H/W HardWare<br />

I<br />

ICA InterCom Assembly<br />

<strong>ICD</strong> <strong>Interface</strong> Control Document<br />

ID IDentifier<br />

IEEE Institute of Electrical and Electronic Engineers<br />

IF InterFace<br />

IP Internet Protocol<br />

IPC InterProcess Communication<br />

IPSE Integrated Project Support Environment<br />

IRN <strong>Interface</strong> Revision Notice<br />

ISO International Standards Organisation<br />

ISS International Space Station<br />

I/F <strong>Interface</strong><br />

I/O Input/Output<br />

I–Code Interpreted Code<br />

I_MDB Interactive Mission Database<br />

J<br />

K<br />

KB Kilo Byte<br />

Kb Kilo Bit<br />

Kbps Kilo Bits Per Second<br />

L<br />

LAN Local Area Network<br />

LOT LOcal Time<br />

LRU Line Replaceable Unit<br />

M<br />

MB Mega Byte<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

640 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

Mb Mega Bit<br />

Mbps Mega Bits Per Second<br />

MDA Mission Database Application<br />

MDB Mission DataBase<br />

MDE Model Development Environment<br />

MMI Man Machine <strong>Interface</strong><br />

MPS Mission Preparation Software<br />

MRI Model Runtime Information<br />

MTL Master TimeLine<br />

MTP Master Test Processor<br />

MTTC Minimum Telemetry and TeleCommand<br />

MTU Master Timing Unit<br />

N<br />

N/A Not Applicable<br />

NDT Network Diagnostic Tool<br />

NASA National Aeronautics and Space Administration<br />

NFS Network File <strong>System</strong><br />

NIS Network Information <strong>Service</strong>s<br />

NS Network <strong>Service</strong>s<br />

NTBT Not To Be Tracked<br />

NTBT Not To Be Tested<br />

NTP Network Timing Protocol<br />

NW NetWork<br />

NWSW NetWork SoftWare<br />

O<br />

OB OnBoard<br />

ODS Object Description Skeleton<br />

OLWM OpenLook Window Manager<br />

OS Operating <strong>System</strong><br />

OSI Open <strong>System</strong>s Interconnect<br />

P<br />

PA Product Assurance<br />

PIRN Preliminary <strong>Interface</strong> Revision Notice<br />

POCC Payload Operations Control Center<br />

POSIX Portable Operating <strong>System</strong> <strong>Interface</strong> for UNIX<br />

PROFS Professional Office Automation <strong>System</strong><br />

PR PRoduct level – used to indicate test level for requirements<br />

P/L PayLoad<br />

Q<br />

QA Quality Assurance<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

641 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

R<br />

RAM Random Access Memory<br />

RCP Remote CoPy<br />

RD Reference Document<br />

RDBMS Relational Database Management <strong>System</strong><br />

REX Remote EXecution<br />

ROD Review Of Design – a testing method<br />

RPC Remote Procedure Call<br />

RPI Remote Procedural <strong>Interface</strong><br />

RSH Remote SHell<br />

S<br />

SAS Special Application Software<br />

SCA Software Criticality Analysis tool<br />

SCOE Special Check–Out Equipment<br />

SDDF Software Design and Development Facility<br />

SDE Software Development Environment<br />

SF Simulation Facility<br />

SID Short IDentifier<br />

SIVQ Software Integration, Verification and Qualification<br />

SMT Simulated Mission Time<br />

SNA <strong>System</strong> Network Architecture<br />

SPE SPEcification document<br />

SQL Structured Query Language<br />

SRO Software Release Order<br />

SS Sub<strong>System</strong><br />

SSF Space Station Freedom<br />

<strong>ST</strong>AU <strong>ST</strong>andard Acquisition Unit<br />

<strong>ST</strong>P Self Test Process<br />

SunOS Sun Unix Operating <strong>System</strong><br />

SVID <strong>System</strong> V <strong>Interface</strong> Definition<br />

SW SoftWare<br />

SWES SoftWare Entity Support<br />

SWEU SoftWare Exchangeable Unit<br />

SWRU SoftWare Replaceable Unit<br />

SY SYstem level – used to indicate test level for requirements<br />

S/S Sub<strong>System</strong><br />

S/W SoftWare<br />

T<br />

T Test – a testing method<br />

TBC To Be Confirmed<br />

TBD To Be Defined<br />

TBE To Be Extended<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

642 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

TBS To Be Supplied<br />

TC TeleCommand<br />

TC Test Configuration<br />

TCP Transmission Control Protocol<br />

TE Terminal Emulation<br />

TELNET Remote Terminal Protocol<br />

TES Test Execution Software<br />

TEV Test EValuation software<br />

TLUI Top Level User <strong>Interface</strong><br />

TM TeleMetry<br />

TOC Table Of Contents<br />

TP Transport Protocol<br />

TP4 OSI Transport Protocol Class 4<br />

TPS Technical Publishing Software<br />

TPS ASCII Interleaf Text Processing <strong>System</strong> ASCII output format<br />

TRDB Test Result DataBase<br />

TRIT Trace Requirements and <strong>ICD</strong> Tracking tool<br />

TS Table Space<br />

TS Transport <strong>Service</strong>s<br />

TSCV Test Set–up, Configuration and Verification software<br />

TSP Time <strong>Service</strong>s Server Process<br />

TSS Time <strong>Service</strong>s Software<br />

U<br />

UCL User Control Language<br />

UCLC User Control Language Compiler<br />

UDP User Datagram Protocol<br />

UIL User <strong>Interface</strong> Language<br />

UTC Universal Time Code<br />

UTP Unshielded Twisted Pair<br />

UUT Unit Under Test<br />

V<br />

VADS Verdix Ada Development <strong>System</strong><br />

VICOS Verification, Integration and Check–Out <strong>System</strong><br />

VIT Version Identification Table<br />

VT V Terminal<br />

W<br />

WAN Wide Area Network<br />

WDU Window Definition Utility<br />

WS WorkStation<br />

X<br />

XDR eXternal Data Representation<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

643 von/of: 662


Space Infrastructure<br />

Y<br />

Z<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

644 von/of: 662


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

APPENDIX B :<br />

DEFINITIONS<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

645 von/of: 662


Space Infrastructure<br />

A<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

646 von/of: 662<br />

Access rights Define what access various users or applications have to objects or<br />

entities.<br />

Accuracy Accuracy is the software characteristic that provides the required<br />

precision in calculations and outputs.<br />

Action One or more higher–level commands (from Crew, Ground, MCS, or<br />

Master Timeline) to operate the Flight Configuration subsystems or<br />

payloads. The Action contains all pre–checks necessary to ensure a<br />

safe implementation of an automated operation consistent with the<br />

actual mission phase and flight element configuration.<br />

Ad Hoc Error Reporting An error reporting method where the application constructs the contents<br />

of the error message.<br />

Allowable Roles The allocated subset of roles that a particular user may perform.<br />

Application Program or set of programs performing some specialized user–<br />

oriented function (as opposed to general–purpose programs like a<br />

DBMS, or an operating system).<br />

Application Data Application data is defined, in the context of the NWSW, as data<br />

specified by the applications using the NWSW e.g. <strong>CGS</strong>. Its content<br />

and structure are of no importance or interest to the NWSW.<br />

Application Home The directory location assigned to a particular application of <strong>CGS</strong>,<br />

also called Home Directory.<br />

Archive Refers to the process of relegating obsolete data to external backing<br />

storage. The reverse operation (copying archived data back to active<br />

storage) is known as restore.<br />

Archive Files Refer to ’Archiving’<br />

Archiving In VICOS, archiving means storage of data in raw format. All data<br />

received or generated by a testnode is archived in OS files (archive<br />

files). The files are managed after closure as part of the Test Result<br />

DB and made accessable by VICOS evaluation S/W as well as by<br />

SAS.<br />

As–Run–Procedure In VICOS, a Test Step Sequence (or Test Instruction Sequence) is executed<br />

by the Test Step Execution and Guidance Tool, in a dialog<br />

with the operator. The result of each step is stored in the Test Result<br />

DB as the ’As Run–Procedure’. The As–Run–Procedure contains the<br />

OK/Not OK status as well as values for enditems and comments<br />

given by the operator. Each step is timetagged when executed.<br />

Atomic Implementation Language (AIL)<br />

Language used for the implementation of atomic function blocks in<br />

a model definition.<br />

Auditing Process of examining recent transactions to determine if illegal or<br />

fraudulent activity has occurred.<br />

Audit Log Permanent record of important events that occur in a computer system.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

647 von/of: 662<br />

Authorization Permission of a command source to execute a command.<br />

Authorized User see User<br />

Automated Procedure<br />

B<br />

A program written in the User Control Language (UCL).<br />

Baseline An SDE operation used for freezing a configuration of released SDE<br />

objects.<br />

Baseline A SDE operation used for freezing a configuration of SDE reviewed<br />

constituents.<br />

Baseline area A SDE area containing baselined constituents which are under strict<br />

configuration control in the CM area.<br />

Base Function The basic function underlying a function block, which is used in associated<br />

with the function mask to provide the function block, c.f.<br />

Base Function and Function Mask. E.g. An analogy is the invocation<br />

of a C compiler with a set of options; the function block is the C compiler<br />

invoked by ”cc”, the function mask is the specified set of options<br />

”–O”, ”–target”, etc. which specify parameters particular to the invocation<br />

(”optimisation”, ”cross–compilation”, etc.).<br />

C<br />

Calibration In VICOS, calibration means calculation of values for enditems according<br />

to predefined calibration curves, from raw format (i.e. format<br />

as received resp. acquired via devices) into calibrated format.<br />

The result of a calibrated value is the Engineering Value, which<br />

implies an Engineering Unit to be applied.<br />

Check in/out SDE operations to control versions of a SDE object under development.<br />

The check in operation freezes the contents of the checked out<br />

version of an object such that this version can unambiguously be referenced<br />

in the future. The check out operation creates a working copy<br />

with an incremental version number. It is worth pointing out that not<br />

all versions of a constituent represent formal releases: in general,<br />

versions represent just a state of an object that the developer wants<br />

to preserve for his/her own convenience.<br />

Child In a hierarchical structure, denotes an immediate descendant of a<br />

given component. A child is thus located one hierarchical level<br />

below its parent.<br />

CI variant version A specific version of a CI variant<br />

Class–A–check Process of validating the syntax and format of a segment of data denoting<br />

an Action command.<br />

Class–B–check Process of validating and verifying the consistency of resources allocated<br />

within an action w.r.t. the resource’s amount/availability.<br />

Client A process or program that makes use of services provided by another<br />

process or program (called service provider or server).<br />

CM area The SDE CM areas consists of the baseline area and the release area


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

648 von/of: 662<br />

Command Elementary instruction or statement from which a functionality is<br />

called.<br />

Command Execution Report A report provided to the command originator after command execution.<br />

The report specifies whether the command was executed successfully<br />

or not.<br />

Command Status Report A report provided to ground or flight crew (on event occurrence or<br />

on request) comprising all related commands being active at that<br />

time and their current processing status.<br />

Communication Session A communication session is a logical exchange of messages between<br />

two users of the network software, such as in a response/request<br />

scenario when a request from user A solicits one or more responses<br />

from user B. The session can be considered to begin when the request<br />

is sent and finished when the last response has been received. This<br />

definition of a session is only valid when talking in terms of the network<br />

software. It should not be confused with an OSI session because<br />

OSI has its own widely accepted definition.<br />

Compilation Unit Smallest unit of code that is accepted by the compiler. In UCL, there<br />

are 3 types of Compilation Units: Automated Procedure (AP), Library<br />

Specification, and Library Implementation (or Library body).<br />

Completeness Completeness is the software characteristic that ensures full implementation<br />

of the functions required.<br />

Component Component is a generic term used to cover any item in the higher levels<br />

of the software architecture (i.e. product, assembly and subsystem).<br />

Configuration DB Configuration DB is the data base on EGSE site which contains all<br />

test relevant data and configuration definitions for one specific element<br />

(e.g. MTFF). It contains definitions for UUT (UUT specification)<br />

and EGSE Configurations(EGSE specification).<br />

NOTE : see appropriate definitions for UUT spec. and EGSE spec.<br />

The Configuration DB contains several versions of definitions, each<br />

describing a specific configuration.<br />

Configuration DB Version A configuration data base version consists of the selection of parts<br />

from UUT specification data and EGSE specification data relevant<br />

for a set of specific tests.<br />

One configuration data base may contain as many configuration data<br />

base versions as the user wants to define.<br />

Configuration Unit (CU) Collection of MDB items treated as a single unit for configuration<br />

management purposes.<br />

CUs are of two kinds:<br />

(a) Configuration Data Units (CDU), which contain the actual data<br />

(b) Configuration Control Units (CCU), which contain reference information<br />

(CU name, version number, etc.) about other CUs, just like<br />

a directory in a file system.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

649 von/of: 662<br />

Configuration Unit Instance see Version<br />

Configuration Control Unit (CCU)<br />

A Configuration Control Unit is a Configuration Unit used to define<br />

and control other Configuration Units. It identifies which specific<br />

combinations of CDU instances make up a particular configuration.<br />

A Configuration Control Unit may, in turn, point to lower–level control<br />

units, thus leading to a hierarchical configuration tree whose topmost<br />

(root) component corresponds to an entire Columbus Flight<br />

Configuration.<br />

Configuration Data Unit (CDU)<br />

Configuration Data Units are composite entities containing the<br />

actual data items (grouped into individual units for configuration<br />

management purposes).<br />

Connection Matrix Refers to a matrix CM( i,j ) where the columns represent the symptom<br />

vectors of the individual anomalies and rows each stand for a<br />

symptom.<br />

Consistency Consistency is the software characteristic that ensures uniform design<br />

and implementation techniques and notations.<br />

Constrained command see Two Stage Command<br />

Control command A command to CSMM which allows to control the CSMM S/W<br />

functions. It is used for enabling/disabling of automated functions<br />

(e.g. Failure Management, Resource Management) or checking<br />

mechanisms.<br />

Controlled Error Reporting An error reporting method where the application selects an error<br />

message from a pre–defined set of error messages stored in the application<br />

Error Message Database (<strong>CGS</strong>I).<br />

Correctness Correctness is the degree to which the software component satisfies<br />

the specified requirements.<br />

Current Role The role, from the subset of allowable roles, that a particular user has<br />

currently assumed.<br />

D<br />

DATA_API A view based interface to the Mission Database. Provides views for<br />

retrieval from the Mission Database, functions for setting the configuration<br />

and functions for commit/rollback within the chosen configuration.<br />

Data Entry / Data Maintenance<br />

Generally refers to the process of entering and/or updating data in the<br />

database.<br />

In this context, the term ”maintain” refers to any operation which<br />

alters the state of the Database, i.e. add (insert) new data, modify existing<br />

data, or delete data.<br />

Data Type Declarations Type declarations are done in the syntax of the Ada Programming<br />

Language.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

650 von/of: 662<br />

Database A common or integrated collection of interrelated data whose purpose<br />

is to serve one or more applications.<br />

Database Administrator (DBA)<br />

The person(s) responsible for the operation and maintenance of a<br />

DBMS.<br />

Database Integrity Refers to the state in which the database is considered to be undamaged<br />

(both physically and logically).<br />

Database Management <strong>System</strong> (DBMS)<br />

The software responsible for the actual definition, storage and manipulation<br />

of data in a Database at both the physical and logical<br />

level.<br />

Database Server Refers to the processor (network node) physically hosting the Database<br />

and providing DB access services to local or remote applications<br />

(clients).<br />

Database Server Node In VICOS, a database server node is a logical node which provides<br />

services to store and manage access to the Configuration DB as well<br />

as to the Test Result DB.<br />

A logical DB Server node has to be mapped to a physical processor<br />

where it runs on (DB server processor).<br />

Deadlock Situation in which two or more user processes cannot complete their<br />

transactions because each process is holding a resource that the other<br />

process requires in order to complete.<br />

Default a value supplied by the system when a user does not specify a required<br />

parameter, qualifier, or attribute.<br />

Default Role A nominated role, from the subset of allowable roles, that a particular<br />

user defaults to at the start of a SDE session.<br />

Default User The user to whom an error is reported as a default. This is the <strong>CGS</strong><br />

user on whose workstation the error occurred.<br />

Development area A SDE area which contains constituents under development<br />

Diagnosis Assumption about the faults or failures of a system obtained by<br />

examination of the symptoms.<br />

Display (or Screen Display) In this context, refers to an area on the physical screen surface assigned<br />

to applications for the purpose of communicating with the<br />

human users. It may comprise one or several individual partitions<br />

(windows) each assigned to a different application.<br />

Distributed Database A collection of databases that can be operated and managed separately<br />

and also share information.<br />

E<br />

Electronic Test Procedure Refer to ’Test Step’<br />

End–Item see MDB item<br />

Engineering Unit Refer to ’Calibration’<br />

Engineering Value Refer to ’Calibration’


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

651 von/of: 662<br />

Engineering Value Log In VICOS, enditem values may be logged (stored with a time tag) in<br />

calibrated format in special logbooks as part of the Test Result DB.<br />

The values may be evaluated in an offline session without need for<br />

re–calibration.<br />

Error Message The collection of data (textual description, attributes such as reference<br />

number, criticality, time of occurrence, etc.) which describes<br />

the error which has occurred (<strong>CGS</strong>I).<br />

Error Message Mnemonic A short text string used by <strong>CGS</strong>I to index error messages.<br />

Error Message Spec An error message spec. is the same as an error message, except that<br />

it does not include the time of occurrence: this is the form in which<br />

<strong>CGS</strong>I stores error messages.<br />

Error Report The act of invoking the <strong>CGS</strong>I provided error reporting facility.<br />

Error Reporter The invoked function block wishing to report an error.<br />

Evaluation Application A tool within VICOS TEV or an SAS using TEV that performs a specific<br />

evaluation task.<br />

Evaluation Definition An end item of the Configuration Database containing a definition<br />

used by TEV. Following types of evaluation definition are defined:<br />

– HLCL Sequence<br />

– Selection Criteria (for logging event evaluation)<br />

– Statistic Definition (for statistical analysis)<br />

– Listing Definition (for listings)<br />

– Synoptic Display Definition<br />

– Graph Definition<br />

– Dump Criteria (TBC) (for raw data dump)<br />

– Report Definition (for generation of a test report).<br />

Evaluation Result File A file containing the output of a VICOS TEV tool for further processing<br />

or for storage. Several types of evaluation results files are identified:<br />

– Logging Evaluation File<br />

(contains the result of an logging event evaluation)<br />

– Statistic File (contains the result of a statistical analysis)<br />

– Listing File (contains a listing)<br />

– Synoptic Display File<br />

(contains state of a synoptic display at a certain moment<br />

of time of the animation –graphic)<br />

– Graph File<br />

(contains the state of a graph at a certain moment of time<br />

of the animation–graphic)<br />

– Dump File (contains the result of a raw data dump)<br />

– Report (contains a report).<br />

Event Log In VICOS, events (errors, out–of–limit exceptions, user input etc.)<br />

may be logged (stored with a time tag) in special logbooks as part<br />

of the Test Result DB. The events may be evaluated in an offline<br />

session by producing a selected list of events, ordered according to<br />

time tags.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

652 von/of: 662<br />

Exception An out–of–limits condition or a status inconsistent with the value obtained<br />

by the monitoring function. In both cases, the current operational<br />

state is taken into account. An exception may also be derived<br />

from other values.<br />

Export In the MDA context, this term refers to the process of extracting data<br />

from a DB and preparing it for inclusion (import) into another DB.<br />

F<br />

Failure The termination of the ability of a functional unit to perform its required<br />

functions (ISO). A failure may occur when a fault is encountered.<br />

In the FDIR terminology, a failure is defined as the behavior of a<br />

functional unit which is different from that expected.<br />

Fault An accidental condition that causes a functional unit to fail to perform<br />

its required functions (ISO). A fault if encountered, may cause<br />

a failure.<br />

Formal Language Specifications<br />

Formal language specifications are done in extended Backus–Naur<br />

Form (EBNF).<br />

Function Block A component of <strong>CGS</strong> functionality which is invoked as a single entity,<br />

c.f. Base Function and Function Mask.<br />

Function Mask A mask which provides a map onto the functions provided by the<br />

function block, implying the selection or non–selection of each function,<br />

c.f. Base Function and Function Mask.<br />

G<br />

Ground Software All software that executes in any COLUMBUS ground computer or<br />

in the flight configuration computers during pre–launch ground<br />

operations.<br />

H<br />

Heterogeneous system Refers to a system comprising different types of processors or operating<br />

systems.<br />

Hierarchical Name Tree see Name Tree<br />

High Level Command Language (HLCL)<br />

Language used for interactive commanding in the Ground <strong>System</strong>.<br />

HLCL Command A HLCL command is any command which can be given interactively<br />

by the user to VICOS. HLCL commands can be given in specific<br />

command windows. Some of them are translated to UCL interactive<br />

commands and transfered to the UCL Interpreter running on the<br />

EGSE test nodes (SCOE, MTP).<br />

are a set of<br />

– specific HLCL commands<br />

– UCL interactive commands–<br />

Home Directory The directory location assigned to a particular application of <strong>CGS</strong>,<br />

also called Application Home.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

653 von/of: 662<br />

Homogeneous system Refers to a system in which all processors are of the same type or<br />

family (usually from one vendor).<br />

I<br />

Implication Strength Entry in the connection matrix CM (i,j), in the range between zero<br />

and unity, representing the measure of evidence which the symptom<br />

in the i–th row bears to the anomaly in the j–th column.<br />

Import In the MDA context, this term refers to the process of receiving or<br />

including data from an external (possibly remote) DB into the local<br />

DB.<br />

Integrity Integrity is the extent to which the software component controls access<br />

to system resources. (Resources here include database items,<br />

functions, and software controlled hardware).<br />

Interactive Utilities With this term, all normal UNIX programs are meant, such as ’cp’,<br />

’ls’, ’find’,... These programs are, or can be, started from the ’shell’<br />

through ’interaction’ with the user. Those programs report problems<br />

through messages printed to the standard output device (the terminal’s<br />

screen/window). The user can react accordingly. These ’interactive’<br />

programs make use of system calls and library function to<br />

provide their functions. These system calls and library functions are<br />

also referred to as a ’programmatic interface’ to ’non–interactive’<br />

utilities. Example: ’open’, ’read’, ’write’, ’stat’, ’close’, ’unlink’, ....<br />

These ’non–interactive’ utilities report problems through a variable<br />

called ’errno’.<br />

Intermediate code (I–code) The binary code generated by the UCL compiler. It is interpreted at<br />

run time.<br />

Interoperability Interoperability is the extent of effort required to facilitate the interface<br />

of one software component with other systems or software components.<br />

Issue see Version<br />

J<br />

Journal A journal is a list of logging events in a user readable format as produced<br />

by VICOS TEV. It is referred to also as Event Logging List<br />

L<br />

Level Name The name which identifies one node at a particular level in the MDB<br />

hierarchy. A long path name is a concatenation of level names.<br />

Library see Symbol Library, UCL Library<br />

Local Time (LOT) The time to which the system clocks are set is the LOT. It can be e.g.<br />

the official local time, in use at the location of the EGSE’s installation<br />

or GMT or UTC,...The time server for LOT will be the time of<br />

the MTP system clock. This can be set by the system administrator<br />

using Unix shell commands.<br />

Locking Mutual exclusion mechanism used for controlling concurrent access<br />

by multiple users/applications to a shared resource.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

654 von/of: 662<br />

Logbook A logbook is a storage unit (file or may be something else if a DBMS<br />

is used) for events and engineering values. Then there are two types<br />

of Logbooks: the Events Logbooks and the EVL Logbooks.<br />

Logging See ’Event Log’ and ’Engineering Value Log’<br />

Limit In VICOS, monitoring is driven by limits defined for each enditem.<br />

Lower and upper limits can be defined. When VICOS detects an<br />

enditem value which is ’out–of–limits’, a message (’exception’) is<br />

raised if a predefined ’count’ of limit violations is reached. Together<br />

with the generation of exceptions, automatic actions (start of AP,<br />

genertion of stimulli/TC) may be initiated. ’Limits’ for discrete or digiital<br />

enditems are referred to as ’Expected Values’<br />

There are two kinds of limits: ’hard limits’ and ’soft limits’. Hard limits<br />

cannot be changed online and are checked with higher priority<br />

than soft limits. Soft limits can be changed by the test operator in an<br />

ongoing test (online).<br />

Each enditem in VICOS may have a set of soft limits defined. Selection<br />

of one applicable set is driven by conditions or switched when<br />

TC/Stimuli are given or selected by the operator.<br />

M<br />

Master Archive Refer to ’Test Result DB’<br />

MDB Item, MDB Object In the context of this document, these two terms are used interchangeably<br />

to denote a uniquely identifiable entity that has been defined<br />

in the Mission Database ( and corresponds to a real–world HW or SW<br />

entity). An MDB Object or Item may be decomposed into lower–<br />

level items according to the hierarchical nametree conventions, see<br />

Nametree below.<br />

An End–Item is an MDB item located at the lowest hierarchical<br />

level (leaf or terminal node), and hence cannot be further decomposed.<br />

MDB–Item instance An occurrence of a particular MDB item in a given CU version.<br />

Measurement A measurement is a single (analog or digital) intput from a (measurement)<br />

device.<br />

Mission The performance of a coherent set of investigation or operations in<br />

space to achieve space programme goals. A single mission may require<br />

more than one flight, and more than one mission may be accomplished<br />

on a single flight.<br />

Mission Database (MDB) This a CM–controlled ground Database used as repository for all<br />

HW / SW information required for specific Columbus missions or<br />

test configurations. Access to the MDB is controlled and managed<br />

by MDA.<br />

MPS / MDA User see User<br />

N<br />

Nametree Hierarchical (tree) structure within the MDB which portrays the hierarchical<br />

decomposition of Columbus Flight Configurations into


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

655 von/of: 662<br />

systems, subsystems, equipment, etc. The topmost node of the<br />

nametree (called the root node) designates the Flight Configuration,<br />

whereas terminal nodes (leaf nodes) represent the items that cannot<br />

(or need not) be further decomposed, i.e. the so–called end–items.<br />

Each MDB object is thus identifiable by a pathname indicating the<br />

succession of nodes to be traversed to reach that particular item in the<br />

Nametree.<br />

Network A group of computers (workstations) and/or terminals that are linked<br />

together to allow the sharing of resources (data and peripherals).<br />

Network Time Protocol (NTP)<br />

NTP is a time synchronisation protocol used to minimise the offsets<br />

between the system clocks of the computers in a network. In this protocol<br />

the NTP–clients periodically request time information from the<br />

NTP–server. Based upon this information, the NTP–clients adjust<br />

their own clocks in order to get the offset w.r.t. the NTP–server to the<br />

minimum.<br />

Node Any component of a network or tree structure (e.g. LAN node,<br />

nametree node).<br />

O<br />

Operating <strong>System</strong> (OS) The system software that controls the computer and its parts, performing<br />

the basic tasks such as allocating memory, and allowing<br />

computer components to communicate.<br />

Operator The person who operates any system comprising software and hardware<br />

using the provided computer input devices (e.g. keyboard,<br />

pointing device, voice input, pushbuttons, switches etc) and/or computer<br />

output devices (e.g. screen, printer, lamps etc).<br />

P<br />

Parent In a hierarchical structure, denotes an immediate ancestor of a given<br />

component.<br />

Parent Screen See HCI Standards<br />

Pathname see Nametree<br />

Physical Screen See HCI Standards<br />

PL/SQL ORACLE procedural language extension to SQL<br />

Pro*C ORACLE pre–C compiler with embedded SQL.<br />

Procedural <strong>Interface</strong> A procedural interface is an interface which is implemented by a set<br />

of procedures, usually grouped into an Ada package(s). The interface<br />

may be included in the interfacing component without concern for<br />

the underlying implementation, and so allow development and testing<br />

of the underlying component.<br />

Project A SDE project is a CI variant version (also known as a CI instantiation).<br />

A variant exists, for example, for each different target system<br />

of the CI. Variants are, in turn, organised into versions. A version of


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

656 von/of: 662<br />

a variant corresponds, for example, to a major revision of the specification.<br />

Within a version of a variant there are potentially many objects;<br />

each of these may exist in many versions.<br />

Protocol Rules and conventions for organizing data to be sent from one machine<br />

to another. The protocol enables the destination machine to<br />

recognize that the data is addressed to it, check the data to make sure<br />

that it is valid, unpack and decode the data, etc.<br />

Proximity Ratio A measure of the correspondence of observed pattern to predefined<br />

pattern. For failures and faults the proximity ratio is defined as the<br />

quotient of observed to expected symptoms.<br />

Q<br />

Qualification Data Data which is used to implement the qualification functionality of<br />

<strong>CGS</strong>, e.g. test results, test procedures, test cases, trace information<br />

etc.<br />

R<br />

Recovery This is the process where a Database which is damaged (or assumed<br />

to be so) is restored to a previous state known to be consistent.<br />

Remote Utilities A group of generally available UNIX programs providing access to<br />

remote hosts. These programs are activated by the shell to perform<br />

a certain function. Examples are: ’Remote Shell’ (rsh on SunOS or<br />

remsh on HP) will execute the command given as arguments to the<br />

’remote shell’ on the node specified by the first argument; ’Remote<br />

Copy’ (rcp on SunOS and HP) is a copy command where the arguments<br />

can take ’hostname:’ prefixes to indicate the indicated file<br />

must be seen relative to that ”hostname”; ’Remote Login’ (rlogin on<br />

SunOS and HP) will open a channel to the host specified as an argument<br />

and allow the user a login attempt.<br />

Report In the context of this document, a report may be defined as any<br />

human–readable description of one or more MDB items. It is an assorted<br />

collection of information usually presented to the user in form<br />

of a table or itemized list (tabular format).<br />

A report’s specification contains the instructions for generating the<br />

report, e.g. data selection criteria, formatting instructions, and sort<br />

order. This specification may be stored in the MDB.<br />

On request, a report is generated, i.e. the predefined instructions are<br />

executed, and the resulting output routed either to the workstation’s<br />

screen (on–screen report), to the printer or to a user–selected file.<br />

Resource Any of the component parts of the <strong>System</strong>, or the facilities that it<br />

offers (e.g. power, communication channels, etc.).<br />

Resource Allocation The act of making a resource (or part of it) available for use by an Action.<br />

Resource Deallocation The act of freeing or releasing a resource previously allocated; the<br />

resource then becomes available to other users.<br />

Response time For interactive transactions, this refers to the time elapsing between<br />

the ”end of input” signal (e.g. pressing the ENTER, ACCEPT, or


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

657 von/of: 662<br />

COMMIT key) and the first character of the reply reaching the user’s<br />

terminal.<br />

Restore This refers to the process of copying archived data back to active<br />

storage.<br />

Revision see Version<br />

S<br />

Sammi Graphical, interactive process control software. Consists of two<br />

parts. The format editor for creating synoptic displays and the runtime<br />

system for executing synoptic displays.<br />

Screen Display see Display<br />

Semantics Refers to the set of rules dealing with the contextual meaning of the<br />

language elements (symbols, constants, variables, etc.).<br />

Server A process providing services to other cooperating processes.<br />

A DB server is the processor (network node) physically hosting the<br />

Database and providing DB access services to local or remote applications<br />

(clients).<br />

Short Identification A unique identification value for an end item in the Columbus Name<br />

Tree, which may be used to access that item. The pre–compilation<br />

stage in the SDE provides a translation, using an MPS service, of a<br />

full path name for an end item into a short id. The short id is used to<br />

decrease access time to the item when the software containing the<br />

item is executed.<br />

Simulated Mission Time Mission Time starts counting the moment space station Freedom<br />

supplies all services to the APM and all APM circuits are powered.<br />

In order to perform the required EGSE tests, this time has to be simulated,<br />

and the possibility has to be there to manipulate SMT, i.e. to<br />

set, stop and continue SMT.<br />

SMT–domain An SMT–domain is a set of VICOS nodes having their own SMT–<br />

server. Because in a distributed configuration more then one test configuration<br />

can be active at the same time (one configuration in on–<br />

line checkout and a second one in off–line simulation mode) several<br />

SMT–domain, each with its own SMT–server, can exist simultaneously.<br />

Software Exchangeable Unit (SWEU)<br />

All COLUMBUS ground software is configured into SWEUs. An<br />

SWEU is any software unit or component which can be replaced as<br />

a single item. As such it is primarily a configuration management<br />

item and is handled in the same way as an (onboard) SWRU for CM<br />

purposes. ( See also SWRU).<br />

Specific Applic. S/W (SAS) Specific Application S/W (SAS) is the S/W executed in parallel with<br />

VICOS on the same H/W, using VICOS services. It is written in Ada<br />

and executed under the same OS as VICOS is. It is be linked to<br />

VICOS services using VICOS supplied interface libraries. SAS in-


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

658 von/of: 662<br />

cludes the S/W which is written for specific purposes of the EGSE<br />

and is standard for the EGSE. Each special application S/W product<br />

will be produced in the SDE, in which it is identifiable via its name<br />

and a version identification.<br />

Stimulus A stimulus is a single (analog or digital) output to a (stimuli) device.<br />

SWEU data set The data transferred for an SWEU which contains the following<br />

items:<br />

– Configuration Identifier, variant and version<br />

– SWEU SDE name and version<br />

– Object Code<br />

– Object Code Size<br />

– Date of generation of the object code<br />

– Programming Language used for majority of<br />

implementation<br />

– Criticality of the SWEU<br />

– Short identifiers cross reference list.<br />

Software Replaceable Unit (SWRU)<br />

All COLUMBUS flight software is configured as a set of SWRUs.<br />

Some SWRUs can be replaced online. Otheres are replaced by reloading<br />

the pocessor. All SWRUs are configuration management<br />

items in the same way as SWEUs.<br />

SWRU data set The data transferred for an SWRU which contains the following<br />

items:<br />

– Configuration Identifier, variant and version<br />

– SWRU SDE name and version<br />

– Object Code<br />

– Object Code Size<br />

– Date of generation of the object code<br />

– Programming Language used for majority of<br />

implementation<br />

– Criticality of the SWRU<br />

– Replacement type of the SWRU i.e. offline, online, or<br />

embedded<br />

– target processor type i.e. SSCU, <strong>ST</strong>AU, MMC, DBC,<br />

WSA, Equipment level processor<br />

– compatible processors that could be used for re–allocation<br />

– Short identifiers cross reference list.<br />

Solicited Connection Request A solicited connection request is a connection request that a NWSW<br />

user on a specific node makes to some other NWSW instantiation executing<br />

in the network.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

659 von/of: 662<br />

Sustainable Date Rate A sustainable data rate is a rate of data traffic that can be maintained<br />

for a relatively long period of time, where the period of time is of, at<br />

least, the order of seconds (the number of seconds depends upon the<br />

context).<br />

SWRU Support Set Refers to the set of data and procedures required to control and automate<br />

the generation and exchange of SWRUs. The SWRU Support<br />

Set typically includes: offline generation procedure, maintenance information,<br />

verification information, replacement procedure and<br />

other general information (identification, version, generation date,<br />

size, criticality, target processor type, etc.).<br />

Symptom Indicator of faults or failures.<br />

Synoptic Displays Synoptic Displays is a VICOS HCI window service which allow the<br />

human user to display and manipulate Synoptic Picture within windows<br />

at the workstation screens.<br />

Synoptic Picture A Synoptic Picture is defined as content of a Synoptic Displays window.<br />

It is a predefined graphical picture that represents the physical<br />

devices and subsystems (EGSE or UUT). It contains output elements<br />

that are dynamicly animated (to indicate status / values) as well as<br />

input elements that allow for commanding the devices/subsystems<br />

by direct mouse manipulation.<br />

<strong>System</strong> Administrator A person responsible for the operation and maintenance of the operating<br />

system of a computer.<br />

T<br />

Telecommand (TC) The data uplinked from the ground to a spacecraft is known as telecommands.<br />

It contains requests to the onboard system or bulk data.<br />

In the Columbus EGSE the data is sent to the Spacecraft via the TM/<br />

TC Front End. The protocols used are baselined to be CCSDS path<br />

service, and therefore TC data is uplinked in CCSDS packets.<br />

In VICOS, a TC is always a single request. Bulk data is to be uplinked<br />

by S/W outside VICOS (SAS) using VICOS services. TC and Stimuli<br />

are handled in a similar way.<br />

Telemetry (TM) The data downlinked from a spacecraft to the ground is known as telemetry<br />

data. It contains status data of the onboard system. In the Columbus<br />

EGSE the data is acquired from the Spacecraft via the TM/<br />

TC Front End. The protocols used are baselined to be CCSDS path<br />

service, and therefore TM data is downlinked in CCSDS packets.<br />

In VICOS TM packets and measurments are handled in a similar<br />

way.<br />

Test Node In VICOS, a test node is a logical node which provides the data interfaces<br />

to the UUT, either directly or via frontend equipment. Test<br />

nodes require data from the UUT, generate data to it, process data<br />

(calibration and monitoring) and interprete Automatic Procedures.<br />

A logical test node has to be mapped to a physical processor where<br />

it runs on (test processor).<br />

Test Results In VICOS, the term test results is summarising all data produced during<br />

a test session that are foreseen for long term storage or offline


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

660 von/of: 662<br />

evaluation. Test Results comprise at least:<br />

– raw data archive files<br />

– event logging data<br />

– engineering value logging data<br />

– printable reports<br />

– graphical output<br />

– data sets produced for intermediate storage of<br />

engineering enditems<br />

– the ’as–run–procedure’<br />

– other<br />

Test Result DB In VICOS, the Test Result DB (TRDB) contains all data produced<br />

in different test sessions, either during test execution or test evaluation<br />

It contains an index of all data items (Master Archive), indicating<br />

the name, the related time frame and the location of storage for<br />

each item.<br />

The Test Result DB is managed by VICOS DBS and consists of<br />

Oracle Tables as well as of OS files.<br />

The Master Archive is a sort of index that allows to retrieve data<br />

stored on the Mass Storage according to criteria like time, test<br />

session, evaluation session. The Master Archive is located on a Magnetic<br />

Disc of the EGSE Database Server.<br />

The Mass Storage contains physically all the data: Logbooks, Archive<br />

Files, Evaluation Result Files. It is accessed thru the Master Archive.<br />

The data will be stored temporarily on magnetic disc and then<br />

on several storage media (Long Term Storage Medium e.g. optical<br />

disc).<br />

The Visible Part of the TRDB is the part that can be directly accessed<br />

at a certain instant of time. That means, it is the Master Archive plus<br />

the data of the Mass Storage stored on magnetic disc and on the Long<br />

Term Storage Media actually mounted.<br />

Test Session In VICOS, a test session is a term identifying a sequence of operations<br />

and activities within a given time frame, related to a specific<br />

set of test objectives, together with the generated test results and a<br />

reference to the used configuration. A test session has a unique name,<br />

and an index of all results produced in the test session is stored in the<br />

Test Session Table within the Master Archive as part of the Test Result<br />

DB.<br />

There are two kinds of test sessions:<br />

– the Online Test Session, which is produced during an online test<br />

– the Evaluation Test Session, which is produced by a specific user<br />

when data evaluation is performed offline.<br />

Traceability Traceability is the software characteristic that provides a thread of<br />

origin from the implementation to the requirements with respect to<br />

the specified development envelope and operational environment.<br />

Traceability Data Data which provides traceability information between items of a<br />

component of components of the development process.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

661 von/of: 662<br />

Transaction Single thread of related activities representing a sequence of operations<br />

initiated by the occurrence of a stimulus and ending with the<br />

required response.<br />

Translation Table A translation table (in the context of the NWSW) is a data structure<br />

that contains information relating the physical network address of a<br />

NWSW instantiation to the logical ASCII name by which it is known<br />

to the user.<br />

Two–stage Command A command which requires confirmation from the originator before<br />

it is executed.<br />

U<br />

Unit Unit is a generic term used to cover any lower level item of breakdown<br />

in the software architecture e.g. module, object etc.<br />

Unit Under Test (UUT) UUT means a spacecraft or a part of a spcecraft where the EGSE is<br />

connected to and which is foreseen to be checked out using the EGSE<br />

and VICOS.<br />

Unsolicited Connection Request<br />

An unsolicited connection request is a connection request that a<br />

NWSW user on a specific node receives without prior notice from<br />

some other NWSW instantiation executing in the network.<br />

User Throughout this document the term User or MPS / MDA User refers<br />

to any person using MDA–provided services. Users are grouped into<br />

different classes or categories and will be assigned different privileges<br />

based on the task they perform.<br />

User Control Language (UCL)<br />

Columbus Test and Operations language (used for real–time control<br />

& monitoring purposes in both the onboard and ground environment)<br />

User Name The method used to identify the authorised users of the <strong>CGS</strong> installation.<br />

User Working Environment A user working environment is a specific S/W environment, which<br />

is appropriate to a human user (e.g. test conductor, test observer) and<br />

his task. It enables the user to start automatically the applications<br />

with the corresponding windows needed for his work (e.g. creation<br />

of a Synoptic Displays window and start of the AP’s belonging to it).<br />

See also ’S/W Environment (VICOS User)’.<br />

UCL Library Encapsulation mechanism for UCL data structures and operations.<br />

(can be viewed as a collection of functions, procedures, types, etc.)<br />

A UCL Library corresponds to a package in Ada or a module in<br />

Modula–2.<br />

V<br />

Version In the course of its life cycle, a Configuration Unit (CU) usually undergoes<br />

several modifications due to evolving user requirements, design<br />

changes, etc.


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

662 von/of: 662<br />

It will thus possibly exist within the MDB in many different forms<br />

or instances (CU occurrences) commonly referred to as versions,<br />

e.g. DMS Version 3.2.1.<br />

In the Configuration Management (CM) context, however, the various<br />

CU occurrences. are classified according to the types of changes<br />

that have been made. The terms versions, issues, and revisions are<br />

then used to differentiate between the following 3 cases:<br />

– Modifications due to requirements changes which result in a new<br />

version<br />

– Modifications due to design changes which result in a new issue.<br />

– Modifications due to bug fixes, repairs or other corrections (affecting<br />

neither the design nor the requirements) which result in a new<br />

revision.<br />

(In the above example, the CU Identifier ”DMS Version 3.2.1”,<br />

therefore, refers to Version 3, Issue 2, Revision 1 of the DMS)<br />

Visibility When a file is accessible by a a normal UNIX program (excluding<br />

’remote utilities’), then the file is considered ’visible’. Without a network,<br />

visibility is restricted to local disks, tapes and other peripherals.<br />

When the system is integrated into a network, then some files/<br />

directories on other devices in the network may become ’visible’ to<br />

the local machine through the use of NFS. Another way to describe<br />

it would be: a file is ’visible’ when its name can be specified (opened)<br />

to the UNIX system call ”open”.<br />

NOTE: ’Visibility’ has nothing to do with a user’s access rights to a<br />

particular file. A file may be ’visible’ to the host program running<br />

with ’root’ privileges but at the same time be inaccessible to a normal<br />

user.<br />

W<br />

Widget An object providing a user interface abstraction (for example, a<br />

Scrollbar widget).<br />

X<br />

X11 X Window <strong>System</strong> Version 11 is a library which provides functions<br />

to write applications with a graphical user interface running on a network.<br />

Working Directory A disc space containing the intermediate files for a specific tool and<br />

a specific user.<br />

Workstation Node In VICOS, a workstation node is a logical node which provides the<br />

interface to the operator and executes operator related functions for<br />

test execution monitoring and control, for test setup, for test preparation<br />

and for test evaluation. It runs the VICOS HCI, the TSCV and<br />

the TEV.<br />

A logical workstation node has to be mapped to a physical processor<br />

where it runs on (workstation processor).


Space Infrastructure<br />

Dok.-Nr/Doc. No.:<br />

Ausgabe/Issue:<br />

Überarbtg./Rev.:<br />

Seite/Page:<br />

COL–RIBRE–<strong>ICD</strong>–0025–00<br />

4 Datum/Date: 17/04/98<br />

B Datum/Date: 31/08/00<br />

662 von/of: 662<br />

It will thus possibly exist within the MDB in many different forms<br />

or instances (CU occurrences) commonly referred to as versions,<br />

e.g. DMS Version 3.2.1.<br />

In the Configuration Management (CM) context, however, the various<br />

CU occurrences. are classified according to the types of changes<br />

that have been made. The terms versions, issues, and revisions are<br />

then used to differentiate between the following 3 cases:<br />

– Modifications due to requirements changes which result in a new<br />

version<br />

– Modifications due to design changes which result in a new issue.<br />

– Modifications due to bug fixes, repairs or other corrections (affecting<br />

neither the design nor the requirements) which result in a new<br />

revision.<br />

(In the above example, the CU Identifier ”DMS Version 3.2.1”,<br />

therefore, refers to Version 3, Issue 2, Revision 1 of the DMS)<br />

Visibility When a file is accessible by a a normal UNIX program (excluding<br />

’remote utilities’), then the file is considered ’visible’. Without a network,<br />

visibility is restricted to local disks, tapes and other peripherals.<br />

When the system is integrated into a network, then some files/<br />

directories on other devices in the network may become ’visible’ to<br />

the local machine through the use of NFS. Another way to describe<br />

it would be: a file is ’visible’ when its name can be specified (opened)<br />

to the UNIX system call ”open”.<br />

NOTE: ’Visibility’ has nothing to do with a user’s access rights to a<br />

particular file. A file may be ’visible’ to the host program running<br />

with ’root’ privileges but at the same time be inaccessible to a normal<br />

user.<br />

W<br />

Widget An object providing a user interface abstraction (for example, a<br />

Scrollbar widget).<br />

X<br />

X11 X Window <strong>System</strong> Version 11 is a library which provides functions<br />

to write applications with a graphical user interface running on a network.<br />

Working Directory A disc space containing the intermediate files for a specific tool and<br />

a specific user.<br />

Workstation Node In VICOS, a workstation node is a logical node which provides the<br />

interface to the operator and executes operator related functions for<br />

test execution monitoring and control, for test setup, for test preparation<br />

and for test evaluation. It runs the VICOS HCI, the TSCV and<br />

the TEV.<br />

A logical workstation node has to be mapped to a physical processor<br />

where it runs on (workstation processor).


CHAPTER 1 :<br />

INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

1<br />

1.1 Identification and Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

2<br />

1.2 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

2<br />

1.3 Reader Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

2<br />

1.4 Type of Described <strong>Interface</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

3<br />

CHAPTER 2 :<br />

APPLICABLE AND REFERENCE DOCUMENTS . . . . . . . . . . . . . . .<br />

4<br />

2.1 Applicable Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

5<br />

2.2 Reference Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7<br />

CHAPTER 3 :<br />

GENERAL DESCRIPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

8<br />

3.1 <strong>CGS</strong> Functional Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

9<br />

CHAPTER 4 :<br />

INFRA<strong>ST</strong>RUCTURE INTERFACES . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

12<br />

4.1 Operating <strong>System</strong> <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

13<br />

4.1.1 Operating <strong>System</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

13<br />

4.1.2 File <strong>System</strong> Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

4.1.2.1 Home Directories for <strong>CGS</strong> Products . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

4.1.2.1.1 Sun Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

14


4.1.2.1.1.1 GSAF Home Directory . . . . . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

4.1.2.1.1.2 <strong>CGS</strong> Home Directory . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

4.1.2.1.1.3 Product Home Directories . . . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

4.1.2.1.2 HP Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

14<br />

4.1.2.2 Subdirectories for <strong>CGS</strong> Products . . . . . . . . . . . . . . . . . . . . . . . .<br />

15<br />

4.1.2.2.1 Start–Up Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

15<br />

4.1.2.2.2 Executable Images (Platform dependent) . . . . . . . . . . . . . .<br />

15<br />

4.1.2.2.3 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

15<br />

4.1.2.2.4 Utilities and Tools (Platform dependent) . . . . . . . . . . . . . . .<br />

15<br />

4.1.2.2.5 Configuration Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

16<br />

4.1.2.2.6 Runtime Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

16<br />

4.1.2.2.7 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

16<br />

4.1.2.3 Special Checkout related Directories . . . . . . . . . . . . . . . . . . . . .<br />

16<br />

4.1.2.3.1 Test Node Directory on the HP Test Nodes . . . . . . . . . . . . .<br />

16<br />

4.1.2.3.2 Test Node Directories on the SUN Database Server . . . . . .<br />

17<br />

4.1.2.4 Home Directories For <strong>CGS</strong> Extensions And Add–Ons . . . . . . .<br />

17<br />

4.1.2.4.1 Special Application Software (SAS) . . . . . . . . . . . . . . . . . .<br />

17<br />

4.1.2.4.2 Command And Measurement Adaptation Software<br />

(CMAS) . . . . . .<br />

18<br />

4.1.2.4.3 Mission Database Support Software (MDB_SS) . . . . . . . . .<br />

18<br />

4.1.3 Common User Environment Files . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

20<br />

4.1.3.1 Central Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

21<br />

4.1.3.1.1 Central ”login” Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

21<br />

4.1.3.1.2 Central ”cshrc” Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

23<br />

4.1.3.1.3 Central ”logout” Script . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

27


4.2 Relational Database Management <strong>System</strong> . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.1 Functional <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.1.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2 Database Installation and Configuration . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2.1 Predefined Object Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2.1.1 User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2.1.2 Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2.1.3 Public Synonyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2.1.4 CRT Device Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

28<br />

4.2.2.2 ORACLE Configuration Parameters . . . . . . . . . . . . . . . . . . . . .<br />

29<br />

4.2.2.2.1 INIT.ORA Configuration File . . . . . . . . . . . . . . . . . . . . . . .<br />

29<br />

4.2.2.2.2 Rollback Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

31<br />

4.2.3 Commercial Product Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

32<br />

4.3 Communication <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

33<br />

4.3.1 Internet Port Number Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

33<br />

4.3.2 Commercial Product Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

34<br />

4.4 Presentation <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

35<br />

4.5 DataViews <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

36<br />

4.6 <strong>CGS</strong> Top Level User <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

37<br />

4.6.1 Error <strong>Service</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

38<br />

4.6.1.1 Definition of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

38<br />

4.6.1.2 Provided Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

38


4.6.1.3<br />

39<br />

Reporting Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.4<br />

39<br />

Addressing the Error Message . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.5<br />

39<br />

Displaying and Logging the Error Message . . . . . . . . . . . . . . .<br />

4.6.1.6<br />

40<br />

Central Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.7<br />

40<br />

Supplying a Timestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.8<br />

40<br />

Supplying Extra Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.9<br />

40<br />

Error Message Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.10<br />

41<br />

Error Message Components . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.1.11<br />

42<br />

Handling of Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.2<br />

44<br />

Error Report Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.3<br />

48<br />

Error <strong>Service</strong>s Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.4<br />

52<br />

Timestamp <strong>Service</strong>s Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.5<br />

55<br />

File Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.5.1<br />

55<br />

File Names and Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.5.1.1<br />

55<br />

Session Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.5.1.2<br />

55<br />

Process Response Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.6.6<br />

56<br />

Installation Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

4.7 Other Commercial Products Version . . . . . . . . . . . . . . . . . . . . . . . . .<br />

57<br />

4.8 <strong>CGS</strong>_Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

58<br />

4.8.1 Informal <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

58<br />

4.8.2 Formal <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

58


CHAPTER 5 :<br />

SOFTWARE DEVELOPMENT INTERFACES . . . . . . . . . . . . . . . . . .<br />

59<br />

5.1 Documentation Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

60<br />

5.1.1 Format of Imported Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

61<br />

5.1.1.1 <strong>Interface</strong> Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

61<br />

5.1.1.2 <strong>Interface</strong> Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

61<br />

5.1.1.2.1 Document Location Conventions . . . . . . . . . . . . . . . . . . . .<br />

61<br />

5.1.1.2.2 Document Filename Conventions . . . . . . . . . . . . . . . . . . . .<br />

61<br />

5.1.1.2.3 Importable DOCUMENT Contents . . . . . . . . . . . . . . . . . . .<br />

61<br />

5.2 Generic Compiler <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

63<br />

5.2.1 Generic C Compiler Environment Integration <strong>Interface</strong> . . . . . . . . .<br />

63<br />

5.2.2 Generic Ada Compiler Environment Integration <strong>Interface</strong> . . . . . . .<br />

63<br />

5.3 Generic Tool <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

64<br />

CHAPTER 6 :<br />

MISSION PREPARATION INTERFACES . . . . . . . . . . . . . . . . . . . . . .<br />

65<br />

6.1 Package MPS_DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

66<br />

6.1.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

66<br />

6.1.1.1 Exceptions due to internal MDB / ORACLE errors . . . . . . . . .<br />

66<br />

6.1.1.2 SID_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

66<br />

6.1.1.3 AUTHORIZATION_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

66<br />

6.1.1.4 USE_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

66<br />

6.1.1.5 ENVIRONMENT_ERROR , CDU/CCU_ERROR . . . . . . . . . .<br />

66


6.1.1.6 PARAMETER_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

67<br />

6.1.1.7 CONSI<strong>ST</strong>ENCY_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

67<br />

6.1.2 Formal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

68<br />

6.2 MDB Standard Entities and Application Programmer <strong>Interface</strong> . .<br />

85<br />

6.3 CLS Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

86<br />

6.3.1 General CLS Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

86<br />

6.3.2 Runtime Representation of UCL Types . . . . . . . . . . . . . . . . . . . . . .<br />

88<br />

6.4 Flexible Tool Invocation <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

94<br />

6.5 Foreign Key Support / PUI Support . . . . . . . . . . . . . . . . . . . . . . . . .<br />

95<br />

6.6 MDB Batch Data Entry Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

96<br />

6.7 I–Code Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

97<br />

6.7.1 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

97<br />

6.7.2 I–Code Record Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

98<br />

6.7.3 I–Code Record Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

99<br />

6.7.4 Architecture of the Stack Machine . . . . . . . . . . . . . . . . . . . . . . . . .<br />

99<br />

6.7.5 I–Code Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

102<br />

6.7.5.1 Instruction Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

103<br />

6.7.5.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

104<br />

6.7.5.3 Detailed I–code Instructions Table . . . . . . . . . . . . . . . . . . . . . .<br />

107<br />

6.7.5.3.1 Instructions with implied parameter . . . . . . . . . . . . . . . . . .<br />

107


6.7.5.3.2 Load Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

110<br />

6.7.5.3.3 Load Address Instructions . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

114<br />

6.7.5.3.4 Store Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

115<br />

6.7.5.3.5 MOVE and CAT Instructions . . . . . . . . . . . . . . . . . . . . . . .<br />

118<br />

6.7.5.3.6 Stack Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

119<br />

6.7.5.3.7 Numerical Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

120<br />

6.7.5.3.8 Comparison Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

130<br />

6.7.5.3.9 BOOLEAN negation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

140<br />

6.7.5.3.10 Allocation Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

140<br />

6.7.5.3.11 Jump Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

141<br />

6.7.5.3.12 Special Jump Instructions . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

142<br />

6.7.5.3.13 Iterative Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

143<br />

6.7.5.3.14 Switch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

144<br />

6.7.5.3.15 Procedure/Function Call Instructions . . . . . . . . . . . . . . . . .<br />

146<br />

6.7.5.3.16 Conversion Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

148<br />

6.7.5.3.17 Miscellaneous Instructions . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

150<br />

6.7.5.3.18 <strong>System</strong> Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

151<br />

6.7.5.3.19 No–operation Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

155<br />

6.7.6 Sample AP and Corresponding I–Code . . . . . . . . . . . . . . . . . . . . . .<br />

156<br />

6.7.7 Procedural <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

159<br />

6.8 Parameter Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

169<br />

6.8.1 Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

169<br />

6.8.2 Parameter Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

169


6.8.3 Encoding Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

170<br />

6.8.3.1 External Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

170<br />

6.8.3.2 Internal Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

171<br />

6.8.4 Example (Call of a library procedure) . . . . . . . . . . . . . . . . . . . . . . .<br />

172<br />

6.8.5 Stack Machine Representation of AP Parameters . . . . . . . . . . . . . .<br />

173<br />

6.9 Flight Synoptic Display Representation Format . . . . . . . . . . . . . . .<br />

174<br />

6.10<br />

175<br />

FWDU Supported Sammi API <strong>Interface</strong>s . . . . . . . . . . . . . . . . . . . . .<br />

6.10.1<br />

175<br />

File Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

6.10.2<br />

176<br />

Logical Server Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

6.10.3<br />

177<br />

Commands to the On–Board <strong>System</strong> . . . . . . . . . . . . . . . . . . . . . . . .<br />

6.10.3.1<br />

177<br />

Software Commanding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

6.10.3.2<br />

177<br />

Pre–Defined Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

6.10.3.3<br />

178<br />

Window Association Information (WAF) . . . . . . . . . . . . . . . . .<br />

6.10.4<br />

180<br />

FWDU Applied Type Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

6.10.4.1<br />

180<br />

Mapping between On–board and <strong>CGS</strong> standard end item types<br />

6.10.4.2 Mapping between <strong>CGS</strong> standard end item types and Sammi<br />

data types . .<br />

180<br />

CHAPTER 7 :<br />

CHECKOUT AND SIMULATION INTERFACES . . . . . . . . . . . . . . . .<br />

182<br />

7.1 Test Setup Invocation <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

183<br />

7.2 VICOS Types Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

185<br />

7.3 HCI Abstract Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

192


7.3.1 General Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

192<br />

7.3.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

193<br />

7.3.2.1 SET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

193<br />

7.3.2.2 GET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

193<br />

7.3.2.3 ALTERNATIVE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

193<br />

7.3.2.4 PACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

194<br />

7.3.2.5 UNPACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

194<br />

7.3.2.6 PACKED_SIZE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

194<br />

7.3.2.7 ADD Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

194<br />

7.3.2.8 Operations on tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

194<br />

7.3.2.9 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

194<br />

7.3.2.10 Particular Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

195<br />

7.3.2.10.1 On Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

195<br />

7.3.2.10.2 On Packing/Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

195<br />

7.3.3 ADT Physical Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

196<br />

7.3.4 ADT CCSDS Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

203<br />

7.3.5 Binary Buffer ADT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

220<br />

7.4 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

228<br />

7.5 TES DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

244<br />

7.6 TES Abstract Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

249<br />

7.6.1 General Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

249


7.6.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

250<br />

7.6.2.1 SET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

250<br />

7.6.2.1.1 GET Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

250<br />

7.6.2.1.2 ALTERNATIVE Function . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.3 PACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.4 UNPACK Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.5 PACKED_SIZE Function . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.6 ADD Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.7 Operations on tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.8 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

251<br />

7.6.2.1.9 Particular Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

252<br />

7.6.2.1.10 On Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

252<br />

7.6.2.1.11 On Packing/Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

252<br />

7.6.3 ADT Raw Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

253<br />

7.6.4 ADT Engineering Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

261<br />

7.6.5 ADT ADU Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

267<br />

7.6.6 ADT ADU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

278<br />

7.6.7 ADT GDU Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

291<br />

7.6.8 ADT GDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

304<br />

7.7 TES Application Programmer <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . .<br />

311<br />

7.8 VICOS Housekeeping Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

330<br />

7.9 <strong>System</strong> Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

338


7.9.1 UCL Ground <strong>System</strong> Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

338<br />

7.9.1.1 Routines Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

338<br />

7.9.1.2 UCL Ground <strong>System</strong> Library Specification . . . . . . . . . . . . . . .<br />

339<br />

7.9.1.3 <strong>Interface</strong> Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

366<br />

7.9.1.3.15 General Conversion Routines . . . . . . . . . . . . . . . . . . . . . . .<br />

423<br />

7.9.2 UCL GROUND_TO_OB_LIB <strong>System</strong> Library . . . . . . . . . . . . . . .<br />

425<br />

7.9.2.1 Routines Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

425<br />

7.9.2.2 UCL GROUND_TO_OB_LIB <strong>System</strong> Library Specification .<br />

425<br />

7.9.2.3 <strong>Interface</strong> Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

431<br />

7.9.3 TCL <strong>System</strong> Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

447<br />

7.9.3.1 Routines Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

447<br />

7.9.3.2 TCL_LIBRARY Specification . . . . . . . . . . . . . . . . . . . . . . . . .<br />

448<br />

7.9.3.3 TCL ASCII Format Specification . . . . . . . . . . . . . . . . . . . . . . .<br />

459<br />

7.10 Onboard Commands and Responses . . . . . . . . . . . . . . . . . . . . . . . . .<br />

461<br />

7.10.1 Software Commands (SWOP_Command) . . . . . . . . . . . . . . . . . . .<br />

461<br />

7.10.1.1 CCSDS Header for Software Commands . . . . . . . . . . . . . . . . .<br />

461<br />

7.10.1.2 CCSDS Data Field for Software Commands . . . . . . . . . . . . . .<br />

462<br />

7.10.1.3 Response Packet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

462<br />

7.10.1.3.1 CCSDS Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

462<br />

7.10.1.3.2 CCSDS Data Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

463<br />

7.10.2 FLAP Execution Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

464<br />

7.10.2.1 CCSDS Header for FLAP Execution Requests . . . . . . . . . . . .<br />

464


7.10.2.2<br />

464<br />

CCSDS Data Field for FLAP Execution Requests . . . . . . . . . .<br />

7.10.2.3<br />

465<br />

Response Packet for FLAP Execution Requests . . . . . . . . . . .<br />

7.10.2.3.1<br />

465<br />

CCSDS Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.10.2.3.2<br />

465<br />

CCSDS Data Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.11<br />

466<br />

DBS Types and Constants Definitions . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.12<br />

482<br />

DBS Application Programmer <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . .<br />

7.13<br />

490<br />

TEV Types and Constants Definitions . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.14<br />

510<br />

TEV Application Programmer <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . .<br />

7.15<br />

567<br />

Test Evaluation Invocation <strong>Interface</strong> . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.15.1<br />

567<br />

TEV Invocation for Interactive Mode . . . . . . . . . . . . . . . . . . . . . . .<br />

7.15.2<br />

567<br />

TEV Batch Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.15.3<br />

568<br />

TEV in Office Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.16<br />

569<br />

EXCEL Representation Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

7.17<br />

570<br />

Command and Measurement Adaptation <strong>System</strong> . . . . . . . . . . . . . .<br />

7.18<br />

632<br />

Data Types supported by <strong>CGS</strong> in TES_API and CMAS_IF . . . . .<br />

7.18.1 <strong>CGS</strong> Data Types Supported<br />

. . . . . . . .<br />

632<br />

7.18.2 <strong>CGS</strong> Data Types: UCL to Raw Value Conversion<br />

. . . . . . . .<br />

635<br />

APPENDIX A :<br />

ACRONYMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

637<br />

APPENDIX B :<br />

DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

645


Figure 1.3–1 <strong>CGS</strong> <strong>Interface</strong> Control Document Structure . . . . . . . . . . . . .<br />

3<br />

Figure 4.1.2.3.2–1 Example of Mounting Test Node Directories on the Database<br />

Server. . . . . . . . . .<br />

17<br />

Figure 6.7–1 I–Code Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

98<br />

Figure 6.7–2 Stack Machine Runtime Layout . . . . . . . . . . . . . . . . . . . . . . .<br />

102<br />

Figure 6.8.3–1 External Parameter Encoding Scheme . . . . . . . . . . . . . . . . . .<br />

170<br />

Figure 6.8.3–2 Internal Parameter Enoding Scheme . . . . . . . . . . . . . . . . . . .<br />

171<br />

Figure 6.8.3–1 Encoded Parameter List . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

172<br />

Figure 6.8.3–1 Global Data Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br />

173

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!