uds.client
Implementation for UDS Client Simulation.
Classes
Simulation for UDS Client entity. |
Module Contents
- class uds.client.Client(transport_interface, p2_client_timeout=DEFAULT_P2_CLIENT_TIMEOUT, p2_ext_client_timeout=DEFAULT_P2_EXT_CLIENT_TIMEOUT, p6_client_timeout=DEFAULT_P6_CLIENT_TIMEOUT, p6_ext_client_timeout=DEFAULT_P6_EXT_CLIENT_TIMEOUT, s3_client=DEFAULT_S3_CLIENT)[source]
Simulation for UDS Client entity.
Configure Client for UDS communication.
- Parameters:
transport_interface (uds.transport_interface.AbstractTransportInterface) – Transport Interface object for managing UDS communication.
p2_client_timeout (uds.utilities.TimeMillisecondsAlias) – Timeout value for P2Client parameter.
p2_ext_client_timeout (uds.utilities.TimeMillisecondsAlias) – Timeout value for P2*Client parameter.
p6_client_timeout (uds.utilities.TimeMillisecondsAlias) – Timeout value for P6Client parameter.
p6_ext_client_timeout (uds.utilities.TimeMillisecondsAlias) – Timeout value for P*Client parameter.
s3_client (uds.utilities.TimeMillisecondsAlias) – Value of S3Client time parameter.
- DEFAULT_P2_CLIENT_TIMEOUT: uds.utilities.TimeMillisecondsAlias = 100
Default value of P2Client timeout.
- DEFAULT_P6_CLIENT_TIMEOUT: uds.utilities.TimeMillisecondsAlias = 10000
Default value of P6Client timeout.
- DEFAULT_P2_EXT_CLIENT_TIMEOUT: uds.utilities.TimeMillisecondsAlias = 5050
Default value of P2*Client timeout.
- DEFAULT_P6_EXT_CLIENT_TIMEOUT: uds.utilities.TimeMillisecondsAlias = 50000
Default value of P6*Client timeout.
- DEFAULT_S3_CLIENT: uds.utilities.TimeMillisecondsAlias = 2000
Default value of S3Client time parameter.
- DEFAULT_RECEIVING_TASK_CYCLE: uds.utilities.TimeMillisecondsAlias = 20
Default value of receiving task cycle.
- property transport_interface: uds.transport_interface.AbstractTransportInterface
Get Transport Interface used.
- Return type:
uds.transport_interface.AbstractTransportInterface
- property p2_client_timeout: uds.utilities.TimeMillisecondsAlias
Get timeout value for P2Client parameter.
- Return type:
uds.utilities.TimeMillisecondsAlias
- property p2_ext_client_timeout: uds.utilities.TimeMillisecondsAlias
Get timeout value for P2*Client parameter.
- Return type:
uds.utilities.TimeMillisecondsAlias
- property p6_client_timeout: uds.utilities.TimeMillisecondsAlias
Get timeout value for P6Client parameter.
- Return type:
uds.utilities.TimeMillisecondsAlias
- property p6_ext_client_timeout: uds.utilities.TimeMillisecondsAlias
Get timeout value for P6*Client parameter.
- Return type:
uds.utilities.TimeMillisecondsAlias
- property s3_client: uds.utilities.TimeMillisecondsAlias
Get value of S3Client parameter.
- Return type:
uds.utilities.TimeMillisecondsAlias
- __response_queue: queue.SimpleQueue[uds.message.UdsMessageRecord]
- __receiving_thread: threading.Thread | None = None
- __receiving_stop_event: threading.Event
- __receiving_break_event: threading.Event
- __receiving_not_in_progress: threading.Event
- __tester_present_thread: threading.Thread | None = None
- __tester_present_stop_event: threading.Event
- property p2_client_measured: uds.utilities.TimeMillisecondsAlias | None
Get last measured value of P2Client parameter.
- Returns:
The last measured value or None if measurement was not performed.
- Return type:
Optional[uds.utilities.TimeMillisecondsAlias]
- property p2_ext_client_measured: Tuple[uds.utilities.TimeMillisecondsAlias, Ellipsis] | None
Get last measured values of P2*Client parameter.
- Returns:
The last measured values or None if measurement was not performed.
- Return type:
Optional[Tuple[uds.utilities.TimeMillisecondsAlias, Ellipsis]]
- property p6_client_measured: uds.utilities.TimeMillisecondsAlias | None
Get last measured value of P6Client parameter.
- Returns:
The last measured value or None if measurement was not performed.
- Return type:
Optional[uds.utilities.TimeMillisecondsAlias]
- property p6_ext_client_measured: uds.utilities.TimeMillisecondsAlias | None
Get last measured value of P6*Client parameter.
- Returns:
The last measured value or None if measurement was not performed.
- Return type:
Optional[uds.utilities.TimeMillisecondsAlias]
- property is_tester_present_sent: bool
Get flag whether Tester Present thread is running periodic sending.
- Return type:
- _update_p2_client_measured(value)[source]
Update measured values of P2Client parameter.
- Parameters:
value (uds.utilities.TimeMillisecondsAlias) – Value to set.
- Raises:
TypeError – Provided value is not int or float type.
ValueError – Provided time value must be a positive number.
- Return type:
None
- _update_p2_ext_client_measured(*values)[source]
Update measured values of P2*Client parameter.
- Parameters:
values (uds.utilities.TimeMillisecondsAlias) – Values to set.
- Raises:
RuntimeError – At least one P2*Client value must be provided.
TypeError – One of provided values is not int or float type.
ValueError – One of provided values is out of range.
- Return type:
None
- _update_p6_client_measured(value)[source]
Update measured values of P6Client parameter.
- Parameters:
value (uds.utilities.TimeMillisecondsAlias) – Value to set.
- Raises:
TypeError – Provided value is not int or float type.
ValueError – Provided time value must be a positive number.
- Return type:
None
- _update_p6_ext_client_measured(value)[source]
Update measured values of P6*Client parameter.
- Parameters:
value (uds.utilities.TimeMillisecondsAlias) – Value to set.
- Raises:
TypeError – Provided value is not int or float type.
ValueError – Provided time value must be a positive number.
- Return type:
None
- _update_measured_client_values(request_record, response_records)[source]
Update measured timing parameters on Client side (P2Client, P2*Client, P6Client and P6*Client).
- Parameters:
request_record (uds.message.UdsMessageRecord) – Record of the last transmitted request message.
response_records (Sequence[uds.message.UdsMessageRecord]) – Records of received responses to provided message.
- Return type:
None
- _receive_response(sid, start_timeout, end_timeout)[source]
Receive UDS response message to previously sent request.
- Parameters:
sid (uds.message.RequestSID) – SID of the last sent request message.
start_timeout (uds.utilities.TimeMillisecondsAlias) – Maximal time (in milliseconds) to wait.
end_timeout (uds.utilities.TimeMillisecondsAlias)
- Returns:
Record with response message received to the last UDS request message sent. None if a timeout was reached.
- Return type:
Optional[uds.message.UdsMessageRecord]
- _receive_task(cycle)[source]
Schedule reception of a UDS message for a cyclic response collecting.
- Parameters:
cycle (uds.utilities.TimeMillisecondsAlias) – Time (in milliseconds) used for this task cycle.
- Return type:
None
- _send_tester_present_task(tester_present_message)[source]
Schedule a single Tester Present message transmission for a cyclic sending.
- Parameters:
tester_present_message (uds.message.UdsMessage) – Tester Present message to send.
- Return type:
None
- static is_response_pending_message(message, request_sid)[source]
Check if provided UDS message record contains Negative Response with Response Pending NRC.
- Parameters:
message (Union[uds.message.UdsMessage, uds.message.UdsMessageRecord]) – UDS Message Record to check.
request_sid (uds.message.RequestSID) – Request SID value sent in the proceeding UDS request message.
- Raises:
TypeError – Provided message value is not an instance of UdsMessageRecord class.
- Returns:
True if provided UDS message record contains Negative Response with Response Pending NRC, False otherwise.
- Return type:
- get_response(timeout=None)[source]
Wait for the first received response message.
Note
This method can be used for fetching responses messages that were not direct responses to request messages sent via
send_request_receive_responses().This includes responses to cyclically sent Tester Present. Typically used for fetching following Response on Event (RSID 0xC6) responses.
- Parameters:
timeout (Optional[uds.utilities.TimeMillisecondsAlias]) – Maximal time to wait for a response message. Leave None to wait forever.
- Raises:
TypeError – Provided value is not int or float type.
ValueError – Provided value is out of range.
- Returns:
Record with the first response message received or None if no message was received.
- Return type:
Optional[uds.message.UdsMessageRecord]
- get_response_no_wait()[source]
Get the first received response message, but do not wait for its arrival.
Note
This method can be used for fetching responses messages that were not direct responses to request messages sent via
send_request_receive_responses().This includes responses to cyclically sent Tester Present. Typically used for fetching following Response on Event (RSID 0xC6) responses.
- Returns:
Record with the first response message received or None if no message was received.
- Return type:
Optional[uds.message.UdsMessageRecord]
- clear_response_queue()[source]
Clear all response messages that are currently stored in the queue.
- Return type:
None
- start_receiving(cycle=DEFAULT_RECEIVING_TASK_CYCLE)[source]
Start receiving task in the background.
All response messages sent to this Client while receiving is active, will be collected and accessible via
get_response()andget_response_no_wait()methods.Warning
Cycle value would be overwritten with default value if request message is sent while receiving.
- Parameters:
cycle (uds.utilities.TimeMillisecondsAlias)
- Return type:
None
- start_tester_present(addressing_type=AddressingType.FUNCTIONAL, sprmib=True)[source]
Start sending Tester Present cyclically.
- Parameters:
addressing_type (uds.addressing.AddressingType) – Addressing Type to use for cyclical messages.
sprmib (bool) – Whether to use Suppress Positive Response Message Indication Bit.
- Return type:
None
- send_request_receive_responses(request)[source]
Send diagnostic request and receive all responses (till the final one).
- Parameters:
request (uds.message.UdsMessage) – Request message to send.
- Raises:
TypeError – Provided value is not an instance of UdsMessage class.
TimeoutError – Response was initiated with Response Pending message, but never finalized.
- Returns:
Tuple with two elements:
record of diagnostic request message that was sent
tuple with diagnostic response messages that were received in the response
- Return type:
Tuple[uds.message.UdsMessageRecord, Tuple[uds.message.UdsMessageRecord, Ellipsis]]