Source code for genericroboticarm.sila_server.feature_implementations.implicitinteractionservice_impl
# Generated by sila2.code_generator; sila2.__version__: 0.12.2
from __future__ import annotations
from typing import TYPE_CHECKING, List
import logging
from sila2.server import MetadataDict
from genericroboticarm.control.device_interaction import DeviceList
from ..generated.implicitinteractionservice import (
AddDevice_Responses,
ConnectToDevice_Responses,
ImplicitInteractionServiceBase,
RemoveDevice_Responses,
)
if TYPE_CHECKING:
from ..server import Server
[docs]
class ImplicitInteractionServiceImpl(ImplicitInteractionServiceBase):
def __init__(self, parent_server: Server, device_list: DeviceList) -> None:
super().__init__(parent_server=parent_server)
self.devices = device_list
[docs]
def get_CurrentDeviceSet(self, *, metadata: MetadataDict) -> List[str]:
return self.devices.devices
[docs]
def AddDevice(self, ServerName: str, *, metadata: MetadataDict) -> AddDevice_Responses:
self.devices.add_device(ServerName)
[docs]
def ConnectToDevice(self, ServerName: str, Timeout: float, *, metadata: MetadataDict) -> ConnectToDevice_Responses:
client = self.devices.get_client(ServerName, Timeout)
if client:
return True
else:
logging.error(f"Failed to connect to {ServerName}")
return False
[docs]
def RemoveDevice(self, ServerName: str, *, metadata: MetadataDict) -> RemoveDevice_Responses:
self.devices.remove_device(ServerName)