def server_info_reply_handler(self, addr, tags, stuff, source):
     self.mon.log(
         self, 'server info reply from slave ' + OSC.getUrlStr(source) +
         self.pretty_list(stuff, '\n'))
     print 'Received reply to Server-Info command from slave: ', OSC.getUrlStr(
         source), self.pretty_list(stuff, '\n')
     return None
예제 #2
0
    def server_info_handler(self,addr, tags, stuff, source):

        msg = OSC.OSCMessage(self.prefix+'/system/server-info-reply')
        msg.append(self.this_unit_name)
        msg.append(self.input_server.getOSCAddressSpace())
        self.mon.log(self,'Sent Server Info reply to %s:' % OSC.getUrlStr(source))
        return msg
 def loopback_reply_handler(self, addr, tags, stuff, source):
     self.mon.log(
         self, 'server info reply from slave ' + OSC.getUrlStr(source) +
         self.pretty_list(stuff, '\n'))
     print 'Received reply to Loopback command from slave: ' + OSC.getUrlStr(
         source) + ' ' + self.pretty_list(stuff, '\n')
     return None
예제 #4
0
    def loopback_handler(self,addr, tags, stuff, source):

        # send a reply to the client.
        msg = OSC.OSCMessage(self.prefix+'/system/loopback-reply')
        
        text= "Message from %s" % OSC.getUrlStr(source)+'\n'
        text+= "     %s" % addr+ self.pretty_list(stuff)
        self.add_status(text +'\n' + 'Sent reply to Loopback request to %s:' % OSC.getUrlStr(source)+'\n')
        return msg      
예제 #5
0
    def loopback_handler(self, addr, tags, stuff, source):

        # send a reply to the client.
        msg = OSC.OSCMessage(self.prefix + '/system/loopback-reply')

        text = "Message from %s" % OSC.getUrlStr(source) + '\n'
        text += "     %s" % addr + self.pretty_list(stuff)
        self.add_status(text + '\n' + 'Sent reply to Loopback request to %s:' %
                        OSC.getUrlStr(source) + '\n')
        return msg
예제 #6
0
 def server_info_handler(self,addr, tags, stuff, source):
     # send a reply to the client.         
     msg = OSC.OSCMessage(self.prefix+'/system/server-info-reply')
     msg.append(self.osc_config.this_unit_name)
     msg.append(self.server.getOSCAddressSpace())
     
     text= "Message from %s" % OSC.getUrlStr(source)+'\n'
     text+= "     %s" % addr+ self.pretty_list(stuff)
     self.add_status(text)
     self.add_status('Sent reply to Server Info request to %s:' % OSC.getUrlStr(source)+'\n')
     return msg
예제 #7
0
    def server_info_handler(self, addr, tags, stuff, source):
        # send a reply to the client.
        msg = OSC.OSCMessage(self.prefix + '/system/server-info-reply')
        msg.append(self.osc_config.this_unit_name)
        msg.append(self.server.getOSCAddressSpace())

        text = "Message from %s" % OSC.getUrlStr(source) + '\n'
        text += "     %s" % addr + self.pretty_list(stuff)
        self.add_status(text)
        self.add_status('Sent reply to Server Info request to %s:' %
                        OSC.getUrlStr(source) + '\n')
        return msg
예제 #8
0
    def run_app(self):

        if self.osc_config.slave_enabled != 'yes':
            self.mon.err(self, 'Slave not enabled in oscmonitor.cfg')
            return

        if self.osc_config.this_unit_ip == '':
            self.mon.err(self,
                         'IP of own unit must be provided in oscmonitor.cfg')
            return

        if self.osc_config.listen_port == '':
            self.mon.err(self,
                         'Listen port must be provided in oscmonitor.cfg')
            return

        self.client = None
        self.server = None
        self.st = None

        # initialise OSC variables

        self.prefix = '/pipresents'
        self.this_unit = '/' + self.osc_config.this_unit_name
        self.add_status('this unit OSC address is: ' + self.this_unit)
        self.add_status('Listening for Commands from Master on: ' +
                        self.osc_config.this_unit_ip + ':' +
                        self.osc_config.listen_port)

        #connect client for replies then start server to listen for commands
        self.client = OSC.OSCClient()
        self.init_server(self.osc_config.this_unit_ip,
                         self.osc_config.listen_port, self.client)
        self.add_initial_handlers()
        self.start_server()
예제 #9
0
 def sendto(self, client, dest, address, arg_list):
     msg = OSC.OSCMessage()
     msg.setAddress(address)
     for arg in arg_list:
         msg.append(arg)
     try:
         client.sendto(msg, dest)
     except Exception as e:
         self.mon.err(self,
                      'error in client when sending OSC command: ' + str(e))
