def brain_loop(args): sock_node = Socket(BUS) sock_node.bind('tcp://*:%s' % BRAIN_PORT) sock_node.recv_timeout = 250 #sock_node.send_buffer_size = 1000 sock_node.send_timeout = 200 seq = 0 timer = set_mode(args.mode) server = Server(args) while True: ch, value = chanselect([timer.chan, server.chan], []) #print 'AFTER chanselect', ch is timer.chan, time.time() if ch is timer.chan: lights.only(*value) #print "LIGHTS", value try: seq += 1 sock_node.send( '%i %s %s' % (seq, CMD_LIGHTS, ' '.join(lights.rev_lookup[led_pin] for led_pin in value))) except Exception as ex: #print ex pass elif ch is server.chan: if value[0] == 'status': node = None try: seq += 1 sock_node.send('%i PING' % seq) while True: node_msg = sock_node.recv().split() if int(node_msg[0]) == seq: node = 'ok' break elif int(node_msg[0]) > seq: raise Exception('Skipped ping message') except Exception as ex: node = repr(ex) value[1].put({'loop': 'ok', 'node': node}) elif value[0] == 'set_period': timer.period = value[1] elif value[0] == 'trip': timer.trip = True elif value[0] == 'mode': mode = value[1] print("new mode tho %s" % mode) timer = set_mode(mode) else: print "UNKNOWN COMMAND:", value time.sleep(2)
def connect(): sock = Socket(PAIR) try: sock.connect(IPC_ADDRESS) sock.send_timeout = 10000 sock.recv_timeout = 10000 except Exception as e: logger.error( "Failed to connect to address '%s' (%s)", IPC_ADDRESS, e) sock.close() raise SystemExit(1) return sock
def master_loop(): sock_slave = Socket(PAIR) sock_slave.bind('tcp://*:%s' % MASTER_PORT) sock_slave.recv_timeout = 250 #sock_slave.send_buffer_size = 1000 sock_slave.send_timeout = 200 seq = 0 timer = LightTimer() server = Server() while True: ch, value = chanselect([timer.chan, server.chan], []) #print 'AFTER chanselect', ch is timer.chan, time.time() if ch is timer.chan: lights.only(*value) #print "LIGHTS", value try: seq += 1 sock_slave.send('%i %s %s' % ( seq, CMD_LIGHTS, ' '.join(lights.rev_lookup[led_pin] for led_pin in value))) except Exception as ex: #print ex pass elif ch is server.chan: if value[0] == 'status': slave = None try: seq += 1 sock_slave.send('%i PING' % seq) while True: slave_msg = sock_slave.recv().split() if int(slave_msg[0]) == seq: slave = 'ok' break elif int(slave_msg[0]) > seq: raise Exception('Skipped ping message') except Exception as ex: slave = repr(ex) value[1].put({'loop': 'ok', 'slave': slave}) elif value[0] == 'set_period': timer.period = value[1] elif value[0] == 'trip': timer.trip = True else: print "UNKNOWN COMMAND:", value time.sleep(2)