Suga koubou
/
RFID_FeliCa_sample
Sony FeliCa reader/writer (RC-S620/S) library sample
main.cpp@0:8fff4bbad366, 2012-05-10 (annotated)
- Committer:
- okini3939
- Date:
- Thu May 10 06:15:14 2012 +0000
- Revision:
- 0:8fff4bbad366
Who changed what in which revision?
User | Revision | Line number | New 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 | } |