The container hierarchy
IEEE1722Tp
├── IEEE1722TpGeneral (0..1)
│ ├── IEEE1722TpDevErrorDetect
│ ├── IEEE1722TpVersionInfoApi
│ ├── IEEE1722TpMainFunctionTx (Period, PartitionRef)
│ └── IEEE1722TpMainFunctionRx (Period, PartitionRef)
└── IEEE1722TpConfig (0..1)
├── IEEE1722TpLowerLayerPduPool (1..*)
│ ├── IEEE1722TpLowerLayerTxPduPoolEntry (0..*)
│ │ ├── IEEE1722TpLowerLayerTxPduId
│ │ └── IEEE1722TpLowerLayerTxPduRef → Pdu
│ └── IEEE1722TpLowerLayerRxPduPoolEntry (0..*)
│ ├── IEEE1722TpLowerLayerRxPduId
│ └── IEEE1722TpLowerLayerRxPduRef → Pdu
└── IEEE1722TpStream (1..*)
├── IEEE1722TpStreamIdUniquePart
├── IEEE1722TpStreamIdMacAddress (0..1)
├── IEEE1722TpStreamIndex
├── IEEE1722TpStreamMaxTransitTime
├── IEEE1722TpStreamVersion
├── IEEE1722TpEthIfClkUnitRef
├── IEEE1722TpStbMSynchronizedTimeBaseRef
├── IEEE1722TpStreamLowerLayerPduPoolRef → IEEE1722TpLowerLayerPduPool
├── IEEE1722TpStreamDirection (Choice: Tx | Rx, each with TxQueue/RxQueue)
└── IEEE1722TpStreamSubtype (Choice, exactly 1)
├── IEEE1722TpStreamAAF
├── IEEE1722TpStreamCRF
├── IEEE1722TpStreamIIDC
├── IEEE1722TpStreamRVF
└── IEEE1722TpStreamACF
├── IEEE1722TpStreamAcfHeaderType (TIME_SYNCHRONOUS | NON_TIME_SYNCHRONOUS)
├── IEEE1722TpAcfCollectionThreshold
├── IEEE1722TpAcfCollectionTimeout
├── IEEE1722TpStreamAcfMixedBusTypeCollection
└── IEEE1722TpStreamAcfPayload (Choice, 1..*)
├── IEEE1722TpStreamAcfCan → IEEE1722TpStreamAcfCanPdu (1..*)
└── IEEE1722TpStreamAcfLinThe module supports all three post-build variants ( |
The key parameters of IEEE1722TpStream
| Parameter | Meaning |
|---|---|
| Together they form the stream ID per IEEE 1722 (MAC address + unique
part) — |
| Handle index for API access in the communication stack — explicitly not the same as the actual stream ID from the two parameters above (see the warning below) |
| Maximum transit time of the stream, in seconds |
| Reference to exactly one |
| References to the time source from which the |
The specification explicitly points out: |
Stream-to-switch-port mapping: indirect, not direct
An obvious assumption would be that an IEEE1722TpStream references a
switch port directly (analogous to EthSwtPortIdx in the
EthSwt ARXML
configuration). That’s not the case:
|
For practical configuration work, this means: the stream-to-port question
can’t be answered within the IEEE1722Tp ARXML at all. PduR routes the
Pdu to SoAd, SoAd maps it to a socket connection
(SoAdSocketConnection), which in turn is bound to EthIf/Eth — only on
the finished Ethernet frame does the switch decide, based on the
destination MAC address (and VLAN membership, if any), which port to
forward it out of. That’s a configuration layer completely separate from
the IEEE1722Tp ARXML.
Example configuration: an ACF_CAN transmit stream
Illustrative (container and parameter names are real, concrete values are made up) — a stream that transmits CAN messages via NTSCF:
<IEEE1722TP-STREAM>
<SHORT-NAME>Stream_AcfCan_Tx_Zone1</SHORT-NAME>
<IEEE1722TP-STREAM-ID-UNIQUE-PART>1</IEEE1722TP-STREAM-ID-UNIQUE-PART>
<IEEE1722TP-STREAM-INDEX>0</IEEE1722TP-STREAM-INDEX>
<IEEE1722TP-STREAM-MAX-TRANSIT-TIME>0.002</IEEE1722TP-STREAM-MAX-TRANSIT-TIME>
<IEEE1722TP-STREAM-VERSION>0</IEEE1722TP-STREAM-VERSION>
<IEEE1722TP-STREAM-LOWER-LAYER-PDU-POOL-REF DEST="IEEE1722TP-LOWER-LAYER-PDU-POOL">
/IEEE1722Tp/IEEE1722TpConfig/PduPool_Zone1_Tx
</IEEE1722TP-STREAM-LOWER-LAYER-PDU-POOL-REF>
<IEEE1722TP-STREAM-DIRECTION>
<IEEE1722TP-STREAM-TX/>
</IEEE1722TP-STREAM-DIRECTION>
<IEEE1722TP-STREAM-SUBTYPE>
<IEEE1722TP-STREAM-ACF>
<IEEE1722TP-STREAM-ACF-HEADER-TYPE>NON_TIME_SYNCHRONOUS</IEEE1722TP-STREAM-ACF-HEADER-TYPE>
<IEEE1722TP-ACF-COLLECTION-THRESHOLD>256</IEEE1722TP-ACF-COLLECTION-THRESHOLD>
<IEEE1722TP-ACF-COLLECTION-TIMEOUT>0.001</IEEE1722TP-ACF-COLLECTION-TIMEOUT>
<IEEE1722TP-STREAM-ACF-MIXED-BUS-TYPE-COLLECTION>false</IEEE1722TP-STREAM-ACF-MIXED-BUS-TYPE-COLLECTION>
<IEEE1722TP-STREAM-ACF-PAYLOAD>
<IEEE1722TP-STREAM-ACF-CAN>
<IEEE1722TP-STREAM-ACF-BUS-ID>1</IEEE1722TP-STREAM-ACF-BUS-ID>
<IEEE1722TP-STREAM-ACF-CAN-MESSAGE-TYPE>CAN</IEEE1722TP-STREAM-ACF-CAN-MESSAGE-TYPE>
</IEEE1722TP-STREAM-ACF-CAN>
</IEEE1722TP-STREAM-ACF-PAYLOAD>
</IEEE1722TP-STREAM-ACF>
</IEEE1722TP-STREAM-SUBTYPE>
</IEEE1722TP-STREAM>
|
Typical configuration mistakes
| Mistake | Effect |
|---|---|
Confusing | API calls fail, or address the wrong stream, even though the wire-format ID is configured correctly |
| The stream can’t be sent/received — the error often only shows up at runtime, not already during ARXML validation |
|
|
Downstream configuration ( | The stream is generated correctly but delivered nowhere, or with the wrong
destination MAC address — since |
Summary
| Aspect | Key takeaway |
|---|---|
Container hierarchy |
|
Stream ID vs. stream index | Two independent identifiers — confusing them is a common pitfall the specification explicitly calls out |
Switch-port mapping | No direct parameter in the |
Next step | Part 4 shows end-to-end practical examples, followable with Open1722 |
Next in the series: IEEE 1722 Part 4 — End-to-End Practical Examples with Open1722