Files
MarklinController/mfrcproxy.h
2022-03-21 21:22:18 +01:00

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();
};