FreeCalypso > hg > freecalypso-hwlab
view simtool/telsum.c @ 132:5af88fa11b54
fc-uicc-tool: SELECT response parsing implemented (basic)
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 04 Feb 2021 01:36:54 +0000 |
parents | 66c0cb0e9876 |
children |
line wrap: on
line source
/* * This module implements the telecom-sum (summary info) command. */ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <pcsclite.h> #include <winscard.h> #include "globals.h" #include "file_id.h" static do_phonebook_file(file_id, book_name) unsigned file_id; char *book_name; { int rc; rc = select_op(file_id); if (rc < 0) { printf("%s not present\n", book_name); return(rc); } rc = parse_ef_select_response(); if (rc < 0) { fprintf(stderr, "error occurred on SELECT of EF_%s\n", book_name); return(rc); } if (curfile_structure != 0x01) { fprintf(stderr, "error: EF_%s is not linear fixed\n", book_name); return(-1); } if (curfile_record_len < 14) { fprintf(stderr, "error: EF_%s has record length of %u bytes, less than minimum 14\n", book_name, curfile_record_len); return(-1); } printf("%s has %u entries, %u bytes of alpha tag\n", book_name, curfile_record_count, curfile_record_len - 14); return(0); } static do_sms_store() { int rc; rc = select_op(EF_SMS); if (rc < 0) { printf("EF_SMS not present\n"); return(rc); } rc = parse_ef_select_response(); if (rc < 0) { fprintf(stderr, "error occurred on SELECT of EF_SMS\n"); return(rc); } if (curfile_structure != 0x01 || curfile_record_len != 176) { fprintf(stderr, "error: EF_SMS is not linear fixed with 176-byte records\n"); return(-1); } printf("SMS store has %u entries\n", curfile_record_count); return(0); } cmd_telecom_sum() { int rc; rc = select_op(DF_TELECOM); if (rc < 0) return(rc); do_phonebook_file(EF_ADN, "ADN"); do_phonebook_file(EF_FDN, "FDN"); do_phonebook_file(EF_SDN, "SDN"); do_phonebook_file(EF_MSISDN, "MSISDN"); do_sms_store(); return(0); }