summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2019-09-30 01:00:38 +0300
committerDevaev Maxim <[email protected]>2019-09-30 01:00:38 +0300
commit7d6d6fa6f9a69ba01bef8635d21ec4cd7a438085 (patch)
tree1f260ae8fd698814993686e6d89ce269147f431f
parenta089334371c13bd9ece2f04b8122204e14ee3661 (diff)
added otg msd stub
-rw-r--r--configs/kvmd/main/v2-hdmi.yaml2
-rw-r--r--kvmd/plugins/msd/otg.py93
2 files changed, 94 insertions, 1 deletions
diff --git a/configs/kvmd/main/v2-hdmi.yaml b/configs/kvmd/main/v2-hdmi.yaml
index 4b514984..060bede5 100644
--- a/configs/kvmd/main/v2-hdmi.yaml
+++ b/configs/kvmd/main/v2-hdmi.yaml
@@ -23,7 +23,7 @@ kvmd:
type: disabled
msd:
- type: disabled
+ type: otg
streamer:
desired_fps: 30
diff --git a/kvmd/plugins/msd/otg.py b/kvmd/plugins/msd/otg.py
new file mode 100644
index 00000000..70bb3f05
--- /dev/null
+++ b/kvmd/plugins/msd/otg.py
@@ -0,0 +1,93 @@
+# ========================================================================== #
+# #
+# KVMD - The main Pi-KVM daemon. #
+# #
+# Copyright (C) 2018 Maxim Devaev <[email protected]> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <https://www.gnu.org/licenses/>. #
+# #
+# ========================================================================== #
+
+
+import asyncio
+import types
+
+from typing import Dict
+from typing import Type
+from typing import AsyncGenerator
+
+from . import MsdOperationError
+from . import BaseMsd
+
+
+# =====
+class MsdCliOnlyError(MsdOperationError):
+ def __init__(self) -> None:
+ super().__init__("Only CLI")
+
+
+# =====
+class Plugin(BaseMsd):
+ def get_state(self) -> Dict:
+ return {
+ "enabled": False,
+ "multi": False,
+ "online": False,
+ "busy": False,
+ "uploading": False,
+ "written": False,
+ "current": None,
+ "storage": None,
+ "connected": False,
+ }
+
+ async def poll_state(self) -> AsyncGenerator[Dict, None]:
+ while True:
+ yield self.get_state()
+ await asyncio.sleep(60)
+
+ async def reset(self) -> None:
+ raise MsdCliOnlyError()
+
+ # =====
+
+ async def connect(self) -> Dict:
+ raise MsdCliOnlyError()
+
+ async def disconnect(self) -> Dict:
+ raise MsdCliOnlyError()
+
+ async def select(self, name: str) -> Dict:
+ raise MsdCliOnlyError()
+
+ async def remove(self, name: str) -> Dict:
+ raise MsdCliOnlyError()
+
+ async def __aenter__(self) -> BaseMsd:
+ raise MsdCliOnlyError()
+
+ async def write_image_info(self, name: str, complete: bool) -> None:
+ raise MsdCliOnlyError()
+
+ async def write_image_chunk(self, chunk: bytes) -> int:
+ raise MsdCliOnlyError()
+
+ async def __aexit__(
+ self,
+ _exc_type: Type[BaseException],
+ _exc: BaseException,
+ _tb: types.TracebackType,
+ ) -> None:
+
+ raise MsdCliOnlyError()