TERMINAL CAPABILITY: decode the A9 template (TS 102 221 §11.1.19)
- terminal power supply (tag 80): voltage class per Table 6.1, maximum
current in mA, clock in 0.1 MHz steps ('FF' = not indicated)
- extended logical channels (tag 81) — zero length per §11.1.19.2.2, a
nonzero length is preserved as raw
- additional interfaces (tag 82 b1 = UICC-CLF)
- eUICC device capabilities: tag 83 per GSMA SGP.22 v2.6 §3.4.2 Table 7
(LUId/LPDd/LDSd/LUIe-SCWS); tag 84 preserved raw (no pinned SGP.32 spec)
- unknown/private TLVs preserved via raw_tlv
- concise APDU-list summary; decoded rows in the PWA detail view
- v2.1.0; SW cache simtrace-analyser-v55
- tests: 6 real samples from the local trace sessions (49/55/58/61/206/208)
This commit is contained in:
1 parent
38650b4797
commit
561801a983
9 files changed
+210
-6
No files matched your search
+26
-1
@@ -1300,6 +1300,31 @@ function cmdRows(cmd) {
|
||||
rows.push(['Encapsulated', cmd.encapsulated.type]);
|
||||
}
|
||||
if (cmd.text_note) rows.push(['Text note', cmd.text_note]);
|
||||
|
||||
// TERMINAL CAPABILITY (TS 102 221 §11.1.19)
|
||||
if (cmd.power_supply) {
|
||||
const ps = cmd.power_supply;
|
||||
const bits = [];
|
||||
bits.push(ps.classes && ps.classes.length
|
||||
? 'class ' + ps.classes.join('+')
|
||||
: 'class 0x' + hx(ps.class_raw || 0, 2));
|
||||
if (ps.max_current_ma !== undefined) bits.push(ps.max_current_ma + ' mA');
|
||||
if (ps.clock_mhz !== undefined && ps.clock_mhz !== null) bits.push(ps.clock_mhz + ' MHz clock');
|
||||
else if (ps.clock_raw !== undefined) bits.push('clock not indicated');
|
||||
rows.push(['Power supply', bits.join(', ')]);
|
||||
}
|
||||
if (cmd.extended_channels) rows.push(['Logical channels', 'extended support']);
|
||||
if (cmd.extended_channels_raw) rows.push(['Logical channels raw', cmd.extended_channels_raw]);
|
||||
if (cmd.interfaces) rows.push(['Additional interfaces',
|
||||
cmd.interfaces.length ? cmd.interfaces.join(', ') : 'none']);
|
||||
if (cmd.interfaces_raw) rows.push(['Interfaces raw', cmd.interfaces_raw]);
|
||||
if (cmd.euicc_sgp22) {
|
||||
const e = cmd.euicc_sgp22;
|
||||
const names = (e.functions || []).join(', ');
|
||||
rows.push(['eUICC (SGP.22)', names ? names + ' \u00b7 0x' + e.raw : '0x' + e.raw]);
|
||||
}
|
||||
if (cmd.euicc_sgp32) rows.push(['eUICC (SGP.32)', '0x' + (cmd.euicc_sgp32.raw || '')]);
|
||||
|
||||
if (cmd.raw_tlv) {
|
||||
for (const t of cmd.raw_tlv) rows.push(['TLV 0x' + t.tag, t.value || '(empty)']);
|
||||
}
|
||||
@@ -2681,7 +2706,7 @@ function onFilterChange() {
|
||||
}
|
||||
|
||||
// ──────────────────── Versioning ────────────────────
|
||||
const PWA_VERSION = '2.0.0';
|
||||
const PWA_VERSION = '2.1.0';
|
||||
const MIN_SERVER_VERSION = '1.0.0';
|
||||
|
||||
function parseVersion(v) {
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
const CACHE = 'simtrace-analyser-v54';
|
||||
const CACHE = 'simtrace-analyser-v55';
|
||||
|
||||
const PRECACHE = [
|
||||
'index.html',
|
||||
|
||||
Reference in new issue
Block a user