Skip to content

Latest commit

 

History

History
executable file
·
777 lines (557 loc) · 16.2 KB

services.rst

File metadata and controls

executable file
·
777 lines (557 loc) · 16.2 KB

Services

Each service is represented by a class that extends the BaseService class. They all implement 2 methods : make_request and interpret_response.

  • make_request will return a Request instance ready to be sent to the Connection
  • interpret_response will parse the data property inside a Response instance and populate another property named service_data. This service_data property will be an instance of the ResponseData class that is nested within the service class.

Crafting a request

req = SomeService.make_request(param1, param2) 
my_connection.send(req.get_payload())

Parsing a response

payload = my_connection.wait_frame(timeout=1)
response = Response.from_payload(payload) 
print('Raw data : %s' % response.data)
SomeService.interpret_response(response, param1, param2) 
print('Interpreted data : field1 : %s, field2 : %s' % (response.service_data.field1, response.service_data.field2))

AccessTimingParameter (0x83)

udsoncan.services.AccessTimingParameter.make_request

udsoncan.services.AccessTimingParameter.interpret_response

udsoncan.services::AccessTimingParameter.ResponseData

udsoncan.services::AccessTimingParameter.AccessType


ClearDiagnosticInformation (0x14)

udsoncan.services.ClearDiagnosticInformation.make_request

udsoncan.services.ClearDiagnosticInformation.interpret_response

Note

This service have empty response data

Note

This service does not have subfunctions


CommunicationControl (0x28)

udsoncan.services.CommunicationControl.make_request

udsoncan.services.CommunicationControl.interpret_response

udsoncan.services::CommunicationControl.ResponseData

udsoncan.services::CommunicationControl.ControlType


ControlDTCSetting (0x85)

udsoncan.services.ControlDTCSetting.make_request

udsoncan.services.ControlDTCSetting.interpret_response

udsoncan.services::ControlDTCSetting.ResponseData

udsoncan.services::ControlDTCSetting.SettingType


DiagnosticSessionControl (0x10)

udsoncan.services.DiagnosticSessionControl.make_request

udsoncan.services.DiagnosticSessionControl.interpret_response

udsoncan.services::DiagnosticSessionControl.ResponseData

udsoncan.services::DiagnosticSessionControl.Session


ECUReset (0x11)

udsoncan.services.ECUReset.make_request

udsoncan.services.ECUReset.interpret_response

udsoncan.services::ECUReset.ResponseData

udsoncan.services::ECUReset.ResetType


InputOutputControlByIdentifier (0x2F)

udsoncan.services.InputOutputControlByIdentifier.make_request

udsoncan.services.InputOutputControlByIdentifier.interpret_response

udsoncan.services::InputOutputControlByIdentifier.ResponseData

Note

This service does not have subfunctions

Note

Example available here<iocontrol_composite_did>


LinkControl (0x87)

udsoncan.services.LinkControl.make_request

udsoncan.services.LinkControl.interpret_response

udsoncan.services::LinkControl.ResponseData

udsoncan.services::LinkControl.ControlType


ReadDataByIdentifier (0x22)

udsoncan.services.ReadDataByIdentifier.make_request

udsoncan.services.ReadDataByIdentifier.interpret_response

udsoncan.services::ReadDataByIdentifier.ResponseData

Note

This service does not have subfunctions

Example of DidConfig

didconfig = {
   0x1111 : '<H', # Strings are processed by struct.unpack
   0x2222 : MyCustomDidCodec, # Inherits the udsoncan.DidCodec,
   0x3333 : MyCustomDidCodec(param1='hello') # Instance can also be provided
   0x4444 : dict(key1='val1', key2='val2', codec=MyCustomDidCodec} # If dict is given, a key named "codec" will be searched for
}

RequestFileTransfer (0x38)

udsoncan.services.RequestFileTransfer.make_request

udsoncan.services.RequestFileTransfer.interpret_response

udsoncan.services::RequestFileTransfer.ResponseData

Note

This service does not have subfunctions


ReadDTCInformation (0x19)

udsoncan.services.ReadDTCInformation.make_request

udsoncan.services.ReadDTCInformation.interpret_response

udsoncan.services::ReadDTCInformation.ResponseData

udsoncan.services::ReadDTCInformation.Subfunction

make_request() parameters per subfunction

make_request() parameters per subfunction
subfunction status_mask severity_mask dtc snapshot_record_number extended_data_record_number
reportNumberOfDTCByStatusMask Yes
reportDTCByStatusMask Yes
reportDTCSnapshotIdentification
reportDTCSnapshotRecordByDTCNumber Yes Yes
reportDTCSnapshotRecordByRecordNumber Yes
reportDTCExtendedDataRecordByDTCNumber Yes Yes
reportNumberOfDTCBySeverityMaskRecord Yes Yes
reportDTCBySeverityMaskRecord Yes Yes
reportSeverityInformationOfDTC Yes Yes
reportSupportedDTCs
reportFirstTestFailedDTC
reportFirstConfirmedDTC
reportMostRecentTestFailedDTC
reportMostRecentConfirmedDTC
reportMirrorMemoryDTCByStatusMask Yes
reportMirrorMemoryDTCExtendedDataRecordByDTCNumber Yes Yes
reportNumberOfMirrorMemoryDTCByStatusMask Yes
reportNumberOfEmissionsRelatedOBDDTCByStatusMask Yes
reportEmissionsRelatedOBDDTCByStatusMask Yes
reportDTCFaultDetectionCounter
reportDTCWithPermanentStatus

