Beispiel #1
0
  def setup(self, send, log, cfg, botopts):
    BotMod.setup(self, send, log, cfg, botopts)

    def_cfg = {
      'chime_start_sound' : 'sounds/prompt.wav',
      'chime_stop_sound' : 'sounds/finish.wav',
      'play_start_cmd' : '',
      'play_stop_cmd' : '',
      'chime_start_cmd' : 'play %s',
      'chime_stop_cmd' : 'play %s',
      'start_stream_cmd' : 'tools/stream_ssh %s',
      'stop_stream_cmd' : '',
      'play_chimes' : True,
      'start_muted' : False
    }
    cfg = cfg.get_section('player', def_cfg)
    self.log("player_cfg:", cfg)

    self.worker = worker.Worker()
    self.worker.set_chime_sound('start', cfg['chime_start_sound'])
    self.worker.set_chime_sound('stop', cfg['chime_stop_sound'])
    self.worker.set_command('play_start', cfg['play_start_cmd'])
    self.worker.set_command('play_stop', cfg['play_stop_cmd'])
    self.worker.set_command('chime_start', cfg['chime_start_cmd'])
    self.worker.set_command('chime_stop', cfg['chime_stop_cmd'])
    self.worker.set_command('start_stream', cfg['start_stream_cmd'])
    self.worker.set_command('stop_stream', cfg['stop_stream_cmd'])
    self.worker.set_play_chimes(cfg['play_chimes'])
    self.worker.set_callback('state', self._state_cb)
    self.worker.set_callback('error', self._error_cb)
    self.worker.set_callback('info', self._info_cb)

    start_muted = cfg['start_muted']
    self.control = control.Control(self, self.send_event, start_muted)
Beispiel #2
0
    def setup(self, send, log, cfg, botopts):
        BotMod.setup(self, send, log, cfg, botopts)

        def_cfg = {
            'chime_start_sound': 'sounds/prompt.wav',
            'chime_stop_sound': 'sounds/finish.wav',
            'play_start_cmd': '',
            'play_stop_cmd': '',
            'chime_start_cmd': 'play %s',
            'chime_stop_cmd': 'play %s',
            'start_stream_cmd': 'tools/stream_ssh %s',
            'stop_stream_cmd': '',
            'play_chimes': True,
            'start_muted': False
        }
        cfg = cfg.get_section('player', def_cfg)
        self.log("player_cfg:", cfg)

        self.worker = worker.Worker()
        self.worker.set_chime_sound('start', cfg['chime_start_sound'])
        self.worker.set_chime_sound('stop', cfg['chime_stop_sound'])
        self.worker.set_command('play_start', cfg['play_start_cmd'])
        self.worker.set_command('play_stop', cfg['play_stop_cmd'])
        self.worker.set_command('chime_start', cfg['chime_start_cmd'])
        self.worker.set_command('chime_stop', cfg['chime_stop_cmd'])
        self.worker.set_command('start_stream', cfg['start_stream_cmd'])
        self.worker.set_command('stop_stream', cfg['stop_stream_cmd'])
        self.worker.set_play_chimes(cfg['play_chimes'])
        self.worker.set_callback('state', self._state_cb)
        self.worker.set_callback('error', self._error_cb)
        self.worker.set_callback('info', self._info_cb)

        start_muted = cfg['start_muted']
        self.control = control.Control(self, self.send_event, start_muted)
Beispiel #3
0
 def __init__(self):
   BotMod.__init__(self, "audio")
   self.cmds = [
     BotCmd("ping",callee=self.cmd_ping),
     BotCmd("query_state",callee=self.cmd_query_state),
     BotCmd("query_active",callee=self.cmd_query_active),
     BotCmd("query_location",callee=self.cmd_query_location),
     BotCmd("query_listen_url",callee=self.cmd_query_listen_url)
   ]
   listen_url = 'http://%H:8000/pifon'
   location_name = '%h'
   self.opts = [
     BotOptField('sim', bool, False, desc='enable level simulator'),
     BotOptField('trace', bool, False, desc='enable level tracing'),
     BotOptField('listen_url', str, listen_url, desc='url of audio stream'),
     BotOptField('location', str, location_name, desc='location of audio source'),
     BotOptField('alevel', int, 1, val_range=[1,100], desc='audio level to reach in attack phase [1-100]'),
     BotOptField('slevel', int, 1, val_range=[1,100], desc='audio level to stay below in sustain phase [1-100]'),
     BotOptField('attack', int, 3, val_range=[1,10], desc='period [1s] of loudness required to start playback'),
     BotOptField('sustain', int, 10, val_range=[0,60], desc='period [1s] of silence required to stop playback'),
     BotOptField('respite', int, 10, val_range=[0,60], desc='delay [1s] after playback to wait for next'),
     BotOptField('update', int, 5, val_range=[1,60], desc='update interval of current peak level [100ms]')
   ]
   self.events = [
     ConnectEvent(self.on_connected),
     DisconnectEvent(self.on_disconnected),
     TickEvent(self.on_tick)
   ]
   self._setup_tags()
