Minor fixes
[hackover2013-badge-firmware.git] / drivers / sensors / pn532 / pn532.h
index a88f06b..d6fa5ac 100644 (file)
@@ -9,17 +9,13 @@
 
 #include "projectconfig.h"
 
+// Comment out this line to disable debug output
+// #define PN532_DEBUGMODE
 #define PN532_DEBUG(fmt, args...)             printf(fmt, ##args) 
 
-typedef enum pn532_state_e
-{
-  PN532_STATE_SLEEP,
-  PN532_STATE_READY,
-  PN532_STATE_BUSY
-}
-pn532_state_t;
-
-/* Error messages generate by the stack (not to be confused with app level errors from the PN532) */
+/* Error messages generated by the stack */
+/* Not to be confused with app level errors from the PN532 */
+/* These are the errors that are returned by the PN532 driver */
 typedef enum pn532_error_e
 {
   PN532_ERROR_NONE                    = 0x00,
@@ -32,8 +28,11 @@ typedef enum pn532_error_e
   PN532_ERROR_EXTENDEDFRAME           = 0x07,   // Extended frames currently unsupported
   PN532_ERROR_LENCHECKSUMMISMATCH     = 0x08,
   PN532_ERROR_RESPONSEBUFFEREMPTY     = 0x09,   // No response data received
-  PN532_ERROR_SPIREADYSTATUSTIMEOUT   = 0x0A    // Timeout waiting for 'ready' status (SPI only)
-
+  PN532_ERROR_SPIREADYSTATUSTIMEOUT   = 0x0A,   // Timeout waiting for 'ready' status (SPI only)
+  PN532_ERROR_TIMEOUTWAITINGFORCARD   = 0x0B,   // No card detected in field with the specified timeout
+  PN532_ERROR_BLOCKREADFAILED         = 0x0C,   // Unexpected response to block read request
+  PN532_ERROR_WRONGCARDTYPE           = 0x0D,   // Card is not the expected format (based on SENS_RES/ATQA value)
+  PN532_ERROR_ADDRESSOUTOFRANGE       = 0x0E    // Specified block and page is out of range
 } pn532_error_t;
 
 typedef enum pn532_modulation_e
@@ -45,6 +44,85 @@ typedef enum pn532_modulation_e
   PN532_MODULATION_JEWEL_106KBPS      = 0x04
 } pn532_modulation_t;
 
