apdu/ts_102_221: Implement SELECT case "df_ef_or_mf_by_file_id"
This was [sadly] simply missing from the implementation so far.
Change-Id: I7bbd13ce29f5adc1ca3ca01bffabbe02dd17db20
diff --git a/pySim/apdu/ts_102_221.py b/pySim/apdu/ts_102_221.py
index e5455d0..0ca6702 100644
--- a/pySim/apdu/ts_102_221.py
+++ b/pySim/apdu/ts_102_221.py
@@ -78,6 +78,17 @@
elif mode == 'df_ef_or_mf_by_file_id':
if len(self.cmd_data) != 2:
raise ValueError('Expecting a 2-byte FID')
+ sels = lchan.selected_file.get_selectables(['FIDS'])
+ file_hex = b2h(self.cmd_data)
+ if file_hex in sels:
+ if self.successful:
+ #print("\tSELECT %s" % sels[file_hex])
+ lchan.selected_file = sels[file_hex]
+ else:
+ #print("\tSELECT %s FAILED" % sels[file_hex])
+ pass
+ else:
+ logger.warning('SELECT UNKNOWN FID %s' % (file_hex))
elif mode == 'df_name':
# Select by AID (can be sub-string!)
aid = self.cmd_dict['body']