diff options
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.adb | 46 |
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; |