interpret_response() parameters per subfunction

interpret_response() parameters per subfunction
subfunction extended_data_size tolerate_zero_padding ignore_all_zero_dtc dtc_snapshot_did_size didconfig
reportNumberOfDTCByStatusMask
reportDTCByStatusMask Yes Yes
reportDTCSnapshotIdentification Yes Yes
reportDTCSnapshotRecordByDTCNumber Yes Yes Yes
reportDTCSnapshotRecordByRecordNumber Yes Yes Yes
reportDTCExtendedDataRecordByDTCNumber Yes Yes
reportNumberOfDTCBySeverityMaskRecord
reportDTCBySeverityMaskRecord Yes Yes
reportSeverityInformationOfDTC Yes Yes
reportSupportedDTCs Yes Yes
reportFirstTestFailedDTC Yes Yes
reportFirstConfirmedDTC Yes Yes
reportMostRecentTestFailedDTC Yes Yes
reportMostRecentConfirmedDTC Yes Yes
reportMirrorMemoryDTCByStatusMask Yes Yes
reportMirrorMemoryDTCExtendedDataRecordByDTCNumber Yes Yes
reportNumberOfMirrorMemoryDTCByStatusMask
reportNumberOfEmissionsRelatedOBDDTCByStatusMask
reportEmissionsRelatedOBDDTCByStatusMask Yes Yes
reportDTCFaultDetectionCounter Yes Yes
reportDTCWithPermanentStatus Yes Yes

ReadMemoryByAddress (0x23)

udsoncan.services.ReadMemoryByAddress.make_request

udsoncan.services.ReadMemoryByAddress.interpret_response

udsoncan.services::ReadMemoryByAddress.ResponseData

Note

This service does not have subfunctions


RequestDownload (0x34)

udsoncan.services.RequestDownload.make_request

udsoncan.services.RequestDownload.interpret_response

udsoncan.services::RequestDownload.ResponseData

Note

This service does not have subfunctions


RequestTransferExit (0x37)

udsoncan.services.RequestTransferExit.make_request

udsoncan.services.RequestTransferExit.interpret_response

udsoncan.services::RequestTransferExit.ResponseData

Note

This service does not have subfunctions


RequestUpload (0x35)

udsoncan.services.RequestUpload.make_request

udsoncan.services.RequestUpload.interpret_response

udsoncan.services::RequestUpload.ResponseData

Note

This service does not have subfunctions


RoutineControl (0x31)

udsoncan.services.RoutineControl.make_request

udsoncan.services.RoutineControl.interpret_response

udsoncan.services::RoutineControl.ResponseData

udsoncan.services::RoutineControl.ControlType


SecurityAccess (0x27)

udsoncan.services.SecurityAccess.make_request

udsoncan.services.SecurityAccess.interpret_response

udsoncan.services::SecurityAccess.ResponseData

udsoncan.services::SecurityAccess.Mode

Note

The level that acts as the subfunction can range from 1 to 0x7E. The LSB is a flag indicating the type of request. When the LSB is set to 1, the request is a RequestSeed message, when it is set to 0, the request is a SendKey message. This leaves 6 effective bits allowing 63 security levels.

Example :

  • 01: RequestSeed, 02 SendKey that goes with 01.
  • 03: RequestSeed, 04 SendKey that goes with 03.
  • etc

TesterPresent (0x3E)

udsoncan.services.TesterPresent.make_request

udsoncan.services.TesterPresent.interpret_response

udsoncan.services::TesterPresent.ResponseData

Note

TesterPresent subfunction is always 0


TransferData (0x36)

udsoncan.services.TransferData.make_request

udsoncan.services.TransferData.interpret_response

udsoncan.services::TransferData.ResponseData

Note

This service does not have subfunctions


WriteDataByIdentifier (0x2E)

udsoncan.services.WriteDataByIdentifier.make_request

udsoncan.services.WriteDataByIdentifier.interpret_response

udsoncan.services::WriteDataByIdentifier.ResponseData

Note

This service does not have subfunctions


WriteMemoryByAddress (0x3D)

udsoncan.services.WriteMemoryByAddress.make_request

udsoncan.services.WriteMemoryByAddress.interpret_response

udsoncan.services::WriteMemoryByAddress.ResponseData

Note

This service does not have subfunctions


DynamicallyDefineDataIdentifier (0x2C)

udsoncan.services.DynamicallyDefineDataIdentifier.make_request

udsoncan.services.DynamicallyDefineDataIdentifier.interpret_response

udsoncan.services::DynamicallyDefineDataIdentifier.ResponseData


SecuredDataTransmission (0x84)

Warning

Not implemented


ResponseOnEvent (0x86)

Warning

Not implemented


ReadScalingDataByIdentifier (0x24)

Warning

Not implemented


ReadDataByPeriodicIdentifier (0x2A)

Warning

Not implemented