#pragma once #include #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* _csReg; SpiMaster* _spi; void (*_detectCb)(MfrcProxy* proxy, Uid uid, void* data); void* _userData; uint8_t _csPin; public: MfrcProxy(SpiMaster* spi, ShiftReg* csReg, uint8_t csPin, void (detectCb)(MfrcProxy* proxy, Uid uid, void* data), void* userData = nullptr); uint8_t read(uint8_t addr); void irq(); static bool probe(SpiMaster* spi, ShiftReg* csReg, uint8_t csPin); uint8_t getId(); uint8_t getCs(){return _csPin;} };