Browse Source

add files

master
Ian Ilkyun Oh 2 months ago
parent
commit
f67f35fc9a
  1. BIN
      test data/ASAP2Example.elf
  2. 1026
      test data/ASAP2Example.hex
  3. 140
      test data/CANDbExample.dbc
  4. 2222
      test data/backup/ASAP2Example.a2l
  5. BIN
      test data/backup/ASAP2Example.elf
  6. 1026
      test data/backup/ASAP2Example.hex
  7. 94
      test data/backup/ASAP2_Demo_V161_ifdata_section.a2l
  8. 140
      test data/backup/CANDbExample.dbc
  9. 723189
      test data/backup/HAXNR4000000.a2l
  10. 898065
      test data/backup/INTERNAL_C804T5FX_050609_internal_merged.a2l
  11. 993
      test data/backup/example-a2l-file.a2l
  12. 4131
      test data/sample/ASAP2_Demo_V161.a2l
  13. 17
      test data/sample/clean_ifdata.a2l
  14. 1074
      test data/sample/etas.aml
  15. 1
      test data/sample/multiple_ifdatas_per_line.a2l
  16. 16
      test data/sample/notso_clean_ifdata.a2l
  17. 16
      test data/sample/notso_clean_ifdata2.a2l
  18. 1
      test data/sample/singleline_ifdata.a2l
  19. 936
      test data/sample/variants.a2l
  20. 701
      test data/sample/vector.aml

BIN
test data/ASAP2Example.elf

Binary file not shown.

1026
test data/ASAP2Example.hex

File diff suppressed because it is too large

140
test data/CANDbExample.dbc

@ -0,0 +1,140 @@
VERSION "CANDb example 1.0"
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: Device_1 Device_2 RAWDATA_TEST
VAL_TABLE_ ErrorTab 32 "Poti 180 deg wrong" 16 "Misshift" 2 "Gearpoti Warning" 8 "Gearpoti Error - use emergency m" 4 "Sensor out of range" 1 "Compressor Warning" ;
VAL_TABLE_ state_cut_Tab 2 "down shift" 1 "up shift" 0 "no shift in progress" ;
VAL_TABLE_ button_state_Tab 64 "b_POTI_180" 32 "b_MISSSHIFT" 16 "b_BUTTON_EMG" 8 "b_BUTTON_REV" 4 "b_BUTTON_NEU" 2 "b_PADDLE_DN" 1 "b_PADDLE_UP" ;
VAL_TABLE_ valve_state_Tab 32 "b_EMGCY_IND" 16 "b_STATE_COMP" 4 "b_VALVE_BLIP" 2 "b_VALVE_DOWN" 1 "b_VALVE_UP" ;
VAL_TABLE_ GearTabRb6 16 "6->" 15 "6" 14 "5->6" 13 "5" 12 "4->5" 11 "4" 10 "3->4" 9 "3" 8 "2->3" 7 "2" 6 "1->2" 5 "1" 4 "N->1" 3 "N" 2 "R->N" 1 "R" 0 "->R" ;
VAL_TABLE_ ShiftStateTab 1 "shift activ" 0 "no shift activ" ;
BO_ 1 _Message_2: 8 Device_1
SG_ Int32 : 0|32@1+ (1,0) [0|4294967295] "m/s" Device_2
SG_ Signal_2 : 32|8@1+ (1,0) [0|7] "degC" Device_2
BO_ 2 _Message_3: 8 Device_2
SG_ Signal_3 : 0|9@1+ (1,0) [0|1] "km/h" Device_1
BO_ 784 _Message_1: 8 Device_1
SG_ Multiplexor M : 32|8@1+ (1,0) [0|0] "none" Vector__XXX
SG_ _Int8 m0 : 56|8@1- (1,0) [0|0] "km/h" Device_2
SG_ _FLOAT32 : 0|32@1- (1,0) [0|0] "mm" Device_2
BO_ 901 TEST_FLOAT: 5 RAWDATA_TEST
SG_ Muxer M : 32|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Value m9 : 0|32@1- (1,0) [0|255] "" Vector__XXX
BO_ 902 TEST_INT: 5 RAWDATA_TEST
SG_ Muxer M : 32|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Value m9 : 0|32@1- (1,0) [0|255] "" Vector__XXX
BO_ 903 TEST_INT_OFFSET: 7 RAWDATA_TEST
SG_ Muxer M : 48|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Value m9 : 16|32@1- (1,0) [0|255] "" Vector__XXX
BO_ 904 TEST_BIT_OFFSET: 7 RAWDATA_TEST
SG_ Muxer M : 48|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Bit1 m9 : 6|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ Bit2 m9 : 7|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ Bit3 m9 : 11|1@1+ (1,0) [0|1] "" Vector__XXX
BO_ 905 TEST_INT_BE1: 1 RAWDATA_TEST
SG_ Value : 7|8@0+ (1,0) [0|255] "" Vector__XXX
BO_ 906 TEST_INT_BE2: 7 RAWDATA_TEST
SG_ Value : 15|16@0- (1,0) [-32768|32767] "" Vector__XXX
SG_ Value1 : 31|16@0- (1,0) [-32768|32767] "" Vector__XXX
SG_ Value2 : 40|16@1- (1,0) [-32768|32767] "" Vector__XXX
BO_ 907 TEST_INT_LE_BF: 2 RAWDATA_TEST
SG_ Value1 : 1|1@1+ (1,0) [0|255] "" Vector__XXX
SG_ Value2 : 4|1@1+ (1,0) [0|255] "" Vector__XXX
SG_ Value3 : 13|1@1+ (1,0) [0|255] "" Vector__XXX
BO_ 908 TEST_BITFIELD: 8 RAWDATA_TEST
SG_ NOT_DETECTED M : 7|1@0+ (1,0) [0|0] "" Vector__XXX
SG_ WS_ID m0 : 15|24@0+ (1,0) [0|0] "" Vector__XXX
BO_TX_BU_ 784 : RAWDATA_TEST, Device_2, Device_1 ;
EV_ EnvData: 0 [0|0] "" 0 1 DUMMY_NODE_VECTOR0 Vector__XXX;
EV_ EnvInteger_W: 0 [0|0] "" 0 2 DUMMY_NODE_VECTOR2 Vector__XXX;
EV_ EnvSrring_R: 0 [0|0] "none" 0 3 DUMMY_NODE_VECTOR8001 Device_2;
EV_ EnvFloat_RW: 1 [0|100] "mm" 0 4 DUMMY_NODE_VECTOR3 Device_1;
ENVVAR_DATA_ EnvData: 0;
CM_ BU_ Device_1 "Device 1
defined by ...";
CM_ BU_ Device_2 "Device 2
defined by ...";
CM_ BO_ 1 "Device 1
Message 2";
CM_ SG_ 1 Int32 "Signal_1 comment";
CM_ SG_ 1 Signal_2 "Signal_2 comment";
CM_ BO_ 2 "Message comment";
CM_ BO_ 784 "Device 1
Message 1";
CM_ SG_ 784 _Int8 "Int16, signed";
CM_ SG_ 784 _FLOAT32 "IEEE FLOAT64
Signal";
BA_DEF_ BU_ "BUAttributeHex" HEX 0 255;
BA_DEF_ "BusType" STRING ;
BA_DEF_ EV_ "EVAttributeEnum" ENUM "a","b","c";
BA_DEF_ SG_ "SGAttributeFloat" FLOAT 0 0;
BA_DEF_REL_ BU_SG_REL_ "BOMappedAttributeInt" FLOAT -1000 1000;
BA_DEF_REL_ BU_EV_REL_ "ECU_EV_Attrib" INT 0 0;
BA_DEF_REL_ BU_SG_REL_ "NODE_MAPPED_RX_Atrib" INT 0 0;
BA_DEF_REL_ BU_BO_REL_ "NODE_TX_Attrib" INT 0 0;
BA_DEF_DEF_ "BUAttributeHex" 10;
BA_DEF_DEF_ "BusType" "CAN";
BA_DEF_DEF_ "EVAttributeEnum" "b";
BA_DEF_DEF_ "SGAttributeFloat" 0;
BA_DEF_DEF_REL_ "BOMappedAttributeInt" 0;
BA_DEF_DEF_REL_ "ECU_EV_Attrib" 0;
BA_DEF_DEF_REL_ "NODE_MAPPED_RX_Atrib" 0;
BA_DEF_DEF_REL_ "NODE_TX_Attrib" 0;
BA_ "SGAttributeFloat" SG_ 1 Int32 546363456346;
VAL_ 1 Int32 255 "sepp" ;
SIG_VALTYPE_ 784 _FLOAT32 : 1;
SIG_VALTYPE_ 901 Value : 1;

