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