36 lines
859 B
C++
36 lines
859 B
C++
#pragma once
|
|
#include <stdint.h>
|
|
|
|
#include "shiftreg.h"
|
|
#include "softspim.h"
|
|
#include "defines.h"
|
|
#include "serial.h"
|
|
#include "uid.h"
|
|
|
|
class MfrcProxy
|
|
{
|
|
public:
|
|
static constexpr uint8_t REG_CHIP_ID = 0xEE;
|
|
static constexpr uint8_t REG_ID = 0x01;
|
|
static constexpr uint8_t REG_IRQ_BITS = 0x02;
|
|
static constexpr uint8_t REG_UID_LEN = 0x04;
|
|
static constexpr uint8_t REG_UID_START_REG = 0x10;
|
|
|
|
private:
|
|
ShiftReg<NFC_PORTS>* _csReg;
|
|
SpiMaster* _spi;
|
|
|
|
void (*_detectCb)(MfrcProxy* proxy, Uid uid, void* data);
|
|
void* _userData;
|
|
|
|
uint8_t _csPin;
|
|
|
|
uint8_t read(uint8_t addr);
|
|
|
|
public:
|
|
MfrcProxy(SpiMaster* spi, ShiftReg<NFC_PORTS>* csReg, uint8_t csPin, void (detectCb)(MfrcProxy* proxy, Uid uid, void* data), void* userData = nullptr);
|
|
void irq();
|
|
static bool probe(SpiMaster* spi, ShiftReg<NFC_PORTS>* csReg, uint8_t csPin);
|
|
uint8_t getId();
|
|
};
|