Esempio n. 1
0
    def test_checksum(self):
        expected_crc16 = 14743

        crc = checksum.Crc16_Checksum()
        crc16 = crc.checksum(bytearray("abcd"))

        assert expected_crc16 == crc16
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
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()