NFC Design: Add note about NDEF Message construction.

pull/7426/head
Vincent Coubard 2018-07-31 14:31:14 +01:00
parent 7ed2a7802b
commit cfec12adb5
3 changed files with 75 additions and 2 deletions

View File

@ -436,7 +436,15 @@ virtual void on_parsing_terminated();
### Serialization
**TBD**
The class `MessageBuilder` is used to map a record into an NDEF message. It
includes a data buffer that contains the _raw_ message. Client code use the
functions `append_record` to append a new record into the message being built.
![ndef_message_builder_diagram]
For convenience, serialization functions for common types are provided as well as
a specialized `MessageBuilder` named `SimpleMessageBuilder` that exposes them
in an object oriented fashion.
## HAL APIs
@ -508,4 +516,5 @@ There are currently at least four event queues (Plaftorm, BLE, USB, IP) in mbed
[ndef_message_parser_diagram]: uml_diagram_ndef_message_parser.png
[ndef_record_parser_diagram]: uml_diagram_ndef_record_parser.png
[ndef_common_parsers_diagram]: uml_diagram_ndef_common_parsers.png
[ndef_simple_parser_diagram]: uml_diagram_ndef_simple_parser.png
[ndef_simple_parser_diagram]: uml_diagram_ndef_simple_parser.png
[ndef_message_builder_diagram]: uml_diagram_ndef_message_builder_diagram.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -0,0 +1,64 @@
@startuml
package ndef {
class MessageBuilder {
+MessageBuilder(uint8_t* buffer, size_t capacity)
+~MessageBuilder()
+bool append_record(const RecordType& type, const RecordPayload* payload, bool is_last_record = false)
+bool append_record(const Record& record)
+const uint8_t* get_data() const;
+size_t get_data_size() const;
}
class Record {
}
class RecordType{
}
class RecordPayload{
}
class RecordID{
}
Record *-- RecordType
Record *-- "0..1" RecordPayload
Record *-- "0..1" RecordID
Record - MessageBuilder: insert >
}
package common {
class SimpleMessageBuilder {
+SimpleMessageBuilder(uint8_t* buffer, size_t capacity)
+~SimpleMessageBuilder()
+bool append_uri(const URI&)
+bool append_text(const Text&)
+bool append_mime(const Mime&)
}
class URI {
+friend bool append_record(ndef::MessageBuilder&, const URI&)
}
class Text {
+friend bool append_record(ndef::MessageBuilder&, const Text&)
}
class Mime {
+friend bool append_record(ndef::MessageBuilder&, const Mime&)
}
SimpleMessageBuilder --|> MessageBuilder
URI -- SimpleMessageBuilder: wrap >
Text -- SimpleMessageBuilder: wrap >
Mime -- SimpleMessageBuilder: wrap >
}
@enduml