Files view: the change-details modal shows the full file path (v2.4.2)
- the modal header showed only the flat name (EF_ICCID, 4F09); it now shows the path built from data already available: the tracker's DF identity named via KNOWN_FIDS (MF, DF_GSM_ACCESS, DF_TELECOM, …), 'ADF' for the current application (7FFF), DF_CHILDREN for DF-qualified EF names (4F52 → EF_KcGPRS) and the EF.DIR labels for AID-selected applications — e.g. `MF/EF_ICCID (2FE2)`, `ADF/EF_IMSI (6F07)`, `DF_GSM_ACCESS/EF_KcGPRS (4F52)`, `AID A00000015141434C00/4F09` - exposed as `path` in the change-details payload and in the files entries (the timeline rows keep the short name — they have no room) - the colour legend (changed / newly observed / never observed) moved below the two hex views - tests: `_file_path` cases (MF, ADF, DF-qualified EF, AID with and without an EF.DIR label, FID-as-name) plus the payload field, and the Node modal test asserts the path header and that the legend follows the views - v2.4.2; SW cache simtrace-analyser-v68
This commit is contained in:
1 parent
cbb73536f4
commit
5809092175
9 files changed
+77
-21
No files matched your search
@@ -39,7 +39,8 @@ keeps counting).
|
||||
"""
|
||||
|
||||
from .database import _SUCCESS_SW1
|
||||
from .decode import (_is_df_fid, select_target_fid, selected_df_fid, sfi_table)
|
||||
from .decode import (DF_CHILDREN, KNOWN_FIDS, _is_df_fid, select_target_fid,
|
||||
selected_df_fid, sfi_table)
|
||||
|
||||
IMAGE_CAP = 64 * 1024 # observed bytes kept per file
|
||||
EVENTS_CAP = 1000 # change events kept per file
|
||||
@@ -72,6 +73,25 @@ def _file_label(d):
|
||||
return None
|
||||
|
||||
|
||||
def _file_path(df, fid, name, aid_labels=None):
|
||||
"""A human-readable path for a tracked file: the DF (named when known),
|
||||
the EF and the FID — e.g. ``MF/EF_ICCID (2FE2)``,
|
||||
``ADF/EF_IMSI (6F07)``, ``DF_GSM_ACCESS/EF_KcGPRS (4F52)``,
|
||||
``AID A00000015141434C00/4F09``."""
|
||||
ef = (DF_CHILDREN.get(df, {}) or {}).get(fid) or name or fid.upper()
|
||||
if df.startswith('aid:'):
|
||||
aid = df[4:].upper()
|
||||
label = (aid_labels or {}).get(aid)
|
||||
df_label = f'AID {aid}' + (f' ({label})' if label else '')
|
||||
elif df == '7fff':
|
||||
df_label = 'ADF'
|
||||
else:
|
||||
df_label = KNOWN_FIDS.get(df) or df.upper()
|
||||
if ef.upper() == fid.upper():
|
||||
return f'{df_label}/{ef.upper()}'
|
||||
return f'{df_label}/{ef} ({fid.upper()})'
|
||||
|
||||
|
||||
def _key_str(key):
|
||||
df, fid = key
|
||||
return f'{df}/{fid}'
|
||||
@@ -515,6 +535,8 @@ class FileTracker:
|
||||
return {
|
||||
'key': _key_str(entry.key),
|
||||
'name': entry.name,
|
||||
'path': _file_path(entry.df, entry.fid, entry.name,
|
||||
self.aid_labels),
|
||||
'df': entry.df,
|
||||
'fid': entry.fid,
|
||||
'structure': entry.structure,
|
||||
@@ -540,6 +562,8 @@ class FileTracker:
|
||||
for key, entry in self.files.items():
|
||||
files[_key_str(key)] = {
|
||||
'name': entry.name,
|
||||
'path': _file_path(entry.df, entry.fid, entry.name,
|
||||
self.aid_labels),
|
||||
'df': entry.df,
|
||||
'fid': entry.fid,
|
||||
'sfi': entry.sfi,
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
"""Single source of truth for the SIMtrace Analyser version."""
|
||||
|
||||
__version__ = '2.4.1'
|
||||
__version__ = '2.4.2'
|
||||
Reference in new issue
Block a user