add support for mfrc proxyies

This commit is contained in:
2022-03-21 21:21:50 +01:00
parent 36cc688479
commit 58fe96f8b7
14 changed files with 518 additions and 152 deletions

35
mfrcproxy.h Normal file
View File

@ -0,0 +1,35 @@
#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();
};