ust: complete the USIM service table (147-150) + Services editor data fixes
The PWA's EF_UST_SERVICES stopped at 146; TS 31.102 §4.2.8 pins 147-150 (5MBS UE pre-configuration, Operator Controlled Signal Threshold per Access Technology, A2X, IMS Data Channel Indication). Add them and fix the two test fixtures that assumed the 146-service table. Resolve the three Services-editor FS mappings against the spec: - eCall Data (89) -> EF.SDN 6F49 (+ EF.FDN 6F3A) - eCall Data over IMS (112) -> EF.SDNURI 6FEF (+ EF.FDNURI 6FED) - EARFCN list for MTC/NB-IOT (121) -> EF.EARFCNList 6FFD; "Extended EARFCN support" (100) is a capability, not a file. Record the FID-first rule: the resolver and FS check key by (DF, FID), the symbolic name is only a label; and clarify that the FS check is card-only (independent of the cardless uicc_files.json list).
This commit is contained in:
1 parent
1d5a049ea1
commit
6d762b9d9c
5 files changed
+50
-39
No files matched your search
@@ -573,7 +573,7 @@ test('F8: the ADN-family entries name their extension EF and use it in refusals'
|
||||
// Wave 2 fixtures.
|
||||
const UST_ONE = '00000010'; // service 29
|
||||
const UST_MULTI = '010204'; // services 1, 10, 19
|
||||
const UST_UNMODELLED = '000000' + '10' + '00'.repeat(14) + 'FC'; // 29 + bits 147-152
|
||||
const UST_UNMODELLED = '000000' + '10' + '00'.repeat(14) + 'C0'; // 29 + bits 151-152 (above the 150-service table)
|
||||
const EST_FF = 'FFFF';
|
||||
const ACC_ONE = '8001'; // classes 15 and 0
|
||||
const AD_HEX = '00' + '0000' + '03' + 'AABB'; // op normal, info 0000, MNC 3, RFU
|
||||
@@ -615,14 +615,14 @@ test('service tables: encode/decode round-trips and unmodelled bits', () => {
|
||||
assert.strictEqual(entry.enc({ services: unmodelled }, UST_UNMODELLED), UST_UNMODELLED);
|
||||
// unchecking everything clears the table bits but keeps the unmodelled byte
|
||||
assert.strictEqual(entry.enc({ services: [] }, UST_UNMODELLED),
|
||||
'000000' + '00' + '00'.repeat(14) + 'FC');
|
||||
'000000' + '00' + '00'.repeat(14) + 'C0');
|
||||
// length is kept
|
||||
assert.strictEqual(entry.enc({ services: efDecServiceTable(efBytes('00000010' + '00'), EF_UST_SERVICES).services },
|
||||
'0000001000'), '0000001000');
|
||||
});
|
||||
|
||||
test('service tables: unknown services and a too-short table are refused', () => {
|
||||
assert.throws(() => efEncServiceTable({ services: [{ n: 147, name: 'RFU' }] },
|
||||
assert.throws(() => efEncServiceTable({ services: [{ n: 151, name: 'RFU' }] },
|
||||
'FF'.repeat(19), EF_UST_SERVICES), /Unknown service/);
|
||||
assert.throws(() => efEncServiceTable({ services: [{ n: 9, name: 'MSISDN' }] },
|
||||
'00', EF_UST_SERVICES), /too short for service/);
|
||||
|
||||
@@ -689,8 +689,8 @@ test('the bits field renders a filtered checkbox grid and collects {n,name}', ()
|
||||
assert.match(out, /class="pysim-dec-bits /);
|
||||
assert.match(out, /pysim-dec-bits-filter/);
|
||||
assert.match(out, /data-bit="29" data-bit-name="Data download via SMS-CB" checked/);
|
||||
// the whole UST table is rendered (146 services)
|
||||
assert.strictEqual((out.match(/data-bit="/g) || []).length, 146);
|
||||
// the whole UST table is rendered (150 services)
|
||||
assert.strictEqual((out.match(/data-bit="/g) || []).length, 150);
|
||||
// ACC: 15 editable classes (10 is always written 0), 15 and 0 checked
|
||||
const acc = efDecEditHtml(efDecEditModel('EF.ACC', '6f78', { kind: 'transparent', data: ACC_ONE }), ACC_ONE);
|
||||
assert.strictEqual((acc.match(/data-bit="/g) || []).length, 15);
|
||||
|
||||
Reference in new issue
Block a user