File: /home/oboss/Users/gec/sources/PUS_Services/Monitor/monitoring_list.ads

1     --% Compilation Unit: Monitoring_List
2     --
3     --% Category: Generic Package Declaration
4     --
5     --% Release:  $Name:  $
6     --
7     --% Version:  $Revision: 2.1 $
8     --
9     --% Author:   $Author: gec $
10     --
11     --% Revision Log:
12     --    $Log: monitoring_list.ads,v $
13     --    Revision 2.1  2003/11/13 14:57:51  gec
14     --    Merged ECSS Migration branch to main trunk.
15     --
16     --    Revision 2.0.8.1  2003/11/13 14:40:50  gec
17     --    Updated On-board Monitoring Service in accordance with ECSS-E-70-41A
18     --
19     --    Revision 2.0  2003/04/04 08:51:13  gec
20     --    Initial release of source files serving as baseline for OBOSS-III
21     --+    project.
22     --
23     --    Revision 1.1.1.1  2003/04/04 08:13:13  gec
24     --    Imported using TkCVS
25     --
26     --
27     --
28     --% Project: OBOSS
29     --
30     --% Copyright (C) 2003 by Terma A/S
31     --  Proprietary and intellectual rights of Terma A/S, Denmark,
32     --  are involved in the subject-matter of this material and
33     --  all manufacturing, reproduction, use, disclosure, and
34     --  sales rights pertaining to such subject-matter are
35     --  expressly reserved. This material is submitted for a
36     --  specific purpose as agreed, and the recipient by
37     --  accepting this material agrees that this material will
38     --  not be used, copied, or reproduced in whole or in part
39     --  nor its contents revealed in any manner or to any person,
40     --  except to meet the purpose for which it was submitted and
41     --  subject to the terms of the agreement.
42     --
43     --% Target Dependencies:
44     --    None
45     --% Compiler Dependencies:
46     --    None
47     
48     --~-----------------------------------------------------------------------------
49     
50     with Protected_Map_Type;
51     with Onboard_Monitoring_Types;
52     with Verification_Types;
53     with Parameter_Monitoring_Definitions;
54     with Monitoring_List_Exceptions;
55     with Task_Priority_Control;
56     generic
57     
58        --% Generic Parameter Constraints:
59        -->   Protected_Task_Priority  - This must be higher than any task using
60        --+    provided operations.
61     
62        -- Maximum number of parameters for which monitoring list is to maintain
63        --+    check defintions
64        Max_Params : in     Natural;
65        -- Maximum number of check definitions assigned to any of parameters in
66        --+    monitoring list
67        Max_Checks : in     Natural;
68     
69        -- Predicate indicating whether the identified validity parameter is
70        --+    currently valid.
71        with function Is_Valid
72              (Validity_ID :        Onboard_Monitoring_Types.Validity_Parameter_No)
73              return Boolean;
74        -- Predicate indicating whether the identified check selection parameter is
75        --+    currently selected
76        with function Is_Selected
77              (Selection_ID
78                   :        Onboard_Monitoring_Types.
79                     Check_Selection_Parameter_Number)
80              return Boolean;
81     
82        -- Priority of protected objects implementing critical region around the
83        --+    monitoring list and collection of check definitions
84        Protected_Map_Priority
85                               : in     Task_Priority_Control.Passive_Task_Priority;
86        Check_Definitions_Collection_Priority
87            : in     Task_Priority_Control.Passive_Task_Priority;
88     
89     package Monitoring_List is
90     
91        --% Library Package:
92        --    Monitoring lits maintaining parameter monitoring information and check
93        --+    state according to definition of service type 12.
94        --% Active Tasks:
95        -->   None
96        --% Passive Tasks:
97        -->   The_Monitoring_List.Map_Protector - Implements critical region
98        --+    protecting the monitroing list state.
99     
100        -- In order to limit the number of critical regions and the conplexity of
101        --+    control flows, the following assumption is made:
102     
103        -- Iterator over domain of monitoring list.
104        type Monitoring_List_Domain is private;
105     
106        -- Given iterator did not match an element in current set of definitions
107        No_Current_Element : exception renames Monitoring_List_Exceptions.
108                    No_Current_Element;
109        -- A given index into the monitoring list did not match any entry
110        No_Selected_Element : exception renames Monitoring_List_Exceptions.
111                    No_Selected_Element;
112     
113        -- Indicates that iteration has covered entire monitoring list domain.
114        Domain_Exhausted : exception;
115     
116        procedure Initialize;
117     
118        --% Subprogram:
119        --    Clears the contents of the monitoring list.
120        --% Parameter Constraints:
121        -->   None
122        --% Exceptions Raised:
123        -->   None
124        procedure Clear;
125     
126        --% Subprogram:
127        --    Add parameter monitoring information to the list for a given parameter
128        --+    ID. Associated check state is initalised as defined for service type
129        --+    (12,5).
130        --    Resulting verification status indicates success or failure to be
131        --+    included in a corresponding telecommand verification packet.
132        --% Parameter Constraints:
133        -->   None
134        --% Exceptions Raised:
135        -->   None
136        function Add_Parameter
137              (ID
138                                 :        Onboard_Monitoring_Types.
139                                   Check_Definition_ID;
140               Interval          :        Onboard_Monitoring_Types.Interval;
141               Validity_No
142                                 :        Onboard_Monitoring_Types.
143                                   Validity_Parameter_No;
144               Value_Repetitions :        Onboard_Monitoring_Types.Value_Number_Rep)
145              return Verification_Types.Verification_Status;
146     
147        --% Subprogram:
148        --    Delete parameter monitoring information related to a given parameter
149        --+    ID from the monitoring list as specified by service (12,6).
150        --    Resulting verification status indicates success or failure to be
151        --+    included in a corresponding telecommand verification packet.
152        --% Parameter Constraints:
153        -->   None
154        --% Exceptions Raised:
155        -->   None
156        function Delete_Parameter
157              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
158              return Verification_Types.Verification_Status;
159     
160        --% Subprogram:
161        --    Assign Validity_No to parameter ID in the monitoring list.
162        --    Resulting verification status indicates success or failure to be
163        --+    included in a corresponding telecommand verification packet.
164        --% Parameter Constraints:
165        -->   None
166        --% Exceptions Raised:
167        -->   None
168        function Modify_Parameter_Validity_Number
169              (ID          :        Onboard_Monitoring_Types.Check_Definition_ID;
170               Validity_No :        Onboard_Monitoring_Types.Validity_Parameter_No)
171              return Verification_Types.Verification_Status;
172     
173        --% Subprogram:
174        --    Predicate indicating whether parameter identified by ID is currently
175        --+    valid according to its associated parameter validity number.
176        --% Parameter Constraints:
177        -->   None
178        --% Exceptions Raised:
179        -->   Monitoring_List_Exceptions.No_Selected_Element - Indicates that no
180        --+    entry exists for ID in monitoring list.
181        function Parameter_Is_Valid
182              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
183              return Boolean;
184     
185        --% Subprogram:
186        --    Enable monitoring at service level as specified for service (12,1).
187        --    Result = true iff this succeeded.
188        --% Parameter Constraints:
189        -->   None
190        --% Exceptions Raised:
191        -->   None
192        function Enable_Monitoring_At_Service_Level
193              return Boolean;
194     
195        --% Subprogram:
196        --    Disable monitoring at service level as specified for service (12,2).
197        --    Result = true iff this succeeded.
198        --% Parameter Constraints:
199        -->   None
200        --% Exceptions Raised:
201        -->   None
202        function Disable_Monitoring_At_Service_Level
203              return Boolean;
204     
205        --% Subprogram:
206        --    Enable monitoring for parameter identified by ID as specified for
207        --+    service (12,1).
208        --    Resulting verification status indicates success or failure to be
209        --+    included in a corresponding telecommand verification packet.
210        --% Parameter Constraints:
211        -->   None
212        --% Exceptions Raised:
213        -->   None
214        function Enable_Monitoring
215              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
216              return Verification_Types.Verification_Status;
217     
218        --% Subprogram:
219        --    Disable monitoring for parameter identified by ID as specified for
220        --+    service (12,2).
221        --    Resulting verification status indicates success or failure to be
222        --+    included in a corresponding telecommand verification packet.
223        --% Parameter Constraints:
224        -->   None
225        --% Exceptions Raised:
226        -->   None
227        function Disable_Monitoring
228              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
229              return Verification_Types.Verification_Status;
230     
231        --% Subprogram:
232        --    Add check definition to set of check definitions associated to
233        --+    parameter identified by ID. As specified for service (12,5).
234        --    Resulting verification status indicates success or failure to be
235        --+    included in a corresponding telecommand verification packet.
236        --% Parameter Constraints:
237        -->   None
238        --% Exceptions Raised:
239        -->   None
240        function Insert_Check_Definition
241              (ID        :        Onboard_Monitoring_Types.Check_Definition_ID;
242               Check_Def :        Onboard_Monitoring_Types.Check_Definition)
243              return Verification_Types.Verification_Status;
244     
245        --    Replace check definition at Position in set of check definitions
246        --+    associated to parameter identified by ID. As specified for service
247        --+    (12,7).
248        --    Resulting verification status indicates success or failure to be
249        --+    included in a corresponding telecommand verification packet.
250        --% Parameter Constraints:
251        -->   None
252        --% Exceptions Raised:
253        -->   None
254        function Replace_Check_Definition
255              (ID        :        Onboard_Monitoring_Types.Check_Definition_ID;
256               Check_Def :        Onboard_Monitoring_Types.Check_Definition;
257               Position  :        Positive)
258              return Verification_Types.Verification_Status;
259     
260        --    Delete check definition of given type at Position in set of check
261        --+    definitions associated to parameter identified by ID. As specified
262        --+    for service (12,7).
263        --    Resulting verification status indicates success or failure to be
264        --+    included in a corresponding telecommand verification packet.
265        --% Parameter Constraints:
266        -->   None
267        --% Exceptions Raised:
268        -->   None
269        function Delete_Check_Definition
270              (ID         :        Onboard_Monitoring_Types.Check_Definition_ID;
271               Check_Type :        Onboard_Monitoring_Types.Check_Definition_Type;
272               Position   :        Positive)
273              return Verification_Types.Verification_Status;
274     
275     
276        --% Subprogram:
277        --    Provides Parameter Monitoring Interval associated to parameter
278        --+    identified by ID.
279        --% Parameter Constraints:
280        -->   None
281        --% Exceptions Raised:
282        -->   No_Selected_Element  - Indiactes that current monitoring list does not
283        --+    contain an entry for ID.
284        function Get_Interval
285              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
286              return Onboard_Monitoring_Types.Interval;
287     
288        --% Subprogram:
289        --    Provides Monitoring Status associated to parameter identified by ID.
290        --+    (Re. service (12,9)).
291        --% Parameter Constraints:
292        -->   None
293        --% Exceptions Raised:
294        -->   No_Selected_Element  - Indiactes that current monitoring list does not
295        --+    contain an entry for ID.
296        function Get_Mode
297              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
298              return Onboard_Monitoring_Types.Monitoring_Status;
299     
300        --% Subprogram:
301        --    Provides Validity Parameter Number associated to parameter identified
302        --+    by ID. (Re. service (12,9)).
303        --% Parameter Constraints:
304        -->   None
305        --% Exceptions Raised:
306        -->   No_Selected_Element  - Indiactes that current monitoring list does not
307        --+    contain an entry for ID.
308        function Get_Validity_No
309              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
310              return Onboard_Monitoring_Types.Validity_Parameter_No;
311     
312        --% Subprogram:
313        --    Provides Value Number Repetitions associated to parameter identified
314        --+    by ID. (Re. service (12,9)).
315        --% Parameter Constraints:
316        -->   None
317        --% Exceptions Raised:
318        -->   No_Selected_Element  - Indiactes that current monitoring list does not
319        --+    contain an entry for ID.
320        function Get_Value_Repetitions
321              (ID :        Onboard_Monitoring_Types.Check_Definition_ID)
322              return Onboard_Monitoring_Types.Value_Number_Rep;
323     
324     
325        -- Operations for iteration over monitoring list domain.
326        -- Get_Monitoring_List_Domain provides an iterator object.
327        -- Iff the predicate Domain_Is_Covered is true, then
328        --+    Get_Next_Check_Definition_ID may be used to get next element in the
329        --+    iteration.
330     
331        --% Subprogram:
332        --    Provides an initialised iterator value for iteration over entire
333        --+    monitoring list domain.
334        --% Parameter Constraints:
335        -->   None
336        --% Exceptions Raised:
337        -->   None
338        function Get_Monitoring_List_Domain
339              return Monitoring_List_Domain;
340     
341        --% Subprogram:
342        --    Predicate indicating whether all elements in the monitoring list have
343        --+    been covered.
344        --% Parameter Constraints:
345        -->   None
346        --% Exceptions Raised:
347        -->   None
348        function Domain_Is_Covered
349              (Dom :        Monitoring_List_Domain)
350              return Boolean;
351     
352        --% Subprogram:
353        --    ID is next element in monitoring list domain. Iterator Dom is updated
354        --+    accordingly.
355        --% Parameter Constraints:
356        -->   None
357        --% Exceptions Raised:
358        -->   Domain_Exhausted  - Indicates that no next element exists as iteration
359        --+    has covered entire domain.
360        procedure Get_Next_Check_Definition_ID
361              (Dom : in out Monitoring_List_Domain;
362               ID  :    out Onboard_Monitoring_Types.Check_Definition_ID);
363     
364        --% Subprogram:
365        --    Provide sequence of check definitions associated to parameter ID.
366        --    Check_Type indicates which of the check definition lists to provide.
367        --    NOTE: Check definitions may be updated, BUT THE LIST STRUCTURE MAY NOT
368        --+    BE CHANGED.
369        --% Parameter Constraints:
370        -->   None
371        --% Exceptions Raised:
372        -->   No_Current_Element  - Indicates that ID does not have an entry in the
373        --+    monitoring list.
374        function Get_Monitoring_Definitions
375              (ID         :        Onboard_Monitoring_Types.Check_Definition_ID;
376               Check_Type :        Onboard_Monitoring_Types.Check_Definition_Type)
377              return Parameter_Monitoring_Definitions.Check_Definitions_List;
378     
379        --% Subprogram:
380        --    Provides atomic acess to contents of first element in Definitions.
381        --% Parameter Constraints:
382        -->   Definitions  - Must not equal
383        --+    Parameter_Monitoring_Definitions.Empty_Check_Definitions_List
384        --% Exceptions Raised:
385        -->   None
386     
387        function Head
388              (Definitions
389                           :        Parameter_Monitoring_Definitions.
390                             Check_Definitions_List)
391              return Onboard_Monitoring_Types.Parameter_Monitoring_Definition;
392     
393        --% Subprogram:
394        --    Provides atomic updating of Definitions removing the first element.
395        --% Parameter Constraints:
396        -->   Definitions  - Must not equal
397        --+    Parameter_Monitoring_Definitions.Empty_Check_Definitions_List
398        --% Exceptions Raised:
399        -->   None
400     
401        procedure Tail
402              (Definitions
403                           : in out Parameter_Monitoring_Definitions.
404                             Check_Definitions_List);
405     
406     
407     private
408     
409        -- Collections of limit check definitions and expected value check
410        --+    definitions
411     
412        type Parameter_Monitoring_Information is
413           record
414              Interval          : Onboard_Monitoring_Types.Interval;
415              Mode              : Onboard_Monitoring_Types.Monitoring_Status;
416              Validity_No       : Onboard_Monitoring_Types.Validity_Parameter_No;
417              Validity          : Boolean;
418              Value_Repetitions : Onboard_Monitoring_Types.Value_Number_Rep;
419              Definitions
420                                : Parameter_Monitoring_Definitions.Check_Definitions;
421           end record;
422     
423        type Parameter_Monitoring_Information_Reference is access
424              Parameter_Monitoring_Information;
425     
426        -- Map is protected by critical region internally in Monitoring list.
427        package The_Monitoring_List is new Protected_Map_Type
428                 (Max_Number_Of_Entries =>
429                     Max_Params,
430                  Key_Type =>
431                     Onboard_Monitoring_Types.Check_Definition_ID,
432                  Element_Type =>
433                     Parameter_Monitoring_Information,
434                  Element_Type_Reference =>
435                     Parameter_Monitoring_Information_Reference,
436                  Protected_Map_Priority =>
437                     Protected_Map_Priority);
438     
439        -- Iterator inherited from the map type.
440        type Monitoring_List_Domain is new The_Monitoring_List.Map_Domain;
441     
442        type Check_Definitions_Iterator is new
443              Parameter_Monitoring_Definitions.Check_Definitions_List;
444     
445     end Monitoring_List;
446     
447     --~-----------------------------------------------------------------------------
448