AppNearMe µNFC stack for the NXP PN532 chip License: You can use the stack free of charge to prototype with mbed; if you want to use the stack with your commercial product, get in touch!

Dependents:   IOT_sensor_nfc AppNearMe_MuNFC_PN532_Test p2p_nfc_test NFCMoodLamp ... more

License

You can use the stack free of charge to prototype with mbed; if you want to use the stack with your commercial product, get in touch!

PN532/munfc/drv/pn532/pn532_status.h

Committer:
AppNearMe
Date:
2012-11-07
Revision:
10:2af578c635cd

File content as of revision 10:2af578c635cd:

/*
    pn532_status.h 
    Copyright (c) Donatien Garnier 2012
    donatien.garnier@appnearme.com
    http://www.appnearme.com/
*/


#ifndef PN532_STATUS_H_
#define PN532_STATUS_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "core/errors.h"

#define PN532_STATUS_TIMEOUT           0x01 //Time Out, the target has not answered
#define PN532_STATUS_CRC               0x02 //A CRC error has been detected by the CIU
#define PN532_STATUS_PARITY            0x03 //A Parity error has been detected by the CIU 0x03
#define PN532_STATUS_BITCOUNT          0x04 //During an anti-collision/select operation (ISO/IEC14443-3
                                         //Type A and ISO/IEC18092 106 kbps passive mode), an
                                         //erroneous Bit Count has been detected
#define PN532_STATUS_FRAMING           0x05 //Framing error during Mifare operation
#define PN532_STATUS_ANTICOLL          0x06 //An abnormal bit-collision has been detected during bit wise
                                         //anti-collision at 106 kbps
#define PN532_STATUS_BUFFER_TOO_SMALL  0x07 //Communication buffer size insufficient 0x07
#define PN532_STATUS_BUFFER_OVERFLOW   0x09 //RF Buffer overflow has been detected by the CIU (bit
                                         //BufferOvfl of the register CIU_Error)
#define PN532_STATUS_NFCIP1_ACTIVE     0x0A //In active communication mode, the RF field has not been
                                         //switched on in time by the counterpart (as defined in NFCIP-1
                                         //standard)
#define PN532_STATUS_RF                0x0B //RF Protocol error
#define PN532_STATUS_OVERHEAT          0x0D //Temperature error: the internal temperature sensor has
                                         //detected overheating, and therefore has automatically
                                         //switched off the antenna drivers
#define PN532_STATUS_INTERNAL          0x0E //Internal buffer overflow
#define PN532_STATUS_INVALID_PARAM     0x10 //Invalid parameter (range, format, …)
#define PN532_STATUS_RELEASED          0x29 //Target has been released (RF off)

#define ___PN532_STATUS_CHECK(e,s) ((e&0x3F)==s)
#define PN532_STATUS_TO_ERR( e ) (___PN532_STATUS_CHECK((e&0x3F),0)?OK: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_TIMEOUT))?ERR_TIMEOUT:  \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_CRC))?ERR_CRC: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_PARITY))?ERR_PARITY: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_BITCOUNT))?ERR_PROTOCOL: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_FRAMING))?ERR_PROTOCOL: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_NFCIP1_ACTIVE))?ERR_PROTOCOL: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_RF))?ERR_PROTOCOL: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_ANTICOLL))?ERR_COLLISION: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_BUFFER_TOO_SMALL))?ERR_BUFFER_TOO_SMALL: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_BUFFER_OVERFLOW))?ERR_CONTROLLER: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_OVERHEAT))?ERR_CONTROLLER: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_INTERNAL))?ERR_CONTROLLER: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_INVALID_PARAM))?ERR_PARAMS: \
                                (___PN532_STATUS_CHECK(e,PN532_STATUS_RELEASED))?ERR_FIELD: \
                                ERR_UNKNOWN \
                              )

#ifdef __cplusplus
}
#endif

#endif /* PN532_STATUS_H_ */