blob: 329d482bdee5f7d41d0eb3f19513d7c53c44f58e [file] [log] [blame]
module UnifiedDiagnosticServices {
import from General_Types all
external function encode_TopLevelMessage_UDS_requests(in TopLevelMessage_UDS_requests pdu) return octetstring
with { extension "prototype(convert) encode(RAW)" }
external function decode_TopLevelMessage_UDS_requests(in octetstring data) return TopLevelMessage_UDS_requests
with { extension "prototype(convert) decode(RAW)" }
external function encode_TopLevelMessage_UDS_responses(in TopLevelMessage_UDS_responses pdu) return octetstring
with { extension "prototype(convert) encode(RAW)" }
external function decode_TopLevelMessage_UDS_responses(in octetstring data) return TopLevelMessage_UDS_responses
with { extension "prototype(convert) decode(RAW)" }
type OCT1 SID
type enumerated SuppressPosRspMsgIndicationBitType {
doNotsuppresssPos (0),
suppresssPos (1)
} with {variant "FIELDLENGTH(1)"}
type BIT7 DiagnosticSessionType
type record DefaultSessionRequest {
DiagnosticSessionType diagnosticSessionType ('0000001'B)
} with { variant "FIELDORDER(msb)" };
type record ProgrammingSessionRequest {
DiagnosticSessionType diagnosticSessionType ('0000010'B)
} with { variant "FIELDORDER(msb)" };
type record ExtendedDiagnosticSessionRequest {
DiagnosticSessionType diagnosticSessionType ('0000011'B)
} with { variant "FIELDORDER(msb)" };
type record SafetySystemDiagnosticSessionRequest {
DiagnosticSessionType diagnosticSessionType ('0000100'B)
} with { variant "FIELDORDER(msb)" };
type union DiagnosticSessionRequestType
{
DefaultSessionRequest defaultSession,
ProgrammingSessionRequest programmingSession,
ExtendedDiagnosticSessionRequest extendedDiagnosticSession,
SafetySystemDiagnosticSessionRequest safetySystemDiagnosticSession
}
with {variant "TAG (
defaultSession, diagnosticSessionType = '0000001'B;
programmingSession, diagnosticSessionType = '0000010'B;
extendedDiagnosticSession, diagnosticSessionType = '0000011'B;
safetySystemDiagnosticSession, diagnosticSessionType = '0000100'B)";
variant "FIELDLENGTH(7)"
}
type record DiagnosticSessionControlRequestSID
{
SID sid ('10'O),
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
DiagnosticSessionRequestType diagnosticSessionType
} with { variant "FIELDORDER(msb)" };
type record DiagnosticSessionControlResponseSID
{
SID sid ('50'O),
BIT1 reserved ('0'B),
DiagnosticSessionResponseType diagnosticSessionType
} with { variant "FIELDORDER(msb)" };
type record DefaultSessionResponse {
DiagnosticSessionType diagnosticSessionType ('0000001'B),
OCT2 p2ServerMax,
OCT2 p2StarServerMax
} with { variant "FIELDORDER(msb)" };
type record ProgrammingSessionResponse {
DiagnosticSessionType diagnosticSessionType ('0000010'B),
OCT2 p2ServerMax,
OCT2 p2StarServerMax
} with { variant "FIELDORDER(msb)" };
type record ExtendedDiagnosticSessionResponse {
DiagnosticSessionType diagnosticSessionType ('0000011'B),
OCT2 p2ServerMax,
OCT2 p2StarServerMax
} with { variant "FIELDORDER(msb)" };
type record SafetySystemDiagnosticSessionResponse {
DiagnosticSessionType diagnosticSessionType ('0000100'B),
OCT2 p2ServerMax,
OCT2 p2StarServerMax
} with { variant "FIELDORDER(msb)" };
type union DiagnosticSessionResponseType
{
DefaultSessionResponse defaultSession,
ProgrammingSessionResponse programmingSession,
ExtendedDiagnosticSessionResponse extendedDiagnosticSession,
SafetySystemDiagnosticSessionResponse safetySystemDiagnosticSession
}
with {variant "TAG (
defaultSession, diagnosticSessionType = '0000001'B;
programmingSession, diagnosticSessionType = '0000010'B;
extendedDiagnosticSession, diagnosticSessionType = '0000011'B;
safetySystemDiagnosticSession, diagnosticSessionType = '0000100'B)"
}
type BIT7 ResetType
type record HardResetRequest {
ResetType resetType ('0000001'B)
} with { variant "FIELDORDER(msb)" };
type record KeyOffOnResetRequest {
ResetType resetType ('0000010'B)
} with { variant "FIELDORDER(msb)" };
type record SoftResetRequest {
ResetType resetType ('0000011'B)
} with { variant "FIELDORDER(msb)" };
type record EnableRapidPowerShutDownRequest {
ResetType resetType ('0000100'B)
} with { variant "FIELDORDER(msb)" };
type record DisableRapidPowerShutDownRequest {
ResetType resetType ('0000101'B)
} with { variant "FIELDORDER(msb)" };
type union ECUResetRequestType
{
HardResetRequest hardReset,
KeyOffOnResetRequest keyOffOnReset,
SoftResetRequest softReset,
EnableRapidPowerShutDownRequest enableRapidPowerShutDown,
DisableRapidPowerShutDownRequest disableRapidPowerShutDown
}
with {variant "TAG (
hardReset, resetType = '0000001'B;
keyOffOnReset, resetType = '0000010'B;
softReset, resetType = '0000011'B;
enableRapidPowerShutDown, resetType = '0000100'B;
disableRapidPowerShutDown, resetType = '0000101'B)";
variant "FIELDLENGTH(7)"
}
type record HardResetResponse {
ResetType resetType ('0000001'B)
} with { variant "FIELDORDER(msb)" };
type record KeyOffOnResetResponse {
ResetType resetType ('0000010'B)
} with { variant "FIELDORDER(msb)" };
type record SoftResetResponse {
ResetType resetType ('0000011'B)
} with { variant "FIELDORDER(msb)" };
type OCT1 PowerDownTime
type record EnableRapidPowerShutDownResponse {
ResetType resetType ('0000100'B),
PowerDownTime powerDownTime
} with { variant "FIELDORDER(msb)" };
type record DisableRapidPowerShutDownResponse {
ResetType resetType ('0000101'B)
} with { variant "FIELDORDER(msb)" };
type union ECUResetResponseType
{
HardResetResponse hardReset,
KeyOffOnResetResponse keyOffOnReset,
SoftResetResponse softReset,
EnableRapidPowerShutDownResponse enableRapidPowerShutDown,
DisableRapidPowerShutDownResponse disableRapidPowerShutDown
}
with {variant "TAG (
hardReset, resetType = '0000001'B;
keyOffOnReset, resetType = '0000010'B;
softReset, resetType = '0000011'B;
enableRapidPowerShutDown, resetType = '0000100'B;
disableRapidPowerShutDown, resetType = '0000101'B)";
variant "FIELDLENGTH(7)"
}
type record ECUResetRequestSID
{
SID sid ('11'O),
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ECUResetRequestType resetType
} with { variant "FIELDORDER(msb)" };
type record ECUResetResponseSID
{
SID sid ('51'O),
BIT1 reserved ('0'B),
ECUResetResponseType resetType
} with { variant "FIELDORDER(msb)" };
// Security Access
type BIT7 SecurityAccessType
type record RequestSeedRequest0 {
SecurityAccessType securityAccessType ('0000001'B),
octetstring securityAccessDataRecord
} with { variant "FIELDORDER(msb)" };
type record SendKeyRequest0 {
SecurityAccessType securityAccessType ('0000010'B),
octetstring securityKey
} with { variant "FIELDORDER(msb)" };
type record RequestSeedRequest1 {
SecurityAccessType securityAccessType ('0000011'B),
octetstring securityAccessDataRecord
} with { variant "FIELDORDER(msb)" };
type record SendKeyRequest1 {
SecurityAccessType securityAccessType ('0000100'B),
octetstring securityKey
} with { variant "FIELDORDER(msb)" };
type union SecurityAccessRequestType
{
RequestSeedRequest0 requestSeed0,
SendKeyRequest0 sendKey0,
RequestSeedRequest1 requestSeed1,
SendKeyRequest1 sendKey1
}
with {variant "TAG (
requestSeed0, securityAccessType = '0000001'B;
sendKey0, securityAccessType = '0000010'B;
requestSeed1, securityAccessType = '0000011'B;
sendKey1, securityAccessType = '0000100'B)";
variant "FIELDLENGTH(7)"
}
type record SecurityAccessRequestSID
{
SID sid ('27'O),
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
SecurityAccessRequestType securityAccessType
} with { variant "FIELDORDER(msb)" };
type record RequestSeedResponse0 {
SecurityAccessType securityAccessType ('0000001'B),
octetstring securitySeed
} with { variant "FIELDORDER(msb)" };
type record SendKeyResponse0 {
SecurityAccessType securityAccessType ('0000010'B)
} with { variant "FIELDORDER(msb)" };
type record RequestSeedResponse1 {
SecurityAccessType securityAccessType ('0000011'B),
octetstring securitySeed
} with { variant "FIELDORDER(msb)" };
type record SendKeyResponse1 {
SecurityAccessType securityAccessType ('0000100'B)
} with { variant "FIELDORDER(msb)" };
type union SecurityAccessResponseType
{
RequestSeedResponse0 requestSeed0,
SendKeyResponse0 sendKey0,
RequestSeedResponse1 requestSeed1,
SendKeyResponse1 sendKey1
}
with {variant "TAG (
requestSeed0, securityAccessType = '0000001'B;
sendKey0, securityAccessType = '0000010'B;
requestSeed1, securityAccessType = '0000011'B;
sendKey1, securityAccessType = '0000100'B)" ;
variant "FIELDLENGTH(7)"
}
type record SecurityAccessResponseSID
{
SID sid ('67'O),
BIT1 reserved ('0'B),
SecurityAccessResponseType securityAccessType
} with { variant "FIELDORDER(msb)" };
//Communication Control
type BIT7 ControlType
type enumerated e_ControlType{
EnableRxAndTx (0),
EnableRxAndDisableTx (1),
DisableRxAndEnableTx (2),
DisableRxAndTx (3),
EnableRxAndDisableTxWithEnhancedAddressInformation (4),
EnableRxAndTxWithEnhancedAddressInformation (5)
} with {variant "FIELDLENGTH(7)"}
type enumerated e_DisableEnable{
DisableEnableSpecifiedCommunicationType (0),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber1 (1),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber2 (2),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber3 (3),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber4 (4),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber5 (5),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber6 (6),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber7 (7),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber8 (8),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber9 (9),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber10 (10),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber11 (11),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber12 (12),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber13 (13),
DisableEnableSpecificSubnetIdentifiedBySubnetNumber14 (14),
DisableEnableNetworkWhichRequestIsReceivedOn (15)
} with {variant "FIELDLENGTH(4)"}
type enumerated e_CommunicationMessages{
normalMessages (1),
networkManagement (2)
} with {variant "FIELDLENGTH(2)"}
type record CommunicationType {
e_DisableEnable disableEnable,
BIT2 reserved ('00'B),
e_CommunicationMessages communicationMessages
} with { variant "FIELDORDER(msb)" };
type record EnableRxAndTxRequest {
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ControlType controlType ('0000000'B),
CommunicationType communicationType
} with { variant "FIELDORDER(msb)" };
type record EnableRxAndDisableTxRequest {
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ControlType controlType ('0000001'B),
CommunicationType communicationType
} with { variant "FIELDORDER(msb)" };
type record DisableRxAndEnableTxRequest {
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ControlType controlType ('0000010'B),
CommunicationType communicationType
} with { variant "FIELDORDER(msb)" };
type record DisableRxAndTxRequest {
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ControlType controlType ('0000011'B),
CommunicationType communicationType
} with { variant "FIELDORDER(msb)" };
type OCT2 NodeIdentificationNumber
type record EnableRxAndDisableTxWithEnhancedAddressInformationRequest {
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ControlType controlType ('0000100'B),
CommunicationType communicationType,
NodeIdentificationNumber nodeIdentificationNumber
} with { variant "FIELDORDER(msb)" };
type record EnableRxAndTxWithEnhancedAddressInformationRequest {
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
ControlType controlType ('0000101'B),
CommunicationType communicationType,
NodeIdentificationNumber nodeIdentificationNumber
} with { variant "FIELDORDER(msb)" };
type union CommunicationControlRequestType
{
EnableRxAndTxRequest enableRxAndTxRequest,
EnableRxAndDisableTxRequest enableRxAndDisableTxRequest,
DisableRxAndEnableTxRequest disableRxAndEnableTxRequest,
DisableRxAndTxRequest disableRxAndTxRequest,
EnableRxAndDisableTxWithEnhancedAddressInformationRequest enableRxAndDisableTxWithEnhancedAddressInformationRequest,
EnableRxAndTxWithEnhancedAddressInformationRequest enableRxAndTxWithEnhancedAddressInformationRequest
}
with {variant "TAG (
enableRxAndTxRequest, controlType = '0000000'B;
enableRxAndDisableTxRequest, controlType = '0000001'B;
disableRxAndEnableTxRequest, controlType = '0000010'B;
disableRxAndTxRequest, controlType = '0000011'B;
enableRxAndDisableTxWithEnhancedAddressInformationRequest, controlType = '0000100'B;
enableRxAndTxWithEnhancedAddressInformationRequest, controlType = '0000101'B)"
}
type record CommunicationControlRequestSID
{
SID sid ('28'O),
CommunicationControlRequestType communicationControlRequestType
} with { variant "FIELDORDER(msb)" };
type record CommunicationControlResponseSID
{
SID sid ('68'O),
BIT1 reserved ('0'B),
e_ControlType controlType
} with { variant "FIELDORDER(msb)" };
// Tester Present
type record TesterPresentRequestSID
{
SID sid ('3E'O),
SuppressPosRspMsgIndicationBitType suppressPosRspMsgIndicationBit,
BIT7 zero ('0000000'B)
} with { variant "FIELDORDER(msb)" };
type record TesterPresentResponseSID
{
SID sid ('7E'O),
BIT1 reserved ('0'B),
BIT7 zero ('0000000'B)
} with { variant "FIELDORDER(msb)" };
type OCT2 ServiceIdentifier
// here are examples of ReadDataByIdentifier services
type record ReadDataByIdentifierRequest1
{
ServiceIdentifier identifier ('8000'O)
} with { variant "" };
type record ReadDataByIdentifierRequest2
{
ServiceIdentifier identifier ('8001'O)
} with { variant "" };
type record ReadDataByIdentifierRequest3
{
ServiceIdentifier identifier ('8002'O)
} with { variant "" };
type record ReadDataByIdentifierRequestSID
{
SID sid ('22'O),
ReadDataByIdentifierRequest readDataByIdentifierRequest
} with { variant "" };
type union ReadDataByIdentifierRequest
{
ReadDataByIdentifierRequest1 readDataByIdentifier1,
ReadDataByIdentifierRequest2 readDataByIdentifier2,
ReadDataByIdentifierRequest3 readDataByIdentifier3
}
with {variant "TAG (
readDataByIdentifier1, identifier = '8000'O;
readDataByIdentifier2, identifier = '8001'O;
readDataByIdentifier3, identifier = '8002'O;
) "
}
type record ReadDataByIdentifierResponse1
{
ServiceIdentifier identifier ('8000'O),
octetstring readDataByIdentifierResponse
} with { variant "" };
type record ReadDataByIdentifierResponse2
{
ServiceIdentifier identifier ('8001'O),
octetstring readDataByIdentifierResponse
} with { variant "" };
type record ReadDataByIdentifierResponse3
{
ServiceIdentifier identifier ('8002'O),
octetstring readDataByIdentifierResponse
} with { variant "" };
type record ReadDataByIdentifierResponseSID
{
SID sid ('62'O),
ReadDataByIdentifierResponse readDataByIdentifierResponse
} with { variant "" };
type union ReadDataByIdentifierResponse
{
ReadDataByIdentifierResponse1 readDataByIdentifier1,
ReadDataByIdentifierResponse2 readDataByIdentifier2,
ReadDataByIdentifierResponse3 readDataByIdentifier3
}
with {variant "TAG (
readDataByIdentifier1, identifier = '8000'O;
readDataByIdentifier2, identifier = '8001'O;
readDataByIdentifier3, identifier = '8002'O
) "
}
// here are examples of WriteDataByIdentifier services
type record WriteDataByIdentifierRequest1
{
ServiceIdentifier identifier ('8000'O),
octetstring dataRecord
} with { variant "" };
type record WriteDataByIdentifierRequest2
{
ServiceIdentifier identifier ('8001'O),
octetstring dataRecord
} with { variant "" };
type record WriteDataByIdentifierRequest3
{
ServiceIdentifier identifier ('8002'O),
octetstring dataRecord
} with { variant "" };
type union WriteDataByIdentifierRequest
{
WriteDataByIdentifierRequest1 writeDataByIdentifier1,
WriteDataByIdentifierRequest2 writeDataByIdentifier2,
WriteDataByIdentifierRequest3 writeDataByIdentifier3
}
with {variant "TAG (
writeDataByIdentifier1, identifier = '8000'O;
writeDataByIdentifier2, identifier = '8001'O;
writeDataByIdentifier3, identifier = '8002'O
) "
}
type record WriteDataByIdentifierRequestSID
{
SID sid ('2E'O),
WriteDataByIdentifierRequest writeDataByIdentifierRequest
} with { variant "" };
type record WriteDataByIdentifierResponse1
{
ServiceIdentifier identifier ('8000'O)
} with { variant "" };
type record WriteDataByIdentifierResponse2
{
ServiceIdentifier identifier ('8001'O)
} with { variant "" };
type record WriteDataByIdentifierResponse3
{
ServiceIdentifier identifier ('8002'O)
} with { variant "" };
type record WriteDataByIdentifierResponseSID
{
SID sid ('6E'O),
WriteDataByIdentifierResponse writeDataByIdentifierResponse
} with { variant "" };
type union WriteDataByIdentifierResponse
{
WriteDataByIdentifierResponse1 writeDataByIdentifier1,
WriteDataByIdentifierResponse2 writeDataByIdentifier2,
WriteDataByIdentifierResponse3 writeDataByIdentifier3
}
with {variant "TAG (
writeDataByIdentifier1, identifier = '8000'O;
writeDataByIdentifier2, identifier = '8001'O;
writeDataByIdentifier3, identifier = '8002'O
) "
}
type enumerated e_RequestSID {
diagnosticSessionControl ('10'O),
ecuReset ('11'O),
clearDiagnosticInformation ('14'O),
readDTCInformation ('19'O),
readDataByIdentifier ('22'O),
readMemoryByAddress ('23'O),
readScalingDataByIdentifier ('24'O),
securityAccess ('27'O),
communicationControl ('28'O),
readDataByPeriodicIdentifier ('2A'O),
dynamicallyDefineDataIdentifier ('2C'O),
writeDataByIdentifier ('2E'O),
inputOutputControlByIdentifier ('2F'O),
routineControl ('31'O),
requestDownload ('34'O),
requestUpload ('35'O),
transferData ('36'O),
requestTransferExit ('37'O),
requestFileTransfer ('38'O),
writeMemoryByAddress ('3D'O),
testerPresent ('3E'O),
accessTimingParameter ('83'O),
securedDataTransmission ('84'O),
controlDTCSetting ('85'O),
responseOnEvent ('86'O),
linkControl ('87'O)}
with {variant "PADDING(octet)" };
type enumerated e_ResponseCode {
generalReject ('10'O),
serviceNotSupported ('11'O),
subfunctionNotSupported ('12'O),
incorrectMessageLengthOrInvalidFormat ('13'O),
responseTooLong ('14'O),
busyRepeatRequest ('21'O),
conditionsNotCorrect ('22'O),
isosarReserved35 ('23'O),
requestSequenceError ('24'O),
noResponseFromSubnetComponent ('25'O),
failurePreventsExecutionOfRequestedAction ('26'O),
requestOutOfRange ('31'O),
isosarReserved50 ('32'O),
securityAccessDenied ('33'O),
isosarReserved52 ('34'O),
invalidKey ('35'O),
exceededNumberOfAttempts ('36'O),
requiredTimeDelayNotExpired ('37'O),
uploadDownloadNotAccepted ('70'O),
transferDataSuspended ('71'O),
generalProgrammingFailure ('72'O),
wrongBlockSequenceCounter ('73'O),
requestCorrectlyReceivedResponsePending ('78'O),
subfunctionNotSupportedInActiveSession ('7E'O),
serviceNotSupportedInActiveSession ('7F'O),
rpmTooHigh ('81'O),
rpmTooLow ('82'O),
engineIsRunning ('83'O),
engineIsNotRunning ('84'O),
engineRunTimeTooLow ('85'O),
temperatureTooHigh ('86'O),
temperatureTooLow ('87'O),
vehicleSpeedTooHigh ('88'O),
vehicleSpeedTooLow ('89'O),
throttle_PedalTooHigh ('8A'O),
throttle_PedalTooLow ('8B'O),
transmissionRangeNotInNeutral ('8C'O),
transmissionRangeNotInGear ('8D'O),
brakeSwitchesNotClosed ('8F'O),
shifterLeverNotInPark ('90'O),
torqueConverterClutchLocked ('91'O),
voltageTooHigh ('92'O),
voltageTooLow ('93'O),
vehicleManufacturerSpecificConditionsNotCorrectF0 ('F0'O),
vehicleManufacturerSpecificConditionsNotCorrectF1 ('F1'O),
vehicleManufacturerSpecificConditionsNotCorrectF2 ('F2'O),
vehicleManufacturerSpecificConditionsNotCorrectF3 ('F3'O),
vehicleManufacturerSpecificConditionsNotCorrectF4 ('F4'O),
vehicleManufacturerSpecificConditionsNotCorrectF5 ('F5'O),
vehicleManufacturerSpecificConditionsNotCorrectF6 ('F6'O),
vehicleManufacturerSpecificConditionsNotCorrectF7 ('F7'O),
vehicleManufacturerSpecificConditionsNotCorrectF8 ('F8'O),
vehicleManufacturerSpecificConditionsNotCorrectF9 ('F9'O),
vehicleManufacturerSpecificConditionsNotCorrectFA ('FA'O),
vehicleManufacturerSpecificConditionsNotCorrectFB ('FB'O),
vehicleManufacturerSpecificConditionsNotCorrectFC ('FC'O),
vehicleManufacturerSpecificConditionsNotCorrectFD ('FD'O),
vehicleManufacturerSpecificConditionsNotCorrectFE ('FE'O)}
with {variant "PADDING(octet)" };
type record NegativeResponseCodeSID
{
SID sid ('7F'O),
e_RequestSID requestSID,
e_ResponseCode responseCode
} with { variant "FIELDORDER(msb)" };
type union TopLevelMessage_UDS_requests
{
DiagnosticSessionControlRequestSID diagnosticSessionControlRequestSID,
ECUResetRequestSID ecuResetRequestSID,
SecurityAccessRequestSID securityAccessRequestSID,
CommunicationControlRequestSID communicationControlRequestSID,
TesterPresentRequestSID testerPresentRequestSID,
ReadDataByIdentifierRequestSID readDataByIdentifierRequestSID,
WriteDataByIdentifierRequestSID writeDataByIdentifierRequestSID
}
with {variant "TAG (
diagnosticSessionControlRequestSID, sid = '10'O;
ecuResetRequestSID, sid = '11'O;
securityAccessRequestSID, sid = '27'O;
communicationControlRequestSID, sid = '28'O;
testerPresentRequestSID, sid = '3E'O;
readDataByIdentifierRequestSID, sid = '22'O;
writeDataByIdentifierRequestSID, sid = '2E'O
)"
}
type union TopLevelMessage_UDS_responses
{
DiagnosticSessionControlResponseSID diagnosticSessionControlResponseSID,
ECUResetResponseSID ecuResetResponseSID,
SecurityAccessResponseSID securityAccessResponseSID,
CommunicationControlResponseSID communicationControlResponseSID,
TesterPresentResponseSID testerPresentResponseSID,
ReadDataByIdentifierResponseSID readDataByIdentifierResponseSID,
WriteDataByIdentifierResponseSID writeDataByIdentifierResponseSID,
NegativeResponseCodeSID negativeResponseCodeSID
}
with {variant "TAG (
diagnosticSessionControlResponseSID, sid = '50'O;
ecuResetResponseSID, sid = '51'O;
securityAccessResponseSID, sid = '67'O;
communicationControlResponseSID, sid = '68'O;
testerPresentResponseSID, sid = '7E'O;
readDataByIdentifierResponseSID, sid = '62'O;
writeDataByIdentifierResponseSID, sid = '6E'O;
negativeResponseCodeSID, sid = '7F'O
)"
}
} with { encode "RAW" }