Sony FeliCa reader/writer (RC-S620/S) library Copyright 2010 Sony Corporation, modified by SWITCHSCIENCE, modified by Suga

Dependents:   RFID_FeliCa_sample

Committer:
okini3939
Date:
Thu May 10 06:13:54 2012 +0000
Revision:
0:ccb5446a6b93

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:ccb5446a6b93 1 /*
okini3939 0:ccb5446a6b93 2 * RC-S620/S sample library for Arduino
okini3939 0:ccb5446a6b93 3 *
okini3939 0:ccb5446a6b93 4 * Copyright 2010 Sony Corporation
okini3939 0:ccb5446a6b93 5 *
okini3939 0:ccb5446a6b93 6 * Rewrite for mbed
okini3939 0:ccb5446a6b93 7 *
okini3939 0:ccb5446a6b93 8 * modified by SWITCHSCIENCE
okini3939 0:ccb5446a6b93 9 * https://github.com/SWITCHSCIENCE/mbed-FeliCa
okini3939 0:ccb5446a6b93 10 *
okini3939 0:ccb5446a6b93 11 * modified by Suga
okini3939 0:ccb5446a6b93 12 */
okini3939 0:ccb5446a6b93 13
okini3939 0:ccb5446a6b93 14 /** @file
okini3939 0:ccb5446a6b93 15 * @brief Sony FeliCa reader/writer (RC-S620/S) library for mbed
okini3939 0:ccb5446a6b93 16 */
okini3939 0:ccb5446a6b93 17
okini3939 0:ccb5446a6b93 18 #include "mbed.h"
okini3939 0:ccb5446a6b93 19 #include <inttypes.h>
okini3939 0:ccb5446a6b93 20
okini3939 0:ccb5446a6b93 21 #ifndef RCS620S_H_
okini3939 0:ccb5446a6b93 22 #define RCS620S_H_
okini3939 0:ccb5446a6b93 23
okini3939 0:ccb5446a6b93 24 /* --------------------------------
okini3939 0:ccb5446a6b93 25 * Constant
okini3939 0:ccb5446a6b93 26 * -------------------------------- */
okini3939 0:ccb5446a6b93 27
okini3939 0:ccb5446a6b93 28 #define RCS620S_MAX_CARD_RESPONSE_LEN 254
okini3939 0:ccb5446a6b93 29 #define RCS620S_MAX_RW_RESPONSE_LEN 265
okini3939 0:ccb5446a6b93 30
okini3939 0:ccb5446a6b93 31 /* --------------------------------
okini3939 0:ccb5446a6b93 32 * Class Declaration
okini3939 0:ccb5446a6b93 33 * -------------------------------- */
okini3939 0:ccb5446a6b93 34
okini3939 0:ccb5446a6b93 35 class RCS620S
okini3939 0:ccb5446a6b93 36 {
okini3939 0:ccb5446a6b93 37 public:
okini3939 0:ccb5446a6b93 38 RCS620S(PinName p_tx, PinName p_rx);
okini3939 0:ccb5446a6b93 39
okini3939 0:ccb5446a6b93 40 int initDevice(void);
okini3939 0:ccb5446a6b93 41 int polling(uint16_t systemCode = 0xffff);
okini3939 0:ccb5446a6b93 42 int cardCommand(
okini3939 0:ccb5446a6b93 43 const uint8_t* command,
okini3939 0:ccb5446a6b93 44 uint8_t commandLen,
okini3939 0:ccb5446a6b93 45 uint8_t response[RCS620S_MAX_CARD_RESPONSE_LEN],
okini3939 0:ccb5446a6b93 46 uint8_t* responseLen);
okini3939 0:ccb5446a6b93 47 int rfOff(void);
okini3939 0:ccb5446a6b93 48
okini3939 0:ccb5446a6b93 49 int push(
okini3939 0:ccb5446a6b93 50 const uint8_t* data,
okini3939 0:ccb5446a6b93 51 uint8_t dataLen);
okini3939 0:ccb5446a6b93 52
okini3939 0:ccb5446a6b93 53 private:
okini3939 0:ccb5446a6b93 54 int rwCommand(
okini3939 0:ccb5446a6b93 55 const uint8_t* command,
okini3939 0:ccb5446a6b93 56 uint16_t commandLen,
okini3939 0:ccb5446a6b93 57 uint8_t response[RCS620S_MAX_RW_RESPONSE_LEN],
okini3939 0:ccb5446a6b93 58 uint16_t* responseLen);
okini3939 0:ccb5446a6b93 59 void cancel(void);
okini3939 0:ccb5446a6b93 60 uint8_t calcDCS(
okini3939 0:ccb5446a6b93 61 const uint8_t* data,
okini3939 0:ccb5446a6b93 62 uint16_t len);
okini3939 0:ccb5446a6b93 63
okini3939 0:ccb5446a6b93 64 void writeSerial(
okini3939 0:ccb5446a6b93 65 const uint8_t* data,
okini3939 0:ccb5446a6b93 66 uint16_t len);
okini3939 0:ccb5446a6b93 67 int readSerial(
okini3939 0:ccb5446a6b93 68 uint8_t* data,
okini3939 0:ccb5446a6b93 69 uint16_t len);
okini3939 0:ccb5446a6b93 70 void flushSerial(void);
okini3939 0:ccb5446a6b93 71
okini3939 0:ccb5446a6b93 72 int checkTimeout(time_t t0);
okini3939 0:ccb5446a6b93 73
okini3939 0:ccb5446a6b93 74 public:
okini3939 0:ccb5446a6b93 75 time_t timeout;
okini3939 0:ccb5446a6b93 76 uint8_t idm[8];
okini3939 0:ccb5446a6b93 77 uint8_t pmm[8];
okini3939 0:ccb5446a6b93 78
okini3939 0:ccb5446a6b93 79 private:
okini3939 0:ccb5446a6b93 80 Serial serial;
okini3939 0:ccb5446a6b93 81 };
okini3939 0:ccb5446a6b93 82
okini3939 0:ccb5446a6b93 83 #endif /* !RCS620S_H_ */