2222
test data/backup/ASAP2Example.a2l

File diff suppressed because it is too large

BIN
test data/backup/ASAP2Example.elf

Binary file not shown.

1026
test data/backup/ASAP2Example.hex

File diff suppressed because it is too large

94
test data/backup/ASAP2_Demo_V161_ifdata_section.a2l

@ -0,0 +1,94 @@
/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

140
test data/backup/CANDbExample.dbc

@ -0,0 +1,140 @@
VERSION "CANDb example 1.0"
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: Device_1 Device_2 RAWDATA_TEST
VAL_TABLE_ ErrorTab 32 "Poti 180 deg wrong" 16 "Misshift" 2 "Gearpoti Warning" 8 "Gearpoti Error - use emergency m" 4 "Sensor out of range" 1 "Compressor Warning" ;
VAL_TABLE_ state_cut_Tab 2 "down shift" 1 "up shift" 0 "no shift in progress" ;
VAL_TABLE_ button_state_Tab 64 "b_POTI_180" 32 "b_MISSSHIFT" 16 "b_BUTTON_EMG" 8 "b_BUTTON_REV" 4 "b_BUTTON_NEU" 2 "b_PADDLE_DN" 1 "b_PADDLE_UP" ;
VAL_TABLE_ valve_state_Tab 32 "b_EMGCY_IND" 16 "b_STATE_COMP" 4 "b_VALVE_BLIP" 2 "b_VALVE_DOWN" 1 "b_VALVE_UP" ;
VAL_TABLE_ GearTabRb6 16 "6->" 15 "6" 14 "5->6" 13 "5" 12 "4->5" 11 "4" 10 "3->4" 9 "3" 8 "2->3" 7 "2" 6 "1->2" 5 "1" 4 "N->1" 3 "N" 2 "R->N" 1 "R" 0 "->R" ;
VAL_TABLE_ ShiftStateTab 1 "shift activ" 0 "no shift activ" ;
BO_ 1 _Message_2: 8 Device_1
SG_ Int32 : 0|32@1+ (1,0) [0|4294967295] "m/s" Device_2
SG_ Signal_2 : 32|8@1+ (1,0) [0|7] "degC" Device_2
BO_ 2 _Message_3: 8 Device_2
SG_ Signal_3 : 0|9@1+ (1,0) [0|1] "km/h" Device_1
BO_ 784 _Message_1: 8 Device_1
SG_ Multiplexor M : 32|8@1+ (1,0) [0|0] "none" Vector__XXX
SG_ _Int8 m0 : 56|8@1- (1,0) [0|0] "km/h" Device_2
SG_ _FLOAT32 : 0|32@1- (1,0) [0|0] "mm" Device_2
BO_ 901 TEST_FLOAT: 5 RAWDATA_TEST
SG_ Muxer M : 32|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Value m9 : 0|32@1- (1,0) [0|255] "" Vector__XXX
BO_ 902 TEST_INT: 5 RAWDATA_TEST
SG_ Muxer M : 32|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Value m9 : 0|32@1- (1,0) [0|255] "" Vector__XXX
BO_ 903 TEST_INT_OFFSET: 7 RAWDATA_TEST
SG_ Muxer M : 48|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Value m9 : 16|32@1- (1,0) [0|255] "" Vector__XXX
BO_ 904 TEST_BIT_OFFSET: 7 RAWDATA_TEST
SG_ Muxer M : 48|8@1+ (1,0) [1|81] "" Vector__XXX
SG_ Bit1 m9 : 6|1@1+ (1,0) [0|1] "" Vector__XXX
SG_ Bit2 m9 : 7|4@1+ (1,0) [0|15] "" Vector__XXX
SG_ Bit3 m9 : 11|1@1+ (1,0) [0|1] "" Vector__XXX
BO_ 905 TEST_INT_BE1: 1 RAWDATA_TEST
SG_ Value : 7|8@0+ (1,0) [0|255] "" Vector__XXX
BO_ 906 TEST_INT_BE2: 7 RAWDATA_TEST
SG_ Value : 15|16@0- (1,0) [-32768|32767] "" Vector__XXX
SG_ Value1 : 31|16@0- (1,0) [-32768|32767] "" Vector__XXX
SG_ Value2 : 40|16@1- (1,0) [-32768|32767] "" Vector__XXX
BO_ 907 TEST_INT_LE_BF: 2 RAWDATA_TEST
SG_ Value1 : 1|1@1+ (1,0) [0|255] "" Vector__XXX
SG_ Value2 : 4|1@1+ (1,0) [0|255] "" Vector__XXX
SG_ Value3 : 13|1@1+ (1,0) [0|255] "" Vector__XXX
BO_ 908 TEST_BITFIELD: 8 RAWDATA_TEST
SG_ NOT_DETECTED M : 7|1@0+ (1,0) [0|0] "" Vector__XXX
SG_ WS_ID m0 : 15|24@0+ (1,0) [0|0] "" Vector__XXX
BO_TX_BU_ 784 : RAWDATA_TEST, Device_2, Device_1 ;
EV_ EnvData: 0 [0|0] "" 0 1 DUMMY_NODE_VECTOR0 Vector__XXX;
EV_ EnvInteger_W: 0 [0|0] "" 0 2 DUMMY_NODE_VECTOR2 Vector__XXX;
EV_ EnvSrring_R: 0 [0|0] "none" 0 3 DUMMY_NODE_VECTOR8001 Device_2;
EV_ EnvFloat_RW: 1 [0|100] "mm" 0 4 DUMMY_NODE_VECTOR3 Device_1;
ENVVAR_DATA_ EnvData: 0;
CM_ BU_ Device_1 "Device 1
defined by ...";
CM_ BU_ Device_2 "Device 2
defined by ...";
CM_ BO_ 1 "Device 1
Message 2";
CM_ SG_ 1 Int32 "Signal_1 comment";
CM_ SG_ 1 Signal_2 "Signal_2 comment";
CM_ BO_ 2 "Message comment";
CM_ BO_ 784 "Device 1
Message 1";
CM_ SG_ 784 _Int8 "Int16, signed";
CM_ SG_ 784 _FLOAT32 "IEEE FLOAT64
Signal";
BA_DEF_ BU_ "BUAttributeHex" HEX 0 255;
BA_DEF_ "BusType" STRING ;
BA_DEF_ EV_ "EVAttributeEnum" ENUM "a","b","c";
BA_DEF_ SG_ "SGAttributeFloat" FLOAT 0 0;
BA_DEF_REL_ BU_SG_REL_ "BOMappedAttributeInt" FLOAT -1000 1000;
BA_DEF_REL_ BU_EV_REL_ "ECU_EV_Attrib" INT 0 0;
BA_DEF_REL_ BU_SG_REL_ "NODE_MAPPED_RX_Atrib" INT 0 0;
BA_DEF_REL_ BU_BO_REL_ "NODE_TX_Attrib" INT 0 0;
BA_DEF_DEF_ "BUAttributeHex" 10;
BA_DEF_DEF_ "BusType" "CAN";
BA_DEF_DEF_ "EVAttributeEnum" "b";
BA_DEF_DEF_ "SGAttributeFloat" 0;
BA_DEF_DEF_REL_ "BOMappedAttributeInt" 0;
BA_DEF_DEF_REL_ "ECU_EV_Attrib" 0;
BA_DEF_DEF_REL_ "NODE_MAPPED_RX_Atrib" 0;
BA_DEF_DEF_REL_ "NODE_TX_Attrib" 0;
BA_ "SGAttributeFloat" SG_ 1 Int32 546363456346;
VAL_ 1 Int32 255 "sepp" ;
SIG_VALTYPE_ 784 _FLOAT32 : 1;
SIG_VALTYPE_ 901 Value : 1;

