The protocol is built on top of some common base types described below; these are the building blocks for all the other datatypes and SNACs. When encoding or decoding these types, make sure to use network byte order.
Base Types
Name
|
Size
|
Notes
|
uint8
|
byte
|
Unsigned byte
|
uint16
|
word (2 bytes)
|
Unsigned two byte short
|
uint32
|
dword (4 bytes)
|
Unsigned four byte int
|
f32
|
4 bytes
|
Four byte float
|
t70
|
dword (4 bytes)
|
Unsigned four byte timestamp, from UNIX EPOCH
|
UUID
|
16 bytes
|
Sixteen bytes that represent a UUID also known as a GUID
|
blob
|
length bytes
|
Used in a TLV, data type and size is defined by external values
|
empty
|
0 bytes
|
Used in a TLV, existence of tag causes behavior, the data is ignored
|
Strings
In general strings are not NULL terminated and are encoded using UTF8. A string is said to be compressed if all white spaces are removed and all upper case characters are converted to lower case.
Name
|
Size
|
Notes
|
string
|
data
|
Inside of TLVs a string inherits its length from the TLV length
|
string08
|
u08 (byte) + data
|
One byte length followed by that many bytes of data
|
string16
|
u16 (word) + data
|
Two byte length followed by that many bytes of data
|