From 33ce3eeca914bfcd643279bd060afe6359ff6dfb Mon Sep 17 00:00:00 2001 From: "Andre L. V. Loureiro" Date: Wed, 27 May 2009 19:19:48 -0400 Subject: [PATCH] created the rederer file --- zukebox_render/src/zb_renderer.py | 89 +++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 zukebox_render/src/zb_renderer.py diff --git a/zukebox_render/src/zb_renderer.py b/zukebox_render/src/zb_renderer.py new file mode 100644 index 0000000..dc8df00 --- /dev/null +++ b/zukebox_render/src/zb_renderer.py @@ -0,0 +1,89 @@ + +from brisa.core.reactors import GLib2Reactor +reactor = GLib2Reactor() + +import brisa +brisa.__enable_offline_mode__ = True + +import os +import dbus.mainloop.glib +import dbus.service + +from brisa.core import config +from brisa.upnp.device import Device +from brisa.upnp.services.connmgr import ConnectionManagerRenderer + +from zukebox_renderer.services.avtransport import AVTransport +from zukebox_renderer.services.render_control import RenderingControl + +dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + +class ZukeBoxRenderer(dbus.service.Object): + """ZukeBox Audio Renderer + ZukeBox Renderer allow "play" a stream of audio, that come from a + ControlPoint or ZukeBox Audio Server. + + ZukeBox Audio Renderer has a DBus interface where there are the + following methods: + halt() - Halts the ZukeBox renderer + ... + """ + DBUS_SERVICE_NAME = "br.org.zagaia" + DBUS_OBJ_PATH = "/br/org/zagaia/zukebox/ZukeBoxRenderer" + DBUS_IFACE = "br.org.zagaia.zukebox.ZukeBoxRenderer" + + def __init__(self, srv_name, listen_url=""): + """Constructor + @param srv_name: the server name + @param listen_url: the url to be listen requests + + @type srv_name: string + @type listen_url: string + """ + bus = dbus.SessionBus() + busname = dbus.service.BusName(self.DBUS_IFACE, bus=bus) + dbus.service.Object.__init__(self, busname, self.DBUS_OBJ_PATH) + + self.server_name = srv_name + self.listen_url = listen_url + + self.device = None + + def _create_device(self): + model_name = "ZukeBox Renderer version 0.1" + project_page = 'http://portal.fucapi.br/nepcomp/zagaia' + serial_no = "0000010" + self.device = Device('urn:schemas-upnp-org:device:ZukeBoxRenderer:1', + self.server_name, + force_listen_url=self.listen_url, + manufacturer='ZukeBox Team. Zagaia Laboratory' + manufacturer_url=project_page, + model_description='A Renderer fo audio types', + model_name=model_name, + model_number=serial_no, + model_url=project_page, + serial_number=serial_no) + + def _create_services(self): + mod_path = config.get_parameter("zukebox_render", "home") + x_path = os.path.join(mod_path, "xml_descriptions") + + avt = AVTransport(x_path) + rc = RenderingControl(x_path, avt.get_player()) + cm = ConnectionManagerRenderer() + + self.device.add_service(cm) + self.device.add_service(avt) + self.device.add_service(rc) + + def start(self): + self._create_device() + self._create_services() + self.device.start() + reactor.add_after_stop_func(self.device.stop) + reactor.main() + + @dbus.service.method(DBUS_IFACE) + def halt(self): + reactor.main_quit() + -- 1.7.9.5