Вы можете просто использовать rfalTransceiveBlockingTxRx()
из rfal_rf.h
, предоставляемых библиотекой RFAL. Этот механизм приема применяется ко всем радиочастотным технологиям.
Поскольку не существует универсального набора команд для взаимодействия с тегами NFC-A, точное кодирование команды READ будет зависеть от вашего конкретного типа тега. Например, для тега типа 2 команда READ будет состоять из двух байтов: 0x30 <BLOCK-ADDRESS-AS-SINGLE-BYTE>
Для такого тега вы можете, например, использовать что-то вроде этого:
uint8_t bufferTx[2];
uint16_t lenTx;
uint8_t bufferRx[16];
uint16_t lenRxMax, lenRx;
ReturnCode status;
lenTx = 0;
bufferTx[lenTx++] = 0x30;
bufferTx[lenTx++] = 0; // TODO: change this to the read offset
lenRxMax = 16;
lenRx = 0;
status = rfalTransceiveBlockingTxRx(&bufferTx[0], lenTx, &bufferRx[0], lenRxMax, &lenRx, RFAL_TXRX_FLAGS_DEFAULT, rfalConvMsTo1fc(5));
// if status does not indicate error,
// you will now find the response in bufferRx,
// the actual response length is lenRx