def start(main_controller_connection): signal.signal(signal.SIGTERM, signal_handler) logger.info("Starting gpio_controller") while True: # Check GPIO if not GPIO.input(4): command = None presstime = 0 for _ in range(50): if not GPIO.input(4): presstime += 1 else: command = State.reboot_system break if presstime > 20: command = State.shutdown_system break time.sleep(0.1) ipcon.connect('localhost', 4223) time.sleep(1.0) master_brick = BrickMaster('6QHvJ1', ipcon) master_brick.reset() if command is State.reboot_system: subprocess.call(["sudo", "reboot"]) elif command is State.shutdown_system: subprocess.call(["sudo", "shutdown", "-h", "now"]) time.sleep(0.3)
def relay_flash(baudrate, tty, firmware, uid_iqr, uid_master): ipcon = IPConnection() iqr = BrickletIndustrialQuadRelay(uid_iqr, ipcon) master = BrickMaster(uid_master, ipcon) ipcon.connect('localhost', 4223) # reset_usb() # time.sleep(1) i = 10 while True: if i == 10: master.get_chibi_error_log() iqr.set_value(MASK_DATA) time.sleep(0.2) iqr.set_value(MASK_POWER | MASK_DATA) i = 0 i += 1 try: time.sleep(0.01) xmc_flash(baudrate, tty, firmware) break except Exception as e: print(str(e)) iqr.set_value(MASK_POWER) master.reset() ipcon.disconnect()
class TFSerial: def __init__(self, _): self.ipcon = IPConnection() # Create IP connection self.master = BrickMaster(UID, self.ipcon) # Create device object self.ipcon.connect(HOST, PORT) self.timeout = 1 self.read_buffer = [] self.baudrate = None time.sleep(1) # Implement Serial functions that we don't need def setDTR(self, _): pass def flushInput(self): pass def flushOutput(self): pass # We misuse the setRTS call to start the bootloader mode (flush everyting etc) def setRTS(self, value): if value: self.master.start_wifi2_bootloader() def write(self, data): try: data = map(ord, data) while data != []: data_chunk = data[:60] length = len(data_chunk) data_chunk.extend([0] * (60 - length)) ret = self.master.write_wifi2_flash(data_chunk, length) data = data[60:] except: traceback.print_exc() print "write", length, data def read(self, length): if len(self.read_buffer) >= length: ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) try: length_read = 0 t = time.time() while len(self.read_buffer) < length: data, l = self.master.read_wifi2_flash(60) data = data[:l] self.read_buffer.extend(data) if len(self.read_buffer) < length: time.sleep(0.1) if time.time() - t > self.timeout: break print "read", l, "of", length, data ret = ''.join(map(chr, data[:l])) except: traceback.print_exc() ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) def done(self): self.master.reset()
class TFSerial: def __init__(self, _): self.ipcon = IPConnection() # Create IP connection self.master = BrickMaster(UID, self.ipcon) # Create device object self.ipcon.connect(HOST, PORT) self.timeout = 1 self.read_buffer = [] self.baudrate = None time.sleep(1) # Implement Serial functions that we don't need def setDTR(self, _): pass def flushInput(self): pass def flushOutput(self): pass # We misuse the setRTS call to start the bootloader mode (flush everyting etc) def setRTS(self, value): if value: self.master.start_wifi2_bootloader() def write(self, data): try: data = map(ord, data) while data != []: data_chunk = data[:60] length = len(data_chunk) data_chunk.extend([0]*(60-length)) ret = self.master.write_wifi2_flash(data_chunk, length) data = data[60:] except: traceback.print_exc() print "write", length, data def read(self, length): if len(self.read_buffer) >= length: ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) try: length_read = 0 t = time.time() while len(self.read_buffer) < length: data, l = self.master.read_wifi2_flash(60) data = data[:l] self.read_buffer.extend(data) if len(self.read_buffer) < length: time.sleep(0.1) if time.time() - t > self.timeout: break print "read", l, "of", length, data ret = ''.join(map(chr, data[:l])) except: traceback.print_exc() ret = self.read_buffer[:length] self.read_buffer = self.read_buffer[length:] return ''.join(map(chr, ret)) def done(self): self.master.reset()