X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=src%2Ftarget%2Ffirmware%2Fapps%2Fsimtest%2Fmain.c;fp=src%2Ftarget%2Ffirmware%2Fapps%2Fsimtest%2Fmain.c;h=4b9fbcd4d09421ec3dcaa030cdfd300be38cc9c7;hb=cd59e3afac8019d0d45e5e8247776b32e01dcf72;hp=83f708efea17a6e9b7ea068f0402eef5435e5890;hpb=8d1a687c10624ddab7b4c23bd4d6d4b557c632bd;p=osmocom-bb.git diff --git a/src/target/firmware/apps/simtest/main.c b/src/target/firmware/apps/simtest/main.c index 83f708e..4b9fbcd 100755 --- a/src/target/firmware/apps/simtest/main.c +++ b/src/target/firmware/apps/simtest/main.c @@ -52,14 +52,14 @@ static void myHexdump(uint8_t *data, int len) int i; for(i=0;i Status word: %x\n", (status_word[0] << 8) | status_word[1]); + + if(status_word[0] != 0x9F || status_word[1] != 0x0C) + return (status_word[0] << 8) | status_word[1]; + + /* GET RESPONSE */ + + if(calypso_sim_transceive(SIM_CLASS, SIM_GET_RESPONSE, 0, 0, 0x0C, data ,status_word, SIM_APDU_GET) != 0) + return 0xFFFF; + + return (status_word[0] << 8) | status_word[1]; +} + + +/* FIXME: We need proper calibrated delay loops at some point! */ +void delay_us(unsigned int us) +{ + volatile unsigned int i; + + for (i= 0; i < us*4; i++) { i; } +} + +void delay_ms(unsigned int ms) +{ + volatile unsigned int i; + for (i= 0; i < ms*1300; i++) { i; } +} + /* Execute my (dexter's) personal test */ void do_sim_test(void) { @@ -171,7 +220,7 @@ void do_sim_test(void) uint8_t atr[20]; uint8_t atrLength = 0; - + memset(atr,0,sizeof(atr)); @@ -185,7 +234,7 @@ void do_sim_test(void) /* Initialize Sim-Controller driver */ puts("Initializing driver:\n"); - calypso_sim_init(); + calypso_sim_init(NULL); /* Power up sim and display ATR */ puts("Power up simcard:\n"); @@ -215,6 +264,9 @@ void do_sim_test(void) puts(" * Testing SELECT: Selecting DF_GSM\n"); printf(" ==> Status word: %x\n", sim_select(SIM_DF_GSM)); + puts(" * Testing PIN VERIFY\n"); + printf(" ==> Status word: %x\n", sim_verify("1234")); + puts(" * Testing SELECT: Selecting EF_IMSI\n"); printf(" ==> Status word: %x\n", sim_select(SIM_EF_IMSI)); @@ -222,11 +274,18 @@ void do_sim_test(void) printf(" ==> Status word: %x\n", sim_status()); memset(buffer,0,sizeof(buffer)); - puts(" * Testing READ BINARY:\n"); + puts(" * Testing READ BINARY:\n"); printf(" ==> Status word: %x\n", sim_readbinary(0,0,9,buffer)); printf(" Data: "); myHexdump(buffer,9); + memset(buffer,0,sizeof(buffer)); + memcpy(buffer,"\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff",16); + puts(" * Testing RUN GSM ALGORITHM\n"); + printf(" ==> Status word: %x\n", sim_run_gsm_algorith(buffer)); + printf(" Result: "); + myHexdump(buffer,12); + delay_ms(5000); calypso_sim_powerdown();