summaryrefslogtreecommitdiff
path: root/kvmd
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2021-04-09 05:57:04 +0300
committerDevaev Maxim <[email protected]>2021-04-09 05:57:04 +0300
commit6f60118320ed0c12a51f1d189b196c3e86aebaa7 (patch)
tree0ff5ec83da45775e3fef12e3662f5ba3b94f9d5d /kvmd
parent6cc161427a0fceff2c010cc60c56d1d1ef7381a4 (diff)
async gpio plugins
Diffstat (limited to 'kvmd')
-rw-r--r--kvmd/apps/kvmd/ugpio.py26
-rw-r--r--kvmd/plugins/ugpio/__init__.py4
-rw-r--r--kvmd/plugins/ugpio/ezcoo.py4
-rw-r--r--kvmd/plugins/ugpio/gpio.py4
-rw-r--r--kvmd/plugins/ugpio/hidrelay.py4
-rw-r--r--kvmd/plugins/ugpio/otgbind.py4
6 files changed, 23 insertions, 23 deletions
diff --git a/kvmd/apps/kvmd/ugpio.py b/kvmd/apps/kvmd/ugpio.py
index d9e283da..d77a81c6 100644
--- a/kvmd/apps/kvmd/ugpio.py
+++ b/kvmd/apps/kvmd/ugpio.py
@@ -91,10 +91,10 @@ class _GpioInput:
},
}
- def get_state(self) -> Dict:
+ async def get_state(self) -> Dict:
(online, state) = (True, False)
try:
- state = (self.__driver.read(self.__pin) ^ self.__inverted)
+ state = (await self.__driver.read(self.__pin) ^ self.__inverted)
except GpioDriverOfflineError:
online = False
return {
@@ -153,12 +153,12 @@ class _GpioOutput: # pylint: disable=too-many-instance-attributes
},
}
- def get_state(self) -> Dict:
+ async def get_state(self) -> Dict:
busy = self.__region.is_busy()
(online, state) = (True, False)
if not busy:
try:
- state = self.__read()
+ state = await self.__read()
except GpioDriverOfflineError:
online = False
return {
@@ -201,27 +201,27 @@ class _GpioOutput: # pylint: disable=too-many-instance-attributes
@aiotools.atomic
async def __inner_switch(self, state: bool) -> None:
- self.__write(state)
+ await self.__write(state)
get_logger(0).info("Ensured switch %s to state=%d", self, state)
await asyncio.sleep(self.__busy_delay)
@aiotools.atomic
async def __inner_pulse(self, delay: float) -> None:
try:
- self.__write(True)
+ await self.__write(True)
await asyncio.sleep(delay)
finally:
- self.__write(False)
+ await self.__write(False)
await asyncio.sleep(self.__busy_delay)
get_logger(0).info("Pulsed %s with delay=%.2f", self, delay)
# =====
- def __read(self) -> bool:
- return (self.__driver.read(self.__pin) ^ self.__inverted)
+ async def __read(self) -> bool:
+ return (await self.__driver.read(self.__pin) ^ self.__inverted)
- def __write(self, state: bool) -> None:
- self.__driver.write(self.__pin, (state ^ self.__inverted))
+ async def __write(self, state: bool) -> None:
+ await self.__driver.write(self.__pin, (state ^ self.__inverted))
def __str__(self) -> str:
return f"Output({self.__channel}, driver={self.__driver}, pin={self.__pin})"
@@ -267,8 +267,8 @@ class UserGpio:
async def get_state(self) -> Dict:
return {
- "inputs": {channel: gin.get_state() for (channel, gin) in self.__inputs.items()},
- "outputs": {channel: gout.get_state() for (channel, gout) in self.__outputs.items()},
+ "inputs": {channel: await gin.get_state() for (channel, gin) in self.__inputs.items()},
+ "outputs": {channel: await gout.get_state() for (channel, gout) in self.__outputs.items()},
}
async def poll_state(self) -> AsyncGenerator[Dict, None]:
diff --git a/kvmd/plugins/ugpio/__init__.py b/kvmd/plugins/ugpio/__init__.py
index a3e24851..2a172c63 100644
--- a/kvmd/plugins/ugpio/__init__.py
+++ b/kvmd/plugins/ugpio/__init__.py
@@ -89,10 +89,10 @@ class BaseUserGpioDriver(BasePlugin):
def cleanup(self) -> None:
raise NotImplementedError
- def read(self, pin: int) -> bool:
+ async def read(self, pin: int) -> bool:
raise NotImplementedError
- def write(self, pin: int, state: bool) -> None:
+ async def write(self, pin: int, state: bool) -> None:
raise NotImplementedError
diff --git a/kvmd/plugins/ugpio/ezcoo.py b/kvmd/plugins/ugpio/ezcoo.py
index 04cb1c43..0605e54c 100644
--- a/kvmd/plugins/ugpio/ezcoo.py
+++ b/kvmd/plugins/ugpio/ezcoo.py
@@ -108,12 +108,12 @@ class Plugin(BaseUserGpioDriver): # pylint: disable=too-many-instance-attribute
if self.__proc.exitcode is not None:
self.__proc.join()
- def read(self, pin: int) -> bool:
+ async def read(self, pin: int) -> bool:
if not self.__is_online():
raise GpioDriverOfflineError(self)
return (self.__channel == pin)
- def write(self, pin: int, state: bool) -> None:
+ async def write(self, pin: int, state: bool) -> None:
if not self.__is_online():
raise GpioDriverOfflineError(self)
if state and (0 <= pin <= 3):
diff --git a/kvmd/plugins/ugpio/gpio.py b/kvmd/plugins/ugpio/gpio.py
index 06b4f6f1..646809ae 100644
--- a/kvmd/plugins/ugpio/gpio.py
+++ b/kvmd/plugins/ugpio/gpio.py
@@ -95,13 +95,13 @@ class Plugin(BaseUserGpioDriver):
except Exception:
pass
- def read(self, pin: int) -> bool:
+ async def read(self, pin: int) -> bool:
assert self.__reader
if pin in self.__input_pins:
return self.__reader.get(pin)
return bool(self.__output_lines[pin].get_value())
- def write(self, pin: int, state: bool) -> None:
+ async def write(self, pin: int, state: bool) -> None:
self.__output_lines[pin].set_value(int(state))
def __str__(self) -> str:
diff --git a/kvmd/plugins/ugpio/hidrelay.py b/kvmd/plugins/ugpio/hidrelay.py
index e17e513f..119c4ee5 100644
--- a/kvmd/plugins/ugpio/hidrelay.py
+++ b/kvmd/plugins/ugpio/hidrelay.py
@@ -113,13 +113,13 @@ class Plugin(BaseUserGpioDriver):
self.__close_device()
self.__stop = True
- def read(self, pin: int) -> bool:
+ async def read(self, pin: int) -> bool:
try:
return self.__inner_read(pin)
except Exception:
raise GpioDriverOfflineError(self)
- def write(self, pin: int, state: bool) -> None:
+ async def write(self, pin: int, state: bool) -> None:
try:
return self.__inner_write(pin, state)
except Exception:
diff --git a/kvmd/plugins/ugpio/otgbind.py b/kvmd/plugins/ugpio/otgbind.py
index cff2d912..dbf3b421 100644
--- a/kvmd/plugins/ugpio/otgbind.py
+++ b/kvmd/plugins/ugpio/otgbind.py
@@ -100,11 +100,11 @@ class Plugin(BaseUserGpioDriver):
def cleanup(self) -> None:
pass
- def read(self, pin: int) -> bool:
+ async def read(self, pin: int) -> bool:
_ = pin
return os.path.islink(self.__get_driver_path(self.__udc))
- def write(self, pin: int, state: bool) -> None:
+ async def write(self, pin: int, state: bool) -> None:
_ = pin
with open(self.__get_driver_path("bind" if state else "unbind"), "w") as ctl_file:
ctl_file.write(f"{self.__udc}\n")