sync atx api

This commit is contained in:
Devaev Maxim
2020-09-09 16:21:49 +03:00
parent 2d44539484
commit 015baee6d7
4 changed files with 41 additions and 46 deletions

View File

@@ -59,27 +59,27 @@ class BaseAtx(BasePlugin):
# =====
async def power_on(self) -> bool:
async def power_on(self, wait: bool) -> bool:
raise NotImplementedError
async def power_off(self) -> bool:
async def power_off(self, wait: bool) -> bool:
raise NotImplementedError
async def power_off_hard(self) -> bool:
async def power_off_hard(self, wait: bool) -> bool:
raise NotImplementedError
async def power_reset_hard(self) -> bool:
async def power_reset_hard(self, wait: bool) -> bool:
raise NotImplementedError
# =====
async def click_power(self) -> None:
async def click_power(self, wait: bool) -> None:
raise NotImplementedError
async def click_power_long(self) -> None:
async def click_power_long(self, wait: bool) -> None:
raise NotImplementedError
async def click_reset(self) -> None:
async def click_reset(self, wait: bool) -> None:
raise NotImplementedError

View File

@@ -54,25 +54,12 @@ class Plugin(BaseAtx):
# =====
async def power_on(self) -> bool:
async def __stub_power(self, wait: bool) -> bool:
raise AtxDisabledError()
async def power_off(self) -> bool:
power_on = power_off = power_off_hard = power_reset_hard = __stub_power
async def __stub_click(self, wait: bool) -> None:
raise AtxDisabledError()
async def power_off_hard(self) -> bool:
raise AtxDisabledError()
async def power_reset_hard(self) -> bool:
raise AtxDisabledError()
# =====
async def click_power(self) -> None:
raise AtxDisabledError()
async def click_power_long(self) -> None:
raise AtxDisabledError()
async def click_reset(self) -> None:
raise AtxDisabledError()
click_power = click_power_long = click_reset = __stub_click

View File

@@ -130,40 +130,40 @@ class Plugin(BaseAtx): # pylint: disable=too-many-instance-attributes
# =====
async def power_on(self) -> bool:
async def power_on(self, wait: bool) -> bool:
if not (await self.__get_power()):
await self.click_power()
await self.click_power(wait)
return True
return False
async def power_off(self) -> bool:
async def power_off(self, wait: bool) -> bool:
if (await self.__get_power()):
await self.click_power()
await self.click_power(wait)
return True
return False
async def power_off_hard(self) -> bool:
async def power_off_hard(self, wait: bool) -> bool:
if (await self.__get_power()):
await self.click_power_long()
await self.click_power_long(wait)
return True
return False
async def power_reset_hard(self) -> bool:
async def power_reset_hard(self, wait: bool) -> bool:
if (await self.__get_power()):
await self.click_reset()
await self.click_reset(wait)
return True
return False
# =====
async def click_power(self) -> None:
await self.__click("power", self.__power_switch_pin, self.__click_delay)
async def click_power(self, wait: bool) -> None:
await self.__click("power", self.__power_switch_pin, self.__click_delay, wait)
async def click_power_long(self) -> None:
await self.__click("power_long", self.__power_switch_pin, self.__long_click_delay)
async def click_power_long(self, wait: bool) -> None:
await self.__click("power_long", self.__power_switch_pin, self.__long_click_delay, wait)
async def click_reset(self) -> None:
await self.__click("reset", self.__reset_switch_pin, self.__click_delay)
async def click_reset(self, wait: bool) -> None:
await self.__click("reset", self.__reset_switch_pin, self.__click_delay, wait)
# =====
@@ -171,11 +171,15 @@ class Plugin(BaseAtx): # pylint: disable=too-many-instance-attributes
return (await self.get_state())["leds"]["power"]
@aiotools.atomic
async def __click(self, name: str, pin: int, delay: float) -> None:
await aiotools.run_region_task(
"Can't perform ATX click or operation was not completed",
self.__region, self.__inner_click, name, pin, delay,
)
async def __click(self, name: str, pin: int, delay: float, wait: bool) -> None:
if wait:
async with self.__region:
await self.__inner_click(name, pin, delay)
else:
await aiotools.run_region_task(
"Can't perform ATX click or operation was not completed",
self.__region, self.__inner_click, name, pin, delay,
)
@aiotools.atomic
async def __inner_click(self, name: str, pin: int, delay: float) -> None: