FreeCalypso > hg > fc-sim-tools
annotate uicc/readops.c @ 102:c2f18d7b0a1e
doc/Admin-write-commands: document write-hplmn-timer command
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sat, 14 May 2022 23:20:38 +0000 | 
| parents | b70d35f5476f | 
| children | 
| rev | line source | 
|---|---|
| 15 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 #include <sys/types.h> | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 #include <stdio.h> | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 #include <stdlib.h> | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 #include "simresp.h" | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 readbin_op(offset, len) | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 unsigned offset, len; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 { | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 u_char cmd[5]; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 int rc; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 /* READ BINARY command APDU */ | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 cmd[0] = 0x00; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 cmd[1] = 0xB0; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 cmd[2] = offset >> 8; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 cmd[3] = offset; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 cmd[4] = len; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 rc = apdu_exchange(cmd, 5); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 if (rc < 0) | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 return(rc); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 if (sim_resp_sw != 0x9000) { | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 fprintf(stderr, "bad SW response to READ BINARY: %04X\n", | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 sim_resp_sw); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 return(-1); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 } | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 if (sim_resp_data_len != len) { | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 fprintf(stderr, | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 "error: READ BINARY returned %u bytes, expected %u\n", | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 sim_resp_data_len, len); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 return(-1); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 } | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 return(0); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 } | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 readrec_op(recno, mode, len) | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 unsigned recno, mode, len; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 { | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 u_char cmd[5]; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 int rc; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 /* READ RECORD command APDU */ | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 cmd[0] = 0x00; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 cmd[1] = 0xB2; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 cmd[2] = recno; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 cmd[3] = mode; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 cmd[4] = len; | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 rc = apdu_exchange(cmd, 5); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 if (rc < 0) | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 return(rc); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 if (sim_resp_sw != 0x9000) { | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 fprintf(stderr, "bad SW response to READ RECORD: %04X\n", | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 sim_resp_sw); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 return(-1); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 } | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 if (sim_resp_data_len != len) { | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 fprintf(stderr, | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 "error: READ RECORD returned %u bytes, expected %u\n", | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 sim_resp_data_len, len); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 return(-1); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 } | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 return(0); | 
| 
b70d35f5476f
fc-uicc-tool ported over
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 } | 
