File: /home/oboss/Users/gec/sources/PUS_Services/On_Board_Scheduler/gen_obs_scheduler.ads
1 --% Compilation Unit: Gen_OBS_Scheduler
2 --
3 --% Category: Generic Package Declaration
4 --
5 --% Release: $Name: $
6 --
7 --% Version: $Revision: 2.0 $
8 --
9 --% Author: $Author: gec $
10 --
11 --% Revision Log:
12 -- $Log: gen_obs_scheduler.ads,v $
13 -- Revision 2.0 2003/04/04 08:51:18 gec
14 -- Initial release of source files serving as baseline for OBOSS-III project.
15 --
16 -- Revision 1.1.1.1 2003/04/04 08:13:14 gec
17 -- Imported using TkCVS
18 --
19 --
20 --
21 --% Project: OBOSS
22 --
23 --% Copyright (C) 2003 by Terma A/S
24 -- Proprietary and intellectual rights of Terma A/S, Denmark,
25 -- are involved in the subject-matter of this material and
26 -- all manufacturing, reproduction, use, disclosure, and
27 -- sales rights pertaining to such subject-matter are
28 -- expressly reserved. This material is submitted for a
29 -- specific purpose as agreed, and the recipient by
30 -- accepting this material agrees that this material will
31 -- not be used, copied, or reproduced in whole or in part
32 -- nor its contents revealed in any manner or to any person,
33 -- except to meet the purpose for which it was submitted and
34 -- subject to the terms of the agreement.
35 --
36 --% Target Dependencies:
37 -- None
38 --% Compiler Dependencies:
39 -- None
40
41 --~-----------------------------------------------------------------------------
42
43 with PUS;
44 with Mission_Parameters;
45 with Task_Priority_Control;
46 generic
47
48 --% Generic Parameter Constraints:
49 --> Forward_TC - This operation must leave TC counters unchanged
50
51 -- Identification of the application process of the "current" instance of
52 --+ this service
53 My_Application_ID : in Mission_Parameters.APID;
54
55 type TC_List_Range is range <>;
56 -- Range extended to include PUS.Void for safe inicialisation.
57 type TC_List is array (TC_List_Range range <>) of PUS.Optional_PUS_Packet;
58
59 -- Routine for routing telecommands that have been scheduled for execution,
60 --+ should be instantiated with an operation that does NOT update packet
61 --+ counters.
62 with function Forward_TC
63 (Packet : in PUS.PUS_Packet)
64 return Boolean;
65
66 -- Routine that provides a list of TCs that are currently to be executed
67 with function Get_Telecommands_Due
68 return TC_List;
69
70 -- Scheduling_Period indicates the period by which schedulable TCs are
71 --+ extracted and executed.
72 -- On board scheduling is implemented based on polling, meaning that the
73 --+ scheduler task once every Scheduling_Period schedules all TCs due for
74 --+ execution.
75 -- The actual execution time of one telecommand is thus subject to a jitter
76 --+ equaling Scheduling_Period
77 Scheduling_Period : in Integer; -- Expressed in milliseconds
78
79 -- Priority and stack size of cyclic task performing command scheduling
80 Scheduler_Task_Priority
81 : in Task_Priority_Control.Active_Task_Priority;
82 Scheduler_Task_Stack_Size : in Natural;
83
84 package Gen_OBS_Scheduler is
85
86 --% Library Package:
87 -- Performs periodic forwarding of schedulable TCs acquired by
88 --+ Get_Telecommands_Due
89 --% Active Tasks:
90 --> The_Scheduler.The_Cyclic_Task - Cyclic
91 --% Passive Tasks:
92 --> None
93
94 procedure Initialize;
95
96 end Gen_OBS_Scheduler;
97
98 --~-----------------------------------------------------------------------------
99