v3.23.8 review: the mixed-case command lookup and the flat-list docs

Two findings from the review of 2b994a7 (and c9ab15c, reviewed clean):

- trCommandCode() uppercased the query but compared it with the raw
  CMD_NAMES values, so the one mixed-case entry ('End of the proactive UICC
  session', 0x81) never matched.  No visible effect today (0x81 has no table
  entry - it falls back to the flat list), but a future map entry for a
  mixed-case name would silently not group.  The comparison is now
  case-insensitive, pinned by a test.
- The docs now say that the commands the spec's tables omit (SEND SS / SEND
  USSD / SEND SHORT MESSAGE / GEOGRAPHICAL LOCATION REQUEST / End of the
  proactive UICC session) keep the flat list, like ANY and the drain's rows.

Also added independent semantic pins for the parsed table (REFRESH 03/08,
PLAY TONE 09, TIMER MANAGEMENT 24, LAUNCH BROWSER 26, OPEN CHANNEL 28/3A/3B,
the MMS commands 27/3D, GET READER STATUS 38 - a column-shift regression in
the parse would break them).

861 frontend + 842 Python.
This commit is contained in:
2026-10-08 22:03:39 +03:00
parent 2b994a7a89
commit dc8d71c6a7
3 changed files with 26 additions and 2 deletions
+3 -1
View File
@@ -8094,7 +8094,9 @@ const TR_RESULT_ALIASES = {
function trCommandCode(name) {
const want = String(name === undefined || name === null ? '' : name).toUpperCase();
for (const k in CMD_NAMES) {
if (CMD_NAMES[k] === want) return parseInt(k, 16);
// case-insensitive: CMD_NAMES carries a mixed-case entry
// ('End of the proactive UICC session')
if (String(CMD_NAMES[k]).toUpperCase() === want) return parseInt(k, 16);
}
return NaN;
}