PN532 NFC shield of Adafruit based on PN532 of Seeed.

Fork of PN532 by Seeed

PN532Interface.h

Committer:
dwini
Date:
2016-11-17
Revision:
11:e7bbcfa61859
Parent:
6:418ee8924317

File content as of revision 11:e7bbcfa61859:



#ifndef __PN532_INTERFACE_H__
#define __PN532_INTERFACE_H__

#include <stdint.h>

#define PN532_PREAMBLE                (0x00)
#define PN532_STARTCODE1              (0x00)
#define PN532_STARTCODE2              (0xFF)
#define PN532_POSTAMBLE               (0x00)

#define PN532_HOSTTOPN532             (0xD4)
#define PN532_PN532TOHOST             (0xD5)

#define PN532_ACK_WAIT_TIME           (10)  // ms, timeout of waiting for ACK

#define PN532_INVALID_ACK             (-1)
#define PN532_TIMEOUT                 (-2)
#define PN532_INVALID_FRAME           (-3)
#define PN532_NO_SPACE                (-4)

#define REVERSE_BITS_ORDER(b)         b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; \
                                      b = (b & 0xCC) >> 2 | (b & 0x33) << 2; \
                                      b = (b & 0xAA) >> 1 | (b & 0x55) << 1

/**
 * The PN532Interface class
 */
class PN532Interface
{
public:
    virtual void begin() = 0;
    virtual void wakeup() = 0;

    /**
     * @brief    write a command and check ack
     * @param    header  packet header
     * @param    hlen    length of header
     * @param    body    packet body
     * @param    blen    length of body
     * @return   0       success
     *           not 0   failed
     */
    virtual int8_t writeCommand(const uint8_t *header, uint8_t hlen, const uint8_t *body = 0, uint8_t blen = 0) = 0;

    /**
     * @brief    read the response of a command, strip prefix and suffix
     * @param    buf     to contain the response data
     * @param    len     lenght to read
     * @param    timeout max time to wait, 0 means no timeout
     * @return   >=0     length of response without prefix and suffix
     *           <0      failed to read response
     */
    virtual int16_t readResponse(uint8_t buf[], uint8_t len, uint16_t timeout = 1000) = 0;
};

#endif