cpp-mfrc522/src/mfrc522.h

127 lines
3.3 KiB
C++

#pragma once
#include "spi.h"
#include <stdint.h>
enum MFRC522RegEnum
{
Reserved00 = 0x00,
CommandReg = 0x01,
CommIEnReg = 0x02,
DivlEnReg = 0x03,
CommIrqReg = 0x04,
DivIrqReg = 0x05,
ErrorReg = 0x06,
Status1Reg = 0x07,
Status2Reg = 0x08,
FIFODataReg = 0x09,
FIFOLevelReg = 0x0A,
WaterLevelReg = 0x0B,
ControlReg = 0x0C,
BitFramingReg = 0x0D,
CollReg = 0x0E,
Reserved01 = 0x0F,
Reserved10 = 0x10,
ModeReg = 0x11,
TxModeReg = 0x12,
RxModeReg = 0x13,
TxControlReg = 0x14,
TxAutoReg = 0x15,
TxSelReg = 0x16,
RxSelReg = 0x17,
RxThresholdReg = 0x18,
DemodReg = 0x19,
Reserved11 = 0x1A,
Reserved12 = 0x1B,
MifareReg = 0x1C,
Reserved13 = 0x1D,
Reserved14 = 0x1E,
SerialSpeedReg = 0x1F,
Reserved20 = 0x20,
CRCResultRegM = 0x21,
CRCResultRegL = 0x22,
Reserved21 = 0x23,
ModWidthReg = 0x24,
Reserved22 = 0x25,
RFCfgReg = 0x26,
GsNReg = 0x27,
CWGsPReg = 0x28,
ModGsPReg = 0x29,
TModeReg = 0x2A,
TPrescalerReg = 0x2B,
TReloadRegH = 0x2C,
TReloadRegL = 0x2D,
TCounterValueRegH = 0x2E,
TCounterValueRegL = 0x2F,
Reserved30 = 0x30,
TestSel1Reg = 0x31,
TestSel2Reg = 0x32,
TestPinEnReg = 0x33,
TestPinValueReg = 0x34,
TestBusReg = 0x35,
AutoTestReg = 0x36,
VersionReg = 0x37,
AnalogTestReg = 0x38,
TestDAC1Reg = 0x39,
TestDAC2Reg = 0x3A,
TestADCReg = 0x3B,
Reserved31 = 0x3C,
Reserved32 = 0x3D,
Reserved33 = 0x3E,
Reserved34 = 0x3F
};
class MFRC522
{
public:
MFRC522(SPI *spi);
~MFRC522();
void MFRC522_Reset();
void Write_MFRC522(uint8_t, uint8_t);
uint8_t Read_MFRC522(uint8_t);
void SetBitMask(uint8_t, uint8_t);
void ClearBitMask(uint8_t, uint8_t);
void AntennaOn();
void AntennaOff();
int MFRC522_ToCard(uint8_t, uint8_t);
int MFRC522_Request(uint8_t);
int MFRC522_Anticoll(uint8_t (*)[4]);
int CalulateCRC(uint8_t *);
int MFRC522_SelectTag(uint8_t *);
int MFRC522_Auth(uint8_t, unsigned int, uint8_t *, uint8_t *);
int MFRC522_StopCrypto1();
int MFRC522_Read(uint8_t, uint8_t (*)[4]);
int MFRC522_Write(uint8_t, uint8_t *);
int MFRC522_DumpClassic1K(uint8_t *, uint8_t *);
void MFRC522_Init();
static const int NRSTPD = 22;
static const int MAX_LEN = 16;
static const int PCD_IDLE = 0x00;
static const int PCD_AUTHENT = 0x0E;
static const int PCD_RECEIVE = 0x08;
static const int PCD_TRANSMIT = 0x04;
static const int PCD_TRANSCEIVE = 0x0C;
static const int PCD_RESETPHASE = 0x0F;
static const int PCD_CALCCRC = 0x03;
static const int PICC_REQIDL = 0x26;
static const int PICC_REQALL = 0x52;
static const int PICC_ANTICOLL = 0x93;
static const int PICC_SElECTTAG = 0x93;
static const int PICC_AUTHENT1A = 0x60;
static const int PICC_AUTHENT1B = 0x61;
static const int PICC_READ = 0x30;
static const int PICC_WRITE = 0xA0;
static const int PICC_DECREMENT = 0xC0;
static const int PICC_INCREMENT = 0xC1;
static const int PICC_RESTORE = 0xC2;
static const int PICC_TRANSFER = 0xB0;
static const int PICC_HALT = 0x50;
static const int MI_OK = 0;
static const int MI_NOTAGERR = 1;
static const int MI_ERR = 2;
private:
SPI *spi;
};