723189
test data/backup/HAXNR4000000.a2l

File diff suppressed because it is too large

898065
test data/backup/INTERNAL_C804T5FX_050609_internal_merged.a2l

File diff suppressed because it is too large

993
test data/backup/example-a2l-file.a2l

@ -0,0 +1,993 @@
/************************************************************************************/
/* */
/* ASAP2 v1.6.1 language example */
/* */
/* 2013-02-13 */
/* File: example-a2l-file.a2l */
/* Version: 1.0 */
/* */
/* ASAM e.V. */
/* Altlaufstr. 40 */
/* 85635 Höhenkirchen */
/* */
/************************************************************************************/
ASAP2_VERSION 1 61
/begin PROJECT
ASAM
"_default_Project"
/begin HEADER
"default_Header"
PROJECT_NO ASAM2013
/end HEADER
/begin MODULE
Module_01
"default_Module"
// /include "asam.aml"
/begin MOD_PAR "default_ModPar"
ADDR_EPK 0x100100FF
EPK "EPROM_ID_01"
/begin MEMORY_SEGMENT MemorySegment_01
"MemorySegment_01"
DATA
FLASH
EXTERN
0x1000FFFF
0xf0000
0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF
/begin IF_DATA ETK_XETK
ADDRESS_MAPPING
0x80810000
0xa3010000
0xf0000
/end IF_DATA
/end MEMORY_SEGMENT
/end MOD_PAR
/begin MOD_COMMON "default_ModCommon"
DEPOSIT ABSOLUTE
BYTE_ORDER MSB_FIRST
ALIGNMENT_BYTE 1
ALIGNMENT_WORD 2
ALIGNMENT_LONG 4
ALIGNMENT_FLOAT32_IEEE 4
ALIGNMENT_FLOAT64_IEEE 8
/end MOD_COMMON
/begin IF_DATA XCP
/begin PROTOCOL_LAYER
0x0100
2000
2000
2000
65535
2000
0005
0005
0x08
0x0008
BYTE_ORDER_MSB_LAST
ADDRESS_GRANULARITY_BYTE
SEED_AND_KEY_EXTERNAL_FUNCTION "SeedNKeyXcp.dll"
/end PROTOCOL_LAYER
/begin DAQ
STATIC
0x06
0x06
0x00
OPTIMISATION_TYPE_DEFAULT
ADDRESS_EXTENSION_FREE
IDENTIFICATION_FIELD_TYPE_ABSOLUTE
0x04
OVERLOAD_INDICATION_EVENT
/begin DAQ_LIST
0x0
DAQ_LIST_TYPE DAQ
MAX_ODT 0x2
MAX_ODT_ENTRIES 0x7
FIRST_PID 0x0
EVENT_FIXED 0x0
/end DAQ_LIST
/begin DAQ_LIST
0x1
DAQ_LIST_TYPE DAQ
MAX_ODT 0x2
MAX_ODT_ENTRIES 0x7
FIRST_PID 0x2
EVENT_FIXED 0x1
/end DAQ_LIST
/begin DAQ_LIST
0x2
DAQ_LIST_TYPE DAQ
MAX_ODT 0x2
MAX_ODT_ENTRIES 0x7
FIRST_PID 0x4
EVENT_FIXED 0x2
/end DAQ_LIST
/begin DAQ_LIST
0x3
DAQ_LIST_TYPE DAQ
MAX_ODT 0x2
MAX_ODT_ENTRIES 0x7
FIRST_PID 0x6
EVENT_FIXED 0x3
/end DAQ_LIST
/begin DAQ_LIST
0x5
DAQ_LIST_TYPE DAQ
MAX_ODT 0xf
MAX_ODT_ENTRIES 0x7
FIRST_PID 0x8
EVENT_FIXED 0x5
/end DAQ_LIST
/begin DAQ_LIST
0x4
DAQ_LIST_TYPE DAQ
MAX_ODT 0xf
MAX_ODT_ENTRIES 0x7
FIRST_PID 0x17
EVENT_FIXED 0x4
/end DAQ_LIST
/begin EVENT
"Segment 1"
"Segment 1"
0x0
DAQ
0x1
0x0
0
0
/end EVENT
/begin EVENT
"Segment 2"
"Segment 2"
0x1
DAQ
0x1
0x0
0
0
/end EVENT
/begin EVENT
"Segment 3"
"Segment 3"
0x2
DAQ
0x1
0x0
0
0
/end EVENT
/begin EVENT
"Segment 4"
"Segment 4"
0x3
DAQ
0x1
0x0
0
0
/end EVENT
/begin EVENT
"Tim100ms"
"Tim100ms"
0x5
DAQ
0x1
0x1
8
0
/end EVENT
/begin EVENT
"Time 10ms"
"Time 10ms"
0x4
DAQ
0x1
0x1
7
0
/end EVENT
/end DAQ
/end IF_DATA
/begin MEASUREMENT Measurement_01
"Preasure_chamber_01"
UBYTE
CompuMethod_02
1
0.
0.
255.
DISPLAY_IDENTIFIER Measurement_01
ECU_ADDRESS 0xE0010000
BIT_MASK 0x1F
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_02
"Preasure_chamber_02"
UBYTE
CompuMethod_02
1
0.
0.
255.
DISPLAY_IDENTIFIER Measurement_02
ECU_ADDRESS 0xE0020000
BIT_MASK 0x1F
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_03
"Preasure_chamber_03"
UWORD
CompuMethod_03
1
0.
0.
65535.
DISPLAY_IDENTIFIER Measurement_03
ECU_ADDRESS 0xE0030000
FORMAT "%6.0"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_04
"Preasure_chamber_04"
UWORD
CompuMethod_05
1
0.
0.
359.999
DISPLAY_IDENTIFIER Measurement_04
ECU_ADDRESS 0xE0040000
FORMAT "%6.3"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_05
"Preasure_chamber_05"
UWORD
CompuMethod_01
1
0.
0.
65535.
DISPLAY_IDENTIFIER Measurement_05
ECU_ADDRESS 0xE0050000
FORMAT "%6.0"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_06
"Preasure_chamber_06"
UWORD
CompuMethod_01
1
0.
0.
65535.
DISPLAY_IDENTIFIER Measurement_06
ECU_ADDRESS 0xE0060000
FORMAT "%6.0"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_07
"Preasure_chamber_07"
UBYTE
CompuMethod_02
1
0.
0.
255.
DISPLAY_IDENTIFIER Measurement_07
ECU_ADDRESS 0xE0070000
BIT_MASK 0x1F
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_08
"Preasure_chamber_08"
UWORD
CompuMethod_05
1
0.
0.
359.999
DISPLAY_IDENTIFIER Measurement_08
ECU_ADDRESS 0xE0080000
FORMAT "%6.3"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_09
"Preasure_chamber_09"
UWORD
CompuMethod_03
1
0.
0.
65535.
DISPLAY_IDENTIFIER Measurement_09
ECU_ADDRESS 0xE0090000
FORMAT "%6.0"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_10
"Preasure_chamber_10"
UWORD
CompuMethod_03
1
0.
0.
65535.
DISPLAY_IDENTIFIER Measurement_10
ECU_ADDRESS 0xE00A0000
FORMAT "%6.0"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_11
"Preasure_chamber_11"
UWORD
CompuMethod_03
1
0.
0.
65535.
DISPLAY_IDENTIFIER Measurement_11
ECU_ADDRESS 0xE00B0000
FORMAT "%6.0"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_12
"Preasure_chamber_12"
UWORD
CompuMethod_05
1
0.
0.
359.999
DISPLAY_IDENTIFIER Measurement_12
ECU_ADDRESS 0xE00C0000
FORMAT "%6.3"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_13
"Preasure_chamber_13"
UBYTE
CompuMethod_02
1
0.
0.
255.
DISPLAY_IDENTIFIER Measurement_13
ECU_ADDRESS 0xE00D0000
BIT_MASK 0x1F
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_14
"Preasure_chamber_14"
UBYTE
CompuMethod_02
1
0.
0.
255.
DISPLAY_IDENTIFIER Measurement_14
ECU_ADDRESS 0xE00E0000
BIT_MASK 0x1F
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_15
"Preasure_chamber_15"
UBYTE
CompuMethod_02
1
0.
0.
255.
DISPLAY_IDENTIFIER Measurement_15
ECU_ADDRESS 0xE00F0000
BIT_MASK 0x1F
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin MEASUREMENT Measurement_16
"Preasure_chamber_16"
UWORD
CompuMethod_06
1
0.
0.
359.999
DISPLAY_IDENTIFIER Measurement_16
ECU_ADDRESS 0xE0100000
FORMAT "%6.3"
/begin IF_DATA XCP
/begin DAQ_EVENT
VARIABLE
/begin DEFAULT_EVENT_LIST
EVENT 0
EVENT 1
EVENT 2
EVENT 3
EVENT 4
/end DEFAULT_EVENT_LIST
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT
/begin CHARACTERISTIC Characteristic_01
"regulator_01"
VALUE
0x1100FF00
RecordLayout_01
1.
CompuMethod_02
0.
1.
DISPLAY_IDENTIFIER Characteristic_01
BIT_MASK 0x1F
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_02
"regulator_02"
VALUE
0x1200FF00
RecordLayout_02
359.999
CompuMethod_05
0.
359.999
DISPLAY_IDENTIFIER Characteristic_02
FORMAT "%6.3"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_03
"regulator_03"
VALUE
0x1300FF00
RecordLayout_02
359.999
CompuMethod_05
0.
359.999
DISPLAY_IDENTIFIER Characteristic_03
FORMAT "%6.3"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_04
"regulator_04"
VALUE
0x1400FF00
RecordLayout_02
359.999
CompuMethod_05
0.
359.999
DISPLAY_IDENTIFIER Characteristic_04
FORMAT "%6.3"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_05
"regulator_05"
VALUE
0x1500FF00
RecordLayout_02
65535.
CompuMethod_03
0.
65535.
DISPLAY_IDENTIFIER Characteristic_05
FORMAT "%6.0"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_06
"regulator_06"
VALUE
0x1600FF00
RecordLayout_02
65535.
CompuMethod_03
0.
65535.
DISPLAY_IDENTIFIER Characteristic_06
FORMAT "%6.0"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_07
"regulator_07"
VALUE
0x1700FF00
RecordLayout_02
65535.
CompuMethod_03
0.
65535.
DISPLAY_IDENTIFIER Characteristic_07
FORMAT "%6.0"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_08
"regulator_08"
VALUE
0x1800FF00
RecordLayout_01
255.
CompuMethod_03
0.
255.
DISPLAY_IDENTIFIER Characteristic_08
FORMAT "%5.0"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_09
"regulator_09"
VALUE
0x1900FF00
RecordLayout_02
1000.9
CompuMethod_04
2.e-002
1001.
DISPLAY_IDENTIFIER Characteristic_09
FORMAT "%6.2"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_10
"regulator_10"
VALUE
0x1A00FF00
RecordLayout_02
65535.
CompuMethod_03
0.
65535.
DISPLAY_IDENTIFIER Characteristic_10
FORMAT "%5.0"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_11
"regulator_11"
VALUE
0x1B00FF00
RecordLayout_02
65535.
CompuMethod_03
0.
65535.
DISPLAY_IDENTIFIER Characteristic_11
FORMAT "%5.0"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_12
"regulator_12"
VALUE
0x1C00FF00
RecordLayout_02
1000.9
CompuMethod_04
0.
1000.9
DISPLAY_IDENTIFIER Characteristic_12
FORMAT "%5.1"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_13
"regulator_13"
VALUE
0x1D00FF00
RecordLayout_02
1000.9
CompuMethod_04
0.
1000.9
DISPLAY_IDENTIFIER Characteristic_13
FORMAT "%5.1"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_14
"regulator_14"
VALUE
0x1E00FF00
RecordLayout_02
359.999
CompuMethod_05
0.
359.999
DISPLAY_IDENTIFIER Characteristic_14
FORMAT "%6.3"
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_15
"regulator_15"
MAP
0x1F00FF00
RecordLayout_03
1000.99
CompuMethod_04
2.e-002
1001.
DISPLAY_IDENTIFIER Characteristic_15
FORMAT "%6.2"
/begin AXIS_DESCR
STD_AXIS
NO_INPUT_QUANTITY
CompuMethod_03
100
0.
255.
FORMAT "%4.0"
/end AXIS_DESCR
/begin AXIS_DESCR
STD_AXIS
Measurement_16
CompuMethod_07
100
0.
1000.9
FORMAT "%5.1"
/end AXIS_DESCR
/end CHARACTERISTIC
/begin CHARACTERISTIC Characteristic_16
"regulator_16"
CURVE
0x2000FF00
RecordLayout_05
40.
CompuMethod_09
-19.
20.
DISPLAY_IDENTIFIER Characteristic_16
FORMAT "%7.2"
/begin AXIS_DESCR
COM_AXIS
NO_INPUT_QUANTITY
CompuMethod_08
20
0.
50.
FORMAT "%4.4"
AXIS_PTS_REF AxisPts_01
/end AXIS_DESCR
/end CHARACTERISTIC
/begin COMPU_METHOD CompuMethod_01
""
RAT_FUNC
"%2.2"
"-"
COEFFS 0 1. 0. 0 0 2
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_02
""
TAB_VERB
"%2.2"
"-"
COMPU_TAB_REF CompuVtab_01
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_03
"RATIONALFUNCTION_[0;1;0;0;0;1]"
RAT_FUNC
"%2.2"
"-"
COEFFS 0. 1. 0. 0. 0. 1.
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_04
"RATIONALFUNCTION_[0;1;0;0;0;0.02]"
RAT_FUNC
"%2.2"
"s"
COEFFS 0. 1. 0. 0. 0. 2.e-002
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_05
"RATIONALFUNCTION_[0;1;0;0;0;0.1]"
RAT_FUNC
"%2.2"
"%"
COEFFS 0. 1. 0. 0. 0. 2.5e-003
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_06
""
RAT_FUNC
"%2.2"
"rpm"
COEFFS 0 4. 0. 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_07
"RATIONALFUNCTION_[0;1;0;0;0;0.205]"
RAT_FUNC
"%2.2"
"U/min"
COEFFS 0. 1. 0. 0. 0. 0.205
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_08
""
RAT_FUNC
"%2.2"
"V"
COEFFS 0 819. 0. 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD CompuMethod_09
""
RAT_FUNC
"%4.4"
"bar"
COEFFS 0 100. 0. 0 0 1
/end COMPU_METHOD
/begin COMPU_VTAB CompuVtab_01
""
TAB_VERB
2
0 "FALSE"
1 "TRUE"
/end COMPU_VTAB
/begin RECORD_LAYOUT RecordLayout_01
FNC_VALUES 1 UBYTE COLUMN_DIR PLONG
/end RECORD_LAYOUT
/begin RECORD_LAYOUT RecordLayout_02
FNC_VALUES 1 UWORD COLUMN_DIR PLONG
/end RECORD_LAYOUT
/begin RECORD_LAYOUT RecordLayout_03
NO_AXIS_PTS_X 1 UBYTE
AXIS_PTS_X 2 UBYTE INDEX_INCR DIRECT
NO_AXIS_PTS_Y 3 UWORD
AXIS_PTS_Y 4 UWORD INDEX_INCR DIRECT
FNC_VALUES 5 UWORD COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin RECORD_LAYOUT RecordLayout_04
NO_AXIS_PTS_X 1 UWORD
AXIS_PTS_X 2 UWORD INDEX_DECR DIRECT
/end RECORD_LAYOUT
/begin RECORD_LAYOUT RecordLayout_05
FNC_VALUES 1 SWORD COLUMN_DIR PLONG
/end RECORD_LAYOUT
/begin AXIS_PTS AxisPts_01
""
0xEE001134
NO_INPUT_QUANTITY
RecordLayout_04
5.
CompuMethod_08
2
0.
5.
FORMAT "%4.4"
/end AXIS_PTS
/begin FUNCTION Function_01
"FunctionList_01"
FUNCTION_VERSION "2.2"
/begin DEF_CHARACTERISTIC
Characteristic_01
Characteristic_02
Characteristic_03
Characteristic_04
Characteristic_05
Characteristic_06
Characteristic_07
Characteristic_08
Characteristic_09
Characteristic_10
Characteristic_11
Characteristic_12
Characteristic_13
Characteristic_14
/end DEF_CHARACTERISTIC
/begin OUT_MEASUREMENT
Measurement_01
Measurement_02
Measurement_03
Measurement_04
/end OUT_MEASUREMENT
/begin IN_MEASUREMENT
Measurement_05
Measurement_06
Measurement_07
Measurement_08
Measurement_09
Measurement_10
Measurement_11
Measurement_12
Measurement_13
/end IN_MEASUREMENT
/begin LOC_MEASUREMENT
Measurement_14
Measurement_15
/end LOC_MEASUREMENT
/end FUNCTION
/end MODULE
/end PROJECT

