ESPHome 2026.5.0-dev
Loading...
Searching...
No Matches
ndef_record_text.cpp
Go to the documentation of this file.
1#include "ndef_record_text.h"
2#include "ndef_record.h"
3
4namespace esphome {
5namespace nfc {
6
7static const char *const TAG = "nfc.ndef_record_text";
8
9NdefRecordText::NdefRecordText(const std::vector<uint8_t> &payload) {
10 if (payload.empty()) {
11 ESP_LOGE(TAG, "Record payload too short");
12 return;
13 }
14
15 uint8_t language_code_length = payload[0] & 0b00111111; // Todo, make use of encoding bit?
16
17 if (1 + language_code_length > payload.size()) {
18 ESP_LOGE(TAG, "Record payload too short for language code");
19 return;
20 }
21
22 this->language_code_ = std::string(payload.begin() + 1, payload.begin() + 1 + language_code_length);
23
24 this->text_ = std::string(payload.begin() + 1 + language_code_length, payload.end());
25
26 this->tnf_ = TNF_WELL_KNOWN;
27
28 this->type_ = "T";
29}
30
32 std::vector<uint8_t> data;
33
34 uint8_t flag_byte = this->language_code_.length() & 0b00111111; // UTF8 assumed
35
36 data.push_back(flag_byte);
37
38 data.insert(data.end(), this->language_code_.begin(), this->language_code_.end());
39
40 data.insert(data.end(), this->text_.begin(), this->text_.end());
41 return data;
42}
43
44} // namespace nfc
45} // namespace esphome
std::vector< uint8_t > get_encoded_payload() override
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7