예제 #10
0
 def sendto(self,ip,osc_address,arg_list):
     # print ip,osc_address,arg_list
     if self.output_client is None:
         self.mon.warn(self,'Master not enabled, ignoring OSC command')
         return
     msg = OSC.OSCMessage()
     # print address
     msg.setAddress(osc_address)
     for arg in arg_list:
         # print arg
         msg.append(arg)
         
     try:
         self.output_client.sendto(msg,(ip,int(self.reply_listen_port)))
         self.mon.log(self,'Sent OSC command: '+osc_address+' '+' '.join(arg_list) + ' to '+ ip +':'+self.reply_listen_port)
     except Exception as e:
         self.mon.warn(self,'error in client when sending OSC command: '+ str(e))
예제 #11
0
 def no_match_handler(self,addr, tags, stuff, source):
     text= "No handler for message from %s" % OSC.getUrlStr(source)+'\n'
     text+= "     %s" % addr+ self.pretty_list(stuff,'')
     self.add_status(text+'\n')
예제 #12
0
 def loopback_reply_handler(self,addr, tags, stuff, source):
     self.add_status('Loopback reply  received from: '+  OSC.getUrlStr(source))
 def loopback_handler(self, addr, tags, stuff, source):
     msg = OSC.OSCMessage(self.prefix + '/system/loopback-reply')
     self.mon.log(self,
                  'Sent loopback reply to %s:' % OSC.getUrlStr(source))
     return msg
    def init(self, pp_profile, manager_unit, preferred_interface, my_ip,
             show_command_callback, input_event_callback, animate_callback):

        self.pp_profile = pp_profile
        self.show_command_callback = show_command_callback
        self.input_event_callback = input_event_callback
        self.animate_callback = animate_callback

        self.mon = Monitor()
        config_file = self.pp_profile + os.sep + 'pp_io_config' + os.sep + 'osc.cfg'
        if not os.path.exists(config_file):
            self.mon.err(self,
                         'OSC Configuration file not found: ' + config_file)
            return 'error', 'OSC Configuration file nof found: ' + config_file

        self.mon.log(self, 'OSC Configuration file found at: ' + config_file)
        self.osc_config = OSCConfig()

        # reads config data
        if self.osc_config.read(config_file) == False:
            return 'error', 'failed to read osc.cfg'

        # unpack config data and initialise

        if self.osc_config.this_unit_name == '':
            return 'error', 'OSC Config -  This Unit has no name'
        if len(self.osc_config.this_unit_name.split()) > 1:
            return 'error', 'OSC config - This Unit Name not a single word: ' + self.osc_config.this_unit_name
        self.this_unit_name = self.osc_config.this_unit_name

        if self.osc_config.this_unit_ip == '':
            self.this_unit_ip = my_ip
        else:
            self.this_unit_ip = self.osc_config.this_unit_ip

        if self.osc_config.slave_enabled == 'yes':
            if not self.osc_config.listen_port.isdigit():
                return 'error', 'OSC Config - Listen port is not a positve number: ' + self.osc_config.listen_port
            self.listen_port = self.osc_config.listen_port

        if self.osc_config.master_enabled == 'yes':
            if not self.osc_config.reply_listen_port.isdigit():
                return 'error', 'OSC Config - Reply Listen port is not a positve number: ' + self.osc_config.reply_listen_port
            self.reply_listen_port = self.osc_config.reply_listen_port

            # prepare the list of slaves
            status, message = self.parse_slaves()
            if status == 'error':
                return status, message

        self.prefix = '/pipresents'
        self.this_unit = '/' + self.this_unit_name

        self.input_server = None
        self.input_reply_client = None
        self.input_st = None

        self.output_client = None
        self.output_reply_server = None
        self.output_reply_st = None

        if self.osc_config.slave_enabled == 'yes' and self.osc_config.master_enabled == 'yes' and self.listen_port == self.reply_listen_port:
            # The two listen ports are the same so use one server for input and output

            #start the client that sends commands to the slaves
            self.output_client = OSC.OSCClient()
            self.mon.log(
                self, 'sending commands to slaves and replies to master on: ' +
                self.reply_listen_port)

            #start the input+output reply server
            self.mon.log(
                self,
                'listen to commands and replies from slave units using: ' +
                self.this_unit_ip + ':' + self.reply_listen_port)
            self.output_reply_server = myOSCServer(
                (self.this_unit_ip, int(self.reply_listen_port)),
                self.output_client)
            self.add_default_handler(self.output_reply_server)
            self.add_input_handlers(self.output_reply_server)
            self.add_output_reply_handlers(self.output_reply_server)

            self.input_server = self.output_reply_server

        else:

            if self.osc_config.slave_enabled == 'yes':
                # we want this to be a slave to something else

                # start the client that sends replies to controlling unit
                self.input_reply_client = OSC.OSCClient()

                #start the input server
                self.mon.log(
                    self, 'listening to commands on: ' + self.this_unit_ip +
                    ':' + self.listen_port)
                self.input_server = myOSCServer(
                    (self.this_unit_ip, int(self.listen_port)),
                    self.input_reply_client)
                self.add_default_handler(self.input_server)
                self.add_input_handlers(self.input_server)
                # print self.pretty_list(self.input_server.getOSCAddressSpace(),'\n')

            if self.osc_config.master_enabled == 'yes':
                #we want to control other units

                #start the client that sends commands to the slaves
                self.output_client = OSC.OSCClient()
                self.mon.log(
                    self, 'sending commands to slaves on port: ' +
                    self.reply_listen_port)

                #start the output reply server
                self.mon.log(
                    self, 'listen to replies from slave units using: ' +
                    self.this_unit_ip + ':' + self.reply_listen_port)
                self.output_reply_server = myOSCServer(
                    (self.this_unit_ip, int(self.reply_listen_port)),
                    self.output_client)
                self.add_default_handler(self.output_reply_server)
                self.add_output_reply_handlers(self.output_reply_server)

        return 'normal', 'osc.cfg read'
 def no_match_handler(self, addr, tags, stuff, source):
     text = "No handler for message from %s" % OSC.getUrlStr(source) + '\n'
     text += "     %s" % addr + self.pretty_list(stuff, '')
     self.mon.warn(self, text)
     return None
