Sony FeliCa reader/writer (RC-S620/S) library sample

Dependencies:   RCS620S mbed

Committer:
okini3939
Date:
Thu May 10 06:15:14 2012 +0000
Revision:
0:8fff4bbad366

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:8fff4bbad366 1 /*
okini3939 0:8fff4bbad366 2 * RC-S620/S sample program for mbed
okini3939 0:8fff4bbad366 3 *
okini3939 0:8fff4bbad366 4 * Copyright 2011 SWITCHSCIENCE
okini3939 0:8fff4bbad366 5 * https://github.com/SWITCHSCIENCE/mbed-FeliCa
okini3939 0:8fff4bbad366 6 *
okini3939 0:8fff4bbad366 7 * modified by Suga
okini3939 0:8fff4bbad366 8 */
okini3939 0:8fff4bbad366 9
okini3939 0:8fff4bbad366 10 #include <inttypes.h>
okini3939 0:8fff4bbad366 11 #include "mbed.h"
okini3939 0:8fff4bbad366 12 #include "RCS620S.h"
okini3939 0:8fff4bbad366 13
okini3939 0:8fff4bbad366 14 static char HEXSTRING[17] = "0123456789ABCDEF";
okini3939 0:8fff4bbad366 15 char *itoh(uint8_t val, char *ptr);
okini3939 0:8fff4bbad366 16
okini3939 0:8fff4bbad366 17 DigitalOut serialready(LED1);
okini3939 0:8fff4bbad366 18 DigitalOut felicarwready(LED2);
okini3939 0:8fff4bbad366 19 DigitalOut cardread(LED3);
okini3939 0:8fff4bbad366 20
okini3939 0:8fff4bbad366 21 Serial pc(USBTX, USBRX);
okini3939 0:8fff4bbad366 22 RCS620S felica(p9, p10);
okini3939 0:8fff4bbad366 23
okini3939 0:8fff4bbad366 24 int main() {
okini3939 0:8fff4bbad366 25 int ret;
okini3939 0:8fff4bbad366 26 int loop;
okini3939 0:8fff4bbad366 27 char idbuffer[17];
okini3939 0:8fff4bbad366 28 char *hexid;
okini3939 0:8fff4bbad366 29 char pmmbuffer[17];
okini3939 0:8fff4bbad366 30 char *hexpmm;
okini3939 0:8fff4bbad366 31
okini3939 0:8fff4bbad366 32 serialready = 1;
okini3939 0:8fff4bbad366 33 pc.baud(115200);
okini3939 0:8fff4bbad366 34 pc.printf("Serial Ready.\n\r");
okini3939 0:8fff4bbad366 35
okini3939 0:8fff4bbad366 36 ret = 0;
okini3939 0:8fff4bbad366 37 while (ret == 0) {
okini3939 0:8fff4bbad366 38 wait(1);
okini3939 0:8fff4bbad366 39 ret = felica.initDevice();
okini3939 0:8fff4bbad366 40 }
okini3939 0:8fff4bbad366 41 felicarwready = 1;
okini3939 0:8fff4bbad366 42 pc.printf("FeliCa Reader/Writer Ready.\n\r");
okini3939 0:8fff4bbad366 43
okini3939 0:8fff4bbad366 44 wait(2);
okini3939 0:8fff4bbad366 45
okini3939 0:8fff4bbad366 46 while (1) {
okini3939 0:8fff4bbad366 47
okini3939 0:8fff4bbad366 48 pc.printf("Please FeliCa Touch! ");
okini3939 0:8fff4bbad366 49
okini3939 0:8fff4bbad366 50 hexid = idbuffer + sizeof(idbuffer); // hexid = buffer[ last of elements ];
okini3939 0:8fff4bbad366 51 *--hexid = '\0';
okini3939 0:8fff4bbad366 52 hexpmm = pmmbuffer + sizeof(pmmbuffer);
okini3939 0:8fff4bbad366 53 *--hexpmm = '\0';
okini3939 0:8fff4bbad366 54
okini3939 0:8fff4bbad366 55 while (felica.polling(0xffff) == 0);
okini3939 0:8fff4bbad366 56 cardread = 1;
okini3939 0:8fff4bbad366 57 felicarwready = 0;
okini3939 0:8fff4bbad366 58
okini3939 0:8fff4bbad366 59
okini3939 0:8fff4bbad366 60 pc.printf("idm: ");
okini3939 0:8fff4bbad366 61 for (loop = 7; loop >= 0; loop--){
okini3939 0:8fff4bbad366 62 hexid = itoh(felica.idm[loop], hexid);
okini3939 0:8fff4bbad366 63 }
okini3939 0:8fff4bbad366 64 pc.printf("%s /", hexid);
okini3939 0:8fff4bbad366 65
okini3939 0:8fff4bbad366 66 pc.printf("pmm: ");
okini3939 0:8fff4bbad366 67 for (loop = 7; loop >= 0; loop--){
okini3939 0:8fff4bbad366 68 hexpmm = itoh(felica.pmm[loop], hexpmm);
okini3939 0:8fff4bbad366 69 }
okini3939 0:8fff4bbad366 70 pc.printf("%s\n\r", hexpmm);
okini3939 0:8fff4bbad366 71
okini3939 0:8fff4bbad366 72 wait(1);
okini3939 0:8fff4bbad366 73 cardread = 0;
okini3939 0:8fff4bbad366 74 felicarwready = 1;
okini3939 0:8fff4bbad366 75 }
okini3939 0:8fff4bbad366 76 }
okini3939 0:8fff4bbad366 77
okini3939 0:8fff4bbad366 78 char *itoh(uint8_t val, char *ptr) {
okini3939 0:8fff4bbad366 79 *--ptr = HEXSTRING[(val % 16)]; // (val & 0x0f)
okini3939 0:8fff4bbad366 80 val /= 16; // val = val >> 4;
okini3939 0:8fff4bbad366 81 *--ptr = HEXSTRING[(val % 16)]; // (val & 0x0f)
okini3939 0:8fff4bbad366 82 return(ptr);
okini3939 0:8fff4bbad366 83 }