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
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()
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
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
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
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
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
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
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'
def inform_status(self,net_msg): ret_msg = NetMsg() ret_msg.response = '' ret_msg.error_code = 0 return ret_msg
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
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
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
def build_request_message(self, method, params, status): n = NetMsg() n.method = method n.params = params n.status = status return n