1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "libpasori.h"
4 #include "libpasori_command.h"
5 #define TRUE 1
6 #define FALSE 0
7
8 const unsigned long dayofm[ ] = { /* �[�N�łȂ��N�̊e���̓��� */
9 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
10 };
11 const unsigned long dayoflm[ ] = { /* �[�N�̊e���̓��� */
12 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
13 };
14
IsLeapYear(int year)15 int IsLeapYear(int year)
16 {
17 if (!(year % 4) && ((year % 100) || !(year % 400)))
18 return (TRUE);
19 else
20 return (FALSE);
21 }
22
main(int argc,char ** argv)23 int main(int argc, char **argv){
24 pasori* p;
25 felica* f;
26 int i;
27 unsigned int month, day;
28 uint8 b[16];
29
30 char* devpath = NULL;
31 if (argc == 2) {
32 devpath = argv[1];
33 }
34 p = pasori_open(devpath);
35 if(!p){
36 printf("error\n");
37 exit(-1);
38 }
39 pasori_init(p);
40 f = felica_polling(p,0xFE00,0,0);
41 if (f) {
42 printf("*** Edy Value ***\n");
43 i=0;
44 while(!felica_read_without_encryption02(f,0x170F,0,i,b)){
45 printf("[%02d] : ",i);
46 printf("%02X ",b[0]);
47
48 int year = 2000;
49 day = (b[4]*256+b[5])/2;
50 while (day > 366) {
51 if (IsLeapYear(year))
52 day -= 366;
53 else
54 day -= 365;
55 year++;
56 }
57 day++;
58 month=0;
59 while (1) {
60 if (IsLeapYear(year)) {
61 if (day <= dayoflm[month -1])
62 break;
63 else {
64 day -= dayoflm[month -1];
65 month++;
66 }
67 }
68 if (!IsLeapYear(year)) {
69 if (day <= dayofm[month -1])
70 break;
71 else {
72 day -= dayofm[month -1];
73 month++;
74 }
75 }
76 }
77 printf("%02d/%02d/%02d ", year, month, day);
78 printf("%02X",b[6]);
79 printf("%02X",b[7]);
80 if(b[0]==0x02)
81 printf(" % 5d Yen(chg) ",b[10]*256+b[11]);
82 else
83 printf(" % 5d Yen(use) ",b[10]*256+b[11]);
84 printf(" --> % 5d Yen (rest) ",b[14]*256+b[15]);
85 printf("%02X%02X%02X\n",b[1],b[2],b[3]);
86 i++;
87 }
88 free(f);
89 }
90 pasori_close(p);
91 return 0;
92 }
93