Example #1
0
    def set_ports(self,net_msg):
        ret_msg = NetMsg()
        
        missing_ports = []
        
        ports = net_msg.params[0]
        for p_k, p in ports.items():
            if p_k in self.rt_core.out_ports:
                self.rt_core.out_ports[p_k].set_value(p.get_value())
                print "%s %d %s" % (p_k,
                                    id(self.rt_core.out_ports[p_k]),
                                    self.rt_core.out_ports[p_k])
            if p_k in self.rt_core.in_ports:
                self.rt_core.in_ports[p_k].set_value(p.get_value())
                print "%s %d %s" % (p_k,
                                    id(self.rt_core.in_ports[p_k]),
                                    self.rt_core.in_ports[p_k])
            else:
                missing_ports.append(p_k)
                
        if not len(missing_ports):
            ret_msg.response = 'Se seteo el puerto OK'
            ret_msg.error_code = 0
        else:
            ret_msg.error_code = -1
            ret_msg.error_msg = "Se produjeron errores al setear \
los puertos %s" % string.join( missing_ports,',') 
        return ret_msg
Example #2
0
 def add_card(self,net_msg):        
     c_dir = net_msg.params[0]
     b_dir = net_msg.params[1]
     type = net_msg.params[2]
     
     ret_msg = NetMsg()
     channels = self.rt_core.channels
     ch_key = "Bus_%d" % b_dir        
     
     if not type in Bus.supported_card_types:
         ret_msg.error_code = -1
         ret_msg.error_msg = 'El tipo de targeta %s no existe ' % type
         return ret_msg
     
     if not ch_key in channels:
         try :
             ch = Bus(b_dir,True)
         except ChannelException, e:                    
             e.log(self.logger_instance)
             
             ret_msg.error_code = -1
             ret_msg.error_msg = 'Error: el canal %d no pudo ser creado' % b_dir
             return ret_msg            
         
         self.rt_core.add_channel(ch,False) 
         ch.start()
Example #3
0
 def remove_card(self,net_msg):        
     c_dir = net_msg.params[0]
     b_dir = net_msg.params[1]
     
     print "Elimino la targeta %s " % c_dir
     
     ret_msg = NetMsg()
     ret_msg.error_code = 0
     ret_msg.response = 'La targeta con direccion %s fue removida' % c_dir
     return ret_msg
Example #4
0
    def get_light_maps(self,net_msg):
        ret_msg = NetMsg()
        ret_msg.response = {}
#         print "entro a get_light_maps"
#         print yaml.dump(self.map_objects)
        for m_id, m in self.map_objects.items():
#             print "entro a get_light_maps"
            if self.light_map_re.match(m_id) :
                ret_msg.response[m_id] = m
        
        return ret_msg
Example #5
0
    def del_light_map(self,net_msg):
#         print "entro a del_light_map"
        lm = net_msg.params[0]
        maped_lm = self.map_objects[lm.id]
        for ev_ac in maped_lm.events_actions:
            ev_id = ev_ac[0]
            self.rt_core.unmap_event(ev_id)        
            
        del self.map_objects[lm.id]
        ret_msg = NetMsg()
        ret_msg.error_code = 0        
        return ret_msg
Example #6
0
 def get_cards(self,net_msg):
     cards_tree = {}
     for ch_name, ch in self.rt_core.channels.items():
         ch_cards = {}
         
         for c_name, c in  ch.cards.items():
             ch_cards[c_name] = {'simulation_mode': c.simulation_mode , 
                                 'card_id': c.card_id, 
                                 'channel_id': c.channel_id,
                                 'type': c.type()}
             
         cards_tree[ch_name] = ch_cards
     ret_msg = NetMsg()
     ret_msg.response = cards_tree
     return ret_msg
Example #7
0
    def search_connected_cards(self,net_msg):
        channel_number = net_msg.params[0]        
        channel_id = "Bus_%s" % channel_number
        
        ret_msg = NetMsg()
        ret_msg.response = ''
        ret_msg.error_code = 0
        
        paused = False
#         print self.rt_core.channels
        if channel_id in self.rt_core.channels:
#             print "el channel esta"
            channel = self.rt_core.channels[channel_id]
            if not channel.paused :
                channel.pause()
#                 print "pauso el channel"
                paused = True
        
        ret_msg.response = Bus.search_connected_cards(channel_number)