4131
test data/sample/ASAP2_Demo_V161.a2l

File diff suppressed because it is too large

17
test data/sample/clean_ifdata.a2l

@ -0,0 +1,17 @@
/begin MEASUREMENT
ecuCounter
"16 bit counter incrementing exactly every 100us in XCP slave time"
UWORD ecuCounter_
COMPU_METHOD
0
0
0
65535
ECU_ADDRESS 0x2E348
PHYS_UNIT ""
/begin IF_DATA XCP
/begin DAQ_EVENT
FIXED_EVENT_LIST EVENT 0x0
/end DAQ_EVENT
/end IF_DATA
/end MEASUREMENT

1074
test data/sample/etas.aml

File diff suppressed because it is too large

1
test data/sample/multiple_ifdatas_per_line.a2l

@ -0,0 +1 @@
/begin MEASUREMENT BitSlice "Testsignal: 4 Bit on a byte boundary" UWORD BitSlice.CONVERSION 0 0 0 15 BIT_MASK 0x3C0 BYTE_ORDER MSB_LAST ECU_ADDRESS 0x125438 ECU_ADDRESS_EXTENSION 0x0 FORMAT "%.3" /begin IF_DATA CANAPE_EXT 100 LINK_MAP "wordCounter" 0x125438 0x0 0 0x0 1 0x8F 0x0 DISPLAY 0 0 15 /end IF_DATA SYMBOL_LINK "wordCounter" 0 /end MEASUREMENT /begin MEASUREMENT BitSlice0 "Testsignal: 5 Bit" UWORD BitSlice.CONVERSION 0 0 0 31 BIT_MASK 0x1F BYTE_ORDER MSB_LAST ECU_ADDRESS 0x125438 ECU_ADDRESS_EXTENSION 0x0 FORMAT "%.3" /begin IF_DATA CANAPE_EXT 100 LINK_MAP "wordCounter1" 0x12543a 0x0 0 0x0 1 0x8F 0x0 DISPLAY 0 0 31 /end IF_DATA SYMBOL_LINK "wordCounter" 0 /end MEASUREMENT /begin MEASUREMENT BitSlice1 "Testsignal: 5 Bit " UWORD BitSlice.CONVERSION 0 0 0 31 BIT_MASK 0x3E0 BYTE_ORDER MSB_LAST ECU_ADDRESS 0x125438 ECU_ADDRESS_EXTENSION 0x0 FORMAT "%.3" /begin IF_DATA CANAPE_EXT 100 LINK_MAP "wordCounter2" 0x12543c 0x0 0 0x0 1 0x8F 0x0 DISPLAY 0 0 31 /end IF_DATA SYMBOL_LINK "wordCounter" 0 /end MEASUREMENT

16
test data/sample/notso_clean_ifdata.a2l

@ -0,0 +1,16 @@
/begin MEASUREMENT
ecuCounter
"16 bit counter incrementing exactly every 100us in XCP slave time"
UWORD ecuCounter_
COMPU_METHOD
0
0
0
65535
ECU_ADDRESS 0x2E348
PHYS_UNIT ""
/begin IF_DATA XCP
/begin DAQ_EVENT
FIXED_EVENT_LIST EVENT 0x0
/end DAQ_EVENT /end IF_DATA /end MEASUREMENT

16
test data/sample/notso_clean_ifdata2.a2l

@ -0,0 +1,16 @@
/begin MEASUREMENT
ecuCounter
"16 bit counter incrementing exactly every 100us in XCP slave time"
UWORD ecuCounter_
COMPU_METHOD
0
0
0
65535
ECU_ADDRESS 0x2E348
PHYS_UNIT ""
/begin IF_DATA XCP
/begin DAQ_EVENT
FIXED_EVENT_LIST EVENT 0x0
/end DAQ_EVENT /end IF_DATA /end MEASUREMENT /begin INSTANCE ecuTask1 "ecupp task number 1" EcuTask 0x0 /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x1 /end DAQ_EVENT /end IF_DATA /end INSTANCE

1
test data/sample/singleline_ifdata.a2l

@ -0,0 +1 @@
/begin MEASUREMENT ecuCounter "16 bit counter incrementing exactly every 100us in XCP slave time" UWORD ecuCounter_COMPU_METHOD 0 0 0 65535 ECU_ADDRESS 0x2E348 PHYS_UNIT "" /begin IF_DATA XCP /begin DAQ_EVENT FIXED_EVENT_LIST EVENT 0x0 /end DAQ_EVENT /end IF_DATA /end MEASUREMENT

936
test data/sample/variants.a2l

@ -0,0 +1,936 @@
/******************************************************************************
*
* 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

701
test data/sample/vector.aml

@ -0,0 +1,701 @@
/begin A2ML
/*********************************************************/
/* Definitions for XCP */
/*********************************************************/
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 { /* XCP-Code of optional command supported by the slave */
"GET_COMM_MODE_INFO" = 0xFB,
"GET_ID" = 0xFA,
"SET_REQUEST" = 0xF9,
"GET_SEED" = 0xF8,
"UNLOCK" = 0xF7,
"SET_MTA" = 0xF6,
"UPLOAD" = 0xF5,
"SHORT_UPLOAD" = 0xF4,
"BUILD_CHECKSUM" = 0xF3,
"TRANSPORT_LAYER_CMD" = 0xF2,
"USER_CMD" = 0xF1,
"DOWNLOAD" = 0xF0,
"DOWNLOAD_NEXT" = 0xEF,
"DOWNLOAD_MAX" = 0xEE,
"SHORT_DOWNLOAD" = 0xED,
"MODIFY_BITS" = 0xEC,
"SET_CAL_PAGE" = 0xEB,
"GET_CAL_PAGE" = 0xEA,
"GET_PAG_PROCESSOR_INFO" = 0xE9,
"GET_SEGMENT_INFO" = 0xE8,
"GET_PAGE_INFO" = 0xE7,
"SET_SEGMENT_MODE" = 0xE6,
"GET_SEGMENT_MODE" = 0xE5,
"COPY_CAL_PAGE" = 0xE4,
"CLEAR_DAQ_LIST" = 0xE3,
"SET_DAQ_PTR" = 0xE2,
"WRITE_DAQ" = 0xE1,
"SET_DAQ_LIST_MODE" = 0xE0,
"GET_DAQ_LIST_MODE" = 0xDF,
"START_STOP_DAQ_LIST" = 0xDE,
"START_STOP_SYNCH" = 0xDD,
"GET_DAQ_CLOCK" = 0xDC,
"READ_DAQ" = 0xDB,
"GET_DAQ_PROCESSOR_INFO" = 0xDA,
"GET_DAQ_RESOLUTION_INFO" = 0xD9,
"GET_DAQ_LIST_INFO" = 0xD8,
"GET_DAQ_EVENT_INFO" = 0xD7,
"FREE_DAQ" = 0xD6,
"ALLOC_DAQ" = 0xD5,
"ALLOC_ODT" = 0xD4,
"ALLOC_ODT_ENTRY" = 0xD3,
"PROGRAM_START" = 0xD2,
"PROGRAM_CLEAR" = 0xD1,
"PROGRAM" = 0xD0,
"PROGRAM_RESET" = 0xCF,
"GET_PGM_PROCESSOR_INFO" = 0xCE,
"GET_SECTOR_INFO" = 0xCD,
"PROGRAM_PREPARE" = 0xCC,
"PROGRAM_FORMAT" = 0xCB,
"PROGRAM_NEXT" = 0xCA,
"PROGRAM_MAX" = 0xC9,
"PROGRAM_VERIFY" = 0xC8
})*;
"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 { /* DAQ_CONFIG_TYPE */
"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, /* DIRECTION = DAQ only */
"STIM" = 2, /* DIRECTION = STIM only */
"DAQ_STIM" = 3 /* both directions possible */
};
"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, /* only DAQ_LISTs with DIRECTION = DAQ */
"STIM" = 2, /* only DAQ_LISTs with DIRECTION = STIM */
"DAQ_STIM" = 3 /* both kind of DAQ_LISTs */
};
uchar; /* MAX_DAQ_LIST */
uchar; /* TIME_CYCLE */
uchar; /* TIME_UNIT */
uchar; /* PRIORITY */
})*;
};
};
taggedunion Daq_Event { /* for MEASUREMENTs */
"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 { /* for MEMORY_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 { /* PAGES for this SEGMENT */
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, /* on falling edge only */
"DUAL" = 2 /* on falling and rising edge */
};
"MAX_DLC_REQUIRED"; /* master to slave frames */
(block "DAQ_LIST_CAN_ID" struct {
uint; /* reference to DAQ_LIST_NUMBER */
taggedstruct { /* exclusive tags: either VARIABLE or FIXED */
"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 { /* exclusive tags */
"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
};
};
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, /* Numbers according to USB spec.*/
"INTERRUPT_TRANSFER" = 3
};
uint; /* wMaxPacketSize: Maximum packet */
/* size of endpoint in bytes */
uchar; /* bInterval: polling of endpoint */
enum { /* Packing of XCP Messages */
"MESSAGE_PACKING_SINGLE" = 0, /* Single per USB data packet */
"MESSAGE_PACKING_MULTIPLE" = 1, /* Multiple per USB data packet */
"MESSAGE_PACKING_STREAMING" = 2 /* No restriction by packet sizes*/
};
enum { /* Alignment mandatory for all */
"ALIGNMENT_8_BIT" = 0, /* packing types */
"ALIGNMENT_16_BIT"= 1,
"ALIGNMENT_32_BIT"= 2,
"ALIGNMENT_64_BIT"= 3
};
taggedstruct { /* Optional */
"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 { /* OUT-EP for CMD and */
/* STIM (if not specified otherwise) */
block "OUT_EP_CMD_STIM" struct ep_parameters;
};
taggedunion { /* IN-EP for RES/ERR, */
/* DAQ (if not specified otherwise) and */
/* EV/SERV (if not specified otherwise) */
block "IN_EP_RESERR_DAQ_EVSERV" struct ep_parameters;
};
/* ----------- Begin of optional ------- */
taggedstruct { /* Optional */
"ALTERNATE_SETTING_NO" uchar; /* Number of alternate setting */
/* String Descriptor of XCP */
/* interface */
"INTERFACE_STRING_DESCRIPTOR" char [101];
/* multiple OUT-EP's for STIM */
(block "OUT_EP_ONLY_STIM" struct ep_parameters)*;
/* multiple IN-EP's for DAQ */
(block "IN_EP_ONLY_DAQ" struct ep_parameters)*;
/* only one IN-EP for EV/SERV */
block "IN_EP_ONLY_EVSERV" struct ep_parameters;
(block "DAQ_LIST_USB_ENDPOINT" struct {
uint; /* reference to DAQ_LIST_NUMBER */
taggedstruct { /* only mentioned if not VARIABLE */
"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 */
};
enum packet_assignment_type {
"NOT_ALLOWED",
"FIXED",
"VARIABLE_INITIALISED",
"VARIABLE"
}; /* 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 */
};
};
};
"CANAPE_GROUP" taggedstruct {
block "STRUCTURE_LIST" (char[1024])*;
};
};
/end A2ML
Loading…
Cancel
Save