supported not inverted leds

This commit is contained in:
Devaev Maxim 2019-04-16 01:16:37 +03:00
parent 9f78c7e637
commit 33bf0e03d7
2 changed files with 20 additions and 6 deletions

View File

@ -183,11 +183,13 @@ def _get_config_scheme() -> Dict:
"atx": {
"enabled": Option(True, type=valid_bool),
"power_led_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"hdd_led_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"power_led_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"hdd_led_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"power_led_inverted": Option(True, type=valid_bool),
"hdd_led_inverted": Option(True, type=valid_bool),
"power_switch_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"reset_switch_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"click_delay": Option(0.1, type=valid_float_f01),
"long_click_delay": Option(5.5, type=valid_float_f01),

View File

@ -21,6 +21,7 @@
import asyncio
import operator
from typing import Dict
from typing import Callable
@ -60,12 +61,14 @@ def _atx_working(method: Callable) -> Callable:
class Atx: # pylint: disable=too-many-instance-attributes
def __init__(
def __init__( # pylint: disable=too-many-arguments
self,
enabled: bool,
power_led_pin: int,
hdd_led_pin: int,
power_led_inverted: bool,
hdd_led_inverted: bool,
power_switch_pin: int,
reset_switch_pin: int,
@ -88,6 +91,9 @@ class Atx: # pylint: disable=too-many-instance-attributes
self.__power_switch_pin = -1
self.__reset_switch_pin = -1
self.__power_led_inverted = power_led_inverted
self.__hdd_led_inverted = hdd_led_inverted
self.__click_delay = click_delay
self.__long_click_delay = long_click_delay
@ -96,12 +102,18 @@ class Atx: # pylint: disable=too-many-instance-attributes
self.__region = aioregion.AioExclusiveRegion(AtxIsBusyError)
def get_state(self) -> Dict:
if self._enabled:
power_led_state = operator.xor(self.__power_led_inverted, gpio.read(self.__power_led_pin))
hdd_led_state = operator.xor(self.__hdd_led_inverted, gpio.read(self.__hdd_led_pin))
else:
power_led_state = hdd_led_state = False
return {
"enabled": self._enabled,
"busy": self.__region.is_busy(),
"leds": {
"power": ((not gpio.read(self.__power_led_pin)) if self._enabled else False),
"hdd": ((not gpio.read(self.__hdd_led_pin)) if self._enabled else False),
"power": power_led_state,
"hdd": hdd_led_state,
},
}