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": { "atx": {
"enabled": Option(True, type=valid_bool), "enabled": Option(True, type=valid_bool),
"power_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"), "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"), "power_switch_pin": Option(-1, type=valid_gpio_pin, only_if="enabled"),
"reset_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), "click_delay": Option(0.1, type=valid_float_f01),
"long_click_delay": Option(5.5, type=valid_float_f01), "long_click_delay": Option(5.5, type=valid_float_f01),

View File

@ -21,6 +21,7 @@
import asyncio import asyncio
import operator
from typing import Dict from typing import Dict
from typing import Callable from typing import Callable
@ -60,12 +61,14 @@ def _atx_working(method: Callable) -> Callable:
class Atx: # pylint: disable=too-many-instance-attributes class Atx: # pylint: disable=too-many-instance-attributes
def __init__( def __init__( # pylint: disable=too-many-arguments
self, self,
enabled: bool, enabled: bool,
power_led_pin: int, power_led_pin: int,
hdd_led_pin: int, hdd_led_pin: int,
power_led_inverted: bool,
hdd_led_inverted: bool,
power_switch_pin: int, power_switch_pin: int,
reset_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.__power_switch_pin = -1
self.__reset_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.__click_delay = click_delay
self.__long_click_delay = long_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) self.__region = aioregion.AioExclusiveRegion(AtxIsBusyError)
def get_state(self) -> Dict: 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 { return {
"enabled": self._enabled, "enabled": self._enabled,
"busy": self.__region.is_busy(), "busy": self.__region.is_busy(),
"leds": { "leds": {
"power": ((not gpio.read(self.__power_led_pin)) if self._enabled else False), "power": power_led_state,
"hdd": ((not gpio.read(self.__hdd_led_pin)) if self._enabled else False), "hdd": hdd_led_state,
}, },
} }