Files
filamentguard_esp32/include/Pn5180Reader.h
Bjarne Pedersen e2b9f0dc9e Kan læse og sende til API
Egentligt initial commit.
Kan læse tag og sende til API
2026-07-15 16:32:34 +02:00

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