Beispiel #4
0
 def __init__(self, name="info", listener=None, tick=1):
     BotMod.__init__(self, name)
     self.events = [
         ConnectEvent(self.on_connect),
         DisconnectEvent(self.on_disconnect),
         PeerConnectEvent(self.on_peer_connect),
         PeerDisconnectEvent(self.on_peer_disconnect),
         ModListEvent(self.on_modlist),
         PeerModListEvent(self.on_peer_modlist),
         TickEvent(self.on_tick),
         StartEvent(self.on_start),
         StopEvent(self.on_stop),
         # custom events
         BotEvent("audio", "level", arg_types=(int, int, int), callee=self.event_audio_level),
         BotEvent("audio", "state", arg_types=(str,), callee=self.event_audio_state),
         BotEvent("audio", "active", arg_types=(bool,), callee=self.event_audio_active),
         BotEvent("audio", "listen_url", arg_types=(str,), callee=self.event_audio_listen_url),
         BotEvent("audio", "location", arg_types=(str,), callee=self.event_audio_location),
         BotEvent("pinger", "check", arg_types=(str, str), callee=self.event_pinger_check),
         BotEvent("player", "play", arg_types=(str, str), callee=self.event_player_play),
         BotEvent("player", "stop", arg_types=(str,), callee=self.event_player_stop),
         BotEvent("player", "mode", arg_types=(str, str), callee=self.event_player_mode),
         BotEvent("player", "chime", arg_types=(bool,), callee=self.event_player_chime),
     ]
     self.audios = {}
     self.pending_audios = {}
     self.players = {}
     self.pending_players = {}
     self.listener = listener
     self.tick = tick
     self.ping_lost = []
     self.non_idle_audios = []
     self.primary_non_idle_audio = None
     self.active_audios = []
     self.primary_active_audio = None
Beispiel #5
0
 def __init__(self):
     BotMod.__init__(self, "pinger")
     self.cmds = [BotCmd("query", arg_types=(str,), callee=self.cmd_query)]
     self.opts = [BotOptField("interval", int, 10, desc="check interval for pings")]
     self.events = [
         BotEvent("bot", "pong", callee=self.event_pong),
         PeerConnectEvent(self.on_peer_connect),
         PeerDisconnectEvent(self.on_peer_disconnect),
         PeerModListEvent(self.on_peer_modlist),
         TickEvent(self.on_tick),
     ]
     self.ping_map = {}
Beispiel #6
0
 def __init__(self):
     BotMod.__init__(self, "pinger")
     self.cmds = [BotCmd("query", arg_types=(str, ), callee=self.cmd_query)]
     self.opts = [
         BotOptField("interval", int, 10, desc="check interval for pings"),
     ]
     self.events = [
         BotEvent("bot", "pong", callee=self.event_pong),
         PeerConnectEvent(self.on_peer_connect),
         PeerDisconnectEvent(self.on_peer_disconnect),
         PeerModListEvent(self.on_peer_modlist),
         TickEvent(self.on_tick)
     ]
     self.ping_map = {}
Beispiel #7
0
 def __init__(self):
   BotMod.__init__(self, "test")
   self.cmds = [
     BotCmd("hello",callee=self.cmd_hello)
   ]
   self.opts = [
     BotOptField("abool",bool,True,desc="a boolean"),
     BotOptField("anint",int,42, val_range=[1,100], desc="an integer"),
     BotOptField("astr",str,"hoo!", desc="a string")
   ]
   self.events = [
     BotEvent("echo","hello",callee=self.event_echo_hello),
     ConnectEvent(self.on_connect),
     DisconnectEvent(self.on_disconnect),
     TickEvent(self.on_tick)
   ]
Beispiel #8
0
 def __init__(self):
   BotMod.__init__(self, "player")
   self.cmds = [
     BotCmd("mute",callee=self.cmd_mute),
     BotCmd("monitor",callee=self.cmd_monitor),
     BotCmd("listen",callee=self.cmd_listen,arg_types=(str,)),
     BotCmd("chime",callee=self.cmd_chime,arg_types=(bool,)),
     BotCmd("query_mode",callee=self.cmd_query_mode),
     BotCmd("query_chime",callee=self.cmd_query_chime)
   ]
   self.events = [
     PeerModListEvent(self.on_peer_modlist),
     PeerDisconnectEvent(self.on_peer_disconnected),
     StopEvent(self.on_stop),
     BotEvent("audio","active",callee=self.on_player_active,arg_types=(bool,)),
     BotEvent("audio","listen_url",callee=self.on_player_listen_url,arg_types=(str,)),
   ]
   self.audio_peers = []
