Protocols/OSCAR/Datatypes: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{Protocols/OSCAR}} | |||
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. | 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. | ||
| Line 8: | Line 9: | ||
! Notes | ! Notes | ||
|- | |- | ||
| | | uint8 | ||
| | | byte | ||
| Unsigned byte | | Unsigned byte | ||
|- | |- | ||
| | | uint16 | ||
| 2 bytes | | word (2 bytes) | ||
| Unsigned two byte short | | Unsigned two byte short | ||
|- | |- | ||
| | | uint32 | ||
| 4 bytes | | dword (4 bytes) | ||
| Unsigned four byte int | | Unsigned four byte int | ||
|- | |- | ||
| Line 25: | Line 26: | ||
|- | |- | ||
| t70 | | t70 | ||
| 4 bytes | | dword (4 bytes) | ||
| Unsigned four byte timestamp, from UNIX EPOCH | | Unsigned four byte timestamp, from UNIX EPOCH | ||
|- | |- | ||
| UUID | | UUID | ||
| 16 bytes | | 16 bytes | ||
| | | Sixteen bytes that represent a [[Protocols/OSCAR/UUIDs|UUID]] also known as a GUID | ||
Sixteen bytes that represent a [Protocols/OSCAR/UUID | |||
|- | |- | ||
| blob | | blob | ||
| length bytes | | length bytes | ||
| | | Used in a [[Protocols/OSCAR/TLV|TLV]], data type and size is defined by external values | ||
Used in a [Protocols/OSCAR/TLV | |||
|- | |- | ||
| empty | | empty | ||
| 0 bytes | | 0 bytes | ||
| | | Used in a [[Protocols/OSCAR/TLV|TLV]], existence of tag causes behavior, the data is ignored | ||
Used in a [Protocols/OSCAR/TLV | |||
|} | |} | ||
=== | === 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. | 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. | ||
| Line 55: | Line 53: | ||
| string | | string | ||
| data | | data | ||
| | | Inside of [[Protocols/OSCAR/TLV|TLVs]] a string inherits its length from the TLV length | ||
Inside of [Protocols/OSCAR/TLV | |||
|- | |- | ||
| string08 | | string08 | ||
| u08 + data | | u08 (byte) + data | ||
| One byte length followed by that many bytes of data | | One byte length followed by that many bytes of data | ||
|- | |- | ||
| string16 | | string16 | ||
| u16 + data | | u16 (word) + data | ||
| Two byte length followed by that many bytes of data | | Two byte length followed by that many bytes of data | ||
|} | |} | ||
[[Category:OSCAR]] | |||
Latest revision as of 03:57, 17 March 2020
| OSCAR Protocol |
| Introduction • Terms • Clients |
| Basic |
| Datatypes • FLAP • SNAC • TLV |
| UUIDs • Errors • Tool IDs |
| Host Interaction |
| Rate Limits • Migration • Messages |
| Other Services |
| ADMIN • ADVERT • ALERT |
| BART • BOS • BUCP • CHAT |
| CHAT_NAV |
| Tutorials |
| Sign On • BART • Rendezvous |
| ICBM • Locate • Buddies |
| Foodgroups |
| OSERVICE (0x0001) |
| LOCATE (0x0002) |
| BUDDY (0x0003) |
| ICBM (0x0004) |
| ADVERT (0x0005) |
| INVITE (0x0006) |
| ADMIN (0x0007) |
| POPUP (0x0008) |
| PD (0x0009) |
| USER_LOOKUP (0x000A) |
| STATS (0x000B) |
| TRANSLATE (0x000C) |
| CHAT_NAV (0x000D) |
| CHAT (0x000E) |
| ODIR (0x000F) |
| BART (0x0010) |
| FEEDBAG (0x0013) |
| ICQ (0x0015) |
| BUCP (0x0017) |
| ALERT (0x0018) |
| PLUGIN (0x0022) |
| UNNAMED_FG_24 (0x0024) |
| MDIR (0x0025) |
| ARS (0x044A) |
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 |