blob: 0cb621c880f9cb97aed4bcdb1b535b9544faa81d (
plain) (
tree)
|
|
--
-- A test program that uses the TS1325 Button and LED packages.
--
with Text_IO;
with I386_Ports;
use I386_Ports;
with TS1325.LED;
use TS1325.LED;
with TS1325.Button;
use TS1325.Button;
with TS1325.Parallel;
use TS1325.Parallel;
procedure Ts1325_Test is
Test_Parallel_Interval: Duration := 1.0;
Read_Button_Interval: Duration := 1.0;
Read_LED_Interval: Duration := 1.0;
Set_LED_Interval: Duration := 0.2;
task Test_Parallel is
entry Start;
end Test_Parallel;
task body Test_Parallel is
W_Data, R_Data: I386_Ports.Byte := 0;
begin
accept Start;
loop
W_Data := W_Data + 1;
Write_Parallel_Port (W_Data);
Read_Parallel_Port (R_Data);
Text_IO.Put_Line ("Parallel Port Loopback: Data Write = " &
I386_Ports.Byte'Image (W_Data) &
", Data Read = " &
I386_Ports.Byte'Image (R_Data));
delay Test_Parallel_Interval;
end loop;
end Test_Parallel;
task Read_Button is
entry Start;
end Read_Button;
task body Read_Button is
begin
accept Start;
loop
if Is_Button_Pressed then
Text_IO.Put_Line ("Button is pressed.");
else
Text_IO.Put_Line ("Button is not pressed.");
end if;
delay Read_Button_Interval;
end loop;
end Read_Button;
task Read_Colour is
entry Start;
end Read_Colour;
task body Read_Colour is
begin
accept Start;
loop
Text_IO.Put_Line ("Reading LED colour as " &
LED_Colour'Image (LED_State.Get));
delay Read_LED_Interval;
end loop;
end Read_Colour;
task Set_Colour is
entry Start;
end Set_Colour;
task body Set_Colour is
Colour: LED_Colour := Off;
begin
accept Start;
loop
LED_State.Set (Colour);
if Colour = LED_Colour'Last then
Colour := LED_Colour'First;
else
Colour := LED_Colour'Succ (Colour);
end if;
delay Set_LED_Interval;
end loop;
end Set_Colour;
begin
Text_IO.Put_Line ("TS-1325 Utilities Test");
Text_IO.Put_Line ("======================");
Text_IO.New_Line;
Text_IO.Put_Line ("-=> Press the button to begin.");
Text_IO.New_Line;
Wait_For_Button_Press;
Set_Colour.Start;
Read_Colour.Start;
Read_Button.Start;
Test_Parallel.Start;
end Ts1325_Test;
|