def command_eeprom_decode(self, args): cartridge_crypted = args.input_file.read() if args.diag_format: cartridge_crypted = self.diag_formatter.from_source( cartridge_crypted) m = manager.Manager(crypto.Desx_Crypto(), checksum.Crc16_Checksum()) machine_number = machine.get_number_from_type(args.machine_type) cartridge = m.decode(machine_number, args.eeprom_uid.decode("hex"), bytearray(cartridge_crypted)) args.output_file.write((MessageToString(cartridge))) return
def command_eeprom_encode(self, args): cartridge = cartridge_pb2.Cartridge() Merge(args.input_file.read(), cartridge) machine_number = machine.get_number_from_type(args.machine_type) m = manager.Manager(crypto.Desx_Crypto(), checksum.Crc16_Checksum()) eeprom = m.encode(machine_number, args.eeprom_uid, cartridge) if args.use_ascii: eeprom = self._make_ascii(cartridge, eeprom, args.eeprom_uid, args.machine_number) if args.diag_format: eeprom = self.diag_formatter.to_destination(eeprom) args.output_file.write(eeprom) return
def main(): global cartridge_manager global machine_number global cartridge_template parser = argparse.ArgumentParser(description="Raspberry Pi Flasher Daemon") parser.add_argument("-t", "--template", action="store", type=str, dest="template", help="Path to cartridge configuration") parser.add_argument("machine_type", action="store", choices=machine.get_machine_types()) args = parser.parse_args() cartridge_manager = manager.Manager(crypto.Desx_Crypto(), checksum.Crc16_Checksum()) machine_number = machine.get_number_from_type(args.machine_type) cartridge_template = None if args.template: cartridge_template = read_cartridge_template(args.template) print("Fill cartridge using template from <" + args.template + ">.") context = pyudev.Context() monitor = pyudev.Monitor.from_netlink(context) monitor.filter_by('w1') observer = pyudev.MonitorObserver(monitor, callback=on_new_cartridge) observer.start() try: print("Listening to new device ... ^c to quit") while True: time.sleep(0.1) except KeyboardInterrupt: pass observer.stop()