ASAP2_VERSION 1 61 /begin PROJECT ASAP2_Example "" /begin HEADER "ASAP2 Example File" VERSION "V1.61" PROJECT_NO MCD_P12_08 /end HEADER /begin MODULE Example "" /begin A2ML block "IF_DATA" taggedunion if_data { /* ============================================================================================== */ /* */ /* ASAM XCP AML */ /* */ /* ============================================================================================== */ "XCP" struct { taggedstruct { block "PROTOCOL_LAYER" struct { uint; uint; uint; uint; uint; uint; uint; uint; uchar; uint; enum { "BYTE_ORDER_MSB_LAST" = 0, "BYTE_ORDER_MSB_FIRST" = 1 }; enum { "ADDRESS_GRANULARITY_BYTE" = 1, "ADDRESS_GRANULARITY_WORD" = 2, "ADDRESS_GRANULARITY_DWORD" = 4 }; taggedstruct { ("OPTIONAL_CMD" enum { "GET_COMM_MODE_INFO" = 251, "GET_ID" = 250, "SET_REQUEST" = 249, "GET_SEED" = 248, "UNLOCK" = 247, "SET_MTA" = 246, "UPLOAD" = 245, "SHORT_UPLOAD" = 244, "BUILD_CHECKSUM" = 243, "TRANSPORT_LAYER_CMD" = 242, "USER_CMD" = 241, "DOWNLOAD" = 240, "DOWNLOAD_NEXT" = 239, "DOWNLOAD_MAX" = 238, "SHORT_DOWNLOAD" = 237, "MODIFY_BITS" = 236, "SET_CAL_PAGE" = 235, "GET_CAL_PAGE" = 234, "GET_PAG_PROCESSOR_INFO" = 233, "GET_SEGMENT_INFO" = 232, "GET_PAGE_INFO" = 231, "SET_SEGMENT_MODE" = 230, "GET_SEGMENT_MODE" = 229, "COPY_CAL_PAGE" = 228, "CLEAR_DAQ_LIST" = 227, "SET_DAQ_PTR" = 226, "WRITE_DAQ" = 225, "SET_DAQ_LIST_MODE" = 224, "GET_DAQ_LIST_MODE" = 223, "START_STOP_DAQ_LIST" = 222, "START_STOP_SYNCH" = 221, "GET_DAQ_CLOCK" = 220, "READ_DAQ" = 219, "GET_DAQ_PROCESSOR_INFO" = 218, "GET_DAQ_RESOLUTION_INFO" = 217, "GET_DAQ_LIST_INFO" = 216, "GET_DAQ_EVENT_INFO" = 215, "FREE_DAQ" = 214, "ALLOC_DAQ" = 213, "ALLOC_ODT" = 212, "ALLOC_ODT_ENTRY" = 211, "PROGRAM_START" = 210, "PROGRAM_CLEAR" = 209, "PROGRAM" = 208, "PROGRAM_RESET" = 207, "GET_PGM_PROCESSOR_INFO" = 206, "GET_SECTOR_INFO" = 205, "PROGRAM_PREPARE" = 204, "PROGRAM_FORMAT" = 203, "PROGRAM_NEXT" = 202, "PROGRAM_MAX" = 201, "PROGRAM_VERIFY" = 200 })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; }; }; block "SEGMENT" struct { uchar; uchar; uchar; uchar; uchar; taggedstruct { block "CHECKSUM" struct { enum { "XCP_ADD_11" = 1, "XCP_ADD_12" = 2, "XCP_ADD_14" = 3, "XCP_ADD_22" = 4, "XCP_ADD_24" = 5, "XCP_ADD_44" = 6, "XCP_CRC_16" = 7, "XCP_CRC_16_CITT" = 8, "XCP_CRC_32" = 9, "XCP_USER_DEFINED" = 255 }; taggedstruct { "MAX_BLOCK_SIZE" ulong; "EXTERNAL_FUNCTION" char[256]; }; }; (block "PAGE" struct { uchar; enum { "ECU_ACCESS_NOT_ALLOWED" = 0, "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, "ECU_ACCESS_WITH_XCP_ONLY" = 2, "ECU_ACCESS_DONT_CARE" = 3 }; enum { "XCP_READ_ACCESS_NOT_ALLOWED" = 0, "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, "XCP_READ_ACCESS_DONT_CARE" = 3 }; enum { "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, "XCP_WRITE_ACCESS_DONT_CARE" = 3 }; taggedstruct { "INIT_SEGMENT" uchar; }; })*; (block "ADDRESS_MAPPING" struct { ulong; ulong; ulong; })*; "PGM_VERIFY" ulong; }; }; block "DAQ" struct { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; uint; uchar; enum { "OPTIMISATION_TYPE_DEFAULT" = 0, "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 }; enum { "ADDRESS_EXTENSION_FREE" = 0, "ADDRESS_EXTENSION_ODT" = 1, "ADDRESS_EXTENSION_DAQ" = 3 }; enum { "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 }; enum { "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 }; uchar; enum { "NO_OVERLOAD_INDICATION" = 0, "OVERLOAD_INDICATION_PID" = 1, "OVERLOAD_INDICATION_EVENT" = 2 }; taggedstruct { "PRESCALER_SUPPORTED" ; "RESUME_SUPPORTED" ; block "STIM" struct { enum { "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 }; uchar; taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; enum { "NO_TIME_STAMP" = 0, "SIZE_BYTE" = 1, "SIZE_WORD" = 2, "SIZE_DWORD" = 4 }; enum { "UNIT_1NS" = 0, "UNIT_10NS" = 1, "UNIT_100NS" = 2, "UNIT_1US" = 3, "UNIT_10US" = 4, "UNIT_100US" = 5, "UNIT_1MS" = 6, "UNIT_10MS" = 7, "UNIT_100MS" = 8, "UNIT_1S" = 9 }; taggedstruct { "TIMESTAMP_FIXED" ; }; }; "PID_OFF_SUPPORTED" ; (block "DAQ_LIST" struct { uint; taggedstruct { "DAQ_LIST_TYPE" enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; "MAX_ODT" uchar; "MAX_ODT_ENTRIES" uchar; "FIRST_PID" uchar; "EVENT_FIXED" uint; block "PREDEFINED" taggedstruct { (block "ODT" struct { uchar; taggedstruct { ("ODT_ENTRY" struct { uchar; ulong; uchar; uchar; uchar; })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; char[9]; uint; enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; uchar; uchar; uchar; })*; }; }; block "PAG" struct { uchar; taggedstruct { "FREEZE_SUPPORTED" ; }; }; block "PGM" struct { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; uchar; taggedstruct { (block "SECTOR" struct { char[101]; uchar; ulong; ulong; uchar; uchar; uchar; })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; }; }; block "DAQ_EVENT" taggedunion { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; block "XCP_ON_CAN" struct { uint; taggedstruct { "CAN_ID_BROADCAST" ulong; "CAN_ID_MASTER" ulong; "CAN_ID_SLAVE" ulong; "BAUDRATE" ulong; "SAMPLE_POINT" uchar; "SAMPLE_RATE" enum { "SINGLE" = 1, "TRIPLE" = 3 }; "BTL_CYCLES" uchar; "SJW" uchar; "SYNC_EDGE" enum { "SINGLE" = 1, "DUAL" = 2 }; "MAX_DLC_REQUIRED" ; (block "DAQ_LIST_CAN_ID" struct { uint; taggedstruct { "VARIABLE" ; "FIXED" ulong; }; })*; block "PROTOCOL_LAYER" struct { uint; uint; uint; uint; uint; uint; uint; uint; uchar; uint; enum { "BYTE_ORDER_MSB_LAST" = 0, "BYTE_ORDER_MSB_FIRST" = 1 }; enum { "ADDRESS_GRANULARITY_BYTE" = 1, "ADDRESS_GRANULARITY_WORD" = 2, "ADDRESS_GRANULARITY_DWORD" = 4 }; taggedstruct { ("OPTIONAL_CMD" enum { "GET_COMM_MODE_INFO" = 251, "GET_ID" = 250, "SET_REQUEST" = 249, "GET_SEED" = 248, "UNLOCK" = 247, "SET_MTA" = 246, "UPLOAD" = 245, "SHORT_UPLOAD" = 244, "BUILD_CHECKSUM" = 243, "TRANSPORT_LAYER_CMD" = 242, "USER_CMD" = 241, "DOWNLOAD" = 240, "DOWNLOAD_NEXT" = 239, "DOWNLOAD_MAX" = 238, "SHORT_DOWNLOAD" = 237, "MODIFY_BITS" = 236, "SET_CAL_PAGE" = 235, "GET_CAL_PAGE" = 234, "GET_PAG_PROCESSOR_INFO" = 233, "GET_SEGMENT_INFO" = 232, "GET_PAGE_INFO" = 231, "SET_SEGMENT_MODE" = 230, "GET_SEGMENT_MODE" = 229, "COPY_CAL_PAGE" = 228, "CLEAR_DAQ_LIST" = 227, "SET_DAQ_PTR" = 226, "WRITE_DAQ" = 225, "SET_DAQ_LIST_MODE" = 224, "GET_DAQ_LIST_MODE" = 223, "START_STOP_DAQ_LIST" = 222, "START_STOP_SYNCH" = 221, "GET_DAQ_CLOCK" = 220, "READ_DAQ" = 219, "GET_DAQ_PROCESSOR_INFO" = 218, "GET_DAQ_RESOLUTION_INFO" = 217, "GET_DAQ_LIST_INFO" = 216, "GET_DAQ_EVENT_INFO" = 215, "FREE_DAQ" = 214, "ALLOC_DAQ" = 213, "ALLOC_ODT" = 212, "ALLOC_ODT_ENTRY" = 211, "PROGRAM_START" = 210, "PROGRAM_CLEAR" = 209, "PROGRAM" = 208, "PROGRAM_RESET" = 207, "GET_PGM_PROCESSOR_INFO" = 206, "GET_SECTOR_INFO" = 205, "PROGRAM_PREPARE" = 204, "PROGRAM_FORMAT" = 203, "PROGRAM_NEXT" = 202, "PROGRAM_MAX" = 201, "PROGRAM_VERIFY" = 200 })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; }; }; block "SEGMENT" struct { uchar; uchar; uchar; uchar; uchar; taggedstruct { block "CHECKSUM" struct { enum { "XCP_ADD_11" = 1, "XCP_ADD_12" = 2, "XCP_ADD_14" = 3, "XCP_ADD_22" = 4, "XCP_ADD_24" = 5, "XCP_ADD_44" = 6, "XCP_CRC_16" = 7, "XCP_CRC_16_CITT" = 8, "XCP_CRC_32" = 9, "XCP_USER_DEFINED" = 255 }; taggedstruct { "MAX_BLOCK_SIZE" ulong; "EXTERNAL_FUNCTION" char[256]; }; }; (block "PAGE" struct { uchar; enum { "ECU_ACCESS_NOT_ALLOWED" = 0, "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, "ECU_ACCESS_WITH_XCP_ONLY" = 2, "ECU_ACCESS_DONT_CARE" = 3 }; enum { "XCP_READ_ACCESS_NOT_ALLOWED" = 0, "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, "XCP_READ_ACCESS_DONT_CARE" = 3 }; enum { "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, "XCP_WRITE_ACCESS_DONT_CARE" = 3 }; taggedstruct { "INIT_SEGMENT" uchar; }; })*; (block "ADDRESS_MAPPING" struct { ulong; ulong; ulong; })*; "PGM_VERIFY" ulong; }; }; block "DAQ" struct { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; uint; uchar; enum { "OPTIMISATION_TYPE_DEFAULT" = 0, "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 }; enum { "ADDRESS_EXTENSION_FREE" = 0, "ADDRESS_EXTENSION_ODT" = 1, "ADDRESS_EXTENSION_DAQ" = 3 }; enum { "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 }; enum { "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 }; uchar; enum { "NO_OVERLOAD_INDICATION" = 0, "OVERLOAD_INDICATION_PID" = 1, "OVERLOAD_INDICATION_EVENT" = 2 }; taggedstruct { "PRESCALER_SUPPORTED" ; "RESUME_SUPPORTED" ; block "STIM" struct { enum { "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 }; uchar; taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; enum { "NO_TIME_STAMP" = 0, "SIZE_BYTE" = 1, "SIZE_WORD" = 2, "SIZE_DWORD" = 4 }; enum { "UNIT_1NS" = 0, "UNIT_10NS" = 1, "UNIT_100NS" = 2, "UNIT_1US" = 3, "UNIT_10US" = 4, "UNIT_100US" = 5, "UNIT_1MS" = 6, "UNIT_10MS" = 7, "UNIT_100MS" = 8, "UNIT_1S" = 9 }; taggedstruct { "TIMESTAMP_FIXED" ; }; }; "PID_OFF_SUPPORTED" ; (block "DAQ_LIST" struct { uint; taggedstruct { "DAQ_LIST_TYPE" enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; "MAX_ODT" uchar; "MAX_ODT_ENTRIES" uchar; "FIRST_PID" uchar; "EVENT_FIXED" uint; block "PREDEFINED" taggedstruct { (block "ODT" struct { uchar; taggedstruct { ("ODT_ENTRY" struct { uchar; ulong; uchar; uchar; uchar; })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; char[9]; uint; enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; uchar; uchar; uchar; })*; }; }; block "PAG" struct { uchar; taggedstruct { "FREEZE_SUPPORTED" ; }; }; block "PGM" struct { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; uchar; taggedstruct { (block "SECTOR" struct { char[101]; uchar; ulong; ulong; uchar; uchar; uchar; })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; }; }; block "DAQ_EVENT" taggedunion { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; }; }; block "XCP_ON_SxI" struct { uint; ulong; taggedstruct { "ASYNCH_FULL_DUPLEX_MODE" struct { enum { "PARITY_NONE" = 0, "PARITY_ODD" = 1, "PARITY_EVEN" = 2 }; enum { "ONE_STOP_BIT" = 1, "TWO_STOP_BITS" = 2 }; }; "SYNCH_FULL_DUPLEX_MODE_BYTE" ; "SYNCH_FULL_DUPLEX_MODE_WORD" ; "SYNCH_FULL_DUPLEX_MODE_DWORD" ; "SYNCH_MASTER_SLAVE_MODE_BYTE" ; "SYNCH_MASTER_SLAVE_MODE_WORD" ; "SYNCH_MASTER_SLAVE_MODE_DWORD" ; }; enum { "HEADER_LEN_BYTE" = 0, "HEADER_LEN_CTR_BYTE" = 1, "HEADER_LEN_WORD" = 2, "HEADER_LEN_CTR_WORD" = 3 }; enum { "NO_CHECKSUM" = 0, "CHECKSUM_BYTE" = 1, "CHECKSUM_WORD" = 2 }; taggedstruct { block "PROTOCOL_LAYER" struct { uint; uint; uint; uint; uint; uint; uint; uint; uchar; uint; enum { "BYTE_ORDER_MSB_LAST" = 0, "BYTE_ORDER_MSB_FIRST" = 1 }; enum { "ADDRESS_GRANULARITY_BYTE" = 1, "ADDRESS_GRANULARITY_WORD" = 2, "ADDRESS_GRANULARITY_DWORD" = 4 }; taggedstruct { ("OPTIONAL_CMD" enum { "GET_COMM_MODE_INFO" = 251, "GET_ID" = 250, "SET_REQUEST" = 249, "GET_SEED" = 248, "UNLOCK" = 247, "SET_MTA" = 246, "UPLOAD" = 245, "SHORT_UPLOAD" = 244, "BUILD_CHECKSUM" = 243, "TRANSPORT_LAYER_CMD" = 242, "USER_CMD" = 241, "DOWNLOAD" = 240, "DOWNLOAD_NEXT" = 239, "DOWNLOAD_MAX" = 238, "SHORT_DOWNLOAD" = 237, "MODIFY_BITS" = 236, "SET_CAL_PAGE" = 235, "GET_CAL_PAGE" = 234, "GET_PAG_PROCESSOR_INFO" = 233, "GET_SEGMENT_INFO" = 232, "GET_PAGE_INFO" = 231, "SET_SEGMENT_MODE" = 230, "GET_SEGMENT_MODE" = 229, "COPY_CAL_PAGE" = 228, "CLEAR_DAQ_LIST" = 227, "SET_DAQ_PTR" = 226, "WRITE_DAQ" = 225, "SET_DAQ_LIST_MODE" = 224, "GET_DAQ_LIST_MODE" = 223, "START_STOP_DAQ_LIST" = 222, "START_STOP_SYNCH" = 221, "GET_DAQ_CLOCK" = 220, "READ_DAQ" = 219, "GET_DAQ_PROCESSOR_INFO" = 218, "GET_DAQ_RESOLUTION_INFO" = 217, "GET_DAQ_LIST_INFO" = 216, "GET_DAQ_EVENT_INFO" = 215, "FREE_DAQ" = 214, "ALLOC_DAQ" = 213, "ALLOC_ODT" = 212, "ALLOC_ODT_ENTRY" = 211, "PROGRAM_START" = 210, "PROGRAM_CLEAR" = 209, "PROGRAM" = 208, "PROGRAM_RESET" = 207, "GET_PGM_PROCESSOR_INFO" = 206, "GET_SECTOR_INFO" = 205, "PROGRAM_PREPARE" = 204, "PROGRAM_FORMAT" = 203, "PROGRAM_NEXT" = 202, "PROGRAM_MAX" = 201, "PROGRAM_VERIFY" = 200 })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; }; }; block "SEGMENT" struct { uchar; uchar; uchar; uchar; uchar; taggedstruct { block "CHECKSUM" struct { enum { "XCP_ADD_11" = 1, "XCP_ADD_12" = 2, "XCP_ADD_14" = 3, "XCP_ADD_22" = 4, "XCP_ADD_24" = 5, "XCP_ADD_44" = 6, "XCP_CRC_16" = 7, "XCP_CRC_16_CITT" = 8, "XCP_CRC_32" = 9, "XCP_USER_DEFINED" = 255 }; taggedstruct { "MAX_BLOCK_SIZE" ulong; "EXTERNAL_FUNCTION" char[256]; }; }; (block "PAGE" struct { uchar; enum { "ECU_ACCESS_NOT_ALLOWED" = 0, "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, "ECU_ACCESS_WITH_XCP_ONLY" = 2, "ECU_ACCESS_DONT_CARE" = 3 }; enum { "XCP_READ_ACCESS_NOT_ALLOWED" = 0, "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, "XCP_READ_ACCESS_DONT_CARE" = 3 }; enum { "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, "XCP_WRITE_ACCESS_DONT_CARE" = 3 }; taggedstruct { "INIT_SEGMENT" uchar; }; })*; (block "ADDRESS_MAPPING" struct { ulong; ulong; ulong; })*; "PGM_VERIFY" ulong; }; }; block "DAQ" struct { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; uint; uchar; enum { "OPTIMISATION_TYPE_DEFAULT" = 0, "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 }; enum { "ADDRESS_EXTENSION_FREE" = 0, "ADDRESS_EXTENSION_ODT" = 1, "ADDRESS_EXTENSION_DAQ" = 3 }; enum { "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 }; enum { "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 }; uchar; enum { "NO_OVERLOAD_INDICATION" = 0, "OVERLOAD_INDICATION_PID" = 1, "OVERLOAD_INDICATION_EVENT" = 2 }; taggedstruct { "PRESCALER_SUPPORTED" ; "RESUME_SUPPORTED" ; block "STIM" struct { enum { "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 }; uchar; taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; enum { "NO_TIME_STAMP" = 0, "SIZE_BYTE" = 1, "SIZE_WORD" = 2, "SIZE_DWORD" = 4 }; enum { "UNIT_1NS" = 0, "UNIT_10NS" = 1, "UNIT_100NS" = 2, "UNIT_1US" = 3, "UNIT_10US" = 4, "UNIT_100US" = 5, "UNIT_1MS" = 6, "UNIT_10MS" = 7, "UNIT_100MS" = 8, "UNIT_1S" = 9 }; taggedstruct { "TIMESTAMP_FIXED" ; }; }; "PID_OFF_SUPPORTED" ; (block "DAQ_LIST" struct { uint; taggedstruct { "DAQ_LIST_TYPE" enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; "MAX_ODT" uchar; "MAX_ODT_ENTRIES" uchar; "FIRST_PID" uchar; "EVENT_FIXED" uint; block "PREDEFINED" taggedstruct { (block "ODT" struct { uchar; taggedstruct { ("ODT_ENTRY" struct { uchar; ulong; uchar; uchar; uchar; })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; char[9]; uint; enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; uchar; uchar; uchar; })*; }; }; block "PAG" struct { uchar; taggedstruct { "FREEZE_SUPPORTED" ; }; }; block "PGM" struct { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; uchar; taggedstruct { (block "SECTOR" struct { char[101]; uchar; ulong; ulong; uchar; uchar; uchar; })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; }; }; block "DAQ_EVENT" taggedunion { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; }; }; block "XCP_ON_TCP_IP" struct { uint; uint; taggedunion { "HOST_NAME" char[256]; "ADDRESS" char[15]; }; taggedstruct { block "PROTOCOL_LAYER" struct { uint; uint; uint; uint; uint; uint; uint; uint; uchar; uint; enum { "BYTE_ORDER_MSB_LAST" = 0, "BYTE_ORDER_MSB_FIRST" = 1 }; enum { "ADDRESS_GRANULARITY_BYTE" = 1, "ADDRESS_GRANULARITY_WORD" = 2, "ADDRESS_GRANULARITY_DWORD" = 4 }; taggedstruct { ("OPTIONAL_CMD" enum { "GET_COMM_MODE_INFO" = 251, "GET_ID" = 250, "SET_REQUEST" = 249, "GET_SEED" = 248, "UNLOCK" = 247, "SET_MTA" = 246, "UPLOAD" = 245, "SHORT_UPLOAD" = 244, "BUILD_CHECKSUM" = 243, "TRANSPORT_LAYER_CMD" = 242, "USER_CMD" = 241, "DOWNLOAD" = 240, "DOWNLOAD_NEXT" = 239, "DOWNLOAD_MAX" = 238, "SHORT_DOWNLOAD" = 237, "MODIFY_BITS" = 236, "SET_CAL_PAGE" = 235, "GET_CAL_PAGE" = 234, "GET_PAG_PROCESSOR_INFO" = 233, "GET_SEGMENT_INFO" = 232, "GET_PAGE_INFO" = 231, "SET_SEGMENT_MODE" = 230, "GET_SEGMENT_MODE" = 229, "COPY_CAL_PAGE" = 228, "CLEAR_DAQ_LIST" = 227, "SET_DAQ_PTR" = 226, "WRITE_DAQ" = 225, "SET_DAQ_LIST_MODE" = 224, "GET_DAQ_LIST_MODE" = 223, "START_STOP_DAQ_LIST" = 222, "START_STOP_SYNCH" = 221, "GET_DAQ_CLOCK" = 220, "READ_DAQ" = 219, "GET_DAQ_PROCESSOR_INFO" = 218, "GET_DAQ_RESOLUTION_INFO" = 217, "GET_DAQ_LIST_INFO" = 216, "GET_DAQ_EVENT_INFO" = 215, "FREE_DAQ" = 214, "ALLOC_DAQ" = 213, "ALLOC_ODT" = 212, "ALLOC_ODT_ENTRY" = 211, "PROGRAM_START" = 210, "PROGRAM_CLEAR" = 209, "PROGRAM" = 208, "PROGRAM_RESET" = 207, "GET_PGM_PROCESSOR_INFO" = 206, "GET_SECTOR_INFO" = 205, "PROGRAM_PREPARE" = 204, "PROGRAM_FORMAT" = 203, "PROGRAM_NEXT" = 202, "PROGRAM_MAX" = 201, "PROGRAM_VERIFY" = 200 })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; }; }; block "SEGMENT" struct { uchar; uchar; uchar; uchar; uchar; taggedstruct { block "CHECKSUM" struct { enum { "XCP_ADD_11" = 1, "XCP_ADD_12" = 2, "XCP_ADD_14" = 3, "XCP_ADD_22" = 4, "XCP_ADD_24" = 5, "XCP_ADD_44" = 6, "XCP_CRC_16" = 7, "XCP_CRC_16_CITT" = 8, "XCP_CRC_32" = 9, "XCP_USER_DEFINED" = 255 }; taggedstruct { "MAX_BLOCK_SIZE" ulong; "EXTERNAL_FUNCTION" char[256]; }; }; (block "PAGE" struct { uchar; enum { "ECU_ACCESS_NOT_ALLOWED" = 0, "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, "ECU_ACCESS_WITH_XCP_ONLY" = 2, "ECU_ACCESS_DONT_CARE" = 3 }; enum { "XCP_READ_ACCESS_NOT_ALLOWED" = 0, "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, "XCP_READ_ACCESS_DONT_CARE" = 3 }; enum { "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, "XCP_WRITE_ACCESS_DONT_CARE" = 3 }; taggedstruct { "INIT_SEGMENT" uchar; }; })*; (block "ADDRESS_MAPPING" struct { ulong; ulong; ulong; })*; "PGM_VERIFY" ulong; }; }; block "DAQ" struct { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; uint; uchar; enum { "OPTIMISATION_TYPE_DEFAULT" = 0, "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 }; enum { "ADDRESS_EXTENSION_FREE" = 0, "ADDRESS_EXTENSION_ODT" = 1, "ADDRESS_EXTENSION_DAQ" = 3 }; enum { "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 }; enum { "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 }; uchar; enum { "NO_OVERLOAD_INDICATION" = 0, "OVERLOAD_INDICATION_PID" = 1, "OVERLOAD_INDICATION_EVENT" = 2 }; taggedstruct { "PRESCALER_SUPPORTED" ; "RESUME_SUPPORTED" ; block "STIM" struct { enum { "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 }; uchar; taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; enum { "NO_TIME_STAMP" = 0, "SIZE_BYTE" = 1, "SIZE_WORD" = 2, "SIZE_DWORD" = 4 }; enum { "UNIT_1NS" = 0, "UNIT_10NS" = 1, "UNIT_100NS" = 2, "UNIT_1US" = 3, "UNIT_10US" = 4, "UNIT_100US" = 5, "UNIT_1MS" = 6, "UNIT_10MS" = 7, "UNIT_100MS" = 8, "UNIT_1S" = 9 }; taggedstruct { "TIMESTAMP_FIXED" ; }; }; "PID_OFF_SUPPORTED" ; (block "DAQ_LIST" struct { uint; taggedstruct { "DAQ_LIST_TYPE" enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; "MAX_ODT" uchar; "MAX_ODT_ENTRIES" uchar; "FIRST_PID" uchar; "EVENT_FIXED" uint; block "PREDEFINED" taggedstruct { (block "ODT" struct { uchar; taggedstruct { ("ODT_ENTRY" struct { uchar; ulong; uchar; uchar; uchar; })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; char[9]; uint; enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; uchar; uchar; uchar; })*; }; }; block "PAG" struct { uchar; taggedstruct { "FREEZE_SUPPORTED" ; }; }; block "PGM" struct { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; uchar; taggedstruct { (block "SECTOR" struct { char[101]; uchar; ulong; ulong; uchar; uchar; uchar; })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; }; }; block "DAQ_EVENT" taggedunion { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; }; }; block "XCP_ON_UDP_IP" struct { uint; uint; taggedunion { "HOST_NAME" char[256]; "ADDRESS" char[15]; }; taggedstruct { block "PROTOCOL_LAYER" struct { uint; uint; uint; uint; uint; uint; uint; uint; uchar; uint; enum { "BYTE_ORDER_MSB_LAST" = 0, "BYTE_ORDER_MSB_FIRST" = 1 }; enum { "ADDRESS_GRANULARITY_BYTE" = 1, "ADDRESS_GRANULARITY_WORD" = 2, "ADDRESS_GRANULARITY_DWORD" = 4 }; taggedstruct { ("OPTIONAL_CMD" enum { "GET_COMM_MODE_INFO" = 251, "GET_ID" = 250, "SET_REQUEST" = 249, "GET_SEED" = 248, "UNLOCK" = 247, "SET_MTA" = 246, "UPLOAD" = 245, "SHORT_UPLOAD" = 244, "BUILD_CHECKSUM" = 243, "TRANSPORT_LAYER_CMD" = 242, "USER_CMD" = 241, "DOWNLOAD" = 240, "DOWNLOAD_NEXT" = 239, "DOWNLOAD_MAX" = 238, "SHORT_DOWNLOAD" = 237, "MODIFY_BITS" = 236, "SET_CAL_PAGE" = 235, "GET_CAL_PAGE" = 234, "GET_PAG_PROCESSOR_INFO" = 233, "GET_SEGMENT_INFO" = 232, "GET_PAGE_INFO" = 231, "SET_SEGMENT_MODE" = 230, "GET_SEGMENT_MODE" = 229, "COPY_CAL_PAGE" = 228, "CLEAR_DAQ_LIST" = 227, "SET_DAQ_PTR" = 226, "WRITE_DAQ" = 225, "SET_DAQ_LIST_MODE" = 224, "GET_DAQ_LIST_MODE" = 223, "START_STOP_DAQ_LIST" = 222, "START_STOP_SYNCH" = 221, "GET_DAQ_CLOCK" = 220, "READ_DAQ" = 219, "GET_DAQ_PROCESSOR_INFO" = 218, "GET_DAQ_RESOLUTION_INFO" = 217, "GET_DAQ_LIST_INFO" = 216, "GET_DAQ_EVENT_INFO" = 215, "FREE_DAQ" = 214, "ALLOC_DAQ" = 213, "ALLOC_ODT" = 212, "ALLOC_ODT_ENTRY" = 211, "PROGRAM_START" = 210, "PROGRAM_CLEAR" = 209, "PROGRAM" = 208, "PROGRAM_RESET" = 207, "GET_PGM_PROCESSOR_INFO" = 206, "GET_SECTOR_INFO" = 205, "PROGRAM_PREPARE" = 204, "PROGRAM_FORMAT" = 203, "PROGRAM_NEXT" = 202, "PROGRAM_MAX" = 201, "PROGRAM_VERIFY" = 200 })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; }; }; block "SEGMENT" struct { uchar; uchar; uchar; uchar; uchar; taggedstruct { block "CHECKSUM" struct { enum { "XCP_ADD_11" = 1, "XCP_ADD_12" = 2, "XCP_ADD_14" = 3, "XCP_ADD_22" = 4, "XCP_ADD_24" = 5, "XCP_ADD_44" = 6, "XCP_CRC_16" = 7, "XCP_CRC_16_CITT" = 8, "XCP_CRC_32" = 9, "XCP_USER_DEFINED" = 255 }; taggedstruct { "MAX_BLOCK_SIZE" ulong; "EXTERNAL_FUNCTION" char[256]; }; }; (block "PAGE" struct { uchar; enum { "ECU_ACCESS_NOT_ALLOWED" = 0, "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, "ECU_ACCESS_WITH_XCP_ONLY" = 2, "ECU_ACCESS_DONT_CARE" = 3 }; enum { "XCP_READ_ACCESS_NOT_ALLOWED" = 0, "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, "XCP_READ_ACCESS_DONT_CARE" = 3 }; enum { "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, "XCP_WRITE_ACCESS_DONT_CARE" = 3 }; taggedstruct { "INIT_SEGMENT" uchar; }; })*; (block "ADDRESS_MAPPING" struct { ulong; ulong; ulong; })*; "PGM_VERIFY" ulong; }; }; block "DAQ" struct { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; uint; uchar; enum { "OPTIMISATION_TYPE_DEFAULT" = 0, "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 }; enum { "ADDRESS_EXTENSION_FREE" = 0, "ADDRESS_EXTENSION_ODT" = 1, "ADDRESS_EXTENSION_DAQ" = 3 }; enum { "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 }; enum { "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 }; uchar; enum { "NO_OVERLOAD_INDICATION" = 0, "OVERLOAD_INDICATION_PID" = 1, "OVERLOAD_INDICATION_EVENT" = 2 }; taggedstruct { "PRESCALER_SUPPORTED" ; "RESUME_SUPPORTED" ; block "STIM" struct { enum { "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 }; uchar; taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; enum { "NO_TIME_STAMP" = 0, "SIZE_BYTE" = 1, "SIZE_WORD" = 2, "SIZE_DWORD" = 4 }; enum { "UNIT_1NS" = 0, "UNIT_10NS" = 1, "UNIT_100NS" = 2, "UNIT_1US" = 3, "UNIT_10US" = 4, "UNIT_100US" = 5, "UNIT_1MS" = 6, "UNIT_10MS" = 7, "UNIT_100MS" = 8, "UNIT_1S" = 9 }; taggedstruct { "TIMESTAMP_FIXED" ; }; }; "PID_OFF_SUPPORTED" ; (block "DAQ_LIST" struct { uint; taggedstruct { "DAQ_LIST_TYPE" enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; "MAX_ODT" uchar; "MAX_ODT_ENTRIES" uchar; "FIRST_PID" uchar; "EVENT_FIXED" uint; block "PREDEFINED" taggedstruct { (block "ODT" struct { uchar; taggedstruct { ("ODT_ENTRY" struct { uchar; ulong; uchar; uchar; uchar; })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; char[9]; uint; enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; uchar; uchar; uchar; })*; }; }; block "PAG" struct { uchar; taggedstruct { "FREEZE_SUPPORTED" ; }; }; block "PGM" struct { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; uchar; taggedstruct { (block "SECTOR" struct { char[101]; uchar; ulong; ulong; uchar; uchar; uchar; })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; }; }; block "DAQ_EVENT" taggedunion { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; }; }; block "XCP_ON_USB" struct { uint; uint; uint; uchar; enum { "HEADER_LEN_BYTE" = 0, "HEADER_LEN_CTR_BYTE" = 1, "HEADER_LEN_FILL_BYTE" = 2, "HEADER_LEN_WORD" = 3, "HEADER_LEN_CTR_WORD" = 4, "HEADER_LEN_FILL_WORD" = 5 }; taggedunion { block "OUT_EP_CMD_STIM" struct { uchar; enum { "BULK_TRANSFER" = 2, "INTERRUPT_TRANSFER" = 3 }; uint; uchar; enum { "MESSAGE_PACKING_SINGLE" = 0, "MESSAGE_PACKING_MULTIPLE" = 1, "MESSAGE_PACKING_STREAMING" = 2 }; enum { "ALIGNMENT_8_BIT" = 0, "ALIGNMENT_16_BIT" = 1, "ALIGNMENT_32_BIT" = 2, "ALIGNMENT_64_BIT" = 3 }; taggedstruct { "RECOMMENDED_HOST_BUFSIZE" uint; }; }; }; taggedunion { block "IN_EP_RESERR_DAQ_EVSERV" struct { uchar; enum { "BULK_TRANSFER" = 2, "INTERRUPT_TRANSFER" = 3 }; uint; uchar; enum { "MESSAGE_PACKING_SINGLE" = 0, "MESSAGE_PACKING_MULTIPLE" = 1, "MESSAGE_PACKING_STREAMING" = 2 }; enum { "ALIGNMENT_8_BIT" = 0, "ALIGNMENT_16_BIT" = 1, "ALIGNMENT_32_BIT" = 2, "ALIGNMENT_64_BIT" = 3 }; taggedstruct { "RECOMMENDED_HOST_BUFSIZE" uint; }; }; }; taggedstruct { "ALTERNATE_SETTING_NO" uchar; "INTERFACE_STRING_DESCRIPTOR" char[101]; (block "OUT_EP_ONLY_STIM" struct { uchar; enum { "BULK_TRANSFER" = 2, "INTERRUPT_TRANSFER" = 3 }; uint; uchar; enum { "MESSAGE_PACKING_SINGLE" = 0, "MESSAGE_PACKING_MULTIPLE" = 1, "MESSAGE_PACKING_STREAMING" = 2 }; enum { "ALIGNMENT_8_BIT" = 0, "ALIGNMENT_16_BIT" = 1, "ALIGNMENT_32_BIT" = 2, "ALIGNMENT_64_BIT" = 3 }; taggedstruct { "RECOMMENDED_HOST_BUFSIZE" uint; }; })*; (block "IN_EP_ONLY_DAQ" struct { uchar; enum { "BULK_TRANSFER" = 2, "INTERRUPT_TRANSFER" = 3 }; uint; uchar; enum { "MESSAGE_PACKING_SINGLE" = 0, "MESSAGE_PACKING_MULTIPLE" = 1, "MESSAGE_PACKING_STREAMING" = 2 }; enum { "ALIGNMENT_8_BIT" = 0, "ALIGNMENT_16_BIT" = 1, "ALIGNMENT_32_BIT" = 2, "ALIGNMENT_64_BIT" = 3 }; taggedstruct { "RECOMMENDED_HOST_BUFSIZE" uint; }; })*; block "IN_EP_ONLY_EVSERV" struct { uchar; enum { "BULK_TRANSFER" = 2, "INTERRUPT_TRANSFER" = 3 }; uint; uchar; enum { "MESSAGE_PACKING_SINGLE" = 0, "MESSAGE_PACKING_MULTIPLE" = 1, "MESSAGE_PACKING_STREAMING" = 2 }; enum { "ALIGNMENT_8_BIT" = 0, "ALIGNMENT_16_BIT" = 1, "ALIGNMENT_32_BIT" = 2, "ALIGNMENT_64_BIT" = 3 }; taggedstruct { "RECOMMENDED_HOST_BUFSIZE" uint; }; }; (block "DAQ_LIST_USB_ENDPOINT" struct { uint; taggedstruct { "FIXED_IN" uchar; "FIXED_OUT" uchar; }; })*; block "PROTOCOL_LAYER" struct { uint; uint; uint; uint; uint; uint; uint; uint; uchar; uint; enum { "BYTE_ORDER_MSB_LAST" = 0, "BYTE_ORDER_MSB_FIRST" = 1 }; enum { "ADDRESS_GRANULARITY_BYTE" = 1, "ADDRESS_GRANULARITY_WORD" = 2, "ADDRESS_GRANULARITY_DWORD" = 4 }; taggedstruct { ("OPTIONAL_CMD" enum { "GET_COMM_MODE_INFO" = 251, "GET_ID" = 250, "SET_REQUEST" = 249, "GET_SEED" = 248, "UNLOCK" = 247, "SET_MTA" = 246, "UPLOAD" = 245, "SHORT_UPLOAD" = 244, "BUILD_CHECKSUM" = 243, "TRANSPORT_LAYER_CMD" = 242, "USER_CMD" = 241, "DOWNLOAD" = 240, "DOWNLOAD_NEXT" = 239, "DOWNLOAD_MAX" = 238, "SHORT_DOWNLOAD" = 237, "MODIFY_BITS" = 236, "SET_CAL_PAGE" = 235, "GET_CAL_PAGE" = 234, "GET_PAG_PROCESSOR_INFO" = 233, "GET_SEGMENT_INFO" = 232, "GET_PAGE_INFO" = 231, "SET_SEGMENT_MODE" = 230, "GET_SEGMENT_MODE" = 229, "COPY_CAL_PAGE" = 228, "CLEAR_DAQ_LIST" = 227, "SET_DAQ_PTR" = 226, "WRITE_DAQ" = 225, "SET_DAQ_LIST_MODE" = 224, "GET_DAQ_LIST_MODE" = 223, "START_STOP_DAQ_LIST" = 222, "START_STOP_SYNCH" = 221, "GET_DAQ_CLOCK" = 220, "READ_DAQ" = 219, "GET_DAQ_PROCESSOR_INFO" = 218, "GET_DAQ_RESOLUTION_INFO" = 217, "GET_DAQ_LIST_INFO" = 216, "GET_DAQ_EVENT_INFO" = 215, "FREE_DAQ" = 214, "ALLOC_DAQ" = 213, "ALLOC_ODT" = 212, "ALLOC_ODT_ENTRY" = 211, "PROGRAM_START" = 210, "PROGRAM_CLEAR" = 209, "PROGRAM" = 208, "PROGRAM_RESET" = 207, "GET_PGM_PROCESSOR_INFO" = 206, "GET_SECTOR_INFO" = 205, "PROGRAM_PREPARE" = 204, "PROGRAM_FORMAT" = 203, "PROGRAM_NEXT" = 202, "PROGRAM_MAX" = 201, "PROGRAM_VERIFY" = 200 })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; }; }; block "SEGMENT" struct { uchar; uchar; uchar; uchar; uchar; taggedstruct { block "CHECKSUM" struct { enum { "XCP_ADD_11" = 1, "XCP_ADD_12" = 2, "XCP_ADD_14" = 3, "XCP_ADD_22" = 4, "XCP_ADD_24" = 5, "XCP_ADD_44" = 6, "XCP_CRC_16" = 7, "XCP_CRC_16_CITT" = 8, "XCP_CRC_32" = 9, "XCP_USER_DEFINED" = 255 }; taggedstruct { "MAX_BLOCK_SIZE" ulong; "EXTERNAL_FUNCTION" char[256]; }; }; (block "PAGE" struct { uchar; enum { "ECU_ACCESS_NOT_ALLOWED" = 0, "ECU_ACCESS_WITHOUT_XCP_ONLY" = 1, "ECU_ACCESS_WITH_XCP_ONLY" = 2, "ECU_ACCESS_DONT_CARE" = 3 }; enum { "XCP_READ_ACCESS_NOT_ALLOWED" = 0, "XCP_READ_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_READ_ACCESS_WITH_ECU_ONLY" = 2, "XCP_READ_ACCESS_DONT_CARE" = 3 }; enum { "XCP_WRITE_ACCESS_NOT_ALLOWED" = 0, "XCP_WRITE_ACCESS_WITHOUT_ECU_ONLY" = 1, "XCP_WRITE_ACCESS_WITH_ECU_ONLY" = 2, "XCP_WRITE_ACCESS_DONT_CARE" = 3 }; taggedstruct { "INIT_SEGMENT" uchar; }; })*; (block "ADDRESS_MAPPING" struct { ulong; ulong; ulong; })*; "PGM_VERIFY" ulong; }; }; block "DAQ" struct { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; uint; uchar; enum { "OPTIMISATION_TYPE_DEFAULT" = 0, "OPTIMISATION_TYPE_ODT_TYPE_16" = 1, "OPTIMISATION_TYPE_ODT_TYPE_32" = 2, "OPTIMISATION_TYPE_ODT_TYPE_64" = 3, "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT" = 4, "OPTIMISATION_TYPE_MAX_ENTRY_SIZE" = 5 }; enum { "ADDRESS_EXTENSION_FREE" = 0, "ADDRESS_EXTENSION_ODT" = 1, "ADDRESS_EXTENSION_DAQ" = 3 }; enum { "IDENTIFICATION_FIELD_TYPE_ABSOLUTE" = 0, "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE" = 1, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD" = 2, "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED" = 3 }; enum { "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG" = 8 }; uchar; enum { "NO_OVERLOAD_INDICATION" = 0, "OVERLOAD_INDICATION_PID" = 1, "OVERLOAD_INDICATION_EVENT" = 2 }; taggedstruct { "PRESCALER_SUPPORTED" ; "RESUME_SUPPORTED" ; block "STIM" struct { enum { "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE" = 1, "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD" = 2, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD" = 4, "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG" = 8 }; uchar; taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; enum { "NO_TIME_STAMP" = 0, "SIZE_BYTE" = 1, "SIZE_WORD" = 2, "SIZE_DWORD" = 4 }; enum { "UNIT_1NS" = 0, "UNIT_10NS" = 1, "UNIT_100NS" = 2, "UNIT_1US" = 3, "UNIT_10US" = 4, "UNIT_100US" = 5, "UNIT_1MS" = 6, "UNIT_10MS" = 7, "UNIT_100MS" = 8, "UNIT_1S" = 9 }; taggedstruct { "TIMESTAMP_FIXED" ; }; }; "PID_OFF_SUPPORTED" ; (block "DAQ_LIST" struct { uint; taggedstruct { "DAQ_LIST_TYPE" enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; "MAX_ODT" uchar; "MAX_ODT_ENTRIES" uchar; "FIRST_PID" uchar; "EVENT_FIXED" uint; block "PREDEFINED" taggedstruct { (block "ODT" struct { uchar; taggedstruct { ("ODT_ENTRY" struct { uchar; ulong; uchar; uchar; uchar; })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; char[9]; uint; enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; uchar; uchar; uchar; })*; }; }; block "PAG" struct { uchar; taggedstruct { "FREEZE_SUPPORTED" ; }; }; block "PGM" struct { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; uchar; taggedstruct { (block "SECTOR" struct { char[101]; uchar; ulong; ulong; uchar; uchar; uchar; })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; uchar; }; }; "INTERLEAVED" uchar; }; }; }; block "DAQ_EVENT" taggedunion { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; }; }; }; }; }; /end A2ML /* ============================================================================================== */ /* */ /* Common parameters valid for the whole ASAP2 file */ /* */ /* ============================================================================================== */ /begin MOD_COMMON "" DEPOSIT ABSOLUTE BYTE_ORDER MSB_LAST ALIGNMENT_BYTE 1 ALIGNMENT_WORD 2 ALIGNMENT_LONG 4 ALIGNMENT_FLOAT32_IEEE 4 ALIGNMENT_FLOAT64_IEEE 4 /end MOD_COMMON /* ============================================================================================== */ /* */ /* XCP Interface description */ /* */ /* ============================================================================================== */ /begin IF_DATA XCP /begin PROTOCOL_LAYER 0x100 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x8 0x8 BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE OPTIONAL_CMD SET_REQUEST OPTIONAL_CMD GET_SEED OPTIONAL_CMD UNLOCK OPTIONAL_CMD SET_MTA OPTIONAL_CMD SHORT_DOWNLOAD OPTIONAL_CMD PROGRAM_START OPTIONAL_CMD PROGRAM_CLEAR OPTIONAL_CMD PROGRAM OPTIONAL_CMD PROGRAM_RESET OPTIONAL_CMD GET_PGM_PROCESSOR_INFO OPTIONAL_CMD GET_SECTOR_INFO OPTIONAL_CMD PROGRAM_PREPARE OPTIONAL_CMD PROGRAM_NEXT OPTIONAL_CMD PROGRAM_MAX OPTIONAL_CMD PROGRAM_VERIFY OPTIONAL_CMD TRANSPORT_LAYER_CMD OPTIONAL_CMD GET_ID OPTIONAL_CMD UPLOAD OPTIONAL_CMD SHORT_UPLOAD OPTIONAL_CMD BUILD_CHECKSUM OPTIONAL_CMD DOWNLOAD_NEXT OPTIONAL_CMD SET_CAL_PAGE OPTIONAL_CMD GET_CAL_PAGE OPTIONAL_CMD CLEAR_DAQ_LIST OPTIONAL_CMD SET_DAQ_PTR OPTIONAL_CMD WRITE_DAQ OPTIONAL_CMD SET_DAQ_LIST_MODE OPTIONAL_CMD GET_DAQ_LIST_MODE OPTIONAL_CMD START_STOP_DAQ_LIST OPTIONAL_CMD FREE_DAQ OPTIONAL_CMD ALLOC_DAQ OPTIONAL_CMD ALLOC_ODT OPTIONAL_CMD ALLOC_ODT_ENTRY OPTIONAL_CMD START_STOP_SYNCH OPTIONAL_CMD DOWNLOAD OPTIONAL_CMD MODIFY_BITS OPTIONAL_CMD GET_PAG_PROCESSOR_INFO OPTIONAL_CMD GET_SEGMENT_INFO OPTIONAL_CMD GET_PAGE_INFO OPTIONAL_CMD SET_SEGMENT_MODE OPTIONAL_CMD GET_SEGMENT_MODE OPTIONAL_CMD COPY_CAL_PAGE OPTIONAL_CMD GET_DAQ_CLOCK OPTIONAL_CMD READ_DAQ OPTIONAL_CMD GET_DAQ_LIST_MODE OPTIONAL_CMD DOWNLOAD_MAX COMMUNICATION_MODE_SUPPORTED BLOCK SLAVE MASTER 0x14 0x5 /end PROTOCOL_LAYER /begin DAQ STATIC 0x3 0x2 0x0 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_DAQ IDENTIFICATION_FIELD_TYPE_ABSOLUTE GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0x4 OVERLOAD_INDICATION_EVENT PRESCALER_SUPPORTED /begin TIMESTAMP_SUPPORTED 0x1 SIZE_DWORD UNIT_1US /end TIMESTAMP_SUPPORTED /begin DAQ_LIST 0x0 DAQ_LIST_TYPE DAQ MAX_ODT 0x5 MAX_ODT_ENTRIES 0x7 /end DAQ_LIST /begin DAQ_LIST 0x1 DAQ_LIST_TYPE DAQ MAX_ODT 0x4 MAX_ODT_ENTRIES 0x7 /end DAQ_LIST /begin DAQ_LIST 0x2 DAQ_LIST_TYPE DAQ MAX_ODT 0x3 MAX_ODT_ENTRIES 0x7 /end DAQ_LIST /begin EVENT "5ms" "5ms" 0x0 DAQ 0xFF 0x5 0x6 0xFF /end EVENT /begin EVENT "extEvent" "extEvent" 0x1 DAQ 0xFF 0x1 0x9 0xFF /end EVENT /end DAQ /begin XCP_ON_CAN 0x100 CAN_ID_BROADCAST 0x52 CAN_ID_MASTER 0x51 CAN_ID_SLAVE 0x50 BAUDRATE 0x7A120 /end XCP_ON_CAN /end IF_DATA /* ============================================================================================== */ /* */ /* MOD_PAR with the memory segment descriptions */ /* */ /* ============================================================================================== */ /begin MOD_PAR "" NO_OF_INTERFACES 1 /begin MEMORY_SEGMENT ECU_Code "Memory segment for code part of the ECU" DATA FLASH EXTERN 0x16000 0x86C -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 0x0 0x2 0x0 0x0 0x0 /begin PAGE 0x0 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_WITH_ECU_ONLY XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE /begin PAGE 0x1 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_WITH_ECU_ONLY XCP_WRITE_ACCESS_WITH_ECU_ONLY /end PAGE /end SEGMENT /end IF_DATA /end MEMORY_SEGMENT /begin MEMORY_SEGMENT ECU_Data "Memory segment for parameters" DATA FLASH EXTERN 0x810000 0x10000 -1 -1 -1 -1 -1 /end MEMORY_SEGMENT SYSTEM_CONSTANT "System_Constant_1" "-3.45" SYSTEM_CONSTANT "System_Constant_2" "5.67" SYSTEM_CONSTANT "System_Constant_3" "Text in System Constant" /end MOD_PAR /* ============================================================================================== */ /* */ /* Computation Methods used to convert the ECU internal values to the physical values */ /* */ /* the types IDENTICAL, LINEAR and RAT_FUNC should be used as standard */ /* */ /* ============================================================================================== */ /begin COMPU_METHOD tstCom_CM_double "conversion that delivers always phys = int" IDENTICAL "%3.0" "hours" /end COMPU_METHOD /begin COMPU_METHOD CM.IDENTICAL "conversion that delivers always phys = int" IDENTICAL "%3.0" "hours" /end COMPU_METHOD /begin COMPU_METHOD CM.LINEAR.IDENT "Linear function with parameter set for phys = f(int) = 1*int + 0" LINEAR "%3.1" "m/s" COEFFS_LINEAR 1 0 /end COMPU_METHOD /begin COMPU_METHOD CM.LINEAR.MUL_2 "Linear function with parameter set for phys = f(int) = 2*int + 0" LINEAR "%3.1" "m/s" COEFFS_LINEAR 2 0 /end COMPU_METHOD /begin COMPU_METHOD CM.RAT_FUNC.IDENT "rational function with parameter set for int = f(phys) = phys" RAT_FUNC "%3.1" "m/s" COEFFS 0 1 0 0 0 1 /end COMPU_METHOD /begin COMPU_METHOD CM.RAT_FUNC.DIV_10 "rational function with parameter set for impl = f(phys) = phys * 10" RAT_FUNC "%3.1" "km/h" COEFFS 0 10 0 0 0 1 /end COMPU_METHOD /begin COMPU_METHOD CM.RAT_FUNC.DIV_81_9175 "rational function with parameter set for impl = f(phys) = phys * 81.9175" RAT_FUNC "%8.4" "grad C" COEFFS 0 81.9175 0 0 0 1 /end COMPU_METHOD /* ============================================================================================== */ /* */ /* type FORM should only be used if the computation is complex and not feasible by RAT_FUNC */ /* */ /* Note: */ /* FORM is neccessary for VIRTUAL measuerments */ /* */ /* ============================================================================================== */ /begin COMPU_METHOD CM.FORM.X_PLUS_4 "" FORM "%6.1" "rpm" /begin FORMULA "X1+4" FORMULA_INV "X1-4" /end FORMULA /end COMPU_METHOD /begin COMPU_METHOD CM.VIRTUAL.EXTERNAL_VALUE "" FORM "%6.1" "rpm" /begin FORMULA "4*X1" /* FORMULA_INV not needed here */ /end FORMULA /end COMPU_METHOD /* ============================================================================================== */ /* */ /* type TAB_INTP and TAB_NOINTP should only be used if the computation is complex and not */ /* feasible by RAT_FUNC */ /* */ /* ============================================================================================== */ /begin COMPU_METHOD CM.TAB_INTP.DEFAULT_VALUE "" TAB_INTP "%8.4" "U/ min " COMPU_TAB_REF CM.TAB_INTP.DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_TAB CM.TAB_INTP.DEFAULT_VALUE.REF "" TAB_INTP 12 -3 98 -1 99 0 100 2 102 4 104 5 105 6 106 7 107 8 108 9 109 10 110 13 111 DEFAULT_VALUE_NUMERIC 300.56 /* DEFAULT_VALUE_NUMERIC should be used here as the normal output is numeric */ /end COMPU_TAB /begin COMPU_METHOD CM.TAB_INTP.NO_DEFAULT_VALUE "" TAB_INTP "%8.4" "U/ min " COMPU_TAB_REF CM.TAB_INTP.NO_DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_TAB CM.TAB_INTP.NO_DEFAULT_VALUE.REF "" TAB_INTP 12 -3 98 -1 99 0 100 2 102 4 104 5 105 6 106 7 107 8 108 9 109 10 110 13 111 /end COMPU_TAB /begin COMPU_METHOD CM.TAB_NOINTP.DEFAULT_VALUE "" TAB_INTP "%8.4" "U/ min " COMPU_TAB_REF CM.TAB_NOINTP.DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_TAB CM.TAB_NOINTP.DEFAULT_VALUE.REF "" TAB_NOINTP 12 -3 98 -1 99 0 100 2 102 4 104 5 105 6 106 7 107 8 108 9 109 10 110 13 111 DEFAULT_VALUE_NUMERIC 300.56 /* DEFAULT_VALUE_NUMERIC should be used here as the normal output is numeric */ /end COMPU_TAB /begin COMPU_METHOD CM.TAB_NOINTP.NO_DEFAULT_VALUE "" TAB_INTP "%8.4" "U/ min " COMPU_TAB_REF CM.TAB_NOINTP.NO_DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_TAB CM.TAB_NOINTP.NO_DEFAULT_VALUE.REF "" TAB_NOINTP 12 -3 98 -1 99 0 100 2 102 4 104 5 105 6 106 7 107 8 108 9 109 10 110 13 111 /end COMPU_TAB /* ============================================================================================== */ /* */ /* type TAB_VERB and TAB_VERB_RANGE allow to convert to text */ /* */ /* Note: */ /* Testbench with ASAP3 do not support text. It is common use that the MCD tools transfer the */ /* internal value instead */ /* */ /* ============================================================================================== */ /begin COMPU_METHOD CM.TAB_VERB.DEFAULT_VALUE "Verbal conversion with default value" TAB_VERB "%12.0" "" COMPU_TAB_REF CM.TAB_VERB.DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_VTAB CM.TAB_VERB.DEFAULT_VALUE.REF "List of text strings and relation to impl value" TAB_VERB 3 1 "SawTooth" 2 "Square" 3 "Sinus" DEFAULT_VALUE "unknown signal type" /end COMPU_VTAB /begin COMPU_METHOD CM.TAB_VERB.NO_DEFAULT_VALUE "Verbal conversion without default value" TAB_VERB "%12.0" "" COMPU_TAB_REF CM.TAB_VERB.NO_DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_VTAB CM.TAB_VERB.NO_DEFAULT_VALUE.REF "List of text strings and relation to impl value" TAB_VERB 6 2 "red" 3 "orange" 4 "yellow" 5 "green" 6 "blue" 7 "violet" /end COMPU_VTAB /begin COMPU_METHOD CM.VTAB_RANGE.DEFAULT_VALUE "verbal range with default value" TAB_VERB "%4.2" "" COMPU_TAB_REF CM.VTAB_RANGE.DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_VTAB_RANGE CM.VTAB_RANGE.DEFAULT_VALUE.REF "" 11 0 1 "Zero_to_one" 2 3 "two_to_three" 4 7 "four_to_seven" 14 17 "fourteen_to_seventeen" 18 99 "eigteen_to_ninetynine" 100 100 "hundred" 101 101 "hundredone" 102 102 "hundredtwo" 103 103 "hundredthree" 104 104 "hundredfour" 105 105 "hundredfive" DEFAULT_VALUE "out of range value" /end COMPU_VTAB_RANGE /begin COMPU_METHOD CM.VTAB_RANGE.NO_DEFAULT_VALUE "verbal range without default value" TAB_VERB "%4.2" "" COMPU_TAB_REF CM.VTAB_RANGE.NO_DEFAULT_VALUE.REF /end COMPU_METHOD /begin COMPU_VTAB_RANGE CM.VTAB_RANGE.NO_DEFAULT_VALUE.REF "" 11 0 1 "Zero_to_one" 2 3 "two_to_three" 4 7 "four_to_seven" 14 17 "fourteen_to_seventeen" 18 99 "eigteen_to_ninetynine" 100 100 "hundred" 101 101 "hundredone" 102 102 "hundredtwo" 103 103 "hundredthree" 104 104 "hundredfour" 105 105 "hundredfive" /end COMPU_VTAB_RANGE /* ============================================================================================== */ /* */ /* Measurements */ /* */ /* Note: */ /* In this example the values for Resolution and Accuracy are set to "0" as they are normally */ /* not evaluated by measurement and calibration tools */ /* It is allowed to use the same address for multiple measurements. By this it is possible */ /* to use different bitmasks / computation methods for the same int value */ /* */ /* Note: */ /* There is for each data type one example */ /* With one data type (UBYTE) there is for each computation method an example */ /* */ /* ============================================================================================== */ /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.IDENTICAL "Scalar measurement" UBYTE CM.IDENTICAL 0 0 0 255 ECU_ADDRESS 0x13A00 FORMAT "%5.0" /* Note: Overwrites the format stated in the computation method */ DISPLAY_IDENTIFIER DI.ASAM.M.SCALAR.UBYTE.IDENTICAL /* optional display identifier */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.TAB_VERB_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.TAB_VERB.DEFAULT_VALUE 0 0 0 255 ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.TAB_VERB_NO_DEFAULT_VALUE "Scalar measurement with verbal conversion" UBYTE CM.TAB_VERB.NO_DEFAULT_VALUE 0 0 0 255 ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.VTAB_RANGE_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.VTAB_RANGE.DEFAULT_VALUE 0 0 0 255 ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.VTAB_RANGE_NO_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.VTAB_RANGE.NO_DEFAULT_VALUE 0 0 0 101 /* the limits should not exceed the limits of the computation method ! otherwise the physical representation could be misleading */ ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.TAB_INTP_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.TAB_INTP.DEFAULT_VALUE 0 0 0 255 ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.TAB_INTP_NO_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.TAB_INTP.NO_DEFAULT_VALUE 0 0 0 13 /* the limits should not exceed the limits of the computation method ! otherwise the physical representation could be misleading */ ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.TAB_NOINTP_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.TAB_NOINTP.DEFAULT_VALUE 0 0 0 255 ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.TAB_NOINTP_NO_DEFAULT_VALUE "Scalar measurement with verbal conversion and default value" UBYTE CM.TAB_NOINTP.NO_DEFAULT_VALUE 0 0 0 13 /* the limits should not exceed the limits of the computation method ! otherwise the physical representation could be misleading */ ECU_ADDRESS 0x13A00 /* same address as SAM.SCALAR.UBYTE.IDENTICAL -> same int value but different phys value */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UBYTE.FORM_X_PLUS_4 "Scalar measurement" UBYTE CM.FORM.X_PLUS_4 0 0 4 259 ECU_ADDRESS 0x13A00 FORMAT "%5.0" /* Note: Overwrites the format stated in the computation method */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.SBYTE.IDENTICAL "Scalar measurement" SBYTE CM.IDENTICAL 0 0 -128 127 ECU_ADDRESS 0x13A01 FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 "Scalar measurement" SBYTE CM.LINEAR.MUL_2 0 0 -256 254 ECU_ADDRESS 0x13A01 /* same address as ASAM.M.SCALAR.SBYTE.IDENTICAL -> same int value but different phys value */ FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UWORD.IDENTICAL "Scalar measurement" UWORD CM.IDENTICAL 0 0 0 65535 ECU_ADDRESS 0x13A02 FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.SWORD.IDENTICAL "Scalar measurement" SWORD CM.IDENTICAL 0 0 -32268 32267 ECU_ADDRESS 0x13A04 FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.ULONG.IDENTICAL "Scalar measurement" ULONG CM.IDENTICAL 0 0 0 4294967295 ECU_ADDRESS 0x13A08 FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.SLONG.IDENTICAL "Scalar measurement" SLONG CM.IDENTICAL 0 0 -2147483648 2147483647 ECU_ADDRESS 0x13A0C FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.FLOAT32.IDENTICAL "Scalar measurement" FLOAT32_IEEE CM.IDENTICAL 0 0 -1e24 1e24 ECU_ADDRESS 0x13A10 FORMAT "%8.4" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.FLOAT64.IDENTICAL "Scalar measurement" FLOAT64_IEEE CM.IDENTICAL 0 0 -1e308 1e308 ECU_ADDRESS 0x13A14 FORMAT "%8.4" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 "Scalar measurement with Bitmask for a bit-area" UWORD CM.IDENTICAL 0 0 0 255 BIT_MASK 0x0FF0 ECU_ADDRESS 0x13A20 FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.SCALAR.UWORD.IDENTICAL.BITMASK_0008 "Scalar measurement with Bitmask for a single bit" UWORD CM.IDENTICAL 0 0 0 1 BIT_MASK 0x0008 ECU_ADDRESS 0x13A20 FORMAT "%5.0" /end MEASUREMENT /begin MEASUREMENT ASAM.M.ARRAY_SIZE_16.UBYTE.IDENTICAL "Scalar measurement" UBYTE CM.IDENTICAL 0 0 0 255 ECU_ADDRESS 0x13A30 FORMAT "%5.0" ARRAY_SIZE 16 /* Note: ARRAY_SIZE allows only 1 dimension. For more dimensions use MATRIX_DIM */ /end MEASUREMENT /begin MEASUREMENT ASAM.M.MATRIX_DIM_16_1_1.UBYTE.IDENTICAL "Scalar measurement" UBYTE CM.IDENTICAL 0 0 0 255 ECU_ADDRESS 0x13A30 FORMAT "%5.0" MATRIX_DIM 16 1 1 /end MEASUREMENT /begin MEASUREMENT ASAM.M.MATRIX_DIM_8_2_1.UBYTE.IDENTICAL "Scalar measurement" UBYTE CM.IDENTICAL 0 0 0 255 ECU_ADDRESS 0x13A30 FORMAT "%5.0" MATRIX_DIM 8 2 1 /end MEASUREMENT /begin MEASUREMENT ASAM.M.MATRIX_DIM_8_4_2.UBYTE.IDENTICAL "Scalar measurement" UBYTE CM.IDENTICAL 0 0 0 255 ECU_ADDRESS 0x13A30 FORMAT "%5.0" MATRIX_DIM 8 4 2 /end MEASUREMENT /begin MEASUREMENT ASAM.M.VIRTUAL.SCALAR.SWORD.PHYSICAL "Virtual measurement with 2 * ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 as input (based on the phys value of ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2" SWORD CM.VIRTUAL.EXTERNAL_VALUE /* computation method defines how the virtual measurement is calculated out of the input measurement */ 0 0 -32768 32767 ECU_ADDRESS 0x0 /* no real address, measurement value is calculated by the MCD tool */ /begin VIRTUAL ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 /* defines the input used for the computation metthod */ /end VIRTUAL /end MEASUREMENT /* ============================================================================================== */ /* */ /* Record Layouts for Characteristics (Parameters) */ /* */ /* ============================================================================================== */ /begin RECORD_LAYOUT Scalar_FLOAT64_IEEE FNC_VALUES 1 FLOAT64 ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.UBYTE.ROW_DIR FNC_VALUES 1 UBYTE ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.SBYTE.ROW_DIR FNC_VALUES 1 SBYTE ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.UWORD.ROW_DIR FNC_VALUES 1 UWORD ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.SWORD.ROW_DIR FNC_VALUES 1 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.ULONG.ROW_DIR FNC_VALUES 1 ULONG ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.SLONG.ROW_DIR FNC_VALUES 1 SLONG ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.FLOAT32_IEEE.ROW_DIR FNC_VALUES 1 FLOAT32_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.FLOAT64_IEEE.ROW_DIR FNC_VALUES 1 FLOAT64_IEEE ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.UBYTE.COLUMN_DIR FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.SBYTE.COLUMN_DIR FNC_VALUES 1 SBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.UWORD.COLUMN_DIR FNC_VALUES 1 UWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.SWORD.COLUMN_DIR FNC_VALUES 1 SWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.ULONG.COLUMN_DIR FNC_VALUES 1 ULONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.SLONG.COLUMN_DIR FNC_VALUES 1 SLONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.FLOAT32_IEEE.COLUMN_DIR FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.FNC.FLOAT64_IEEE.COLUMN_DIR FNC_VALUES 1 FLOAT64_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.AXIS.UBYTE AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.AXIS.UWORD AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.CURVE.SWORD.SBYTE.DECR NO_AXIS_PTS_X 1 UBYTE /* current number of axis points */ AXIS_PTS_X 2 SBYTE INDEX_DECR DIRECT FNC_VALUES 3 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.CURVE.SWORD.SBYTE.INCR NO_AXIS_PTS_X 1 UBYTE /* current number of axis points */ AXIS_PTS_X 2 SBYTE INDEX_INCR DIRECT FNC_VALUES 3 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.AXIS_PTS.SBYTE.DECR NO_AXIS_PTS_X 1 UBYTE /* current number of axis points */ AXIS_PTS_X 2 SBYTE INDEX_DECR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.AXIS_PTS.RES_AXIS NO_RESCALE_X 1 UBYTE RESERVED 2 BYTE /* to adapt the start of the rescale pairs to an even address */ AXIS_RESCALE_X 3 UBYTE 5 INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.MAP.SWORD.SBYTE.SBYTE.INCR NO_AXIS_PTS_X 1 UBYTE /* current number of axis points */ NO_AXIS_PTS_Y 2 UBYTE /* current number of axis points */ AXIS_PTS_X 3 SBYTE INDEX_INCR DIRECT AXIS_PTS_Y 4 SBYTE INDEX_INCR DIRECT FNC_VALUES 5 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT RL.CUBOID.SWORD.SBYTE.DECR NO_AXIS_PTS_Z 1 UBYTE /* current number of axis points */ AXIS_PTS_Z 2 SBYTE INDEX_DECR DIRECT FNC_VALUES 3 SWORD ROW_DIR DIRECT /end RECORD_LAYOUT /* ============================================================================================== */ /* */ /* Scalar Characteristics (Parameters) */ /* */ /* Note: */ /* MAX_DIF is always set to 0 as it is normally not evaluated by measurement and calibration tools */ /* */ /* Note: */ /* There is for each data type one example */ /* With one data type (SWORD) there is for each computation method an example */ /* */ /* ============================================================================================== */ //////////////////////////// /begin CHARACTERISTIC tstCom_cal_impl.Analoginput_P11 "" VAL_BLK 0x0023F7D0 Scalar_FLOAT64_IEEE 0 tstCom_CM_double -1.7E+308 1.7E+308 /end CHARACTERISTIC /begin CHARACTERISTIC tstCom_cal_impl.Analoginput_P12 "" VALUE 0x0023F800 Scalar_FLOAT64_IEEE 0 tstCom_CM_double -1.7E+308 1.7E+308 /end CHARACTERISTIC /begin CHARACTERISTIC tstCom_cal_impl.Analoginput_P2 "" VALUE 0x0023F5D0 Scalar_FLOAT64_IEEE 0 tstCom_CM_double -1.7E+308 1.7E+308 /end CHARACTERISTIC /begin CHARACTERISTIC tstCom_cal_impl.Analoginput_P3 "" VALUE 0x0023F5E8 Scalar_FLOAT64_IEEE 0 tstCom_CM_double -1.7E+308 1.7E+308 /end CHARACTERISTIC //////////////////////////// /begin CHARACTERISTIC ASAM.C.SCALAR.UBYTE.IDENTICAL "Scalar FW U16 and CDF20 as name" VALUE 0x810000 RL.FNC.UBYTE.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL 10 200 EXTENDED_LIMITS 0 256 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.UBYTE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SBYTE.IDENTICAL "Scalar SBYTE" VALUE 0x810001 RL.FNC.SBYTE.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL -100 100 EXTENDED_LIMITS -128 127 FORMAT "%6.1" /* overwrites the format given in the computation method */ DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SBYTE.IDENTICAL /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.UWORD.IDENTICAL "Scalar UWORD" VALUE 0x810002 RL.FNC.UWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL 0 65535 EXTENDED_LIMITS 0 65535 BIT_MASK 0xFFFF FORMAT "%5.0" DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.UWORD.IDENTICAL /begin ANNOTATION ANNOTATION_LABEL "ASAM Workinggroup" ANNOTATION_ORIGIN "" /begin ANNOTATION_TEXT "Test the A2L annotation" /end ANNOTATION_TEXT /end ANNOTATION /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 "Scalar UWORD" VALUE 0x810002 RL.FNC.UWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL 0 255 EXTENDED_LIMITS 0 65535 BIT_MASK 0x0FF0 FORMAT "%5.0" DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0001 "Scalar UWORD" VALUE 0x810002 RL.FNC.UWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL 0 1 EXTENDED_LIMITS 0 65535 BIT_MASK 0x0001 FORMAT "%5.0" DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0001 /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0010 "Scalar UWORD" VALUE 0x810002 RL.FNC.UWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL 0 1 EXTENDED_LIMITS 0 65535 BIT_MASK 0x0010 FORMAT "%5.0" DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0010 /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.IDENTICAL "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.IDENTICAL /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.LINEAR_MUL_2 "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.LINEAR.MUL_2 -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.LINEAR_MUL_2 /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_10 "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.RAT_FUNC.DIV_10 -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_10 /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.FORM_X_PLUS_4 "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.FORM.X_PLUS_4 -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.FORM_X_PLUS_4 /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.TAB_INTP_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.TAB_INTP.DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.TAB_INTP_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.TAB_INTP_NO_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.TAB_INTP.NO_DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.TAB_INTP_NO_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.TAB_NOINTP_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.TAB_NOINTP.DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.TAB_NOINTP_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.TAB_NOINTP_NO_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.TAB_NOINTP.NO_DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.TAB_NOINTP_NO_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.TAB_VERB_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.TAB_VERB.DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.TAB_VERB_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.TAB_VERB_NO_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.TAB_VERB.NO_DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.TAB_VERB_NO_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.VTAB_RANGE_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.VTAB_RANGE.DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.VTAB_RANGE_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.VTAB_RANGE_NO_DEFAULT_VALUE "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.VTAB_RANGE.NO_DEFAULT_VALUE -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD.VTAB_RANGE_NO_DEFAULT_VALUE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_81_9175 "Scalar SWORD" VALUE 0x810004 RL.FNC.SWORD.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.RAT_FUNC.DIV_81_9175 -10000 20000 EXTENDED_LIMITS -32268 32267 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.ULONG.IDENTICAL "Scalar ULONG" VALUE 0x810008 RL.FNC.ULONG.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL -1000000 2000000 EXTENDED_LIMITS -10000000 20000000 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.ULONG.IDENTICAL /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.SLONG.IDENTICAL "Scalar SLONG" VALUE 0x81000C RL.FNC.SLONG.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL -1000000 2000000 EXTENDED_LIMITS -10000000 20000000 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.SLONG.IDENTICAL /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.FLOAT32_IEEE.IDENTICAL "Scalar FLOAT32_IEEE" VALUE 0x810010 RL.FNC.FLOAT32_IEEE.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL 10 200 EXTENDED_LIMITS 0 256 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.FLOAT32_IEEE.IDENTICAL /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.SCALAR.FLOAT64_IEEE.IDENTICAL "Scalar FLOAT64_IEEE" VALUE 0x810010 RL.FNC.FLOAT64_IEEE.ROW_DIR /* ROW_DIR / COLUMN_DIR is here exchangeable as only one value is stored */ 0 CM.IDENTICAL -100 200 EXTENDED_LIMITS -10000.0 20000.0 DISPLAY_IDENTIFIER DI.ASAM.C.SCALAR.FLOAT64_IEEE.IDENTICAL /end CHARACTERISTIC /* ============================================================================================== */ /* */ /* Array Characteristics (Parameters) */ /* */ /* Note: */ /* All examples are based on SWORD. For other data types see scalare parameters */ /* */ /* Note: */ /* For curve are examples for all kind of axis available */ /* For map, cuboid are examples with mixed axis types available */ /* */ /* ============================================================================================== */ /begin CHARACTERISTIC ASAM.C.ARRAY.SWORD.MATRIX_DIM_3_4.ROW_DIR "Array 3x4 of SWORD" VAL_BLK 0x810100 RL.FNC.SWORD.ROW_DIR 0 CM.IDENTICAL -400 400 EXTENDED_LIMITS -1000 1000 MATRIX_DIM 3 4 1 FORMAT "%8.4" DISPLAY_IDENTIFIER DI.ASAM.C.ARRAY.SWORD.MATRIX_DIM_3_4.ROW_DIR /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.ARRAY.SWORD.MATRIX_DIM_3_4.COLUMN_DIR "Array 3x4 of SWORD" VAL_BLK 0x810120 RL.FNC.SWORD.COLUMN_DIR 0 CM.IDENTICAL -400 400 EXTENDED_LIMITS -1000 1000 MATRIX_DIM 3 4 1 FORMAT "%8.4" DISPLAY_IDENTIFIER DI.ASAM.C.ARRAY.SWORD.MATRIX_DIM_3_4.COLUMN_DIR /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.ARRAY.SWORD.MATRIX_DIM_6.ROW_DIR "Array 6 of SWORD" VAL_BLK 0x810140 RL.FNC.SWORD.ROW_DIR /* COLUMN_DIR results here in the same memory usage as only one dimension is used */ 0 CM.IDENTICAL -400 400 EXTENDED_LIMITS -1000 1000 MATRIX_DIM 6 1 1 FORMAT "%8.4" DISPLAY_IDENTIFIER DI.ASAM.C.ARRAY.SWORD.MATRIX_DIM_6.ROW_DIR /end CHARACTERISTIC /* ============================================================================================== */ /* */ /* ASCII Characteristics (Parameters) */ /* */ /* Note: */ /* All examples are based on UBYTE. This is necessary for ASCII */ /* */ /* Note: */ /* NUMBER shall state the maximum (fixed) size of memory available on the ECU */ /* The string representation in the MCD tool is normally 0-terminated. There the string may be */ /* limited earlier */ /* */ /* ============================================================================================== */ /begin CHARACTERISTIC ASAM.C.ASCII.UBYTE.NUMBER_42 "ASCII string" ASCII 0x810200 RL.FNC.UBYTE.ROW_DIR 0 CM.IDENTICAL 0 255 NUMBER 42 DISPLAY_IDENTIFIER DI.ASAM.C.ASCII.UBYTE.NUMBER_42 /end CHARACTERISTIC /* ============================================================================================== */ /* */ /* Curve, Map, Quboid Characteristics (Parameters) */ /* */ /* Note: */ /* All examples are based on SWORD. For other data types see scalare parameters */ /* */ /* Note: */ /* For curve are examples for all kind of axis available */ /* For map, cuboid are examples with mixed axis types available */ /* */ /* ============================================================================================== */ /begin CHARACTERISTIC ASAM.C.CURVE.STD_AXIS "Curve with standard axis" CURVE 0x810300 /* memory needed: 1x Byte for no of axis points, 8x Byte for axis points + 8x word for output values */ RL.CURVE.SWORD.SBYTE.DECR /* Record layout that covers axis and FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 -128 127 /end AXIS_DESCR FORMAT "%8.3" DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.STD_AXIS /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE.COM_AXIS "Curve with common axis" CURVE 0x810320 RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR COM_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 /* will be overwritten by max number of axis points of AXIS_PTS */ -128 127 AXIS_PTS_REF ASAM.C.AXIS_PTS.UBYTE_8 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.COM_AXIS /end CHARACTERISTIC /begin AXIS_PTS ASAM.C.AXIS_PTS.UBYTE_8 "Common axis for " 0x810340 ASAM.M.SCALAR.SBYTE.IDENTICAL /* will be overwritten by input quantity of AXIS_DESCR */ RL.AXIS_PTS.SBYTE.DECR /* Record layout that covers axis values */ 0 CM.IDENTICAL /* will be overwritten by computation method of AXIS_DESCR */ 8 -128 127 DISPLAY_IDENTIFIER DI.ASAM.C.AXIS_PTS.UBYTE_8 /end AXIS_PTS /begin CHARACTERISTIC ASAM.C.CURVE.FIX_AXIS.PAR_DIST "Curve with fix axis and FIX_AXIS_PAR_DIST" CURVE 0x810350 RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR FIX_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 6 -128 127 FIX_AXIS_PAR_DIST 1 1 6 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.FIX_AXIS.PAR_DIST /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE.FIX_AXIS.PAR "Curve with fix axis and FIX_AXIS_PAR" CURVE 0x810360 RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR FIX_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 6 -128 127 FIX_AXIS_PAR_DIST 0 4 6 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.FIX_AXIS.PAR /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE.FIX_AXIS.PAR_LIST "Curve with fix axis and FIX_AXIS_PAR_LIST" CURVE 0x810370 RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR FIX_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 6 /* shall match the number of axis points listed in FIX_AXIS_PAR_LIST */ -128 127 /begin FIX_AXIS_PAR_LIST -1 4 6 8 9 10 /end FIX_AXIS_PAR_LIST /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.FIX_AXIS.PAR_LIST /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE.CURVE_AXIS "Curve with curve axis" CURVE 0x810380 RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR CURVE_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL NO_COMPU_METHOD /* CURVE_AXIS have no input conversion */ 8 /* will be overwritten by max number of axis points of AXIS_PTS */ -128 127 CURVE_AXIS_REF ASAM.C.CURVE_AXIS /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.COM_AXIS /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE_AXIS "Curve used as axis" CURVE 0x810390 RL.CURVE.SWORD.SBYTE.INCR /* Record layout that covers axis and FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 -128 127 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE_AXIS /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE.RES_AXIS "Curve with rescale axis" CURVE 0x8103A0 RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR RES_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 9 /* will be overwritten by number of rescale pairs */ 0 255 AXIS_PTS_REF ASAM.C.AXIS_PTS.RESCALE /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.RES_AXIS /end CHARACTERISTIC /begin AXIS_PTS ASAM.C.AXIS_PTS.RESCALE "Rescale Axis" 0x8103B0 ASAM.M.SCALAR.SBYTE.IDENTICAL RL.AXIS_PTS.RES_AXIS 0 CM.IDENTICAL 5 0 255 DISPLAY_IDENTIFIER DI_0x83BA20.VTAB.RE_AXIS.X_RE_AXIS_xU8 /end AXIS_PTS /begin CHARACTERISTIC ASAM.C.CURVE.STD_AXIS.MONOTONY_STRICT_INCREASE "Curve with standard axis" CURVE 0x810800 RL.CURVE.SWORD.SBYTE.DECR /* Record layout that covers axis and FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 -128 127 MONOTONY STRICT_INCREASE /* allows only axis values strictly increasing */ /end AXIS_DESCR FORMAT "%8.3" DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.STD_AXIS.MONOTONY_STRICT_INCREASE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CURVE.STD_AXIS.MONOTONY_STRICT_DECREASE "Curve with standard axis" CURVE 0x810820 RL.CURVE.SWORD.SBYTE.DECR /* Record layout that covers axis and FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 -128 127 MONOTONY STRICT_DECREASE /* allows only axis values strictly decreasing */ /end AXIS_DESCR FORMAT "%8.3" DISPLAY_IDENTIFIER DI.ASAM.C.CURVE.STD_AXIS.MONOTONY_STRICT_DECREASE /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.MAP.STD_AXIS.STD_AXIS "Map with 2x standard axis" MAP 0x810400 /* memory needed: 1x Byte for no of axis points, 8x Byte for axis points + 8x word for output values */ RL.MAP.SWORD.SBYTE.SBYTE.INCR /* Record layout that covers axis and FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 4 -128 127 /end AXIS_DESCR /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.UBYTE.TAB_VERB_NO_DEFAULT_VALUE CM.TAB_VERB.NO_DEFAULT_VALUE /* shall be the same computation as used with the input quantity */ 5 -128 127 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.MAP.STD_AXIS.STD_AXIS /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.MAP.COM_AXIS.FIX_AXIS "Map with 2x standard axis" MAP 0x810440 /* memory needed: 1x Byte for no of axis points, 8x Byte for axis points + 8x word for output values */ RL.FNC.SWORD.ROW_DIR /* Record layout that covers FNC values */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR COM_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 /* will be overwritten by max number of axis points of AXIS_PTS */ -128 127 AXIS_PTS_REF ASAM.C.AXIS_PTS.UBYTE_8 /end AXIS_DESCR /begin AXIS_DESCR FIX_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 3 -128 127 FIX_AXIS_PAR_DIST 1 1 3 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.MAP.COM_AXIS.FIX_AXIS /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.CUBOID.COM_AXIS.FIX_AXIS.STD_AXIS "Map with 2x standard axis" CUBOID 0x810470 RL.CUBOID.SWORD.SBYTE.DECR /* Record layout that covers FNC values + STD axis */ 0 CM.IDENTICAL -32268 32267 /begin AXIS_DESCR COM_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 8 -128 127 AXIS_PTS_REF ASAM.C.AXIS_PTS.UBYTE_8 /end AXIS_DESCR /begin AXIS_DESCR FIX_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 3 -128 127 FIX_AXIS_PAR_DIST 1 1 3 /end AXIS_DESCR /begin AXIS_DESCR STD_AXIS ASAM.M.SCALAR.SBYTE.IDENTICAL CM.IDENTICAL /* shall be the same computation as used with the input quantity */ 4 -128 127 /end AXIS_DESCR DISPLAY_IDENTIFIER DI.ASAM.C.CUBOID.COM_AXIS.FIX_AXIS.STD_AXIS /end CHARACTERISTIC /* ============================================================================================== */ /* */ /* Dependent Characteristics (Parameters) */ /* */ /* Note: */ /* The value of the dependent parameter is located in the ECU memory. */ /* The MCD tool updates the value when the source value is changed */ /* */ /* ============================================================================================== */ /begin CHARACTERISTIC ASAM.C.DEPENDENT.REF_1.SWORD "Dependent SWORD" VALUE 0x810600 /* dependent parameter is located in the ECU memory. The MCD tool updated the value when the source value is changed */ RL.FNC.SWORD.ROW_DIR /* SWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL -32268 32267 /begin DEPENDENT_CHARACTERISTIC "X1 + 5" ASAM.C.SCALAR.SBYTE.IDENTICAL /* used as input X1 variable in teh dependent formula */ /end DEPENDENT_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.DEPENDENT.REF_1.SWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.DEPENDENT.REF_2.UWORD "Dependent UWORD" VALUE 0x810602 RL.FNC.UWORD.ROW_DIR /* UWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL 0.0 65535.0 /begin DEPENDENT_CHARACTERISTIC "X1 + 25" ASAM.C.SCALAR.UBYTE.IDENTICAL /end DEPENDENT_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.DEPENDENT.REF_2.UWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.DEPENDENT.REF_3.SWORD "Dependent UWORD" VALUE 0x810604 RL.FNC.SWORD.ROW_DIR /* SWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL -32268 32267 /begin DEPENDENT_CHARACTERISTIC "X1 + X2" ASAM.C.DEPENDENT.REF_1.SWORD ASAM.C.DEPENDENT.REF_2.UWORD /end DEPENDENT_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.DEPENDENT.REF_3.SWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.DEPENDENT.REF_4.FLOAT64_IEEE "Dependent UWORD" VALUE 0x810610 RL.FNC.FLOAT64_IEEE.ROW_DIR /* SWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL -32268 32267 /begin DEPENDENT_CHARACTERISTIC "X1 + sysc(System_Constant_1)" ASAM.C.DEPENDENT.REF_1.SWORD /end DEPENDENT_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.DEPENDENT.REF_4.FLOAT64_IEEE FORMAT "%8.2" /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.DEPENDENT.REF_5.FLOAT64_IEEE "Dependent UWORD" VALUE 0x810608 RL.FNC.FLOAT64_IEEE.ROW_DIR /* SWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL -10000.0 10000.0 /begin DEPENDENT_CHARACTERISTIC "X1 * 2" ASAM.C.VIRTUAL.SYSTEM_CONSTANT_1 /end DEPENDENT_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.DEPENDENT.REF_5.FLOAT64_IEEE FORMAT "%8.2" /end CHARACTERISTIC /* ============================================================================================== */ /* */ /* Virtual Characteristics (Parameters) */ /* */ /* Note: */ /* The value of the virtual parameter is not located in the ECU memory. It is only visible */ /* in the MCD tool */ /* The MCD tool updates the value when the source value is changed */ /* */ /* ============================================================================================== */ /begin CHARACTERISTIC ASAM.C.VIRTUAL.REF_1.SWORD "Virtual SWORD" VALUE 0x0 /* address is 0 as the virtual value is not part of the ECU or the hex file */ RL.FNC.SWORD.ROW_DIR /* SWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL 0 255 /begin VIRTUAL_CHARACTERISTIC "X1 - 9" ASAM.C.SCALAR.SBYTE.IDENTICAL /* used as input X1 variable in teh dependent formula */ /end VIRTUAL_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.VIRTUAL.REF_1.SWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.VIRTUAL.REF_2.UWORD "Virtual UWORD" VALUE 0x0 /* address is 0 as the virtual value is not part of the ECU or the hex file */ RL.FNC.UWORD.ROW_DIR /* UWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL 0.0 255.0 /begin VIRTUAL_CHARACTERISTIC "X1 + 19" ASAM.C.SCALAR.UBYTE.IDENTICAL /end VIRTUAL_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.VIRTUAL.REF_2.UWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.VIRTUAL.REF_3.SWORD "Virtual UWORD" VALUE 0x0 /* address is 0 as the virtual value is not part of the ECU or the hex file */ RL.FNC.SWORD.ROW_DIR /* SWORD needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL 0.0 255.0 /begin VIRTUAL_CHARACTERISTIC "X1 + X2" ASAM.C.VIRTUAL.REF_1.SWORD ASAM.C.VIRTUAL.REF_2.UWORD /end VIRTUAL_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.VIRTUAL.REF_3.SWORD /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.VIRTUAL.SYSTEM_CONSTANT_1 "Virtual value including a system constant in the calculation formula" VALUE 0x0 /* address is 0 as the virtual value is not part of the ECU or the hex file */ RL.FNC.FLOAT64_IEEE.ROW_DIR /* Float needed to cover the result of the dependent calculation */ 0 CM.IDENTICAL 0.0 255.0 /begin VIRTUAL_CHARACTERISTIC "X1 + sysc(System_Constant_1)" /* system constant needs to contain a valid number. Otherwise the calculation leeds to an error */ ASAM.C.SCALAR.UBYTE.IDENTICAL /end VIRTUAL_CHARACTERISTIC DISPLAY_IDENTIFIER DI.ASAM.C.VIRTUAL.SYSTEM_CONSTANT_1 FORMAT "%8.2" /end CHARACTERISTIC /begin CHARACTERISTIC ASAM.C.VIRTUAL.ASCII "Virtual ASCII string" ASCII /* type needs to be ASCII as the referenced system constant contains a string */ 0x0 /* address is 0 as the virtual value is not part of the ECU or the hex file */ RL.FNC.UBYTE.ROW_DIR /* UBYTE needed to cover ASCII */ 0 CM.IDENTICAL 0.0 255.0 /begin VIRTUAL_CHARACTERISTIC "sysc(System_Constant_3)" /end VIRTUAL_CHARACTERISTIC NUMBER 100 /* needs minimum the length of the text length of the system constant */ DISPLAY_IDENTIFIER DI.ASAM.C.VIRTUAL.SYSTEM_CONSTANT_1 /end CHARACTERISTIC /* ============================================================================================== */ /* */ /* Functions */ /* */ /* Note: */ /* Each parameter shall be defined (DEF_CHARACTERISTIC) only one time! */ /* */ /* ============================================================================================== */ /begin FUNCTION FunctionScalar "" /begin SUB_FUNCTION FunctionDependentParameters /end SUB_FUNCTION /begin DEF_CHARACTERISTIC ASAM.C.SCALAR.FLOAT32_IEEE.IDENTICAL ASAM.C.SCALAR.FLOAT64_IEEE.IDENTICAL ASAM.C.SCALAR.SBYTE.IDENTICAL ASAM.C.SCALAR.SLONG.IDENTICAL ASAM.C.SCALAR.SWORD.FORM_X_PLUS_4 ASAM.C.SCALAR.SWORD.IDENTICAL ASAM.C.SCALAR.SWORD.LINEAR_MUL_2 ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_10 ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_81_9175 ASAM.C.SCALAR.SWORD.TAB_INTP_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_INTP_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_NOINTP_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_NOINTP_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_VERB_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_VERB_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.VTAB_RANGE_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.VTAB_RANGE_NO_DEFAULT_VALUE ASAM.C.SCALAR.UBYTE.IDENTICAL ASAM.C.SCALAR.ULONG.IDENTICAL ASAM.C.SCALAR.UWORD.IDENTICAL ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0001 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0010 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 /end DEF_CHARACTERISTIC /end FUNCTION /begin FUNCTION FunctionDependentParameters "" /begin REF_CHARACTERISTIC ASAM.C.SCALAR.UBYTE.IDENTICAL ASAM.C.SCALAR.SBYTE.IDENTICAL /end REF_CHARACTERISTIC /begin DEF_CHARACTERISTIC ASAM.C.DEPENDENT.REF_1.SWORD ASAM.C.DEPENDENT.REF_2.UWORD ASAM.C.DEPENDENT.REF_3.SWORD /end DEF_CHARACTERISTIC /end FUNCTION /begin FUNCTION FunctionCurveAxis "" /begin DEF_CHARACTERISTIC ASAM.C.CURVE_AXIS ASAM.C.CURVE.CURVE_AXIS /end DEF_CHARACTERISTIC /begin IN_MEASUREMENT ASAM.M.SCALAR.SBYTE.IDENTICAL /end IN_MEASUREMENT /end FUNCTION /begin FUNCTION FunctionVirtualMeasurements "" /begin IN_MEASUREMENT ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 /end IN_MEASUREMENT /begin OUT_MEASUREMENT ASAM.M.VIRTUAL.SCALAR.SWORD.PHYSICAL /end OUT_MEASUREMENT /end FUNCTION /* ============================================================================================== */ /* */ /* Groups */ /* */ /* Note: */ /* For GROUP there is no special sorting defined */ /* It is up to the user to define one ore more sortings */ /* */ /* ============================================================================================== */ /begin GROUP Group_Type_All "contains all groups with special types" ROOT /begin SUB_GROUP Group_Type_Scalar Group_Type_Array Group_Type_Curve Group_Type_Map Group_Type_Cuboid Group_Type_ASCII /end SUB_GROUP /end GROUP /begin GROUP Group_Type_Scalar "Contains all scalar measurements and parameters" /begin REF_CHARACTERISTIC ASAM.C.SCALAR.FLOAT32_IEEE.IDENTICAL ASAM.C.SCALAR.FLOAT64_IEEE.IDENTICAL ASAM.C.SCALAR.SBYTE.IDENTICAL ASAM.C.SCALAR.SLONG.IDENTICAL ASAM.C.SCALAR.SWORD.FORM_X_PLUS_4 ASAM.C.SCALAR.SWORD.IDENTICAL ASAM.C.SCALAR.SWORD.LINEAR_MUL_2 ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_10 ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_81_9175 ASAM.C.SCALAR.SWORD.TAB_INTP_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_INTP_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_NOINTP_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_NOINTP_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_VERB_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_VERB_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.VTAB_RANGE_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.VTAB_RANGE_NO_DEFAULT_VALUE ASAM.C.SCALAR.UBYTE.IDENTICAL ASAM.C.SCALAR.ULONG.IDENTICAL ASAM.C.SCALAR.UWORD.IDENTICAL ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0001 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0010 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 /end REF_CHARACTERISTIC /begin REF_MEASUREMENT ASAM.M.SCALAR.FLOAT32.IDENTICAL ASAM.M.SCALAR.FLOAT64.IDENTICAL ASAM.M.SCALAR.SBYTE.IDENTICAL ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 ASAM.M.SCALAR.SLONG.IDENTICAL ASAM.M.SCALAR.SWORD.IDENTICAL ASAM.M.SCALAR.UBYTE.FORM_X_PLUS_4 ASAM.M.SCALAR.UBYTE.IDENTICAL ASAM.M.SCALAR.UBYTE.TAB_INTP_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_INTP_NO_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_NOINTP_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_NOINTP_NO_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_VERB_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_VERB_NO_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.VTAB_RANGE_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.VTAB_RANGE_NO_DEFAULT_VALUE ASAM.M.SCALAR.ULONG.IDENTICAL ASAM.M.SCALAR.UWORD.IDENTICAL ASAM.M.SCALAR.UWORD.IDENTICAL.BITMASK_0008 ASAM.M.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 ASAM.M.VIRTUAL.SCALAR.SWORD.PHYSICAL /end REF_MEASUREMENT /end GROUP /begin GROUP Group_Type_Array "Contains all array measurements and parameters" /begin REF_CHARACTERISTIC ASAM.C.ARRAY.SWORD.MATRIX_DIM_3_4.COLUMN_DIR ASAM.C.ARRAY.SWORD.MATRIX_DIM_3_4.ROW_DIR ASAM.C.ARRAY.SWORD.MATRIX_DIM_6.ROW_DIR /end REF_CHARACTERISTIC /begin REF_MEASUREMENT ASAM.M.ARRAY_SIZE_16.UBYTE.IDENTICAL ASAM.M.MATRIX_DIM_16_1_1.UBYTE.IDENTICAL ASAM.M.MATRIX_DIM_8_2_1.UBYTE.IDENTICAL /end REF_MEASUREMENT /end GROUP /begin GROUP Group_Type_Curve "Contains all curve parameters" /begin REF_CHARACTERISTIC ASAM.C.CURVE.COM_AXIS ASAM.C.CURVE.CURVE_AXIS ASAM.C.CURVE.FIX_AXIS.PAR ASAM.C.CURVE.FIX_AXIS.PAR_DIST ASAM.C.CURVE.FIX_AXIS.PAR_LIST ASAM.C.CURVE.RES_AXIS ASAM.C.CURVE.STD_AXIS ASAM.C.CURVE.STD_AXIS.MONOTONY_STRICT_DECREASE ASAM.C.CURVE.STD_AXIS.MONOTONY_STRICT_INCREASE ASAM.C.CURVE_AXIS ASAM.C.AXIS_PTS.RESCALE ASAM.C.AXIS_PTS.UBYTE_8 /end REF_CHARACTERISTIC /end GROUP /begin GROUP Group_Type_Map "Contains all map parameters" /begin REF_CHARACTERISTIC ASAM.C.MAP.COM_AXIS.FIX_AXIS ASAM.C.MAP.STD_AXIS.STD_AXIS /end REF_CHARACTERISTIC /end GROUP /begin GROUP Group_Type_Cuboid "Contains all cuboid parameters" /begin REF_CHARACTERISTIC ASAM.C.CUBOID.COM_AXIS.FIX_AXIS.STD_AXIS /end REF_CHARACTERISTIC /end GROUP /begin GROUP Group_Type_ASCII "Contains all ASCII parameters" /begin REF_CHARACTERISTIC ASAM.C.ASCII.UBYTE.NUMBER_42 /end REF_CHARACTERISTIC /end GROUP /begin GROUP Group_Function_All "contains all groups with special functions" ROOT /begin SUB_GROUP Group_Function_Virtual Group_Function_Monotony Group_Function_Computation Group_Function_Bitmask /end SUB_GROUP /end GROUP /begin GROUP Group_Function_Virtual "Contains all functions, measurements and parameters used for virtual" /begin FUNCTION_LIST FunctionVirtualMeasurements /end FUNCTION_LIST /begin REF_CHARACTERISTIC ASAM.C.SCALAR.SBYTE.IDENTICAL ASAM.C.SCALAR.UBYTE.IDENTICAL ASAM.C.VIRTUAL.ASCII ASAM.C.VIRTUAL.REF_1.SWORD ASAM.C.VIRTUAL.REF_2.UWORD ASAM.C.VIRTUAL.REF_3.SWORD ASAM.C.VIRTUAL.SYSTEM_CONSTANT_1 /end REF_CHARACTERISTIC /begin REF_MEASUREMENT ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 ASAM.M.VIRTUAL.SCALAR.SWORD.PHYSICAL /end REF_MEASUREMENT /end GROUP /begin GROUP Group_Function_Monotony "Contains all functions, measurements and parameters used for monotony" /begin REF_CHARACTERISTIC /end REF_CHARACTERISTIC /begin REF_MEASUREMENT /end REF_MEASUREMENT /end GROUP /begin GROUP Group_Function_Computation "Contains all measurements and parameters that have a computation method different to identical" /begin REF_CHARACTERISTIC ASAM.C.SCALAR.SWORD.FORM_X_PLUS_4 ASAM.C.SCALAR.SWORD.LINEAR_MUL_2 ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_10 ASAM.C.SCALAR.SWORD.RAT_FUNC_DIV_81_9175 ASAM.C.SCALAR.SWORD.TAB_INTP_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_INTP_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_NOINTP_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_NOINTP_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_VERB_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.TAB_VERB_NO_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.VTAB_RANGE_DEFAULT_VALUE ASAM.C.SCALAR.SWORD.VTAB_RANGE_NO_DEFAULT_VALUE ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0001 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0010 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 /end REF_CHARACTERISTIC /begin REF_MEASUREMENT ASAM.M.SCALAR.SBYTE.LINEAR_MUL_2 ASAM.M.SCALAR.UBYTE.FORM_X_PLUS_4 ASAM.M.SCALAR.UBYTE.TAB_INTP_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_INTP_NO_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_NOINTP_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_NOINTP_NO_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_VERB_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.TAB_VERB_NO_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.VTAB_RANGE_DEFAULT_VALUE ASAM.M.SCALAR.UBYTE.VTAB_RANGE_NO_DEFAULT_VALUE /end REF_MEASUREMENT /end GROUP /begin GROUP Group_Function_Bitmask "Contains all measurements and parameters that have a bitmask" /begin REF_CHARACTERISTIC ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0001 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0010 ASAM.C.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 /end REF_CHARACTERISTIC /begin REF_MEASUREMENT ASAM.M.SCALAR.UWORD.IDENTICAL.BITMASK_0008 ASAM.M.SCALAR.UWORD.IDENTICAL.BITMASK_0FF0 /end REF_MEASUREMENT /end GROUP /end MODULE /end PROJECT