summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325-led.adb
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325-led.adb')
-rw-r--r--c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325-led.adb46
1 files changed, 46 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325-led.adb b/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325-led.adb
new file mode 100644
index 0000000000..1a213ac2ff
--- /dev/null
+++ b/c/src/lib/libbsp/i386/ts_386ex/tools/ts_1325_ada/ts1325-led.adb
@@ -0,0 +1,46 @@
+package body TS1325.LED is
+
+ protected body LED_State is
+
+ function Get return LED_Colour is
+ State: Byte;
+ Red_On, Green_On: Boolean;
+ begin
+ Inport (LED_Port, State);
+
+ Green_On := (State and Green_Bit) = Green_Bit;
+ Red_On := (State and Red_Bit) /= Red_Bit;
+
+ if not (Green_On or Red_On) then
+ return Off;
+ elsif Green_On and not Red_On then
+ return Green;
+ elsif Green_On and Red_On then
+ return Yellow;
+ else
+ return Red;
+ end if;
+ end Get;
+
+ procedure Set (Col: in LED_Colour) is
+ State: Byte;
+ begin
+ Inport (LED_Port, State);
+
+ case Col is
+ when Off =>
+ State := (State and not Green_Bit) or Red_Bit;
+ when Green =>
+ State := State or Green_Bit or Red_Bit;
+ when Yellow =>
+ State := (State or Green_Bit) and not Red_Bit;
+ when Red =>
+ State := State and not (Green_Bit or Red_Bit);
+ end case;
+
+ Outport (LED_Port, State);
+ end Set;
+
+ end LED_State;
+
+end TS1325.LED;