Protocols/OSCAR/Datatypes
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 |
|---|---|---|
| u08 | 1 byte | Unsigned byte |
| u16 | 2 bytes | Unsigned two byte short |
| u32 | 4 bytes | Unsigned four byte int |
| f32 | 4 bytes | Four byte float |
| t70 | 4 bytes | Unsigned four byte timestamp, from UNIX EPOCH |
| UUID | 16 bytes |
Sixteen bytes that represent a [Protocols/OSCAR/UUID UUID] also known as a GUID |
| blob | length bytes |
Used in a [Protocols/OSCAR/TLV TLV], data type and size is defined by external values |
| empty | 0 bytes |
Used in a [Protocols/OSCAR/TLV TLV], existence of tag causes behavior, the data is ignored |
String Types
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 [Protocols/OSCAR/TLV TLVs] a string inherits its length from the TLV length |
| string08 | u08 + data | One byte length followed by that many bytes of data |
| string16 | u16 + data | Two byte length followed by that many bytes of data |