Source code for udsoncan.services.RequestTransferExit

from udsoncan.Request import Request
from udsoncan.Response import Response
from udsoncan.BaseService import BaseService, BaseResponseData
from udsoncan.ResponseCode import ResponseCode
from udsoncan.exceptions import *

from typing import Optional, cast


class RequestTransferExit(BaseService):
    _sid = 0x37
    _use_subfunction = False
    _no_response_data = True

    supported_negative_response = [ResponseCode.IncorrectMessageLengthOrInvalidFormat,
                                   ResponseCode.RequestSequenceError,
                                   ResponseCode.RequestOutOfRange,
                                   ResponseCode.GeneralProgrammingFailure
                                   ]

[docs] class ResponseData(BaseResponseData): """ .. data:: parameter_records bytes object containing optional data provided by the server """ parameter_records: bytes def __init__(self, parameter_records: bytes): super().__init__(RequestTransferExit) self.parameter_records = parameter_records
class InterpretedResponse(Response): service_data: "RequestTransferExit.ResponseData"
[docs] @classmethod def make_request(cls, data: Optional[bytes] = None) -> Request: """ Generates a request for RequestTransferExit :param data: Additional optional data to send to the server :type data: bytes :raises ValueError: If parameters are out of range, missing or wrong type """ if data is not None and not isinstance(data, bytes): raise ValueError('data must be a bytes object') request = Request(service=cls, data=data) return request
[docs] @classmethod def interpret_response(cls, response: Response) -> InterpretedResponse: """ Populates the response ``service_data`` property with an instance of :class:`RequestTransferExit.ResponseData<udsoncan.services.RequestTransferExit.ResponseData>` :param response: The received response to interpret :type response: :ref:`Response<Response>` """ response.service_data = cls.ResponseData( parameter_records=response.data if response.data else bytes() ) return cast(RequestTransferExit.InterpretedResponse, response)