feat: offline file list + SELECT picker for the SIM/USIM RFM builders (v3.4.0)
The SELECT rows (compact RFM chains and the Expanded Script C-APDU picker, which shares the row editor) now have a file picker instead of typing FIDs, paths or chains by hand. Data: - `pysim_simple_server/uicc_files.py` builds the standard file list cardless from pySim's profiles and application classes (CardProfileUICC + CardProfileSIM for the MF tree, every concrete CardApplication subclass for the ADFs) and writes `frontend/uicc_files.json` (490 entries: canonical FID path, symbolic name, fid, kind, root, ADF AID). `tests/test_uicc_files.py` regenerates it and fails when pySim adds or renames files. The asset is precached by the service worker, so the builders keep working offline. Picker: - Sources merged per canonical path: the loaded file-manager tree (card names and probed presence; probed-absent files hidden), custom files, and the shipped standard list (specs-default until "Probe all files" has run). - Default list shows what the current method can express; "all files" reveals the rest, and picking one auto-switches the method - preferring path (one SELECT) over chain - with a note line explaining the switch. A "starts in" selector sets the implicit current DF (UICC shared-FS RFM app starts in MF, an ADF RFM app in its ADF, TS 102 226 7.2/7.3 - the TAR decides; default per builder, overridable per row). - Fill rules: by FID only for direct children of the current DF; path = FID sequence from MF without the MF identifier (ISO 7816-4) or the relative tail (USIM P1=09); chain stays relative and follows the TS 102 221 11.1.1.2 FID search order (children, parent, siblings), so no hop to the common ancestor. ADF roots are not pickable (selection is by AID; TS 102 226 7.1 forbids P1=04 for RFM) - the By AID method stays manual. Tests/docs: frontend/tests/uicc_files.test.js (asset shape, merge/priority/ exclusion, fill matrix, relative chains, session-context tracking, option grouping); help 2.1/2.2 EN+RU, READMEs, AGENTS. sw cache -> simple-v242.
This commit is contained in:
@@ -77,6 +77,15 @@ CLA = `A0` (GSM 11.11 / ISO 7816-4).
|
||||
| By DF name / AID | 04 | 00 | AID |
|
||||
| ADF RFM chain | 00 | 00 | FID через запятую |
|
||||
|
||||
#### Выбор файла для SELECT
|
||||
|
||||
У каждой строки SELECT есть выбор файла: поле фильтра, переключатель **all files**, корень начала сессии с текущим DF и список файлов по корням (`MF`, `ADF.USIM`, ...). Выбор файла заполняет поля текущего метода; если метод не может выразить выбор, помощник переключается на подходящий - предпочитая **path** (один SELECT), затем **chain** - и сообщает об этом, например `7F106F40` (путь от MF) или `7F20,6F46` (относительная цепочка FID).
|
||||
|
||||
- **Источник списка**: при подключённой карте приоритет у загруженного дерева файлового менеджера (имена карты, проверенное наличие; отсутствующие скрываются). Без карты и для незагруженных ветвей используется поставляемый стандартный список: `uicc_files.json`, собранный из профилей/классов приложений pySim скриптом `pysim_simple_server/uicc_files.py` и проверяемый `tests/test_uicc_files.py`. До запуска **«Проверить все файлы»** список соответствует спецификациям. Пользовательские файлы добавляются всегда.
|
||||
- **Начало сессии**: неявный текущий DF зависит от TAR, на который отправляется защищённый пакет (UICC Shared File System RFM -> MF, TS 102 226 §7.2; ADF RFM -> свой ADF, §7.3). По умолчанию: MF здесь и ADF.USIM для USIM RFM; меняется для каждой строки.
|
||||
- **Path** - последовательность FID от MF без идентификатора MF (ISO 7816-4); вариант USIM «from current DF» использует относительный хвост. **Chain** остаётся относительным к текущему DF и следует порядку поиска FID из TS 102 221 §11.1.1.2 (дети, родитель, соседи).
|
||||
- Корни ADF не выбираются - приложение выбирается по AID, и метод **By AID** остаётся ручным (TS 102 226 §7.1 запрещает P1=`04` для RFM).
|
||||
|
||||
#### Опции
|
||||
|
||||
- **Start with SELECT** — добавить SELECT перед командой.
|
||||
|
||||
Reference in New Issue
Block a user