modem_atcmd: raise ProtocolError instead of ReaderError on CME ERROR
Also accept ProtocolError in addition to SwMatchError in filesystem.py
when probing for applications
Change-Id: I82b50408328f8eaaee5c9e311c4620d20f930642
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index ce1882b..b5d0ccd 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -1352,7 +1352,7 @@
if sw == "9000":
print(" %s: %s" % (f.name, f.aid))
apps_taken.append(f)
- except SwMatchError:
+ except (SwMatchError, ProtocolError):
pass
return apps_taken
diff --git a/pySim/transport/modem_atcmd.py b/pySim/transport/modem_atcmd.py
index a373d68..ea50bc9 100644
--- a/pySim/transport/modem_atcmd.py
+++ b/pySim/transport/modem_atcmd.py
@@ -148,8 +148,9 @@
log.debug('Sending command: %s', cmd)
# Send AT+CSIM command to the modem
- # TODO: also handle +CME ERROR: <err>
rsp = self.send_at_cmd(cmd)
+ if rsp[-1].startswith(b'+CME ERROR:'):
+ raise ProtocolError('AT+CSIM failed with: %s' % str(rsp))
if len(rsp) != 2 or rsp[-1] != b'OK':
raise ReaderError('APDU transfer failed: %s' % str(rsp))
rsp = rsp[0] # Get rid of b'OK'