#         print "retorno \n%s"% ret_msg.response
        
        if paused : channel.resume()
        
        return ret_msg
Example #8
0
 def handle_call(self):
      self.out_data = True # None
      net_msg = self.in_data
      
      exp_methods = self.control.get_exported_methods()
      
      if net_msg.method in exp_methods :
           method_params = exp_methods[ net_msg.method ]
           if len(net_msg.params) != method_params :
                self.logger_instance.error(
                     "Error: cliente %s, metodo %s, params count (%d,%d)" % (self.client_full_address,
                                                                             net_msg.method,
                                                                             method_params,
                                                                             len(net_msg.params))
                     )
                
                res_msg = NetMsg()
                res_msg.error_core = -1
                res_msg.error_msg = 'Cantidad de parametros invalida, (%d != %d)' % (
                     method_params,
                     len(net_msg.params))                    
                
                self.out_data = res_msg
           
           self.logger_instance.debug("El cliente %s llamo al metodo %s" % (self.client_full_address,net_msg.method))
           f = eval("self.control.%s" % net_msg.method )
           self.out_data=f(net_msg)
      else:
           res_msg = NetMsg()
           res_msg.error_code = -1
           res_msg.error_msg = 'Nombre de metodo invalido (%s)' % net_msg.method
           self.out_data = res_msg
           self.logger_instance.error(
                "Error: cliente %s, el metodo %s no existe" % (self.client_full_address,
                                                               net_msg.method )
                )
             
           
      self.request_errors = 0
Example #9
0
except Exception, e:
    print "No se pudo establecer la conexion %s " % e
    sys.exit()
conected = True
sock = conection.get_socket()
fd = sock.makefile()

while conected:
    if fd.closed :
        break
    comando = raw_input("ingrese el comando: ")
    if comando == 'ok' :
        l = LightMap()
        l.name="luces cocina"
        l.comment="comentraio sobre las luces de la cocina"        
        n = NetMsg()
        n.method='map_light'
        n.params=[l]
        n.status="conectado"
        encoded = zlib.compress(yaml.dump(n)).encode('hex')
        data = encoded + "\n"
        try :
            print  "escribio"
            conection.write(data)        
        except socket.error, e:
            if e.args[0] == errno.EPIPE :
                print "el socket esta cerrado"
                break           
    elif comando == 'get_in_ports':
        n = NetMsg()
        n.method='get_in_ports'
Example #10
0
 def inform_status(self,net_msg):
     ret_msg = NetMsg()
     ret_msg.response = ''
     ret_msg.error_code = 0
     return ret_msg        
Example #11
0
    def get_out_ports(self,net_msg):
        ret_msg = NetMsg()
        ret_msg.response = self.rt_core.out_ports
#         print yaml.dump(self.rt_core.in_ports)
        return ret_msg
Example #12
0
 def get_all_ports(self,net_msg):
     ret_msg = NetMsg()
     ret_msg.response = {}
     ret_msg.response.update(self.rt_core.in_ports)
     ret_msg.response.update(self.rt_core.out_ports)
     return ret_msg
Example #13
0
            
        old_lmp = self.map_objects[lm.id]        
        old_lmp.delay = lm.delay
        old_lmp.timeout = lm.timeout
        old_lmp.name = lm.name
        old_lmp.comment = lm.comment
        
        move_event_id =  old_lmp.events_actions[0][0]        
        no_move_event_id =  old_lmp.events_actions[1][0]
        
        maps[0][0].event_id = move_event_id
        maps[1][0].event_id = no_move_event_id
        self.rt_core.change_event(maps[0][0])
        self.rt_core.change_event(maps[1][0])
                
        ret_msg = NetMsg()
        ret_msg.error_code = 0        
        return ret_msg
    
            
    def del_light_map(self,net_msg):
#         print "entro a del_light_map"
        lm = net_msg.params[0]
        maped_lm = self.map_objects[lm.id]
        for ev_ac in maped_lm.events_actions:
            ev_id = ev_ac[0]
            self.rt_core.unmap_event(ev_id)        
            
        del self.map_objects[lm.id]
        ret_msg = NetMsg()
        ret_msg.error_code = 0        
Example #14
0
 def build_request_message(self, method, params, status):
     n = NetMsg()
     n.method = method
     n.params = params
     n.status = status
     return n