예제 #16
0
 def no_match_handler(self,addr, tags, stuff, source):
     text= "No handler for message from %s" % OSC.getUrlStr(source)+'\n'
     text+= "     %s" % addr+ self.pretty_list(stuff,'')
     self.mon.warn(self,text)
     return None
예제 #17
0
 def init_server(self, ip, port_text, client):
     self.mon.log(self, 'Start Server: ' + ip + ':' + port_text)
     return OSC.OSCServer((ip, int(port_text)), client)
예제 #18
0
 def server_info_reply_handler(self,addr, tags, stuff, source):
     unit=stuff[0]
     commands=stuff[1:]
     self.add_status('Server Information from: '+  OSC.getUrlStr(source))
     self.add_status('OSC name: '+  unit)
     self.add_status('Commands:\n'+self.pretty_list(commands,'\n'))
예제 #19
0
 def loopback_reply_handler(self,addr, tags, stuff, source):
     self.mon.log(self,'server info reply from slave '+OSC.getUrlStr(source)+ self.pretty_list(stuff,'\n'))
     print 'Received reply to Loopback command from slave: ' + OSC.getUrlStr(source)+ ' '+ self.pretty_list(stuff,'\n')
     return None
예제 #20
0
 def server_info_reply_handler(self,addr, tags, stuff, source):
     self.mon.log(self,'server info reply from slave '+OSC.getUrlStr(source)+ self.pretty_list(stuff,'\n'))
     print 'Received reply to Server-Info command from slave: ',OSC.getUrlStr(source), self.pretty_list(stuff,'\n')
     return None
예제 #21
0
 def loopback_handler(self,addr, tags, stuff, source):
     msg = OSC.OSCMessage(self.prefix+'/system/loopback-reply')
     self.mon.log(self,'Sent loopback reply to %s:' % OSC.getUrlStr(source))
     return msg
예제 #22
0
 def no_match_handler(self, addr, tags, stuff, source):
     text = "Message from %s" % OSC.getUrlStr(source) + '\n'
     text += "     %s" % addr + self.pretty_list(stuff)
     self.add_status(text + '\n')
예제 #23
0
 def loopback_reply_handler(self, addr, tags, stuff, source):
     self.add_status('Loopback reply  received from: ' +
                     OSC.getUrlStr(source))
예제 #24
0
 def init_client(self):
     return OSC.OSCClient()
예제 #25
0
 def server_info_reply_handler(self, addr, tags, stuff, source):
     unit = stuff[0]
     commands = stuff[1:]
     self.add_status('Server Information from: ' + OSC.getUrlStr(source))
     self.add_status('OSC name: ' + unit)
     self.add_status('Commands:\n' + self.pretty_list(commands, '\n'))