Skip to content

Commit

Permalink
[NFC] Optimize payload constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
Eugene authored and technobly committed May 31, 2019
1 parent 74b1a94 commit 78bdd97
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
4 changes: 4 additions & 0 deletions wiring/inc/spark_wiring_nfc.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,10 @@ class Record {
return numBytes;
}

void setPayload(Vector<uint8_t> v) {
payload_ = std::move(v);
}

private:
FlagsAndTnf flagsAndTnf_;
Vector<uint8_t> type_;
Expand Down
22 changes: 9 additions & 13 deletions wiring/src/spark_wiring_nfc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,11 @@ TextRecord::TextRecord(const char* text, const char* encoding) {
setType(&ndefType, sizeof(ndefType));

// Payload: encoding length + encoding data + text data
uint16_t payloadLength = 1 + strlen(encoding) + strlen(text);
std::unique_ptr<uint8_t[]> payload(new (std::nothrow) uint8_t[payloadLength]);
uint8_t index = 0;
payload[index++] = strlen(encoding);
memcpy(&payload[index], encoding, strlen(encoding));
index += strlen(encoding);
memcpy(&payload[index], text, strlen(text));
setPayload(payload.get(), payloadLength);
Vector<uint8_t> payload;
payload.append(static_cast<uint8_t>(strlen(encoding)));
payload.append(reinterpret_cast<const uint8_t*>(encoding), strlen(encoding));
payload.append(reinterpret_cast<const uint8_t*>(text), strlen(text));
setPayload(payload);
}

UriRecord::UriRecord(const char* uri, NfcUriType type) {
Expand All @@ -58,11 +55,10 @@ UriRecord::UriRecord(const char* uri, NfcUriType type) {
setType(&ndefType, sizeof(ndefType));

// Payload: uri type + uri
uint16_t payloadLength = 1 + strlen(uri);
std::unique_ptr<uint8_t[]> payload(new (std::nothrow) uint8_t[payloadLength]);
payload[0] = static_cast<uint8_t>(type);
memcpy(&payload[1], uri, strlen(uri));
setPayload(payload.get(), payloadLength);
Vector<uint8_t> payload;
payload.append(static_cast<uint8_t>(type));
payload.append(reinterpret_cast<const uint8_t*>(uri), strlen(uri));
setPayload(payload);
}

LauchAppRecord::LauchAppRecord(const char* androidPackageName) {
Expand Down

0 comments on commit 78bdd97

Please sign in to comment.