99 lines
2.1 KiB
C++
99 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <Arduino.h>
|
|
#include <PN5180ISO14443.h>
|
|
#include <PN5180ISO15693.h>
|
|
|
|
#include "FilamentGuardApiClient.h"
|
|
#include "FilamentGuardDeviceInfo.h"
|
|
#include "FilamentGuardTagRead.h"
|
|
#include "FilamentGuardTagReadSerializer.h"
|
|
#include "OpenPrintTagData.h"
|
|
#include "OpenPrintTagParser.h"
|
|
|
|
class Pn5180Reader
|
|
{
|
|
public:
|
|
Pn5180Reader();
|
|
|
|
void begin();
|
|
|
|
void setDeviceInfo(
|
|
const FilamentGuardDeviceInfo& deviceInfo);
|
|
|
|
void printVersionInformation();
|
|
void checkForTag();
|
|
|
|
private:
|
|
enum class TagProtocol : uint8_t
|
|
{
|
|
None,
|
|
Iso14443A,
|
|
Iso15693
|
|
};
|
|
|
|
static constexpr uint8_t NssPin = 5;
|
|
static constexpr uint8_t BusyPin = 16;
|
|
static constexpr uint8_t ResetPin = 17;
|
|
|
|
static constexpr uint8_t RequiredMissingScans = 3;
|
|
|
|
PN5180ISO15693 iso15693Reader;
|
|
PN5180ISO14443 iso14443Reader;
|
|
|
|
OpenPrintTagParser openPrintTagParser;
|
|
FilamentGuardTagReadSerializer tagReadSerializer;
|
|
FilamentGuardApiClient apiClient;
|
|
|
|
FilamentGuardDeviceInfo deviceInfo;
|
|
|
|
uint8_t lastUid[10] = {};
|
|
uint8_t lastUidLength = 0;
|
|
|
|
TagProtocol activeProtocol = TagProtocol::None;
|
|
uint8_t missingScanCount = 0;
|
|
|
|
bool checkIso14443Tag();
|
|
bool checkIso15693Tag();
|
|
|
|
void handleTagMissing();
|
|
|
|
bool isSameUid(
|
|
const uint8_t* uid,
|
|
uint8_t uidLength) const;
|
|
|
|
void rememberUid(
|
|
const uint8_t* uid,
|
|
uint8_t uidLength,
|
|
TagProtocol protocol);
|
|
|
|
void clearLastUid();
|
|
|
|
void printUid(
|
|
const uint8_t* uid,
|
|
uint8_t uidLength,
|
|
bool reverseOrder) const;
|
|
|
|
String formatUid(
|
|
const uint8_t* uid,
|
|
uint8_t uidLength,
|
|
bool reverseOrder) const;
|
|
|
|
void dumpIso15693Tag(
|
|
uint8_t* uid,
|
|
uint8_t uidLength);
|
|
|
|
void printTagRead(
|
|
const FilamentGuardTagRead& tagRead) const;
|
|
|
|
void printTagReadJson(
|
|
const FilamentGuardTagRead& tagRead) const;
|
|
|
|
void sendTagRead(
|
|
const FilamentGuardTagRead& tagRead) const;
|
|
|
|
void printBlock(
|
|
uint8_t blockNumber,
|
|
const uint8_t* data,
|
|
uint8_t blockSize) const;
|
|
}; |