PN532 NFC library for Seeed Studio's NFC Shield

Fork of PN532 by Yihui Xiong

PN532_SPI.h

Committer:
yihui
Date:
2013-10-08
Revision:
0:9c6b9280c0e1
Child:
1:b8cab5222fd0

File content as of revision 0:9c6b9280c0e1:


#ifndef __PN532_SPI_H__
#define __PN532_SPI_H__

#include "mbed.h"
#include "PN532Interface.h"

class PN532_SPI : public PN532Interface {
public:
    PN532_SPI(SPI &spi, PinName ss);
        PN532_SPI(SPI *spi, PinName ss);
    
    virtual void begin();
    virtual void wakeup();
    virtual int8_t writeCommand(const uint8_t buf[], uint8_t len);
    virtual int16_t readResponse(uint8_t buf[], uint8_t len, uint16_t timeout);
    
private:
    SPI*        _spi;
    DigitalOut  _ss;
    uint8_t     command;
    
    bool isReady();
    void writeFrame(const uint8_t buf[], uint8_t len);
    int8_t readAckFrame();
    
    inline void write(uint8_t data) { REVERSE_BITS_ORDER(data); _spi->write(data); }
    inline uint8_t read() { uint8_t data =  _spi->write(0); REVERSE_BITS_ORDER(data); return data; }   
};

#endif