subprocess.Popen, new pin code, disabled users, bugfixes
[uccvend-vendserver.git] / sql-edition / servers / MIFAREDriver.py
index a3a65b6..6248f60 100644 (file)
@@ -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):
@@ -96,7 +96,7 @@ class MIFAREReader:
         
         card_type_response = self.send_packet(command)
         
-        if card_type_response[2] == '\x14':
+        if card_type_response == None or card_type_response[2] == '\x14':
             raise MIFAREException, "select_card: no card available"
         card_type = card_type_response[3:5]
         
@@ -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):

UCC git Repository :: git.ucc.asn.au