00001
00002
00003
00004
00005
00006
00007 #include <ccid.h>
00008 #include <sim.h>
00009
00010 static int found_cci(ccidev_t dev)
00011 {
00012 chipcard_t cc;
00013 cci_t cci;
00014 sim_t sim;
00015 int ret = 0;
00016
00017 printf("simtool: Found a chipcard slot\n");
00018
00019 cci = cci_probe(dev, "simtool.trace");
00020 if ( NULL == cci )
00021 goto out;
00022
00023 cc = cci_get_slot(cci, 0);
00024 if ( NULL == cc ) {
00025 fprintf(stderr, "ccid: error: no slots on CCI\n");
00026 goto out_close;
00027 }
00028
00029 printf("\nsimtool: wait for chipcard...\n");
00030 if ( !chipcard_wait_for_card(cc) )
00031 goto out_close;
00032
00033 printf("\nsimtool: SIM attached\n");
00034 sim = sim_new(cc);
00035 if ( NULL == sim )
00036 goto out_close;
00037
00038
00039
00040
00041 printf("\nsimtool: done\n");
00042 sim_free(sim);
00043
00044 ret = 1;
00045
00046 out_close:
00047 cci_close(cci);
00048 out:
00049 return ret;
00050 }
00051
00052 int main(int argc, char **argv)
00053 {
00054 ccidev_t *dev;
00055 size_t num_dev, i;
00056
00057 dev = ccid_get_device_list(&num_dev);
00058 if ( NULL == dev )
00059 return EXIT_FAILURE;
00060
00061 for(i = 0; i < num_dev; i++)
00062 found_cci(dev[i]);
00063
00064 ccid_free_device_list(dev);
00065
00066 return EXIT_SUCCESS;
00067 }