diff options
Diffstat (limited to 'c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325_test.adb')
-rw-r--r-- | c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325_test.adb | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325_test.adb b/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325_test.adb new file mode 100644 index 0000000000..0cb621c880 --- /dev/null +++ b/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325_test.adb @@ -0,0 +1,115 @@ +-- +-- 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; |