You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2222 lines
55 KiB

/*
Written by ASAP2 Library v7.0.5
8/6/2017 12:21 PM
Original file: ASAP2Example.a2l
*/
ASAP2_VERSION 1 71
/begin PROJECT Example "Example project"
/begin HEADER
"General project description"
VERSION "0815"
PROJECT_NO _0815
/end HEADER
/begin MODULE Module
"Module description with escaped quotes"
/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 */
};
})*;
(block "EVENT_CAN_ID_LIST" struct { /* At IF_DATA DAQ */
uint; /* reference to EVENT_NUMBER */
taggedstruct { /* exclusive tags */
("FIXED" ulong)*; /* this Event always on this ID */
};
})*;
block "CAN_FD" struct { /* The CAN_FD block definition indicates the use of CAN-FD frames */
taggedstruct {
"MAX_DLC" uint; /* 8, 12, 16, 20, 24, 32, 48 or 64 */
"CAN_FD_DATA_TRANSFER_BAUDRATE" ulong; /* BAUDRATE [Hz] */
"SAMPLE_POINT" uchar; /* sample point receiver [% complete bit time] */
"BTL_CYCLES" uchar; /* BTL_CYCLES [slots per bit time] */
"SJW" uchar; /* length synchr. segment [BTL_CYCLES] */
"SYNC_EDGE" enum {
"SINGLE" = 1, /* on falling edge only */
"DUAL" = 2 /* on falling and rising edge */
};
"MAX_DLC_REQUIRED"; /* master to slave frames always to have DLC = MAX_DLC_for CAN-FD */
"SECONDARY_SAMPLE_POINT" uchar; /* sender sample point [% complete bit time] */
"TRANSCEIVER_DELAY_COMPENSATION" enum {
"OFF" = 0,
"ON" = 1
};
};
};
};
};
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
};
taggedstruct {
block "FRAMING" struct {
uchar; /* SYNC */
uchar; /* ESC */
};
};
};
"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. */
};
};
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 */
};
})*;
};
};
enum packet_assignment_type {
"NOT_ALLOWED" = 0,
"FIXED" = 1,
"VARIABLE_INITIALISED" = 2,
"VARIABLE" = 3
};
struct buffer {
uchar; /* FLX_BUF */
taggedstruct {
"MAX_FLX_LEN_BUF" taggedunion {
"FIXED" uchar; /* constant value */
"VARIABLE" uchar; /* initial value */
};
block "LPDU_ID" taggedstruct {
"FLX_SLOT_ID" taggedunion {
"FIXED" uint;
"VARIABLE" taggedstruct {
"INITIAL_VALUE" uint;
};
};
"OFFSET" taggedunion {
"FIXED" uchar;
"VARIABLE" taggedstruct {
"INITIAL_VALUE" uchar;
};
};
"CYCLE_REPETITION" taggedunion {
"FIXED" uchar;
"VARIABLE" taggedstruct {
"INITIAL_VALUE" uchar;
};
};
"CHANNEL" taggedunion {
"FIXED" enum {
"A" = 0,
"B" = 1
};
"VARIABLE" taggedstruct {
"INITIAL_VALUE" enum {
"A" = 0,
"B" = 1
};
};
};
};
block "XCP_PACKET" taggedstruct {
"CMD" enum packet_assignment_type;
"RES_ERR" enum packet_assignment_type;
"EV_SERV" enum packet_assignment_type;
"DAQ" enum packet_assignment_type;
"STIM" enum packet_assignment_type;
};
};
};
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 {
"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 */
};
};
};
"ASAP1B_CCP" taggedstruct {
(block "SOURCE" struct {
struct {
char[101]; /* Name of the DAQ list (data acquisition list), measurement source */
int; /* Period definition : Basic scaling unit in CSE */
long; /* Period definition : Rate in Scaling Units */
};
taggedstruct {
"DISPLAY_IDENTIFIER" char[32]; /* display identifier of DAQ list*/
block "QP_BLOB" struct {
uint; /* Number of the DAQ list 0..n */
taggedstruct {
"LENGTH" uint; /* Length of the DAQ list, maximum number of the useable ODTs */
"CAN_ID_VARIABLE" ; /* CAN-Message-ID is variable */
"CAN_ID_FIXED" ulong; /* CAN-Message-ID of the DTOs if fixed */
("RASTER" uchar)*; /* Supported CCP Event Channel Names of this DAQ List */
("EXCLUSIVE" int)*; /* Exclusion of other DAQ-Lists */
"REDUCTION_ALLOWED" ; /* Data reduction possible */
"FIRST_PID" uchar; /* First Packet ID (PID) of this DAQ List */
};
};
}; /* optional parameters for this DAQ list */
})*; /* DAQ list description*/
(block "RASTER" struct {
char[101]; /* CCP Event Channel Name */
char[9]; /* Short Display Name of the Event Channel Name */
uchar; /* Event Channel No., used for CCP START_STOP) */
int; /* Period definition : basic scaling unit in CSE as defined in ASAP1b */
long; /* ECU sample rate of the event channel */
taggedstruct {
("EXCLUSIVE" uchar)*; /* Exclusion of other CCP Event Channels */
}; /* optional parameters*/
})*; /* Event channel description*/
(block "EVENT_GROUP" struct {
char[101]; /* Event group name */
char[9]; /* Short name for the event group */
taggedstruct {
("RASTER" uchar)*; /* event channel number*/
}; /* list of all event channels beloging to the group*/
})*; /* Group several event channels to form one combined event*/
block "SEED_KEY" struct {
char[256]; /* Name of the Seed&Key DLL for CAL Priviledge, including file-Extension without path */
char[256]; /* Name of the Seed&Key DLL for DAQ Priviledge, including file-Extension without path */
char[256]; /* Name of the Seed&Key DLL for PGM Priviledge, including file-Extension without path */
}; /* Description of the authentification process*/
block "CHECKSUM" struct {
char[256]; /* Name of the Checksum DLL representing the ECU Algorithm, including file-Extension without path */
}; /* Description of the checksum calculation process*/
block "TP_BLOB" struct {
uint; /* CCP Version, High Byte: Version, Low Byte : subversion (dec.) */
uint; /* Blob-Version, High Byte: Version, Low Byte : subversion (dec.) */
ulong; /* CAN-Message ID for 'Transmitting to ECU (CRM)' */
ulong; /* CAN-Message ID for 'Receiving from ECU (DTM)' */
uint; /* Logical CCP-Address of the (station address) */
uint; /* Byte order of Multiple-byte-items 1 = high Byte first, 2 = low byte first */
taggedstruct {
block "CAN_PARAM" struct {
uint; /* Quartz freq. of the elec. control unit */
uchar; /* BTR0: Bit timing register */
uchar; /* BTR1: Bit timing register */
}; /* CAN parameters*/
"BAUDRATE" ulong; /* Baud rate in Hz. */
"SAMPLE_POINT" uchar; /* sampling point of time in percent */
"SAMPLE_RATE" uchar; /* number of samples per Bit (1 oder 3) */
"BTL_CYCLES" uchar; /* number of BTL-cycles */
"SJW" uchar; /* SJW-parameter in BTL-cycles */
"SYNC_EDGE" enum {
"SINGLE" = 0,
"DUAL" = 1
}; /* Synchronisation (SINGLE: on falling edge only, DUAL: on falling and rising edge)*/
"DAQ_MODE" enum {
"ALTERNATING" = 0,
"BURST" = 1
}; /* mode of cylcic data acquisition (ALTERNATING: ECU is sending one ODT per cycle, BURST: ECU is sending a complete DAQ)*/
"BYTES_ONLY" ; /* ECU supports max. elements of one Byte size otherwise ECU supports different dataTypes */
"RESUME_SUPPORTED" ; /* ECU supports the Resume function */
"STORE_SUPPORTED" ; /* ECU supports the Store function */
"CONSISTENCY" enum {
"DAQ" = 0,
"ODT" = 1
}; /* guaranteed consistency (DAQ: consistency of a complete DAQ is guaranteed, ODT: consistency of a complete ODT is guaranteed)*/
"ADDRESS_EXTENSION" enum {
"DAQ" = 0,
"ODT" = 1
}; /* ECU supported address extension (DAQ: only one address extension within a DAQ, ODT: only one address extension within an ODT)*/
block "CHECKSUM_PARAM" struct {
uint; /* checksum calculation procedure standard types not yet defined, if greater of equal 1000 : manufacturer specific */
ulong; /* Maximum block length used by an ASAP1a-CCP command, for checksum calculation procedure */
taggedstruct {
"CHECKSUM_CALCULATION" enum {
"ACTIVE_PAGE" = 0,
"BIT_OR_WITH_OPT_PAGE" = 1
}; /* checksum calculation method*/
}; /* optional*/
}; /* checksum parameters */
(block "DEFINED_PAGES" struct {
struct {
uint; /* logical number of the memory page (1,2,..) */
char[101]; /* name of the memory page */
uint; /* adress-Extension of the memory page (only Low Byte significant) */
ulong; /* base address of the memory page */
ulong; /* length of the memory page in Bytes */
}; /* fixed parameters*/
taggedstruct {
"RAM" ; /* memory page in RAM */
"ROM" ; /* memory page in ROM */
"FLASH" ; /* memory page in FLASH */
"EEPROM" ; /* memory page in EEPROM */
"RAM_INIT_BY_ECU" ; /* memory page is initialised by ECU start-up */
"RAM_INIT_BY_TOOL" ; /* RAM- memory page is initialised by the MCS */
"AUTO_FLASH_BACK" ; /* RAM memory page is automatically flashed back */
"FLASH_BACK" ; /* feature available to flash back the RAM memory page */
"DEFAULT" ; /* memory page is standard (fallback mode) */
}; /* optional parameters */
})*; /* memory page description */
("OPTIONAL_CMD" uint)*; /* CCP-Code of the optional command available */
}; /* optional parameters */
};
("ADDR_MAPPING" struct {
ulong; /* base address of the memory segment to be mapped*/
ulong; /* address to which the base address is to be mapped*/
ulong; /* length of the segment to be mapped*/
})*; /* address mapping for memory segment*/
"DP_BLOB" struct {
uint; /* address extension of the calibration data (only low byte significant) */
ulong; /* base address of the calibration data */
ulong; /* number of Bytes belonging to the calibration data */
}; /* address information for calibration objects and memory segments*/
"KP_BLOB" struct {
uint; /* address extension of the online data (only Low Byte significant) */
ulong; /* base address of the online data */
ulong; /* number of bytes belonging to the online data (1,2 or 4) */
taggedstruct {
("RASTER" uchar)*; /* event channel number*/
};
}; /* address information for measure objects (online data)*/
};
"CANAPE_EXT" struct {
int;
taggedstruct {
"LINK_MAP" struct {
char[256];
long;
uint;
uint;
long;
uint;
uint;
uint;
};
"DISPLAY" struct { long; double; double; };
"VIRTUAL_CONVERSION" struct { char[256]; };
};
};
"CANAPE_ADDRESS_UPDATE" taggedstruct {
// to be used in MODULE
// to get start address of EPK
("EPK_ADDRESS" struct {
char[1024]; // name of the corresponding symbol in MAP file
long; // optional address offset
})*;
// to be used in MODULE
// to get start address of EPK
"ECU_CALIBRATION_OFFSET" struct {
char[1024]; // name of the corresponding symbol in MAP file
long; // optional address offset
};
// to be used in MODULE
// to get start address and size of pointer tables
(block "CALIBRATION_METHOD" taggedunion {
"AUTOSAR_SINGLE_POINTERED" struct {
char[1024]; // MAP symbol name for pointer table in RAM
long; // optional address offset
taggedstruct {
"ORIGINAL_POINTER_TABLE" struct {
char[1024]; // MAP symbol name for pointer table in FLASH
long; // optional address offset
};
};
};
"InCircuit2" struct {
char[1024]; // MAP symbol name for pointer table in RAM
long; // optional address offset
taggedstruct {
"ORIGINAL_POINTER_TABLE" struct {
char[1024]; // MAP symbol name for pointer table in FLASH
long; // optional address offset
};
"FLASH_SECTION" struct {
ulong; // start address of flash section
ulong; // length of flash section
}
};
};
})*;
// to be used in MEMORY_SEGMENT
// to get start address and size of the segment and mapped ranges for XCP
block "MAP_SYMBOL" taggedstruct {
"FIRST" struct {
char[1024]; // symbol name of the corresponding segment in MAP file
long; // offset;
};
"LAST" struct {
char[1024]; // symbol name of the corresponding segment in MAP file
long; // offset;
};
("ADDRESS_MAPPING_XCP" struct {
char[1024]; // symbol name of source range in MAP file
char[1024]; // symbol name of destination range in MAP file
})*;
};
// to be used in MODULE
// workaround to avoid direct usage in MEMORY_SEGMENT (see above)
// (INCA cannot read ASAP2 files with unknown IF_DATA in MEMORY_SEGMENTs)
// !! name of the memory segment must be unique !!
(block "MEMORY_SEGMENT" struct {
char[1024]; // name of the memory segment
taggedstruct {
"FIRST" struct {
char[1024]; // symbol name of the corresponding segment in MAP file
long; // offset;
};
"LAST" struct {
char[1024]; // symbol name of the corresponding segment in MAP file
long; // offset;
};
("ADDRESS_MAPPING_XCP" struct {
char[1024]; // symbol name of source range in MAP file
char[1024]; // symbol name of destination range in MAP file
})*;
};
})*;
};
};
/end A2ML
/begin MOD_PAR
"Module parameter description"
VERSION "Test version 01.01.2013"
SUPPLIER "jnsoft"
CUSTOMER "Customer"
CUSTOMER_NO "1234"
USER "joe nachbaur"
PHONE_NO "+49 171 1234567890"
ECU "Engine control"
CPU_TYPE "Intel x"
EPK "EPROM identifier test"
ADDR_EPK 0x0
NO_OF_INTERFACES 1
SYSTEM_CONSTANT "CONST_PI" "3.14159"
SYSTEM_CONSTANT "CONST_PI_2" "$(CONST_PI)/2"
SYSTEM_CONSTANT "CONST_PI_REF_2" "$(CONST_PI_2)/2"
SYSTEM_CONSTANT "CONST_SIN_PI_2" "sin($(CONST_PI_REF_2))"
SYSTEM_CONSTANT "CONST_SIN_COS_PI" "1.24242 * (sin ( $(CONST_PI) ) + cos ( $(CONST_PI) ))"
SYSTEM_CONSTANT "Simple text" "test text test"
/begin MEMORY_SEGMENT CALIBRATIONRAM1
"Calibration RAM segment 1"
DATA FLASH INTERN 0x0 0x8000 -1 -1 -1 -1 -1
/begin IF_DATA XCP
/begin SEGMENT
0x0
0x2
0x0
0x0
0x0
/begin CHECKSUM
XCP_ADD_12
/end CHECKSUM
/begin PAGE
0x0
ECU_ACCESS_WITH_XCP_ONLY
XCP_READ_ACCESS_WITH_ECU_ONLY
XCP_WRITE_ACCESS_NOT_ALLOWED
/end PAGE
/begin PAGE
0x1
ECU_ACCESS_WITH_XCP_ONLY
XCP_READ_ACCESS_WITH_ECU_ONLY
XCP_WRITE_ACCESS_WITH_ECU_ONLY
/end PAGE
// /begin ADDRESS_MAPPING 0x0 0x8000 0x8000 /end ADDRESS_MAPPING
/end SEGMENT
/end IF_DATA
/begin IF_DATA CANAPE_ADDRESS_UPDATE
/begin MAP_SYMBOL
FIRST
"ReferencePage"
0
LAST
"ReferencePage"
0
ADDRESS_MAPPING_XCP
"ReferencePage"
"WorkingPage"
/end MAP_SYMBOL
/end IF_DATA
/end MEMORY_SEGMENT
/begin MEMORY_SEGMENT CALIBRATIONRAM2
"Calibration RAM segment 2"
DATA FLASH INTERN 0x8000 0x1000 -1 -1 -1 -1 -1
/begin IF_DATA XCP
/begin SEGMENT
0x1
0x2
0x0
0x0
0x0
/begin CHECKSUM
XCP_ADD_12
/end CHECKSUM
/begin PAGE
0x0
ECU_ACCESS_WITH_XCP_ONLY
XCP_READ_ACCESS_WITH_ECU_ONLY
XCP_WRITE_ACCESS_NOT_ALLOWED
/end PAGE
/begin PAGE
0x1
ECU_ACCESS_WITH_XCP_ONLY
XCP_READ_ACCESS_WITH_ECU_ONLY
XCP_WRITE_ACCESS_WITH_ECU_ONLY
/end PAGE
// /begin ADDRESS_MAPPING 0x0 0x8000 0x8000 /end ADDRESS_MAPPING
/end SEGMENT
/end IF_DATA
/end MEMORY_SEGMENT
/end MOD_PAR
/begin IF_DATA CANAPE_ADDRESS_UPDATE
EPK_ADDRESS
"EpromIdentifier"
0
/begin CALIBRATION_METHOD AUTOSAR_SINGLE_POINTERED
"Pointer_Table_Work_RAM"
0
ORIGINAL_POINTER_TABLE
"Pointer_Table_Base"
0
/end CALIBRATION_METHOD
/begin CALIBRATION_METHOD InCircuit2
"Pointer_Table_Work_FLASH"
0
ORIGINAL_POINTER_TABLE
"Pointer_Table_Base"
0
FLASH_SECTION
0
0x10000
/end CALIBRATION_METHOD
/begin MEMORY_SEGMENT
"CALRAM"
FIRST
"CALRAM_START"
0
LAST
"CALRAM_LAST"
0
/end MEMORY_SEGMENT
/end IF_DATA
/begin IF_DATA ASAP1B_CCP
/begin SOURCE
"1 ms"
3
1
/begin QP_BLOB
1
LENGTH 10
CAN_ID_FIXED 0x710
RASTER 0
/end QP_BLOB
/end SOURCE
/begin SOURCE
"10 ms"
4
1
/begin QP_BLOB
2
LENGTH 10
CAN_ID_FIXED 0x720
RASTER 1
/end QP_BLOB
/end SOURCE
/begin SOURCE
"100"
5
1
/begin QP_BLOB
3
LENGTH 100
CAN_ID_FIXED 0x728
RASTER 2
/end QP_BLOB
/end SOURCE
/begin RASTER
"1 ms"
"1_ms"
0
3
1
/end RASTER
/begin RASTER
"10 ms"
"10_ms"
1
4
1
/end RASTER
/begin RASTER
"100 ms"
"100_ms"
2
5
1
/end RASTER
/begin SEED_KEY
/* seed&key dll for CAL privilege */ ""
/* seed&key dll for DAQ privilege */ ""
/* seed&key dll for PGM privilege */ ""
/end SEED_KEY
/begin TP_BLOB
/* CCP version */ 0x201
/* Blob version */ 0x202
/* CAN msg ID - recv */ 0x7ef
/* CAN msg ID - send */ 0x7ee
/* station address */ 0x1234
/* byte order */ 2
BAUDRATE 1000000
DAQ_MODE BURST
CONSISTENCY DAQ
/begin CHECKSUM_PARAM
/* algorithm */ 0x8001 /* M_16_BIT_BY_ADD8 */
/* limit */ 0xFFFFFFFF
CHECKSUM_CALCULATION BIT_OR_WITH_OPT_PAGE
/end CHECKSUM_PARAM
/begin DEFINED_PAGES
1
"reference page"
/* address ext. */ 0x00
/* base address */ 0x0
/* page length */ 0x8000
FLASH
/end DEFINED_PAGES
/begin DEFINED_PAGES
2
"working page"
/* address ext. */ 0x00
/* base address */ 0x00008000
/* page length */ 0x8000
RAM
FLASH_BACK
RAM_INIT_BY_ECU
/end DEFINED_PAGES
OPTIONAL_CMD 0x12 /* GET_SEED */
OPTIONAL_CMD 0x13 /* UNLOCK */
OPTIONAL_CMD 0x23 /* DNLOAD_6 */
OPTIONAL_CMD 0x0F /* SHORT_UP */
OPTIONAL_CMD 0x11 /* SELECT_CAL_PAGE */
OPTIONAL_CMD 0x0C /* SET_S_STATUS */
OPTIONAL_CMD 0x0D /* GET_S_STATUS */
OPTIONAL_CMD 0x0E /* BUILD_CHKSUM */
OPTIONAL_CMD 0x10 /* CLEAR_MEMORY */
OPTIONAL_CMD 0x18 /* PROGRAM */
OPTIONAL_CMD 0x22 /* PROGRAM_6 */
OPTIONAL_CMD 0x19 /* MOVE */
OPTIONAL_CMD 0x05 /* TEST */
OPTIONAL_CMD 0x09 /* GET_ACTIVE_CAL_PAGE */
OPTIONAL_CMD 0x08 /* START_STOP_ALL */
OPTIONAL_CMD 0x20 /* DIAG_SERVICE */
/end TP_BLOB
/end IF_DATA
/begin IF_DATA XCP
/begin PROTOCOL_LAYER
0x100
100 1000 1000 1000 1000 0 0
0xFF
0x400
BYTE_ORDER_MSB_LAST
ADDRESS_GRANULARITY_BYTE
OPTIONAL_CMD PROGRAM_PREPARE
OPTIONAL_CMD GET_DAQ_RESOLUTION_INFO
OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO
OPTIONAL_CMD GET_DAQ_CLOCK
OPTIONAL_CMD GET_DAQ_LIST_MODE
OPTIONAL_CMD WRITE_DAQ_MULTIPLE
OPTIONAL_CMD COPY_CAL_PAGE
OPTIONAL_CMD GET_CAL_PAGE
OPTIONAL_CMD SET_CAL_PAGE
OPTIONAL_CMD GET_PAG_PROCESSOR_INFO
OPTIONAL_CMD SHORT_DOWNLOAD
OPTIONAL_CMD DOWNLOAD_NEXT
OPTIONAL_CMD DOWNLOAD_MAX
OPTIONAL_CMD PROGRAM_NEXT
OPTIONAL_CMD PROGRAM_MAX
OPTIONAL_CMD BUILD_CHECKSUM
OPTIONAL_CMD SHORT_UPLOAD
OPTIONAL_CMD UPLOAD
OPTIONAL_CMD SET_MTA
OPTIONAL_CMD GET_SEED
OPTIONAL_CMD UNLOCK
OPTIONAL_CMD GET_ID
COMMUNICATION_MODE_SUPPORTED BLOCK SLAVE MASTER 0x2A 0x00
/* SEED_AND_KEY_EXTERNAL_FUNCTION "C:\somewhere.dll" */
/end PROTOCOL_LAYER
/begin DAQ
DYNAMIC
0x4
0x4
0x0
OPTIMISATION_TYPE_DEFAULT
ADDRESS_EXTENSION_FREE
IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE
GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE
0xF8
OVERLOAD_INDICATION_PID
/begin STIM
GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE
0xF8
/end STIM
/begin TIMESTAMP_SUPPORTED
0x1
SIZE_DWORD
UNIT_10US
/end TIMESTAMP_SUPPORTED
/begin DAQ_LIST
0
DAQ_LIST_TYPE DAQ
MAX_ODT 2
MAX_ODT_ENTRIES 2
EVENT_FIXED 0
/begin PREDEFINED
/begin ODT 0
ODT_ENTRY 0 0x4000 0x00 0x01 0xFF
ODT_ENTRY 1 0x4001 0x00 0x01 0xFF
/end ODT
/end PREDEFINED
/end DAQ_LIST
/begin DAQ_LIST
1
DAQ_LIST_TYPE DAQ
MAX_ODT 2
MAX_ODT_ENTRIES 5
EVENT_FIXED 1
/end DAQ_LIST
/begin EVENT
"100 ms"
"100 ms"
0
DAQ
1
100
6
0
/end EVENT
/begin EVENT
"10 ms"
"10 ms"
1
DAQ
1
10
6
0
/end EVENT
/begin EVENT
"1 ms"
"1 ms"
2
DAQ
1
1
6
0
/end EVENT
/begin EVENT
"free"
"free"
3
DAQ
1
0
0
0
/end EVENT
/end DAQ
/begin PAG
0x1
FREEZE_SUPPORTED
/end PAG
/begin PGM
PGM_MODE_ABSOLUTE
0x14 0xff
COMMUNICATION_MODE_SUPPORTED BLOCK SLAVE MASTER 0x2A 0x00
/begin SECTOR
"Sector"
0x0 0xA0000000 0x20000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x1 0xA0020000 0x20000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x2 0xA0040000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x3 0xA0080000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x4 0xA00C0000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x5 0xA0100000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x6 0xA0140000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x7 0xA0180000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x8 0xA01C0000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x9 0xA01C0000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0xA 0xA0200000 0x10000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0xB 0xA0210000 0x10000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0xC 0xA0220000 0x20000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0xD 0xA0240000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0xE 0xA0280000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0xF 0xA02C0000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x10 0xA0300000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x11 0xA0340000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x12 0xA0380000 0x40000
0x0 0x0 0x0
/end SECTOR
/begin SECTOR
"Sector"
0x13 0xA03C0000 0x40000
0x0 0x0 0x0
/end SECTOR
/end PGM
/begin XCP_ON_TCP_IP
0x100
1800
ADDRESS "192.168.0.2"
/end XCP_ON_TCP_IP
/begin XCP_ON_UDP_IP
0x100
21000
ADDRESS "192.168.0.2"
/end XCP_ON_UDP_IP
/begin XCP_ON_SxI
0x0104
115200
ASYNCH_FULL_DUPLEX_MODE PARITY_NONE ONE_STOP_BIT
/begin FRAMING
0x01 0x27
/end FRAMING
SYNCH_FULL_DUPLEX_MODE_DWORD
SYNCH_MASTER_SLAVE_MODE_DWORD
HEADER_LEN_FILL_WORD
CHECKSUM_WORD
/end XCP_ON_SxI
/begin XCP_ON_CAN
0x100
CAN_ID_MASTER 0xDBFFB610
CAN_ID_SLAVE 0xDBFFB611
// CAN_ID_BROADCAST 0x100
BAUDRATE 1000000
SAMPLE_POINT 75
SAMPLE_RATE SINGLE
BTL_CYCLES 8
SJW 0x2
MAX_DLC_REQUIRED
SYNC_EDGE SINGLE
/begin DAQ_LIST_CAN_ID
0
FIXED 0x80000310
/end DAQ_LIST_CAN_ID
/begin DAQ_LIST_CAN_ID
1
FIXED 0x80000320
/end DAQ_LIST_CAN_ID
/begin DAQ_LIST_CAN_ID
2
FIXED 0x80000330
/end DAQ_LIST_CAN_ID
/begin DAQ_LIST_CAN_ID
3
FIXED 0x80000340
/end DAQ_LIST_CAN_ID
/begin EVENT_CAN_ID_LIST
0x00
FIXED 0x00000778
/end EVENT_CAN_ID_LIST
/begin EVENT_CAN_ID_LIST
0x01
FIXED 0x00000779
/end EVENT_CAN_ID_LIST
/begin EVENT_CAN_ID_LIST
0x02
FIXED 0x0000077A
/end EVENT_CAN_ID_LIST
/begin EVENT_CAN_ID_LIST
0x03
FIXED 0x0000077B FIXED 0x077C
/end EVENT_CAN_ID_LIST
/begin PROTOCOL_LAYER
0x100
100 1000 1000 1000 1000 0 0
0x08
0x08
/end PROTOCOL_LAYER
/*
/begin CAN_FD
MAX_DLC 64
CAN_FD_DATA_TRANSFER_BAUDRATE 4000000
MAX_DLC_REQUIRED
/end CAN_FD
*/
/end XCP_ON_CAN
/begin XCP_ON_USB
0x100
0x108C
0xEDC
2
HEADER_LEN_FILL_WORD
/begin OUT_EP_CMD_STIM
0x1
BULK_TRANSFER
0x40
0
MESSAGE_PACKING_SINGLE
ALIGNMENT_32_BIT
/end OUT_EP_CMD_STIM
/begin IN_EP_RESERR_DAQ_EVSERV
0x1
BULK_TRANSFER
0x40
0
MESSAGE_PACKING_SINGLE
ALIGNMENT_32_BIT
/end IN_EP_RESERR_DAQ_EVSERV
/begin OUT_EP_ONLY_STIM
0x2
BULK_TRANSFER
0x40
0
MESSAGE_PACKING_MULTIPLE
ALIGNMENT_32_BIT
/end OUT_EP_ONLY_STIM
/begin IN_EP_ONLY_DAQ
0x2
BULK_TRANSFER
0x40
0
MESSAGE_PACKING_STREAMING
ALIGNMENT_32_BIT
/end IN_EP_ONLY_DAQ
/begin IN_EP_ONLY_EVSERV
0x3
INTERRUPT_TRANSFER
0x40
16
MESSAGE_PACKING_SINGLE
ALIGNMENT_32_BIT
/end IN_EP_ONLY_EVSERV
/begin DAQ_LIST_USB_ENDPOINT
0x0
/end DAQ_LIST_USB_ENDPOINT
/begin DAQ_LIST_USB_ENDPOINT
0x1
/end DAQ_LIST_USB_ENDPOINT
/begin DAQ_LIST_USB_ENDPOINT
0x2
/end DAQ_LIST_USB_ENDPOINT
/end XCP_ON_USB
/end IF_DATA
/begin MOD_COMMON
"Characteristic maps always deposited in same mode"
BYTE_ORDER MSB_LAST
DEPOSIT ABSOLUTE
DATA_SIZE 16
ALIGNMENT_BYTE 1
ALIGNMENT_WORD 2
ALIGNMENT_LONG 4
ALIGNMENT_FLOAT32_IEEE 4
ALIGNMENT_FLOAT64_IEEE 4
ALIGNMENT_INT64 8
/end MOD_COMMON
/begin CHARACTERISTIC SINGLE_BIG_VALUE
"SINGLE_BIG_VALUE description"
VALUE
0x1004
_LONG
0
BIGVALUES
0 100000
PHYS_UNIT "m/s"
/begin ANNOTATION
ANNOTATION_ORIGIN "SINGLE_BIG_VALUE annotation origin"
ANNOTATION_LABEL "SINGLE_BIG_VALUE annotation label"
/begin ANNOTATION_TEXT
"SINGLE_BIG_VALUE annotation text"
/end ANNOTATION_TEXT
/end ANNOTATION
SYMBOL_LINK "Link_To_Variable" 0
MODEL_LINK "system/sub-system/object.name"
/end CHARACTERISTIC
/begin CHARACTERISTIC SINGLE_VALUE_LINEAR
"SINGLE_VALUE_LINEAR description"
VALUE
0x800
_UBYTE
0
LINEAR
0 1000
/end CHARACTERISTIC
/begin CHARACTERISTIC SINGLE_VALUE
"SINGLE_VALUE description"
VALUE
0x1000
_LONG
0
SMALLVALUES
0.2 0.8
FORMAT "%8.4"
PHYS_UNIT "m/s"
EXTENDED_LIMITS 0 1
/end CHARACTERISTIC
/begin CHARACTERISTIC SINGLE_VALUE_ADAPTIVE
"SINGLE_VALUE adaptive description"
VALUE
0x1000
_LONG
0
SMALLVALUES
0.2 0.8
MAX_REFRESH 6 30
FORMAT "%8.4"
PHYS_UNIT "m/s"
READ_ONLY
EXTENDED_LIMITS 0 1
/end CHARACTERISTIC
/begin CHARACTERISTIC SINGLE_VERBAL
"SINGLE_VERBAL description"
VALUE
0x32
_UBYTE
0
VERBAL
0 255
/end CHARACTERISTIC
/begin CHARACTERISTIC SINGLE_VERBAL_RANGE
"SINGLE_VERBAL_RANGE description"
VALUE
0x33
_UBYTE
0
RANGE_BYTE
0 255
/end CHARACTERISTIC
/begin CHARACTERISTIC EPKID
"EEPROM identifier"
ASCII
0x0
_UBYTE
0
IDENTITY
0 255
NUMBER 32
ENCODING UTF8
/begin IF_DATA ASAP1B_CCP DP_BLOB 0x00 0x00 32 /end IF_DATA
/end CHARACTERISTIC
/begin CHARACTERISTIC VAL_BLK_NUMERIC
"VAL_BLK_NUMERIC description"
VAL_BLK
0x33
_UBYTE
0
IDENTITY
0 255
NUMBER 31
/end CHARACTERISTIC
/begin CHARACTERISTIC VAL_BLK_VERBAL
"VAL_BLK_VERBAL description"
VAL_BLK
0x33
_UBYTE
0
VERBAL
0 255
NUMBER 31
/end CHARACTERISTIC
/begin RECORD_LAYOUT RL_DEMO_CURVE_AXIS
NO_AXIS_PTS_X 1 UWORD
AXIS_PTS_X 2 UWORD INDEX_INCR DIRECT
/end RECORD_LAYOUT
/begin AXIS_PTS
DEMO_CURVE_AXIS
"DEMO_CURVE_AXIS Description"
0x300
NO_INPUT_QUANTITY
RL_DEMO_CURVE_AXIS
1
IDENTITY
7
0
6553.5
DEPOSIT ABSOLUTE
/end AXIS_PTS
/begin RECORD_LAYOUT RL_DEMO_CURVE_REF_AXIS
FNC_VALUES 1 UWORD COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin CHARACTERISTIC DEMO_CURVE_REF_AXIS
"DEMO_CURVE_REF_AXIS Description"
CURVE
0x200
RL_DEMO_CURVE_REF_AXIS
1
IDENTITY
0
1000
FORMAT "%10.4"
/begin AXIS_DESCR
COM_AXIS
NO_INPUT_QUANTITY
IDENTITY
7
0
6553.5
AXIS_PTS_REF DEMO_CURVE_AXIS
/end AXIS_DESCR
/end CHARACTERISTIC
/begin CHARACTERISTIC DEMO_CURVE
"CURVE description"
CURVE
0x64
CURVE_LAYOUT
0
IDENTITY
0 100
EXTENDED_LIMITS 0 255
/begin AXIS_DESCR
FIX_AXIS
revolution
NO_COMPU_METHOD
11
0 20000
FORMAT "%4.0"
PHYS_UNIT "rpm"
FIX_AXIS_PAR_DIST 0 2000 11
/end AXIS_DESCR
/begin ANNOTATION
ANNOTATION_LABEL "Calibration Note"
/begin ANNOTATION_TEXT
"Calibration Text"
/end ANNOTATION_TEXT
/end ANNOTATION
/end CHARACTERISTIC
/begin CHARACTERISTIC DEMO_MAP
"MAP description"
MAP
0x7C
MAP_LAYOUT
0
IDENTITY
0 100
EXTENDED_LIMITS 0 255
/begin AXIS_DESCR
FIX_AXIS
revolution
NO_COMPU_METHOD
11
0 20000
FORMAT "%4.0"
PHYS_UNIT "rpm"
FIX_AXIS_PAR_DIST 0 2000 11
/end AXIS_DESCR
/begin AXIS_DESCR
FIX_AXIS
speed
NO_COMPU_METHOD
11
0 360
FORMAT "%8.2"
PHYS_UNIT "mph"
FIX_AXIS_PAR_DIST 0 36 11
/end AXIS_DESCR
/begin ANNOTATION
ANNOTATION_LABEL "Calibration Note"
/begin ANNOTATION_TEXT
"Calibration Text"
/end ANNOTATION_TEXT
/end ANNOTATION
/end CHARACTERISTIC
/begin MEASUREMENT bit1_2_3
"bit1&2&3 description"
UBYTE
VERBAL
0 0
0 100
ECU_ADDRESS 0xC00000
BIT_MASK 0x7
/begin IF_DATA XCP
/begin DAQ_EVENT
DEFAULT_EVENT_LIST EVENT 0001
/end DAQ_EVENT
/end IF_DATA
/begin IF_DATA XCPplus 0x0103 /* IF_DATA XCP version */
/begin DAQ_EVENT VARIABLE
/begin AVAILABLE_EVENT_LIST
EVENT 0001 EVENT 0002
/end AVAILABLE_EVENT_LIST
/begin DEFAULT_EVENT_LIST
EVENT 0001
/end DEFAULT_EVENT_LIST
/begin CONSISTENCY_EVENT_LIST
EVENT 0001
/end CONSISTENCY_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/begin IF_DATA ASAP1B_CCP KP_BLOB 0x00 0xC35E 0x1 RASTER 1 /end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT byte_10_array
"single byte measurement value array (10x1)
ARRAY_SIZE=10"
SBYTE
IDENTITY_SMALL
0 0
-1.26 1.26
ECU_ADDRESS 0xC00001
MATRIX_DIM 10 1 1
/begin IF_DATA XCPplus 0x0103 /* IF_DATA XCP version */
/begin DAQ_EVENT FIXED_EVENT_LIST
EVENT 0001 EVENT 0002
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Float32_8x4_array
"float measurement value array (8x4)
MATRIX_DIM = 8 4 1"
FLOAT32_IEEE
IDENTITY
0 0
-.08 .08
ECU_ADDRESS 0xC0000B
MATRIX_DIM 8 4
/end MEASUREMENT
/begin MEASUREMENT revolution
"revolution description"
SWORD
IDENTITY
0 0
0 20000
PHYS_UNIT "rpm"
ECU_ADDRESS 0xC01000
/end MEASUREMENT
/begin MEASUREMENT speed
"Measures and computes values defined by a 1:1 conversion"
FLOAT32_IEEE
IDENTITY
0 0
0 360
PHYS_UNIT "mph"
ECU_ADDRESS 0xC00200
/end MEASUREMENT
/begin MEASUREMENT speed_by_formula
"Measures and computes values defined by a C-style formula"
SWORD
C_STYLE_FORMULA
0 0
-1000 1000
ECU_ADDRESS 0xC00204
/end MEASUREMENT
/begin MEASUREMENT speed_by_interpolation
"Measures and computes values defined by a data table"
UBYTE
INTERPOLATION
0 0
0 360
ECU_ADDRESS 0xC00206
/end MEASUREMENT
/begin FUNCTION FUNC_ASCIIs
"ASCII Values description"
/begin DEF_CHARACTERISTIC
EPKID
/end DEF_CHARACTERISTIC
/begin AR_COMPONENT
"AR COMPONENT Type"
AR_PROTOTYPE_OF GROUP_ASCIIs
/end AR_COMPONENT
/end FUNCTION
/begin GROUP GROUP_ASCIIs
"ASCII group description"
/begin REF_CHARACTERISTIC
EPKID
/end REF_CHARACTERISTIC
/end GROUP
/begin FUNCTION FUNC_CURVEs
"CURVEs description"
/begin DEF_CHARACTERISTIC
DEMO_CURVE
/end DEF_CHARACTERISTIC
/begin REF_CHARACTERISTIC
DEMO_CURVE_REF_AXIS
/end REF_CHARACTERISTIC
/end FUNCTION
/begin FUNCTION FUNC_MAPs
"MAPs description"
/begin DEF_CHARACTERISTIC
DEMO_MAP
/end DEF_CHARACTERISTIC
/end FUNCTION
/begin FUNCTION FUNC_MEASUREMENTs
"MEASUREMENTs description"
/begin OUT_MEASUREMENT
bit1_2_3 revolution speed_by_interpolation speed_by_formula byte_10_array
Float32_8x4_array speed
/end OUT_MEASUREMENT
/end FUNCTION
/begin FUNCTION FUNC_VAL_BLKs
"Value Blocks description"
/begin DEF_CHARACTERISTIC
VAL_BLK_NUMERIC VAL_BLK_VERBAL
/end DEF_CHARACTERISTIC
/end FUNCTION
/begin FUNCTION FUNC_VALUESs
"VALUESs description"
/begin DEF_CHARACTERISTIC
SINGLE_VALUE SINGLE_VALUE_LINEAR SINGLE_VALUE_ADAPTIVE SINGLE_BIG_VALUE SINGLE_VERBAL SINGLE_VERBAL_RANGE
/end DEF_CHARACTERISTIC
/end FUNCTION
/begin COMPU_METHOD BIGVALUES
"BIGVALUES description"
RAT_FUNC
"%.0" "---"
COEFFS 0 1 0 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD C_STYLE_FORMULA
"Defines a C-Style formula to convert between
raw and physical values.
For simulator support, the inverse formula
must be defined, too."
FORM
"%8.1" "km/h"
/begin FORMULA
"X*20"
FORMULA_INV "X/20"
/end FORMULA
/end COMPU_METHOD
/begin COMPU_METHOD IDENTITY
"IDENTITY description"
RAT_FUNC
"%4.2" "---"
COEFFS 0 1 0 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD IDENTITY_SMALL
"IDENTITY description"
RAT_FUNC
"%4.2" "---"
COEFFS 0 100 0 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD INTERPOLATION
"INTERPOLATION description"
TAB_INTP
"%8.1" "mph"
COMPU_TAB_REF INTERPOLATION_TABLE_0_360
/end COMPU_METHOD
/begin COMPU_METHOD NO_INTERPOLATION
"NO_INTERPOLATION description"
TAB_NOINTP
"%8.1" ""
COMPU_TAB_REF NO_INTERPOLATION_TABLE
/end COMPU_METHOD
/begin COMPU_METHOD SMALLVALUES
"SMALLVALUES description"
RAT_FUNC
"%8.5" "---"
COEFFS 0 10000 0 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD LINEAR
"Linear coeffs description"
LINEAR
"%8.2" "mm"
COEFFS_LINEAR 1.25 1
/end COMPU_METHOD
/begin COMPU_METHOD VERBAL
"VERBAL description"
TAB_VERB
"" ""
COMPU_TAB_REF VERBAL_TABLE
/end COMPU_METHOD
/begin COMPU_METHOD VERBAL_BOOL
"VERBAL_BOOL description"
TAB_VERB
"" ""
COMPU_TAB_REF VERBAL_BOOL_TABLE
/end COMPU_METHOD
/begin COMPU_VTAB VERBAL_BOOL_TABLE
"VERBAL_BOOL_TABLE description"
TAB_VERB
2
0 "FALSE"
1 "TRUE"
DEFAULT_VALUE "Not set"
/end COMPU_VTAB
/begin COMPU_METHOD RANGE_BYTE
"RANGE_BYTE description"
TAB_VERB
"" ""
COMPU_TAB_REF VTAB_RANGE_TABLE
/end COMPU_METHOD
/begin COMPU_VTAB_RANGE VTAB_RANGE_TABLE
"VTAB_RANGE_TABLE description"
2
0.0 0.9 "< 1"
1.0 255 ">= 1"
DEFAULT_VALUE "Not set"
/end COMPU_VTAB_RANGE
/begin COMPU_VTAB VERBAL_TABLE
"VERBAL_TABLE description"
TAB_VERB
7
1 "Bit1 set"
2 "Bit2 set"
3 "Bit1&2 set"
4 "Bit3 set"
5 "Bit1&3 set"
6 "Bit2&3 set"
7 "Bit1&2&3 set"
DEFAULT_VALUE "Not set"
/end COMPU_VTAB
/begin RECORD_LAYOUT _LONG
FNC_VALUES 1 SLONG COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin RECORD_LAYOUT _UBYTE
FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin RECORD_LAYOUT CURVE_LAYOUT
FNC_VALUES 1 UWORD COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin RECORD_LAYOUT MAP_LAYOUT
FNC_VALUES 1 SWORD COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin COMPU_TAB INTERPOLATION_TABLE_0_360
"INTERPOLATION_TABLE description"
TAB_INTP
5
0 0
64 90
128 180
192 270
255 360
DEFAULT_VALUE_NUMERIC 180
/end COMPU_TAB
/begin COMPU_TAB NO_INTERPOLATION_TABLE
"NO_INTERPOLATION_TABLE description"
TAB_NOINTP
9
0 0
32 45
64 90
96 120
128 180
160 210
192 270
224 300
255 360
DEFAULT_VALUE_NUMERIC 180
/end COMPU_TAB
/begin UNIT
metres_per_second
"extended SI unit for velocity"
"m/s"
EXTENDED_SI
SI_EXPONENTS 1 0 -1 0 0 0 0 /* [m] * [s] -1 */
/end UNIT
/begin UNIT
kms_per_hour
"derived unit for velocity: kilometres per hour"
"km/h"
DERIVED
REF_UNIT metres_per_second
UNIT_CONVERSION 3.6 0.0 /* y [km/h] = (60*60/1000) * x [m/s] + 0.0 */
/end UNIT
/begin UNIT
miles_per_hour
"derived unit for velocity: miles per hour"
"mph"
DERIVED
REF_UNIT metres_per_second
UNIT_CONVERSION 2.237 0.0 /* y [mph] = (60*60/1609) * x [m/s] + 0.0 */
/end UNIT
/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 bit1_2_3
/end VAR_CRITERION
*/
/* variant criterion "Type of gear box" with two variants * /
/begin VAR_CRITERION Gear
"Type of gear box"
Manual Automatic
VAR_SELECTION_CHARACTERISTIC EPKID
/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
DEMO_CURVE /*define DEMO_CURVE as variant coded*/
Gear /* Gear box variants */
/begin VAR_ADDRESS
0x7140
0x7168
/end VAR_ADDRESS
/end VAR_CHARACTERISTIC
/begin VAR_CHARACTERISTIC
DEMO_MAP /*define DEMO_MAP as variant coded */
Gear Car /*car body and gear box variants*/
/begin VAR_ADDRESS
0x7840
0x7858
0x7870
0x7888
/end VAR_ADDRESS
/end VAR_CHARACTERISTIC
/end VARIANT_CODING
/begin BLOB DEMO_BLOB
"binary blob for FIM matrix"
0x6000
0x400
/end BLOB
/begin TYPEDEF_BLOB TD_BLOB
"binary blob"
0x400
/end TYPEDEF_BLOB
/begin INSTANCE INSTANCE_BLOB
"blob for FIM matrix"
TD_BLOB
0x5000
/end INSTANCE
/begin TYPEDEF_CHARACTERISTIC TD_CHARACTERISTIC
""
VALUE
_LONG
100
NO_COMPU_METHOD
-100 655
/end TYPEDEF_CHARACTERISTIC
/*
/begin TYPEDEF_STRUCTURE TD_STRUCTURE
"binary structure"
0x400
/begin STRUCTURE_COMPONENT MemberA
TD_CHARACTERISTIC
0x0
/end STRUCTURE_COMPONENT
/begin STRUCTURE_COMPONENT MemberB
TD_CHARACTERISTIC
0x22
MATRIX_DIM 10
/end STRUCTURE_COMPONENT
/end TYPEDEF_STRUCTURE
*/
/begin TYPEDEF_MEASUREMENT TD_MEASUREMENT
"register content"
SWORD
IDENTITY
1 0
-200 200
/end TYPEDEF_MEASUREMENT
/begin INSTANCE instance_measurement
""
TD_MEASUREMENT
0x94
/begin OVERWRITE THIS
0
CONVERSION IDENTITY_SMALL
/end OVERWRITE
/end INSTANCE
/begin TYPEDEF_AXIS TD_AXIS
"axis points for speed"
revolution
RL_DEMO_CURVE_AXIS
100
IDENTITY
21
0 5800
/end TYPEDEF_AXIS
/begin INSTANCE INSTANCE_AXIS
""
TD_AXIS
0x4000
/end INSTANCE
/begin INSTANCE INSTANCE_CHARACTERISTIC
"delay time for filtering"
TD_CHARACTERISTIC
0x4080
MATRIX_DIM 5
/end INSTANCE
/begin TRANSFORMER Transformer
"1.0.0.0"
"transformer32.dll"
"transformer64.dll"
25000
ON_USER_REQUEST
TransformerReverse
/begin TRANSFORMER_IN_OBJECTS
DEMO_CURVE
/end TRANSFORMER_IN_OBJECTS
/begin TRANSFORMER_OUT_OBJECTS
DEMO_BLOB
/end TRANSFORMER_OUT_OBJECTS
/end TRANSFORMER
/begin TRANSFORMER TransformerReverse
"1.0.0.0"
"TransformerReverse32.dll"
""
20000
ON_CHANGE
Transformer
/begin TRANSFORMER_IN_OBJECTS
DEMO_BLOB
/end TRANSFORMER_IN_OBJECTS
/begin TRANSFORMER_OUT_OBJECTS
DEMO_CURVE
/end TRANSFORMER_OUT_OBJECTS
/end TRANSFORMER
/end MODULE
/end PROJECT