diff --git a/sql-edition/servers/MIFAREDriver.py b/sql-edition/servers/MIFAREDriver.py index a3a65b6797dd6744f4baae08b74c3bce1b01baa6..46a073192d48ae97a53c5ee3f658136f987bc9c5 100644 --- a/sql-edition/servers/MIFAREDriver.py +++ b/sql-edition/servers/MIFAREDriver.py @@ -7,7 +7,7 @@ Requires Python 2.5. Licensed under an MIT-style license: see LICENSE file for details. ''' -import serial +import serial, logging xor = lambda x, y: x ^ y def checksum(string): @@ -111,7 +111,12 @@ class MIFAREReader: serial = self.send_packet(command)[3:] # Select the card for use - capacity = ord(self.send_packet('\x03\x02' + serial)[3]) + try: + select_response = self.send_packet('\x03\x02' + serial) + capacity = ord(select_response[3]) + except IndexError: + logging.warning('Tried to select card but failed: card_type %s, serial %s, select_response %s' % (card_type.__repr__(), serial.__repr__(), select_response.__repr__())) + capacity = 0 return (serial, capacity) def sector_login(self, blockvect, key, keytype=0): diff --git a/sql-edition/servers/VendingMachine.py b/sql-edition/servers/VendingMachine.py index b7d747aeb5ed1a8755717cbb1a9917ec62cd25ec..e96832a9f52b22c57c86c24a97d8afc8fcfd849f 100644 --- a/sql-edition/servers/VendingMachine.py +++ b/sql-edition/servers/VendingMachine.py @@ -190,7 +190,7 @@ class VendingMachine: self.mifare_timeout = now + 0.5 mifare_uid = self.mifare.get_card_id() if mifare_uid != None: - logging.info('Got MIFARE card id %s'%(str(mifare_uid))) + logging.info('Got MIFARE card id %s'%(repr(mifare_uid))) self.events.append((MIFARE, mifare_uid)) timeout = 0 if timeout == 0: