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