/****************************************************************************** * * ASAP2 file: variants.a2l * ******************************************************************************/ ASAP2_VERSION 1 71 /begin PROJECT ProjectName "Project Comment Goes Here" /begin HEADER "Header Comments go here" /end HEADER /begin MODULE ModuleName "Module Comment Goes Here" /begin A2ML struct Protocol_Layer { uint; /* XCP protocol layer version, current 0x100 */ uint; /* T1 [ms] */ uint; /* T2 [ms] */ uint; /* T3 [ms] */ uint; /* T4 [ms] */ uint; /* T5 [ms] */ uint; /* T6 [ms] */ uint; /* T7 [ms] */ uchar; /* MAX_CTO */ uint; /* MAX_DTO */ 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; /* MAX_BS */ uchar; /* MIN_ST */ }; }; "INTERLEAVED" uchar; /* QUEUE_SIZE */ }; "SEED_AND_KEY_EXTERNAL_FUNCTION" char[256]; /* Name of the Seed&Key function */ }; }; struct Daq { enum { "STATIC" = 0, "DYNAMIC" = 1 }; uint; /* MAX_DAQ */ uint; /* MAX_EVENT_CHANNEL */ uchar; /* MIN_DAQ */ 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; /* MAX_ODT_ENTRY_SIZE_DAQ */ 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; /* MAX_ODT_ENTRY_SIZE_STIM */ taggedstruct { "BIT_STIM_SUPPORTED" ; }; }; block "TIMESTAMP_SUPPORTED" struct { uint; /* TIMESTAMP_TICKS */ 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; /* DAQ_LIST_NUMBER */ 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; /* ODT number */ taggedstruct { ("ODT_ENTRY" struct { uchar; /* ODT_ENTRY number */ ulong; /* address of element */ uchar; /* address extension of element */ uchar; /* size of element [AG] */ uchar; /* BIT_OFFSET */ })*; }; })*; }; }; })*; (block "EVENT" struct { char[101]; /* EVENT_CHANNEL_NAME */ char[9]; /* EVENT_CHANNEL_SHORT_NAME */ uint; /* EVENT_CHANNEL_NUMBER */ enum { "DAQ" = 1, "STIM" = 2, "DAQ_STIM" = 3 }; uchar; /* MAX_DAQ_LIST */ uchar; /* TIME_CYCLE */ uchar; /* TIME_UNIT */ uchar; /* PRIORITY */ })*; }; }; taggedunion Daq_Event { "FIXED_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; "VARIABLE" taggedstruct { block "AVAILABLE_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; block "DEFAULT_EVENT_LIST" taggedstruct { ("EVENT" uint)*; }; }; }; struct Pag { uchar; /* MAX_SEGMENTS */ taggedstruct { "FREEZE_SUPPORTED" ; }; }; struct Pgm { enum { "PGM_MODE_ABSOLUTE" = 1, "PGM_MODE_FUNCTIONAL" = 2, "PGM_MODE_ABSOLUTE_AND_FUNCTIONAL" = 3 }; uchar; /* MAX_SECTORS */ uchar; /* MAX_CTO_PGM */ taggedstruct { (block "SECTOR" struct { char[101]; /* SECTOR_NAME */ uchar; /* SECTOR_NUMBER */ ulong; /* Address */ ulong; /* Length */ uchar; /* CLEAR_SEQUENCE_NUMBER */ uchar; /* PROGRAM_SEQUENCE_NUMBER */ uchar; /* PROGRAM_METHOD */ })*; "COMMUNICATION_MODE_SUPPORTED" taggedunion { "BLOCK" taggedstruct { "SLAVE" ; "MASTER" struct { uchar; /* MAX_BS_PGM */ uchar; /* MIN_ST_PGM */ }; }; "INTERLEAVED" uchar; /* QUEUE_SIZE_PGM */ }; }; }; struct Segment { uchar; /* SEGMENT_NUMBER */ uchar; /* number of pages */ uchar; /* ADDRESS_EXTENSION */ uchar; /* COMPRESSION_METHOD */ uchar; /* ENCRYPTION_METHOD */ 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]; /* Name of the Checksum.DLL */ }; }; (block "PAGE" struct { uchar; /* PAGE_NUMBER */ 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; /* references segment that initialises this page */ }; })*; (block "ADDRESS_MAPPING" struct { ulong; /* source address */ ulong; /* destination address */ ulong; /* length */ })*; "PGM_VERIFY" ulong; /* verification value for PGM */ }; }; taggedstruct Common_Parameters { block "PROTOCOL_LAYER" struct Protocol_Layer; block "SEGMENT" struct Segment; block "DAQ" struct Daq; block "PAG" struct Pag; block "PGM" struct Pgm; block "DAQ_EVENT" taggedunion Daq_Event; }; struct CAN_Parameters { uint; /* XCP on CAN version, currentl 0x0100 */ taggedstruct { "CAN_ID_BROADCAST" ulong; /* Auto-detection CAN-ID */ "CAN_ID_MASTER" ulong; /* CMD/STIM CAN-ID */ "CAN_ID_SLAVE" ulong; /* RES/ERR/EV/SERV/DAQ CAN-ID */ "BAUDRATE" ulong; /* Baudrate in Hz */ "SAMPLE_POINT" uchar; /* Sample point in of bit time */ "SAMPLE_RATE" enum { "SINGLE" = 1, "TRIPLE" = 3 }; "BTL_CYCLES" uchar; /* slots per bit time */ "SJW" uchar; "SYNC_EDGE" enum { "SINGLE" = 1, "DUAL" = 2 }; "MAX_DLC_REQUIRED" ; /* master to slave frames */ (block "DAQ_LIST_CAN_ID" struct { uint; /* reference to DAQ_LIST_NUMBER */ taggedstruct { "VARIABLE" ; "FIXED" ulong; /* this DAQ_LIST always on this CAN_ID */ }; })*; }; }; struct SxI_Parameters { uint; /* XCP on SxI version, currently 0x0100 */ ulong; /* BAUDRATE [Hz] */ 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_FILL_BYTE" = 2, "HEADER_LEN_WORD" = 3, "HEADER_LEN_CTR_WORD" = 4, "HEADER_LEN_FILL_WORD" = 5 }; enum { "NO_CHECKSUM" = 0, "CHECKSUM_BYTE" = 1, "CHECKSUM_WORD" = 2 }; }; struct TCP_IP_Parameters { uint; /* XCP on TCP_IP version, currently 0x0100 */ uint; /* PORT */ taggedunion { "HOST_NAME" char[256]; "ADDRESS" char[15]; }; }; struct UDP_Parameters { uint; /* XCP on UDP version, currently 0x0100 */ uint; /* PORT */ taggedunion { "HOST_NAME" char[256]; "ADDRESS" char[15]; }; }; struct ep_parameters { uchar; /* ENDPOINT_NUMBER, not endpoint address */ enum { "BULK_TRANSFER" = 2, "INTERRUPT_TRANSFER" = 3 }; uint; /* wMaxPacketSize: Maximum packet size of endpoint in bytes */ uchar; /* bInterval: polling of endpoint */ 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; /* Recommended size for the host buffer size. The size is defined as multiple of wMaxPacketSize. */ }; }; /* end of ep_parameters */ struct USB_Parameters { uint; /* XCP on USB version e.g. "1.0" = 0x0100 */ uint; /* Vendor ID */ uint; /* Product ID */ uchar; /* Number of interface */ 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 ep_parameters; }; taggedunion { block "IN_EP_RESERR_DAQ_EVSERV" struct ep_parameters; }; taggedstruct { "ALTERNATE_SETTING_NO" uchar; /* Number of alternate setting */ "INTERFACE_STRING_DESCRIPTOR" char[101]; (block "OUT_EP_ONLY_STIM" struct ep_parameters)*; (block "IN_EP_ONLY_DAQ" struct ep_parameters)*; block "IN_EP_ONLY_EVSERV" struct ep_parameters; (block "DAQ_LIST_USB_ENDPOINT" struct { uint; /* reference to DAQ_LIST_NUMBER */ taggedstruct { "FIXED_IN" uchar; /* this DAQ list always ENDPOINT_NUMBER, not endpoint address */ "FIXED_OUT" uchar; /* this STIM list always ENDPOINT_NUMBER, not endpoint address */ }; })*; /* end of DAQ_LIST_USB_ENDPOINT */ }; /* end of optional */ }; struct SIMULINK_Parameters { taggedstruct { "MODEL_NAME" char[64]; }; }; enum packet_assignment_type { "NOT_ALLOWED" = 0, "FIXED" = 1, "VARIABLE_INITIALISED" = 2, "VARIABLE" = 3 }; /* end of packet_assignment_type */ struct buffer { uchar; /* FLX_BUF */ taggedstruct { "MAX_FLX_LEN_BUF" taggedunion { "FIXED" uchar; /* constant value */ "VARIABLE" uchar; /* initial value */ }; /* end of MAX_FLX_LEN_BUF */ block "LPDU_ID" taggedstruct { "FLX_SLOT_ID" taggedunion { "FIXED" uint; "VARIABLE" taggedstruct { "INITIAL_VALUE" uint; }; }; /* end of FLX_SLOT_ID */ "OFFSET" taggedunion { "FIXED" uchar; "VARIABLE" taggedstruct { "INITIAL_VALUE" uchar; }; }; /* end of OFFSET */ "CYCLE_REPETITION" taggedunion { "FIXED" uchar; "VARIABLE" taggedstruct { "INITIAL_VALUE" uchar; }; }; /* end of CYCLE_REPETITION */ "CHANNEL" taggedunion { "FIXED" enum { "A" = 0, "B" = 1 }; "VARIABLE" taggedstruct { "INITIAL_VALUE" enum { "A" = 0, "B" = 1 }; }; }; /* end of CHANNEL */ }; /* end of LPDU_ID */ block "XCP_PACKET" taggedstruct { "CMD" enum packet_assignment_type; /* end of CMD */ "RES_ERR" enum packet_assignment_type; /* end of RES_ERR */ "EV_SERV" enum packet_assignment_type; /* end of EV_SERV */ "DAQ" enum packet_assignment_type; /* end of DAQ */ "STIM" enum packet_assignment_type; /* end of STIM */ }; /* end of XCP_PACKET */ }; }; /* end of buffer */ struct FLX_Parameters { uint; /* XCP on FlexRay version */ /* e.g. "1.0" = 0x0100 */ uint; /* T1_FLX [ms] */ char[256]; /* FIBEX-file */ /* including CHI information */ /* including extension */ /* without path */ char[256]; /* Cluster-ID */ uchar; /* NAX */ enum { "HEADER_NAX" = 0, "HEADER_NAX_FILL" = 1, "HEADER_NAX_CTR" = 2, "HEADER_NAX_FILL3" = 3, "HEADER_NAX_CTR_FILL2" = 4, "HEADER_NAX_LEN" = 5, "HEADER_NAX_CTR_LEN" = 6, "HEADER_NAX_FILL2_LEN" = 7, "HEADER_NAX_CTR_FILL_LEN" = 8 }; enum { "PACKET_ALIGNMENT_8" = 0, "PACKET_ALIGNMENT_16" = 1, "PACKET_ALIGNMENT_32" = 2 }; taggedunion { block "INITIAL_CMD_BUFFER" struct buffer; }; taggedunion { block "INITIAL_RES_ERR_BUFFER" struct buffer; }; taggedstruct { (block "POOL_BUFFER" struct buffer)*; }; }; block "IF_DATA" taggedunion if_data { "CANAPE_EXT" struct { int; /* version number */ taggedstruct { "LINK_MAP" struct { char[256]; /* segment name */ long; /* base address of the segment */ uint; /* address extension of the segment */ uint; /* flag: address is relative to DS */ long; /* offset of the segment address */ uint; /* datatypValid */ uint; /* enum datatyp */ uint; /* bit offset of the segment */ }; "DISPLAY" struct { long; /* display color */ double; /* minimal display value (phys)*/ double; /* maximal display value (phys)*/ }; "VIRTUAL_CONVERSION" struct { char[256]; /* name of the conversion formula */ }; }; }; "CANAPE_MODULE" struct { taggedstruct { ("RECORD_LAYOUT_STEPSIZE" struct { char[256]; /* name of record layout*/ uint; /* stepsize for FNC_VALUES */ uint; /* stepsize for AXIS_PTS_X */ uint; /* stepsize for AXIS_PTS_Y */ uint; /* stepsize for AXIS_PTS_Z */ uint; /* stepsize for AXIS_PTS_4 */ uint; /* stepsize for AXIS_PTS_5 */ })*; }; }; /*********************************************************/ /* XCP */ /*********************************************************/ "XCP" struct { taggedstruct Common_Parameters; /* default parameters */ taggedstruct { block "XCP_ON_CAN" struct { struct CAN_Parameters; /* specific for CAN */ taggedstruct Common_Parameters; /* overruling of default */ }; block "XCP_ON_SxI" struct { struct SxI_Parameters; /* specific for SxI */ taggedstruct Common_Parameters; /* overruling of default */ }; block "XCP_ON_TCP_IP" struct { struct TCP_IP_Parameters; /* specific for TCP_IP */ taggedstruct Common_Parameters; /* overruling of default */ }; block "XCP_ON_UDP_IP" struct { struct UDP_Parameters; /* specific for UDP */ taggedstruct Common_Parameters; /* overruling of default */ }; block "XCP_ON_USB" struct { struct USB_Parameters; /* specific for USB */ taggedstruct Common_Parameters; /* overruling of default */ }; block "XCP_ON_FLX" struct { struct FLX_Parameters; /* specific for FlexRay */ taggedstruct Common_Parameters; /* overruling of default */ }; }; }; }; /end A2ML /begin IF_DATA XCP /begin PROTOCOL_LAYER 0x0100 0x03E8 0x00C8 0x0000 0x0000 0x0000 0x0000 0x0000 0xFC 0x0578 BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE OPTIONAL_CMD ALLOC_ODT_ENTRY OPTIONAL_CMD ALLOC_ODT OPTIONAL_CMD ALLOC_DAQ OPTIONAL_CMD FREE_DAQ OPTIONAL_CMD GET_DAQ_RESOLUTION_INFO OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO OPTIONAL_CMD START_STOP_SYNCH OPTIONAL_CMD START_STOP_DAQ_LIST OPTIONAL_CMD SET_DAQ_LIST_MODE OPTIONAL_CMD WRITE_DAQ OPTIONAL_CMD SET_DAQ_PTR OPTIONAL_CMD GET_CAL_PAGE OPTIONAL_CMD SET_CAL_PAGE OPTIONAL_CMD COPY_CAL_PAGE OPTIONAL_CMD SHORT_DOWNLOAD OPTIONAL_CMD DOWNLOAD_MAX OPTIONAL_CMD DOWNLOAD OPTIONAL_CMD SHORT_UPLOAD OPTIONAL_CMD UPLOAD OPTIONAL_CMD SET_MTA /end PROTOCOL_LAYER /begin DAQ DYNAMIC 0x0000 0x0080 0x00 OPTIMISATION_TYPE_DEFAULT ADDRESS_EXTENSION_FREE IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE 0xFF OVERLOAD_INDICATION_PID PRESCALER_SUPPORTED /begin STIM GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE 0xFF /end STIM /begin TIMESTAMP_SUPPORTED 0x0001 SIZE_DWORD UNIT_1US TIMESTAMP_FIXED /end TIMESTAMP_SUPPORTED /begin EVENT "1 ms" "1 ms" 0x0000 DAQ 0xFF 0x01 0x06 0x00 /end EVENT /end DAQ /begin XCP_ON_UDP_IP 0x0100 0x15B3 ADDRESS "192.168.7.1" /end XCP_ON_UDP_IP /end IF_DATA /begin MOD_PAR "MOD PAR Comment Goes Here" /begin MEMORY_SEGMENT tstCom_cal_impl "tstCom_cal_impl" DATA FLASH INTERN 0x0023F020 0x948 -1 -1 -1 -1 -1 /begin IF_DATA XCP /begin SEGMENT 0x00 0x02 0x00 0x00 0x00 /begin PAGE 0x00 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_NOT_ALLOWED /end PAGE /begin PAGE 0x01 ECU_ACCESS_DONT_CARE XCP_READ_ACCESS_DONT_CARE XCP_WRITE_ACCESS_DONT_CARE /end PAGE /end SEGMENT /end IF_DATA /end MEMORY_SEGMENT /end MOD_PAR /begin MOD_COMMON "Mod Common Comment Here" BYTE_ORDER MSB_LAST ALIGNMENT_BYTE 1 ALIGNMENT_WORD 2 ALIGNMENT_LONG 8 ALIGNMENT_FLOAT32_IEEE 4 ALIGNMENT_FLOAT64_IEEE 8 ALIGNMENT_INT64 4 /end MOD_COMMON /begin CHARACTERISTIC PUMKF /* name */ "Pump characteristic map" /* long identifier */ MAP /* type */ 0x7140 /* address */ DAMOS_KF /* deposit */ 100.0 /* maxdiff */ R_VOLTAGE /* conversion */ 0.0 /* lower limit */ 5000.0 /* upper limit */ MAX_REFRESH 3 15 /* 15 msec */ /begin DEPENDENT_CHARACTERISTIC "sin(X1)" ALPHA /end DEPENDENT_CHARACTERISTIC /begin VIRTUAL_CHARACTERISTIC "sqrt(X1)" B_AREA /end VIRTUAL_CHARACTERISTIC REF_MEMORY_SEGMENT Data1 /begin FUNCTION_LIST NL_ADJUSTMENT FL_ADJUSTMENT SPEED_LIM /end FUNCTION_LIST /begin IF_DATA DIM EXTERNAL INDIRECT /end IF_DATA /begin AXIS_DESCR /* description of X-axis points */ STD_AXIS /* standard axis points */ N /* reference to input quantity */ CON_N /* conversion */ 13 /* maximum number of axis points*/ 0.0 /* lower limit */ 5800.0 /* upper limit */ MAX_GRAD 20.0 /* X-axis: maximum gradient */ /end AXIS_DESCR /begin AXIS_DESCR /* description of Y-axis points */ STD_AXIS /* standard axis points */ AMOUNT /* reference to input quantity */ CON_ME /* conversion */ 17 /* maximum number of axis points*/ 0.0 /* lower limit */ 43.0 /* upper limit */ /end AXIS_DESCR /end CHARACTERISTIC /begin RECORD_LAYOUT DAMOS_KF FNC_VALUES 7 SWORD COLUMN_DIR DIRECT AXIS_PTS_X 3 SWORD INDEX_INCR DIRECT AXIS_PTS_Y 6 UBYTE INDEX_INCR DIRECT NO_AXIS_PTS_X 2 UBYTE NO_AXIS_PTS_Y 5 UBYTE SRC_ADDR_X 1 UBYTE SRC_ADDR_Y 4 UBYTE ALIGNMENT_BYTE 2 /end RECORD_LAYOUT /begin COMPU_VTAB V_GEAR_BOX //"variants of criterion ""Type of Gear Box""" "variants of criterion Type of Gear Box" TAB_VERB 3 17 "Limousine" 39 "Kombi" 41 "Cabrio" DEFAULT_VALUE "unknown" /end COMPU_VTAB /begin VARIANT_CODING VAR_SEPARATOR "." /* PUMKF.1 */ VAR_NAMING NUMERIC /* variant criterion "Car body" with three variants */ /begin VAR_CRITERION Car "Car body" Limousine Kombi Cabrio VAR_MEASUREMENT S_CAR VAR_SELECTION_CHARACTERISTIC V_CAR /end VAR_CRITERION /* variant criterion "Type of gear box" with two variants */ /begin VAR_CRITERION Gear "Type of gear box" Manual Automatic /end VAR_CRITERION /begin VAR_FORBIDDEN_COMB /* forbidden: Limousine-Manual*/ Car Limousine Gear Manual /end VAR_FORBIDDEN_COMB /begin VAR_FORBIDDEN_COMB /* forbidden: Cabrio-Automatic*/ Car Cabrio Gear Automatic /end VAR_FORBIDDEN_COMB /begin VAR_CHARACTERISTIC PUMKF /*define PUMKF as variant coded*/ Gear /* Gear box variants */ /begin VAR_ADDRESS 0x7140 0x7168 /end VAR_ADDRESS /end VAR_CHARACTERISTIC /begin VAR_CHARACTERISTIC NLLM /*define NLLM as variant coded */ Gear Car /* gear box including the 2 variants "Manual" and "Automatic" */ /* car body including the 3 variants "Limousine", "Kombi" and "Cabrio" */ /* four addresses corresponding to the four valid combinations */ /* of criterion 'Gear' and 'Car' (see example for VAR_CRITERION)*/ /begin VAR_ADDRESS 0x8840 0x8858 0x8870 0x8888 /end VAR_ADDRESS /end VAR_CHARACTERISTIC /end VARIANT_CODING /end MODULE /end PROJECT