mirror of https://github.com/ARMmbed/mbed-os.git
NFC Design: Add note about NDEF Message construction.
parent
7ed2a7802b
commit
cfec12adb5
|
@ -436,7 +436,15 @@ virtual void on_parsing_terminated();
|
||||||
|
|
||||||
### Serialization
|
### 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
|
## HAL APIs
|
||||||
|
|
||||||
|
@ -509,3 +517,4 @@ There are currently at least four event queues (Plaftorm, BLE, USB, IP) in mbed
|
||||||
[ndef_record_parser_diagram]: uml_diagram_ndef_record_parser.png
|
[ndef_record_parser_diagram]: uml_diagram_ndef_record_parser.png
|
||||||
[ndef_common_parsers_diagram]: uml_diagram_ndef_common_parsers.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 |
|
@ -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
|
Loading…
Reference in New Issue