+/* HW Commands for the PN532.  */
+/* See UM0701-02 - PN532 User Manual */
+enum
+{
+  PN532_COMMAND_DIAGNOSE              = 0x00,
+  PN532_COMMAND_GETFIRMWAREVERSION    = 0x02,
+  PN532_COMMAND_GETGENERALSTATUS      = 0x04,
+  PN532_COMMAND_READREGISTER          = 0x06,
+  PN532_COMMAND_WRITEREGISTER         = 0x08,
+  PN532_COMMAND_READGPIO              = 0x0C,
+  PN532_COMMAND_WRITEGPIO             = 0x0E,
+  PN532_COMMAND_SETSERIALBAUDRATE     = 0x10,
+  PN532_COMMAND_SETPARAMETERS         = 0x12,
+  PN532_COMMAND_SAMCONFIGURATION      = 0x14,
+  PN532_COMMAND_POWERDOWN             = 0x16,
+  PN532_COMMAND_RFCONFIGURATION       = 0x32,
+  PN532_COMMAND_RFREGULATIONTEST      = 0x58,
+  PN532_COMMAND_INJUMPFORDEP          = 0x56,
+  PN532_COMMAND_INJUMPFORPSL          = 0x46,
+  PN532_COMMAND_INLISTPASSIVETARGET   = 0x4A,
+  PN532_COMMAND_INATR                 = 0x50,
+  PN532_COMMAND_INPSL                 = 0x4E,
+  PN532_COMMAND_INDATAEXCHANGE        = 0x40,
+  PN532_COMMAND_INCOMMUNICATETHRU     = 0x42,
+  PN532_COMMAND_INDESELECT            = 0x44,
+  PN532_COMMAND_INRELEASE             = 0x52,
+  PN532_COMMAND_INSELECT              = 0x54,
+  PN532_COMMAND_INAUTOPOLL            = 0x60,
+  PN532_COMMAND_TGINITASTARGET        = 0x8C,
+  PN532_COMMAND_TGSETGENERALBYTES     = 0x92,
+  PN532_COMMAND_TGGETDATA             = 0x86,
+  PN532_COMMAND_TGSETDATA             = 0x8E,
+  PN532_COMMAND_TGSETMETADATA         = 0x94,
+  PN532_COMMAND_TGGETINITIATORCOMMAND = 0x88,
+  PN532_COMMAND_TGRESPONSETOINITIATOR = 0x90,
+  PN532_COMMAND_TGGETTARGETSTATUS     = 0x8A
+};
+
+/* Application level errors generated by the PN532 chip */
+/* See UM0701-02 - PN532 User Manual */
+enum 
+{
+  PN532_APPERROR_NONE                 = 0x00,
+  PN532_APPERROR_TIMEOUT              = 0x01,
+  PN532_APPERROR_CRCERROR             = 0x02,
+  PN532_APPERROR_PARITYERROR          = 0x04,
+  PN532_APPERROR_FRAMINGERROR         = 0x05,
+  PN532_APPERROR_BITCOLLISION         = 0x06,
+  PN532_APPERROR_INSUFFICIENTBUFFER   = 0x07,
+  PN532_APPERROR_RFBUFFEROVERFLOW     = 0x09,
+  PN532_APPERROR_RFFIELDTIMEOUT       = 0x0A,
+  PN532_APPERROR_RFPROTOCOLERROR      = 0x0B,
+  PN532_APPERROR_TEMPERROR            = 0x0D,
+  PN532_APPERROR_INTERNBUFFEROVERFLOW = 0x0E,
+  PN532_APPERROR_INVALIDPARAMETER     = 0x10,
+  PN532_APPERROR_DEP_UNSUPPORTEDCMD   = 0x12,
+  PN532_APPERROR_DEP_INVALIDOFORMAT   = 0x13,
+  PN532_APPERROR_AUTHENTERR           = 0x14,
+  PN532_APPERROR_UIDCCHECKERROR       = 0x23,
+  PN532_APPERROR_DEP_INVALIDDEVSTATE  = 0x25,
+  PN532_APPERROR_OPERATIONNOTALLOWED  = 0x26,
+  PN532_APPERROR_CMDNOTACCEPTABLE     = 0x27,
+  PN532_APPERROR_TARGETRELEASED       = 0x29,
+  PN532_APPERROR_IDMISMATCH           = 0x2A,
+  PN532_APPERROR_CARDDISAPPEARED      = 0x2B,
+  PN532_APPERROR_NFCID3MISMATCH       = 0x2C,
+  PN532_APPERROR_OVERCURRENTEVENT     = 0x2D,
+  PN532_APPERROR_NADMISSINGINDEP      = 0x2E
+};
+
+/* Possible states for the PN532 SW Stack */
+typedef enum pn532_state_e
+{
+  PN532_STATE_SLEEP,
+  PN532_STATE_READY,
+  PN532_STATE_BUSY
+}
+pn532_state_t;
+
 /* PN532 Protocol control block */
 typedef struct
 {
@@ -55,11 +133,11 @@ typedef struct
   uint32_t            appError;
 } pn532_pcb_t;
 
-void          pn532Init();
+void          pn532PrintHex(const byte_t * pbtData, const size_t szBytes);
+void          pn532PrintHexChar(const byte_t * pbtData, const size_t szBytes);
 pn532_pcb_t * pn532GetPCB();
-pn532_error_t pn532SetModulation(pn532_modulation_t mod);
+void          pn532Init();
+pn532_error_t pn532Read(byte_t *pbtResponse, size_t * pszLen);
 pn532_error_t pn532Write(byte_t *abtCommand, size_t szLen);
-pn532_error_t pn532Read(byte_t *abtResponse, size_t * pszLen);
-void          pn532PrintHex(const byte_t * pbtData, const size_t szBytes);
 
 #endif
This page took 0.027915 seconds and 4 git commands to generate.