Diagnostic Messages
Implementation related to diagnostic messages and packets is located in uds.messages sub-package.
UDS Message Implementation
- Diagnostic messages implementation is divided into two parts:
UDS Message - storage for a temporary diagnostic message definition on the user side
UDS Message Record - storage for historic information of a diagnostic message that was either received or transmitted
UDS Message
UdsMessage class is meant to provide containers for
diagnostic messages information.
Once a diagnostic message object is created, it stores diagnostic message data that were provided by a user.
One can use these objects to execute complex operations (provided in other subpackages) such as diagnostic messages
transmission or segmentation.
All UdsMessage attributes are validated on each value change, therefore a user will
face an exception if one tries to set an invalid (incompatible with the annotation) value to of these attributes.
- Attributes implemented in
UdsMessageclass: payload- settableaddressing- settable
Example code:
from uds.messages import UdsMessage, AddressingType
# example how to create an object
uds_message = UdsMessage(payload=[0x10, 0x03],
addressing=AddressingType.PHYSICAL)
# raw message attribute
print(uds_message.payload)
uds_message.payload = (0x62, 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF)
print(uds_message.payload)
uds_message.payload = [0x3E, 0x80]
print(uds_message.payload)
# addressing attribute
print(uds_message.addressing)
uds_message.addressing = AddressingType.FUNCTIONAL
print(uds_message.addressing)
uds_message.addressing = AddressingType.PHYSICAL.value
print(uds_message.addressing)
UDS Message Record
UdsMessageRecord class is meant to provide container for historic information
of diagnostic messages that were either transmitted or received.
A user shall not create objects of this class in normal cases, but one would probably use them quite often as they
are returned by other layers of uds package.
All UdsMessageRecord attributes are read only (they are set only once upon
an object creation) as they store historic data and history cannot be changed (can’t it, right?).
A user will face an exception if one tries to modify any attribute.
- Attributes implemented in
UdsMessageRecordclass: payload- readableaddressing- readabledirection- readablepackets_records- readabletransmission_start- readabletransmission_end- readable
UDS Packet Implementation
- UDS packets implementation is divided into three parts:
UDS Packet Type - enums with Network Protocol Control Information (N_PCI) values definitions
UDS Packet - storages for a temporary Network Protocol Data Unit (N_PDU) definition on the user side
UDS Packet Record - storages for historic information of a Network Protocol Data Unit (N_PDU) that was either received or transmitted
UDS Packet Type
UDS packet types are supposed to be understood as values of Network Protocol Control Information (N_PCI). Supported values of UDS packet types are defined in specially designed for this purpose enum classes.
- Enum classes that implements UDS packet types:
AbstractUdsPacketType
AbstractUdsPacketType class is an empty enum that is a parent class for all concrete
UDS packet types enum classes. It provides common API and values restriction (UDS packet type values must be
4-bit integer) for all children classes.
A user shall not use AbstractUdsPacketType directly, but one is able
(and encouraged) to use AbstractUdsPacketType implementation with any of its
children classes.
- Methods implemented in
AbstractUdsPacketTypeclass:
UDS Packet
UDS packets differs for each communication bus, therefore multiple classes implementing them are defined. Each UDS packet class provides containers for Network Protocol Data Unit (N_PDU) information that are specific for a communication bus for which this class is relevant. Objects of UDS packet classes might be used to execute complex operations (provided in other subpackages) such as packets transmission or desegmentation.
- Implemented UDS packet classes:
AbstractUdsPacket
AbstractUdsPacket class contains common implementation and provides common API
for all UDS Packet classes as they are inheriting after AbstractUdsPacket class.
A user shall not use AbstractUdsPacket directly, but one is able
(and encouraged) to use AbstractUdsPacket implementation with any of its
children classes.
- Properties implemented in
AbstractUdsPacketclass: raw_data- settableaddressing- settablepacket_type- readable
UDS Packet Record
UDS packet record is a container that stores historic information of UDS packet (N_PDU) that was either received or transmitted. UDS packets differs for each communication bus, therefore multiple classes implementing UDS packet records are defined.
A user shall not create objects of UDS packet record classes in normal cases, but one would probably use them quite
often as they are returned by other layers of uds package.
- Implemented UDS packet record classes:
AbstractUdsPacketRecord
AbstractUdsPacketRecord class contains common implementation and provides common API
for all UDS Packet classes as they are inheriting after AbstractUdsPacketRecord class.
A user shall not use AbstractUdsPacketRecord directly, but one is able
(and encouraged) to use AbstractUdsPacketRecord implementation with any of its
children classes.
- Properties implemented in
AbstractUdsPacketRecordclass: frame- readabledirection- readablepacket_type- readableraw_data- readable and abstract (bus specific)addressing- readable and abstract (bus specific)transmission_time- readable and abstract (bus specific)
UDS Messages Data
Implementation of data parameters that are defined by UDS specification.
- UDS data parameters:
Service Identifiers - are implemented by:
Service Identifiers
POSSIBLE_REQUEST_SIDS
POSSIBLE_REQUEST_SIDS is a set with all possible values of
Service Identifier data parameter in a request message.
RequestSID
Enum RequestSID contains definitions of request
Service Identifiers values.
- Methods implemented in
RequestSIDclass:
POSSIBLE_RESPONSE_SIDS
POSSIBLE_RESPONSE_SIDS is a set with all possible values of
Service Identifier data parameter in a response message.
ResponseSID
Enum ResponseSID contains definitions of response
Service Identifiers values.
- Methods implemented in
ResponseSIDclass:
Negative Response Codes
Enum NRC contains definitions of all common (defined by ISO 14229)
Negative Response Codes values.
- Methods implemented in
NRCclass:
Transmission Attributes
- Attributes that describes UDS communication:
Addressing - enum with UDS communication models
Transmission Direction - enum with communication directions
Addressing
- Enum
AddressingTypecontains definitions of addressing values that determines UDS communication model: PHYSICAL- direct one to one communication (physical addressing)FUNCTIONAL- one to many communication (functional addressing)
- Methods implemented in
AddressingTypeclass:
Transmission Direction
- Enum
TransmissionDirectioncontains definitions of communication directions: RECEIVED- incomingTRANSMITTED- outcoming
- Methods implemented in
TransmissionDirectionclass: