Skip to content

J1939TpAbortReason Enum

Connection Abort reason codes carried in byte 1 of the TP.CM Abort control frame, as SAE J1939-21 table 7 assigns them (#33). The values are the standard's own, so they round-trip on the wire without translation; a peer's abort carrying a value outside the table is surfaced as that value, and 0 -- which the table does not assign -- as Unknown. Nothing outside the table is ever sent: 10..250 are reserved to SAE and 251..255 belong to J1939-71's definitions.

public enum J1939TpAbortReason : System.Byte

Fields

Unknown 0

Not a code of the table: the default, and what a malformed abort decodes to.

SessionAlreadyOpen 1

Already in one or more connection managed sessions and cannot support another (table 7, code 1). Sent when an RTS arrives while a session with that peer is open.

NoResourcesAvailable 2

System resources were needed for another task so this connection managed session was terminated (table 7, code 2). Also the local classification when a new BAM from the same source aborts the previous one (J1939-21 §5.10.3): BAM has no Connection Abort on the wire, and this is the closest table-7 code for "the slot was needed elsewhere".

Timeout 3

A timeout occurred and this is the connection abort to close the session (table 7, code 3). Used by every T1/T2/T3/T4 enforcement path in this stack.

CtsReceivedDuringDataTransfer 4

CTS messages received when data transfer is in progress (table 7, code 4). Received only: this stack never sends it. An originator that gets a CTS while a block is still draining keeps it and applies it when the block ends (a receiver's next CTS can legitimately arrive before the originator's own confirmation of the block's last TP.DT).

MaximumRetransmitRequestsReached 5

Maximum retransmit request limit reached (table 7, code 5). Sent by the originator when a CTS asks for a packet already sent once the session has served MaxRetransmitRequests such requests (#58).

UnexpectedDataTransferPacket 6

Unexpected data transfer packet (table 7, code 6). Received only: this stack never sends it. Its receiver grants the next block in the same step that takes the last TP.DT of the current one, so a TP.DT carrying the next expected sequence number is always taken, even one the originator sent before it saw that grant; any other is answered with BadSequenceNumber or DuplicateSequenceNumber.

BadSequenceNumber 7

Bad sequence number, the software cannot recover (table 7, code 7). Also what this stack sends for a control message at a point in the sequence it cannot recover from and the table has no code of its own for: an EndOfMsgAck out of turn or carrying the wrong totals, a CTS granting packets beyond the message.

DuplicateSequenceNumber 8

Duplicate sequence number, the software cannot recover (table 7, code 8).

MessageSizeExceeded 9

"Total Message Size" is greater than 1785 bytes (table 7, code 9).