pySim.runtime: Be more verbose if incompatible method is called

Change-Id: I57190d50a63e0c22a8c5921e1348fae31b23e3d4
This commit is contained in:
Harald Welte
2024-07-17 19:19:36 +02:00
parent 75a109419c
commit 2a963a7ac0

View File

@@ -451,7 +451,8 @@ class RuntimeLchan:
binary data read from the file binary data read from the file
""" """
if not isinstance(self.selected_file, TransparentEF): if not isinstance(self.selected_file, TransparentEF):
raise TypeError("Only works with TransparentEF") raise TypeError("Only works with TransparentEF, but %s is %s" % (self.selected_file,
self.selected_file.__class__.__mro__))
return self.scc.read_binary(self.selected_file.fid, length, offset) return self.scc.read_binary(self.selected_file.fid, length, offset)
def read_binary_dec(self) -> Tuple[dict, str]: def read_binary_dec(self) -> Tuple[dict, str]:
@@ -475,7 +476,8 @@ class RuntimeLchan:
offset : Offset into the file from which to write 'data_hex' offset : Offset into the file from which to write 'data_hex'
""" """
if not isinstance(self.selected_file, TransparentEF): if not isinstance(self.selected_file, TransparentEF):
raise TypeError("Only works with TransparentEF") raise TypeError("Only works with TransparentEF, but %s is %s" % (self.selected_file,
self.selected_file.__class__.__mro__))
return self.scc.update_binary(self.selected_file.fid, data_hex, offset, conserve=self.rs.conserve_write) return self.scc.update_binary(self.selected_file.fid, data_hex, offset, conserve=self.rs.conserve_write)
def update_binary_dec(self, data: dict): def update_binary_dec(self, data: dict):
@@ -497,7 +499,8 @@ class RuntimeLchan:
hex string of binary data contained in record hex string of binary data contained in record
""" """
if not isinstance(self.selected_file, LinFixedEF): if not isinstance(self.selected_file, LinFixedEF):
raise TypeError("Only works with Linear Fixed EF") raise TypeError("Only works with Linear Fixed EF, but %s is %s" % (self.selected_file,
self.selected_file.__class__.__mro__))
# returns a string of hex nibbles # returns a string of hex nibbles
return self.scc.read_record(self.selected_file.fid, rec_nr) return self.scc.read_record(self.selected_file.fid, rec_nr)
@@ -520,7 +523,8 @@ class RuntimeLchan:
data_hex : Hex string binary data to be written data_hex : Hex string binary data to be written
""" """
if not isinstance(self.selected_file, LinFixedEF): if not isinstance(self.selected_file, LinFixedEF):
raise TypeError("Only works with Linear Fixed EF") raise TypeError("Only works with Linear Fixed EF, but %s is %s" % (self.selected_file,
self.selected_file.__class__.__mro__))
return self.scc.update_record(self.selected_file.fid, rec_nr, data_hex, return self.scc.update_record(self.selected_file.fid, rec_nr, data_hex,
conserve=self.rs.conserve_write, conserve=self.rs.conserve_write,
leftpad=self.selected_file.leftpad) leftpad=self.selected_file.leftpad)
@@ -556,7 +560,8 @@ class RuntimeLchan:
list of integer tags contained in EF list of integer tags contained in EF
""" """
if not isinstance(self.selected_file, BerTlvEF): if not isinstance(self.selected_file, BerTlvEF):
raise TypeError("Only works with BER-TLV EF") raise TypeError("Only works with BER-TLV EF, but %s is %s" % (self.selected_file,
self.selected_file.__class__.__mro__))
data, _sw = self.scc.retrieve_data(self.selected_file.fid, 0x5c) data, _sw = self.scc.retrieve_data(self.selected_file.fid, 0x5c)
_tag, _length, value, _remainder = bertlv_parse_one(h2b(data)) _tag, _length, value, _remainder = bertlv_parse_one(h2b(data))
return list(value) return list(value)
@@ -569,7 +574,8 @@ class RuntimeLchan:
data_hex : Hex string binary data to be written (value portion) data_hex : Hex string binary data to be written (value portion)
""" """
if not isinstance(self.selected_file, BerTlvEF): if not isinstance(self.selected_file, BerTlvEF):
raise TypeError("Only works with BER-TLV EF") raise TypeError("Only works with BER-TLV EF, but %s is %s" % (self.selected_file,
self.selected_file.__class__.__mro__))
return self.scc.set_data(self.selected_file.fid, tag, data_hex, conserve=self.rs.conserve_write) return self.scc.set_data(self.selected_file.fid, tag, data_hex, conserve=self.rs.conserve_write)
def register_cmds(self, cmd_app=None): def register_cmds(self, cmd_app=None):