Appendix A — MTI Quick Reference
This appendix lists all Message Type Indicator (MTI) values defined in openlcb_defines.h, grouped by protocol area. The MTI is a 16-bit value that identifies the message type, addressing mode, and priority.
A.1 MTI Bit Field Layout
The 16-bit MTI encodes several flags:
| Bits | Mask | Field | Meaning |
| 12 | 0x01000 | Stream/Datagram | 1 = Stream or Datagram type |
| 11-10 | 0x00C00 | Priority | 00 = highest, 11 = lowest |
| 4 | 0x00010 | Simple Protocol | 1 = Simple Node variant |
| 3 | 0x00008 | Dest Address Present | 1 = addressed message |
| 2 | 0x00004 | Event ID Present | 1 = carries Event ID in payload |
| 1-0 | 0x00003 | Priority Modifier | Fine-grained priority adjustment |
A.2 Message Network Protocol
| MTI Value | Constant | Dir | Addr | Handler Module | Ch |
0x0100 | MTI_INITIALIZATION_COMPLETE | Out | Global | openlcb_login_statemachine | 9 |
0x0101 | MTI_INITIALIZATION_COMPLETE_SIMPLE | Out | Global | openlcb_login_statemachine | 9 |
0x0488 | MTI_VERIFY_NODE_ID_ADDRESSED | In | Addressed | protocol_message_network | 12 |
0x0490 | MTI_VERIFY_NODE_ID_GLOBAL | In | Global | protocol_message_network | 12 |
0x0170 | MTI_VERIFIED_NODE_ID | Out | Global | protocol_message_network | 12 |
0x0171 | MTI_VERIFIED_NODE_ID_SIMPLE | Out | Global | protocol_message_network | 12 |
0x0068 | MTI_OPTIONAL_INTERACTION_REJECTED | Out | Addressed | protocol_message_network | 12 |
0x00A8 | MTI_TERMINATE_DUE_TO_ERROR | Both | Addressed | protocol_message_network | 12 |
0x0828 | MTI_PROTOCOL_SUPPORT_INQUIRY | In | Addressed | protocol_message_network | 12 |
0x0668 | MTI_PROTOCOL_SUPPORT_REPLY | Out | Addressed | protocol_message_network | 12 |
A.3 Event Transport Protocol
| MTI Value | Constant | Dir | Addr | Handler Module | Ch |
0x08F4 | MTI_CONSUMER_IDENTIFY | In | Global | protocol_event_transport | 13 |
0x04A4 | MTI_CONSUMER_RANGE_IDENTIFIED | Out | Global | protocol_event_transport | 13 |
0x04C7 | MTI_CONSUMER_IDENTIFIED_UNKNOWN | Out | Global | protocol_event_transport | 13 |
0x04C4 | MTI_CONSUMER_IDENTIFIED_SET | Out | Global | protocol_event_transport | 13 |
0x04C5 | MTI_CONSUMER_IDENTIFIED_CLEAR | Out | Global | protocol_event_transport | 13 |
0x04C6 | MTI_CONSUMER_IDENTIFIED_RESERVED | Out | Global | protocol_event_transport | 13 |
0x0914 | MTI_PRODUCER_IDENTIFY | In | Global | protocol_event_transport | 13 |
0x0524 | MTI_PRODUCER_RANGE_IDENTIFIED | Out | Global | protocol_event_transport | 13 |
0x0547 | MTI_PRODUCER_IDENTIFIED_UNKNOWN | Out | Global | protocol_event_transport | 13 |
0x0544 | MTI_PRODUCER_IDENTIFIED_SET | Out | Global | protocol_event_transport | 13 |
0x0545 | MTI_PRODUCER_IDENTIFIED_CLEAR | Out | Global | protocol_event_transport | 13 |
0x0546 | MTI_PRODUCER_IDENTIFIED_RESERVED | Out | Global | protocol_event_transport | 13 |
0x0968 | MTI_EVENTS_IDENTIFY_DEST | In | Addressed | protocol_event_transport | 13 |
0x0970 | MTI_EVENTS_IDENTIFY | In | Global | protocol_event_transport | 13 |
0x0594 | MTI_EVENT_LEARN | In | Global | protocol_event_transport | 13 |
0x05B4 | MTI_PC_EVENT_REPORT | Both | Global | protocol_event_transport | 13 |
0x0F14 | MTI_PC_EVENT_REPORT_WITH_PAYLOAD | Both | Global | protocol_event_transport | 13 |
A.4 Simple Node Information Protocol (SNIP)
| MTI Value | Constant | Dir | Addr | Handler Module | Ch |
0x0DE8 | MTI_SIMPLE_NODE_INFO_REQUEST | In | Addressed | protocol_snip | 15 |
0x0A08 | MTI_SIMPLE_NODE_INFO_REPLY | Out | Addressed | protocol_snip | 15 |
A.5 Train Control Protocol
| MTI Value | Constant | Dir | Addr | Handler Module | Ch |
0x05EB | MTI_TRAIN_PROTOCOL | In | Addressed | protocol_train_handler | 17 |
0x01E9 | MTI_TRAIN_REPLY | Out | Addressed | protocol_train_handler | 17 |
0x0DA8 | MTI_SIMPLE_TRAIN_INFO_REQUEST | In | Addressed | protocol_train_handler | 17 |
0x09C8 | MTI_SIMPLE_TRAIN_INFO_REPLY | Out | Addressed | protocol_train_handler | 17 |
A.6 Datagram Protocol
| MTI Value | Constant | Dir | Addr | Handler Module | Ch |
0x1C48 | MTI_DATAGRAM | Both | Addressed | protocol_datagram_handler | 14 |
0x0A28 | MTI_DATAGRAM_OK_REPLY | Out | Addressed | protocol_datagram_handler | 14 |
0x0A48 | MTI_DATAGRAM_REJECTED_REPLY | Out | Addressed | protocol_datagram_handler | 14 |
A.7 Stream Protocol
| MTI Value | Constant | Dir | Addr | Handler Module | Ch |
0x0CC8 | MTI_STREAM_INIT_REQUEST | In | Addressed | Not yet implemented | -- |
0x0868 | MTI_STREAM_INIT_REPLY | Out | Addressed | Not yet implemented | -- |
0x1F88 | MTI_STREAM_SEND | Both | Addressed | Not yet implemented | -- |
0x0888 | MTI_STREAM_PROCEED | Both | Addressed | Not yet implemented | -- |
0x08A8 | MTI_STREAM_COMPLETE | Both | Addressed | Not yet implemented | -- |
Source Reference
All MTI constants are defined in openlcb_defines.h. The handler module column shows which .c file processes incoming messages with that MTI. "Not yet implemented" indicates the MTI constant is defined but no handler exists (the dispatcher will send OIR for these).