#include #include #include "libpasori.h" #define TRUE 1 #define FALSE 0 const unsigned long dayofm[ ] = { /* 閏年でない年の各月の日数 */ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; const unsigned long dayoflm[ ] = { /* 閏年の各月の日数 */ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int IsLeapYear(int year) { if (!(year % 4) && ((year % 100) || !(year % 400))) return (TRUE); else return (FALSE); } int main(void){ pasori* p; felica* f; int i; int m; int year, month, day; uint8 b[16]; p = pasori_open(NULL); if(!p){ printf("error\n"); exit(-1); } pasori_init(p); f = felica_polling(p,0xFE00,0,0); printf("*** Edy Value ***\n"); i=0; while(!felica_read_without_encryption02(f,0x170F,0,i,b)){ printf("[%02d] : ",i); printf("%02X ",b[0]); int year = 2000; day = (b[4]*256+b[5])/2; while (day > 366) { if (IsLeapYear(year)) day -= 366; else day -= 365; year++; } day++; month=0; while (1) { if (IsLeapYear(year)) { if (day <= dayoflm[month -1]) break; else { day -= dayoflm[month -1]; month++; } } if (!IsLeapYear(year)) { if (day <= dayofm[month -1]) break; else { day -= dayofm[month -1]; month++; } } } printf("%02d/%02d/%02d ", year, month, day); printf("%02X",b[6]); printf("%02X",b[7]); if(b[0]==0x02) printf(" % 5d Yen(chg) ",b[10]*256+b[11]); else printf(" % 5d Yen(use) ",b[10]*256+b[11]); printf(" --> % 5d Yen (rest) ",b[14]*256+b[15]); printf("%02X%02X%02X\n",b[1],b[2],b[3]); i++; } pasori_close(p); return 0; }