Summary
The current implementation appears to force Transport Protocol transfers of PDU2 PGNs (PF 240-255) to use BAM (Broadcast Announce Message), even when a specific destination address is supplied.
I would like to request support for RTS/CTS transport of PDU2 PGNs when a non-global destination address is provided.
Background
In J1939, the PGN being transported and the Transport Protocol session addressing are separate concepts:
PDU2 PGNs are normally broadcast when transmitted as a single-frame J1939 message.
TP.CM and TP.DT messages themselves are PDU1 messages and may be either:
Global (BAM), or
Destination-specific (RTS/CTS).
Because of this separation, some J1939 implementations support transporting a PDU2 PGN using a destination-specific RTS/CTS session.
For example, a proprietary message using PGN 0x00FF02 may need to transfer more than 8 bytes to a single target ECU. In this case, an RTS/CTS session addressed to a specific destination can be desirable to:
Reduce network traffic versus BAM
Ensure flow control from the receiver
Avoid unnecessary processing by other nodes
Match the behavior of existing embedded J1939 implementations
Current Behavior
When calling send_pgn() with:
A PDU2 PGN (PF 240-255)
Payload length > 8 bytes
A specific destination address
the library appears to force the destination to global and initiates a BAM transfer instead of RTS/CTS.
Requested Behavior
Allow RTS/CTS transport when:
Payload length requires TP
A non-global destination address is supplied
The transport mode could be selected based on the destination address rather than solely on the PGN type:
Global destination → BAM
Specific destination → RTS/CTS
This would preserve existing behavior while enabling additional valid use cases.
Example Use Case
Transferring a multi-packet proprietary B message:
PGN: 0x00FF02
Length: > 8 bytes
Destination: ECU at address 0x80
Desired TP sequence:
TP.CM_RTS sent to DA=0x80
CTS exchange
TP.DT packets
EOM ACK
instead of forcing:
TP.CM_BAM
Broadcast TP.DT packets
Summary
The current implementation appears to force Transport Protocol transfers of PDU2 PGNs (PF 240-255) to use BAM (Broadcast Announce Message), even when a specific destination address is supplied.
I would like to request support for RTS/CTS transport of PDU2 PGNs when a non-global destination address is provided.
Background
In J1939, the PGN being transported and the Transport Protocol session addressing are separate concepts:
PDU2 PGNs are normally broadcast when transmitted as a single-frame J1939 message.
TP.CM and TP.DT messages themselves are PDU1 messages and may be either:
Global (BAM), or
Destination-specific (RTS/CTS).
Because of this separation, some J1939 implementations support transporting a PDU2 PGN using a destination-specific RTS/CTS session.
For example, a proprietary message using PGN 0x00FF02 may need to transfer more than 8 bytes to a single target ECU. In this case, an RTS/CTS session addressed to a specific destination can be desirable to:
Reduce network traffic versus BAM
Ensure flow control from the receiver
Avoid unnecessary processing by other nodes
Match the behavior of existing embedded J1939 implementations
Current Behavior
When calling
send_pgn()with:A PDU2 PGN (PF 240-255)
Payload length > 8 bytes
A specific destination address
the library appears to force the destination to global and initiates a BAM transfer instead of RTS/CTS.
Requested Behavior
Allow RTS/CTS transport when:
Payload length requires TP
A non-global destination address is supplied
The transport mode could be selected based on the destination address rather than solely on the PGN type:
Global destination → BAM
Specific destination → RTS/CTS
This would preserve existing behavior while enabling additional valid use cases.
Example Use Case
Transferring a multi-packet proprietary B message:
PGN: 0x00FF02
Length: > 8 bytes
Destination: ECU at address 0x80
Desired TP sequence:
TP.CM_RTS sent to DA=0x80
CTS exchange
TP.DT packets
EOM ACK
instead of forcing:
TP.CM_BAM
Broadcast TP.DT packets