#include <stdio.h>
#include <stdlib.h>
#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;
}