Beispiel #9
0
  def setup(self, send, log, cfg, botopts):
    BotMod.setup(self, send, log, cfg, botopts)
    self._get_vumeter_cfg(cfg)

    self.ev = DetectorEventHandler(self.send_event, self.botopts)
    self.d = detector.Detector(self.botopts)
    self.rec = recorder.Recorder(self.sample_rate, self.interval, self.channels,
                                 self.rec, self.dev, self.tool, self.zero_range, self.sox_filter)
    self.sim = simulator.Simulator()

    self.log("init audio: cmd=", self.rec.cmd)
    self.log("options=",self.botopts.get_values())

    # setup threading
    self.queue = queue.Queue()
    self.thread = threading.Thread(target=self.thread_run, name="audiorec")
    self.do_run = True
    self.thread.start()
Beispiel #10
0
 def __init__(self):
     BotMod.__init__(self, "player")
     self.cmds = [
         BotCmd("mute", callee=self.cmd_mute),
         BotCmd("monitor", callee=self.cmd_monitor),
         BotCmd("listen", callee=self.cmd_listen, arg_types=(str, )),
         BotCmd("chime", callee=self.cmd_chime, arg_types=(bool, )),
         BotCmd("query_mode", callee=self.cmd_query_mode),
         BotCmd("query_chime", callee=self.cmd_query_chime)
     ]
     self.events = [
         PeerModListEvent(self.on_peer_modlist),
         PeerDisconnectEvent(self.on_peer_disconnected),
         StopEvent(self.on_stop),
         BotEvent("audio",
                  "active",
                  callee=self.on_player_active,
                  arg_types=(bool, )),
         BotEvent("audio",
                  "listen_url",
                  callee=self.on_player_listen_url,
                  arg_types=(str, )),
     ]
     self.audio_peers = []
Beispiel #11
0
 def __init__(self):
   BotMod.__init__(self, "echo")
   self.cmds = [
     BotCmd("echo",callee=self.cmd_echo)
   ]
Beispiel #12
0
 def __init__(self, name="info", listener=None, tick=1):
     BotMod.__init__(self, name)
     self.events = [
         ConnectEvent(self.on_connect),
         DisconnectEvent(self.on_disconnect),
         PeerConnectEvent(self.on_peer_connect),
         PeerDisconnectEvent(self.on_peer_disconnect),
         ModListEvent(self.on_modlist),
         PeerModListEvent(self.on_peer_modlist),
         TickEvent(self.on_tick),
         StartEvent(self.on_start),
         StopEvent(self.on_stop),
         # custom events
         BotEvent("audio",
                  "level",
                  arg_types=(int, int, int),
                  callee=self.event_audio_level),
         BotEvent("audio",
                  "state",
                  arg_types=(str, ),
                  callee=self.event_audio_state),
         BotEvent("audio",
                  "active",
                  arg_types=(bool, ),
                  callee=self.event_audio_active),
         BotEvent("audio",
                  "listen_url",
                  arg_types=(str, ),
                  callee=self.event_audio_listen_url),
         BotEvent("audio",
                  "location",
                  arg_types=(str, ),
                  callee=self.event_audio_location),
         BotEvent("pinger",
                  "check",
                  arg_types=(str, str),
                  callee=self.event_pinger_check),
         BotEvent("player",
                  "play",
                  arg_types=(str, str),
                  callee=self.event_player_play),
         BotEvent("player",
                  "stop",
                  arg_types=(str, ),
                  callee=self.event_player_stop),
         BotEvent("player",
                  "mode",
                  arg_types=(str, str),
                  callee=self.event_player_mode),
         BotEvent("player",
                  "chime",
                  arg_types=(bool, ),
                  callee=self.event_player_chime)
     ]
     self.audios = {}
     self.pending_audios = {}
     self.players = {}
     self.pending_players = {}
     self.listener = listener
     self.tick = tick
     self.ping_lost = []
     self.non_idle_audios = []
     self.primary_non_idle_audio = None
     self.active_audios = []
     self.primary_active_audio = None
Beispiel #13
0
 def __init__(self):
     BotMod.__init__(self, "echo")
     self.cmds = [BotCmd("echo", callee=self.cmd_echo)]