blob: b30d14637e61cc7a509ae421d0fc06212e64ca6b [file] [log] [blame] [view]
# Message Layer
## Debug Prints
When progress logging is enabled, the message layer emits a number of prints
that provide more details on the messages being sent or received. Most of these
are fairly self explanatory with the exception of the ones listed below.
### Message Transmission
#### Legend
On message transmission, the following print is emitted. The various fields that
will be expanded are denoted with `$` .
Unless specified, numerical values are represented in decimal notation.
```
<<< [E:$exchange_id S:$session_id M:$msg_id (Ack: $ack_msg_id)] ($msg_category) Msg TX from $source to $fabric_index:$destination [$compressed_fabric_id] [$peer_address] --- Type $protocol_id:$msg_type ($protocol_name:$msg_type_name) (B:$size)
```
| Field | Description |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| exchange_id | Exchange ID + `IsInitiator` flag from message header ('i' if initiator, 'r' if responder') |
| session_id | Local session id for unicast secure, 0 for unicast un-secure, group id for groupcast |
| msg_id | Message counter |
| ack_msg_id | If present, the ACK message counter. Otherwise, this entire field is omitted from display |
| msg_category | U: Un-secure Unicast, S: Secure Unicast, G: Secure Groupcast |
| fabric_index | Fabric index on the sending side |
| source | 64-bit Node Identifier that can represent both group, operational and temporary node identifiers depending on `$msg_category` (in hex) |
| destination | 64-bit Node Identifier that can represent both group, operational and temporary node identifiers depending on `$msg_category` (in hex) |
| compressed_fabric_id | If present and valid, lower 16-bits of the compressed fabric ID (in hex). Otherwise, it will be set to 0000. |
| peer_address | The peer address (IP and port) for the session |
| protocol_id | 16-bit Protocol ID within the common vendor namespace (in hex) |
| msg_type | 8-bit message type ID (in hex) |
| protocol_name | If available, a logical name for the protocol |
| msg_type_name | If available, a logical name for the message type |
| size | Size, in bytes, of the message being transmitted. Includes the Matter payload header and packet header but not transport headers |
#### Examples:
_Unencrypted Unicast:_
```
<<< [E:26341i S:0 M:264589322] (U) Msg TX from 0FDE2AE2EAF5D74D to 0:0000000000000000 [0000] --- Type 0000:30 (SecureChannel:CASE_Sigma1)
```
_Secure Unicast:_
```
<<< [E:26347i S:5110 M:30642895 (Ack: 9203233)] (S) Msg TX from 000000000001B669 to 1:0000000012344321 [1667] --- Type 0001:06 (IM:WriteRequest)
```
_Secure Groupcast:_
```
<<< [E:26349i S:17850 M:2000] (G) Msg TX from 000000000001B669 to 1:FFFFFFFFFFFF0102 [1667] --- Type 0001:06 (IM:WriteRequest)
```
### Message Reception
#### Legend
On message transmission, the following print is emitted. The various fields that
will be expanded are denoted with `$` .
Unless specified, numerical values are represented in decimal notation.
```
>>> [E:$exchange_id M: $msg_id (Ack: $ack_msg_id)] ($msg_category) Msg RX from $fabric_index:$source to $destination [$compressed_fabric_id] --- Type $protocol_id:$msg_type ($protocol_name:$msg_type_name) (B:$size)
```
This has a similar legend to that for transmission except `$source` denotes the
source's node identifier and `$fabric_index` is the index on the recipient.
#### Examples
_Unencrypted Unicast:_
```
>>> [E:26341i S:0 M:264589322] (U) Msg RX from 0:0FDE2AE2EAF5D74D to 0000000000000000 [0000] --- Type 0000:30 (SecureChannel:CASE_Sigma1)
```
_Secure Unicast:_
```
>>> [E:26342i S:62311 M:30642885] (S) Msg RX from 1:000000000001B669 to 0000000012344321 [1667] --- Type 0001:08 (IM:InvokeCommandRequest)
```
_Secure Groupcast:_
```
>>> [E:26349i S:1720 M:2000] (G) Msg RX from 1:000000000001B669 to FFFFFFFFFFFF0102 [0000] --- Type 0001:06 (IM:WriteRequest)
```