import argparse
import atexit
import threading
import time
from sic_framework import SICComponentManager, utils
from sic_framework.devices.common_desktop.desktop_camera import (
DesktopCamera,
DesktopCameraSensor,
)
from sic_framework.devices.common_desktop.desktop_microphone import (
DesktopMicrophone,
DesktopMicrophoneSensor,
)
from sic_framework.devices.common_desktop.desktop_speakers import (
DesktopSpeakers,
DesktopSpeakersActuator,
)
from sic_framework.devices.common_desktop.desktop_text_to_speech import (
DesktopTextToSpeech,
DesktopTextToSpeechActuator,
)
from sic_framework.devices.common_desktop.desktop_spacemouse import (
DesktopSpaceMouse,
DesktopSpaceMouseSensor
)
from sic_framework.devices.device import SICDevice
desktop_active = False
[docs]
def start_desktop_components():
manager = SICComponentManager(desktop_component_list, client_id=utils.get_ip_adress(), auto_serve=False, name="Desktop")
atexit.register(manager.stop)
from contextlib import redirect_stderr
with redirect_stderr(None):
manager.serve()
[docs]
class Desktop(SICDevice):
[docs]
def __init__(
self, camera_conf=None, mic_conf=None, speakers_conf=None, tts_conf=None
):
super(Desktop, self).__init__(ip="127.0.0.1")
self.configs[DesktopCamera] = camera_conf
self.configs[DesktopMicrophone] = mic_conf
self.configs[DesktopSpeakers] = speakers_conf
self.configs[DesktopTextToSpeech] = tts_conf
global desktop_active
if not desktop_active:
# run the component manager in a thread
thread = threading.Thread(
target=start_desktop_components,
name="DesktopComponentManager-singelton",
)
thread.start()
desktop_active = True
@property
def camera(self):
return self._get_connector(DesktopCamera)
@property
def mic(self):
return self._get_connector(DesktopMicrophone)
@property
def speakers(self):
return self._get_connector(DesktopSpeakers)
@property
def tts(self):
return self._get_connector(DesktopTextToSpeech)
@property
def spacemouse(self):
return self._get_connector(DesktopSpaceMouse)
desktop_component_list = [
DesktopMicrophoneSensor,
DesktopCameraSensor,
DesktopSpeakersActuator,
DesktopTextToSpeechActuator,
DesktopSpaceMouseSensor
]
if __name__ == "__main__":
SICComponentManager(desktop_component_list, name="Desktop")