--------------------------------------------------------------------------- -- -- Filename: -- -- controllers.ads -- -- Description: -- -- XGC Ada demo -- -- Credits: -- -- Copyright (C) 1997, ESTEC - ESA -- Copyright (c) 1999, Chris Nettleton Software -- -- License: -- -- Permission to use copy, modify, and distribute this software for any -- purpose without fee is hereby granted. This software is provided -- "as is", without any express or implied warranty. -- -- Revision: -- -- $Id: $ -- --------------------------------------------------------------------------- package controllers is type Temperature is digits 4; Ambient_Temp : constant Temperature := 1.0; Heating_Rate : constant := 5.0; -- In degrees per second Cooling_Rate : constant := 0.05; -- In degrees per degree (temp difference) per second type Temperature_Range is record Min : Temperature; Max : Temperature; end record; Range_Database : array (1 .. 5) of Temperature_Range := ( Temperature_Range'(10.0, 90.0), Temperature_Range'(30.0, 55.0), Temperature_Range'(15.0, 17.5), Temperature_Range'(90.0, 100.0), Temperature_Range'(44.0, 48.0)); task type Temperature_Controller (n : Integer) is pragma Priority (10); end Temperature_Controller; task type Heater_Simulator (n : Integer) is pragma Priority (10); end Heater_Simulator; task type Heat_Sink (n : Integer) is pragma Priority (11); end Heat_Sink; protected type Temperature_Sensor is procedure Change (T : in Temperature); procedure Get (T : out Temperature); procedure Sink (P : Duration); private Temp : Temperature := Ambient_Temp; end Temperature_Sensor; type Heater_State is (Off, On); protected type Heater is procedure Switch_On; procedure SWitch_Off; function Get_State return Heater_State; private State : Heater_State := Off; end Heater; type Heater_Mode is (Off, On, Auto); Modes : array (1 .. 5) of Heater_Mode := (others => Auto); Sensors : array (1 .. 5) of Temperature_Sensor; Heaters : array (1 .. 5) of Heater; Controller1 : Temperature_Controller (1); Controller2 : Temperature_Controller (2); Controller3 : Temperature_Controller (3); Controller4 : Temperature_Controller (4); Controller5 : Temperature_Controller (5); Simulator1 : Heater_Simulator (1); Simulator2 : Heater_Simulator (2); Simulator3 : Heater_Simulator (3); Simulator4 : Heater_Simulator (4); Simulator5 : Heater_Simulator (5); Sink1 : Heat_Sink (1); Sink2 : Heat_Sink (2); Sink3 : Heat_Sink (3); Sink4 : Heat_Sink (4); Sink5 : Heat_Sink (5); end controllers;