#pragma once #include #include #include "esphome/core/log.h" #include "esphome/core/helpers.h" #include "ndef_message.h" namespace esphome { namespace nfc { class NfcTag { public: NfcTag() { this->uid_ = {}; this->tag_type_ = "Unknown"; }; NfcTag(std::vector &uid) { this->uid_ = uid; this->tag_type_ = "Unknown"; }; NfcTag(std::vector &uid, const std::string &tag_type) { this->uid_ = uid; this->tag_type_ = tag_type; }; NfcTag(std::vector &uid, const std::string &tag_type, std::unique_ptr ndef_message) { this->uid_ = uid; this->tag_type_ = tag_type; this->ndef_message_ = std::move(ndef_message); }; NfcTag(std::vector &uid, const std::string &tag_type, std::vector &ndef_data) { this->uid_ = uid; this->tag_type_ = tag_type; this->ndef_message_ = make_unique(ndef_data); }; NfcTag(const NfcTag &rhs) { uid_ = rhs.uid_; tag_type_ = rhs.tag_type_; if (rhs.ndef_message_ != nullptr) ndef_message_ = make_unique(*rhs.ndef_message_); } std::vector &get_uid() { return this->uid_; }; const std::string &get_tag_type() { return this->tag_type_; }; bool has_ndef_message() { return this->ndef_message_ != nullptr; }; const std::shared_ptr &get_ndef_message() { return this->ndef_message_; }; void set_ndef_message(std::unique_ptr ndef_message) { this->ndef_message_ = std::move(ndef_message); }; protected: std::vector uid_; std::string tag_type_; std::shared_ptr ndef_message_; }; } // namespace nfc } // namespace esphome