laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/38012?usp=email )
Change subject: pySim.esim.saip.File: Turn file_size into a computed property ......................................................................
pySim.esim.saip.File: Turn file_size into a computed property
This way, we can use file_size for both record-oriented and transparent EF
Change-Id: Ib787cabe969202073a8c10042e200f3d2c29db73 --- M pySim/esim/saip/__init__.py 1 file changed, 14 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/12/38012/1
diff --git a/pySim/esim/saip/__init__.py b/pySim/esim/saip/__init__.py index f934a01..88d7755 100644 --- a/pySim/esim/saip/__init__.py +++ b/pySim/esim/saip/__init__.py @@ -112,6 +112,7 @@ self.arr = None self.rec_len: Optional[int] = None self.nb_rec: Optional[int] = None + self._file_size = 0 self.high_update: bool = False self.shareable: bool = True self.df_name = None @@ -129,6 +130,16 @@ return self.template.name return None
+ @property + def file_size(self) -> Optional[int]: + """Return the size of the file in bytes.""" + if self.file_type in ['LF', 'CY']: + return self.nb_rec * self.rec_len + elif self.file_type in ['TR', 'BT']: + return self._file_size + else: + return None + @staticmethod def get_tuplelist_item(l: List[Tuple], key: str): """get the [first] value matching given key from a list of (key, value) tuples.""" @@ -194,7 +205,7 @@ if self.file_type in ['LF', 'CY']: fdb_dec['file_type'] = 'working_ef' if self.nb_rec and self.rec_len: - fileDescriptor['efFileSize'] = self._encode_file_size(self.nb_rec * self.rec_len) + fileDescriptor['efFileSize'] = self._encode_file_size(self.file_size) if self.file_type == 'LF': fdb_dec['structure'] = 'linear_fixed' elif self.file_type == 'CY': @@ -263,7 +274,7 @@ if fdb_dec['file_type'] == 'working_ef': efFileSize = fileDescriptor.get('efFileSize', None) if efFileSize: - self.file_size = self._decode_file_size(efFileSize) + self._file_size = self._decode_file_size(efFileSize) if fd_dec['num_of_rec']: self.nb_rec = fd_dec['num_of_rec'] if fd_dec['record_len']: @@ -277,7 +288,7 @@ elif fdb_dec['structure'] == 'ber_tlv': self.file_type = 'BT' if 'maximumFileSize' in pefi: - self.file_size = self._decode_file_size(pefi['maximumFileSize']) + self._file_size = self._decode_file_size(pefi['maximumFileSize']) specialFileInformation = pefi.get('specialFileInformation', None) if specialFileInformation: if specialFileInformation[0] & 0x80: