#ifndef _COMMON_DEF_FOR_A2L_ #define _COMMON_DEF_FOR_A2L_ #include #include #include enum A2L_BYTE_ORDER_MSB_TYPE { BYTE_ORDER_MSB_LAST = 0, BYTE_ORDER_MSB_FIRST = 1 }; enum A2L_ADDRESS_GRANULARITY_TYPE { ADDRESS_GRANULARITY_BYTE = 1, ADDRESS_GRANULARITY_WORD = 2, ADDRESS_GRANULARITY_DWORD = 4 }; enum A2L_OPTIONAL_COMMAND_TYPE { 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, WRITE_DAQ_MULTIPLE = 0xC7 }; enum A2L_DAQ_MODE_TYPE { STATIC = 0, DYNAMIC = 1 }; enum A2L_DAQ_OPTIMISATION_TYPE { 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 A2L_DAQ_ADDRESS_EXTENSION { ADDRESS_EXTENSION_FREE = 0, ADDRESS_EXTENSION_ODT = 1, ADDRESS_EXTENSION_DAQ = 3, }; enum A2L_DAQ_IDENTIFICATION_FIELD_TYPE { 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 A2L_DAQ_GRANULARITY_ODT_ENTRY_SIZE { 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 }; enum A2L_OverloadIndication { NO_OVERLOAD_INDICATION = 0, OVERLOAD_INDICATION_PID = 1, OVERLOAD_INDICATION_EVENT = 2 }; enum A2L_GranularityOdtEntrySizeStim{ 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 }; enum A2L_TimestampSupportedSize{ NO_TIME_STAMP = 0, SIZE_BYTE = 1, SIZE_WORD = 2, SIZE_DWORD = 4 }; enum A2L_TimestampSupportedUnit { 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 }; enum A2L_DaqListType { DAQ = 1, STIM = 2, DAQ_STIM = 3 }; struct A2L_CommunicatonModeSupported { bool m_bIsBlockMode; unsigned char m_cMaster_MAX_BS; // MAX_BS unsigned char m_cMaster_MIN_ST; // MIN_ST unsigned char m_cInterleaved; // QUEUE_SIZE }; struct A2L_Protocol_Layer { uint32_t m_nXCPProtocolVersion; /* XCP protocol layer version, current 0x100 */ uint32_t m_nTimeout_T1; /* T1 [ms] */ uint32_t m_nTimeout_T2; /* T2 [ms] */ uint32_t m_nTimeout_T3; /* T3 [ms] */ uint32_t m_nTimeout_T4; /* T4 [ms] */ uint32_t m_nTimeout_T5; /* T5 [ms] */ uint32_t m_nTimeout_T6; /* T6 [ms] */ uint32_t m_nTimeout_T7; /* T7 [ms] */ unsigned char m_cMAX_CTO; /* MAX_CTO */ uint32_t m_nMAX_DTO; /* MAX_DTO */ A2L_BYTE_ORDER_MSB_TYPE m_nByteOrderMSBType; A2L_ADDRESS_GRANULARITY_TYPE m_nAddressGranularityType; std::list < unsigned char > m_nOptionalCommandList; A2L_CommunicatonModeSupported m_stCommunicationModeSupported; std::string m_strSeedAndKeyExternalFunction; // Name of the Seed&Key function /* "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 A2L_StimBlock { bool m_bIsUse; A2L_GranularityOdtEntrySizeStim m_nGranularityOdtEntrySizeStim; unsigned char m_cMaxOdtEntrySizeStim; }; struct A2l_DaqTimeStampSupported { bool m_bIsUse; uint32_t m_nTimestampTicks; A2L_TimestampSupportedSize m_nTimestampSupportedSize; A2L_TimestampSupportedUnit m_nTimestampSupportedUnit; }; struct A2L_ODTEntry { unsigned char m_cOdtEntryNumber; unsigned long m_lElementAddress; unsigned char m_cExtenstionElementAddress; unsigned char m_cElementSize; unsigned char m_cBitOffset; }; struct A2L_DaqListPredefined { unsigned char m_cOdtNumber; std::list < A2L_ODTEntry> m_OdtEntryList; }; struct A2L_DaqList { uint32_t m_nDaqListNumber; A2L_DaqListType m_nDatListType; unsigned char m_cMaxOdt; unsigned char m_cMaxOdtEntries; unsigned char m_cFirstPid; uint32_t m_nEventFixed; std::list < A2L_DaqListPredefined> m_PredefinedList; }; struct A2L_Daq { A2L_DAQ_MODE_TYPE m_nDaqMode; uint32_t m_nMaxDaq; /* MAX_DAQ */ uint32_t m_nMaxEventChannel; /* MAX_EVENT_CHANNEL */ unsigned char m_cMinDaq; /* MIN_DAQ */ A2L_DAQ_OPTIMISATION_TYPE m_nOptimisationType; A2L_DAQ_ADDRESS_EXTENSION m_nAddressExtention; A2L_DAQ_IDENTIFICATION_FIELD_TYPE m_nIdentificationFieldType; A2L_DAQ_GRANULARITY_ODT_ENTRY_SIZE m_nGranularityOdtSize; unsigned char m_cMaxOdtEntrySize; /* MAX_ODT_ENTRY_SIZE_DAQ */ A2L_OverloadIndication m_nOverloadIndication; A2L_StimBlock m_nStimBlock; A2l_DaqTimeStampSupported m_nTimeStampSupported; std::list m_nDaqList; }; #endif