Browse Source

sync source

master
Ian Ilkyun Oh 2 months ago
parent
commit
60154e449b
  1. 630
      TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.cpp
  2. 3
      TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.h
  3. 261
      TestLibDlg/IncSourceTestDlg/common_def.h

630
TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.cpp

@ -377,217 +377,217 @@ void CIncSourceTestDlgDlg::loadA2lFile(std::string strFilePath)
switch (j) {
case 0: // version
m_stA2LProtocolLayer.m_nXCPProtocolVersion = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nXCPProtocolVersion = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 1: // t1
m_stA2LProtocolLayer.m_nTimeout_T1 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T1 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 2: // t2
m_stA2LProtocolLayer.m_nTimeout_T2 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T2 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 3: // t3
m_stA2LProtocolLayer.m_nTimeout_T3 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T3 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 4: // t4
m_stA2LProtocolLayer.m_nTimeout_T4 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T4 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 5: // t5
m_stA2LProtocolLayer.m_nTimeout_T5 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T5 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 6: // t6
m_stA2LProtocolLayer.m_nTimeout_T6 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T6 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 7: // t7
m_stA2LProtocolLayer.m_nTimeout_T7 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nTimeout_T7 = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 8: // max cto
m_stA2LProtocolLayer.m_cMAX_CTO = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_cMAX_CTO = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 9: // max dto
m_stA2LProtocolLayer.m_nMAX_DTO = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nMAX_DTO = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
default: // optional command
if (block.ItemList()[i].ItemList[j].Value == "BYTE_ORDER_MSB_LAST") {
m_stA2LProtocolLayer.m_nByteOrderMSBType = A2L_BYTE_ORDER_MSB_TYPE::BYTE_ORDER_MSB_LAST;
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nByteOrderMSBType = A2L_BYTE_ORDER_MSB_TYPE::BYTE_ORDER_MSB_LAST;
}
else if (block.ItemList()[i].ItemList[j].Value == "BYTE_ORDER_MSB_FIRST") {
m_stA2LProtocolLayer.m_nByteOrderMSBType = A2L_BYTE_ORDER_MSB_TYPE::BYTE_ORDER_MSB_FIRST;
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nByteOrderMSBType = A2L_BYTE_ORDER_MSB_TYPE::BYTE_ORDER_MSB_FIRST;
}
else if (block.ItemList()[i].ItemList[j].Value == "ADDRESS_GRANULARITY_BYTE") {
m_stA2LProtocolLayer.m_nAddressGranularityType = A2L_ADDRESS_GRANULARITY_TYPE::ADDRESS_GRANULARITY_BYTE;
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nAddressGranularityType = A2L_ADDRESS_GRANULARITY_TYPE::ADDRESS_GRANULARITY_BYTE;
}
else if (block.ItemList()[i].ItemList[j].Value == "ADDRESS_GRANULARITY_WORD") {
m_stA2LProtocolLayer.m_nAddressGranularityType = A2L_ADDRESS_GRANULARITY_TYPE::ADDRESS_GRANULARITY_WORD;
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nAddressGranularityType = A2L_ADDRESS_GRANULARITY_TYPE::ADDRESS_GRANULARITY_WORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "ADDRESS_GRANULARITY_DWORD") {
m_stA2LProtocolLayer.m_nAddressGranularityType = A2L_ADDRESS_GRANULARITY_TYPE::ADDRESS_GRANULARITY_DWORD;
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nAddressGranularityType = A2L_ADDRESS_GRANULARITY_TYPE::ADDRESS_GRANULARITY_DWORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "OPTIONAL_CMD") {
j++;
TRACE("[%d] %s\n", j, block.ItemList()[i].ItemList[j].Value.c_str());
if (block.ItemList()[i].ItemList[j].Value == "GET_COMM_MODE_INFO") { // 0xFB
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_COMM_MODE_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_COMM_MODE_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_ID") { // 0xFA
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_ID);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_ID);
}
else if (block.ItemList()[i].ItemList[j].Value == "SET_REQUEST") { // 0xF9
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_REQUEST);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_REQUEST);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_SEED") { // 0xF8
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SEED);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SEED);
}
else if (block.ItemList()[i].ItemList[j].Value == "UNLOCK") { // 0xF7
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::UNLOCK);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::UNLOCK);
}
else if (block.ItemList()[i].ItemList[j].Value == "SET_MTA") { // 0xF6
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_MTA);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_MTA);
}
else if (block.ItemList()[i].ItemList[j].Value == "UPLOAD") { // 0xF5
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::UPLOAD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::UPLOAD);
}
else if (block.ItemList()[i].ItemList[j].Value == "SHORT_UPLOAD") { // 0xF4
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SHORT_UPLOAD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SHORT_UPLOAD);
}
else if (block.ItemList()[i].ItemList[j].Value == "BUILD_CHECKSUM") { // 0xF3
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::BUILD_CHECKSUM);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::BUILD_CHECKSUM);
}
else if (block.ItemList()[i].ItemList[j].Value == "TRANSPORT_LAYER_CMD") { // 0xF2
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::TRANSPORT_LAYER_CMD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::TRANSPORT_LAYER_CMD);
}
else if (block.ItemList()[i].ItemList[j].Value == "USER_CMD") { // 0xF1
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::USER_CMD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::USER_CMD);
}
else if (block.ItemList()[i].ItemList[j].Value == "DOWNLOAD") { // 0xF0
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD);
}
else if (block.ItemList()[i].ItemList[j].Value == "DOWNLOAD") { // 0xF0
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD);
}
else if (block.ItemList()[i].ItemList[j].Value == "DOWNLOAD_NEXT") { // 0xEF
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD_NEXT);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD_NEXT);
}
else if (block.ItemList()[i].ItemList[j].Value == "DOWNLOAD_MAX") { // 0xEE
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD_MAX);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::DOWNLOAD_MAX);
}
else if (block.ItemList()[i].ItemList[j].Value == "SHORT_DOWNLOAD") { // 0xED
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SHORT_DOWNLOAD);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SHORT_DOWNLOAD);
}
else if (block.ItemList()[i].ItemList[j].Value == "MODIFY_BITS") { // 0xEC
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::MODIFY_BITS);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::MODIFY_BITS);
}
else if (block.ItemList()[i].ItemList[j].Value == "SET_CAL_PAGE") { // 0xEB
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_CAL_PAGE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_CAL_PAGE);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_CAL_PAGE") { // 0xEA
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_CAL_PAGE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_CAL_PAGE);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_PAG_PROCESSOR_INFO") { // 0xE9
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_PAG_PROCESSOR_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_PAG_PROCESSOR_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_SEGMENT_INFO") { // 0xE8
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SEGMENT_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SEGMENT_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_PAGE_INFO") { // 0xE7
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_PAGE_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_PAGE_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "SET_SEGMENT_MODE") { // 0xE6
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_SEGMENT_MODE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_SEGMENT_MODE);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_SEGMENT_MODE") { // 0xE5
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SEGMENT_MODE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SEGMENT_MODE);
}
else if (block.ItemList()[i].ItemList[j].Value == "COPY_CAL_PAGE") { // 0xE4
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::COPY_CAL_PAGE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::COPY_CAL_PAGE);
}
else if (block.ItemList()[i].ItemList[j].Value == "SET_DAQ_PTR") { // 0xE2
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_DAQ_PTR);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_DAQ_PTR);
}
else if (block.ItemList()[i].ItemList[j].Value == "WRITE_DAQ") { // 0xE1
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::WRITE_DAQ);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::WRITE_DAQ);
}
else if (block.ItemList()[i].ItemList[j].Value == "SET_DAQ_LIST_MODE") { // 0xE0
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_DAQ_LIST_MODE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_DAQ_LIST_MODE);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_DAQ_LIST_MODE") { // 0xDF
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_LIST_MODE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_LIST_MODE);
}
else if (block.ItemList()[i].ItemList[j].Value == "START_STOP_DAQ_LIST") { // 0xDE
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::START_STOP_DAQ_LIST);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::START_STOP_DAQ_LIST);
}
else if (block.ItemList()[i].ItemList[j].Value == "START_STOP_SYNCH") { // 0xDD
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::START_STOP_SYNCH);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::START_STOP_SYNCH);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_DAQ_CLOCK") { // 0xDC
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_CLOCK);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_CLOCK);
}
else if (block.ItemList()[i].ItemList[j].Value == "READ_DAQ") { // 0xDB
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::READ_DAQ);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::READ_DAQ);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_DAQ_PROCESSOR_INFO") { // 0xDA
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_PROCESSOR_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_PROCESSOR_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_DAQ_RESOLUTION_INFO") { // 0xD9
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_RESOLUTION_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_RESOLUTION_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_DAQ_LIST_INFO") { // 0xD8
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_LIST_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_LIST_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_DAQ_EVENT_INFO") { // 0xD7
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_EVENT_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_DAQ_EVENT_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "FREE_DAQ") { // 0xD6
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::FREE_DAQ);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::FREE_DAQ);
}
else if (block.ItemList()[i].ItemList[j].Value == "ALLOC_DAQ") { // 0xD5
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::ALLOC_DAQ);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::ALLOC_DAQ);
}
else if (block.ItemList()[i].ItemList[j].Value == "ALLOC_ODT") { // 0xD4
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::ALLOC_ODT);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::ALLOC_ODT);
}
else if (block.ItemList()[i].ItemList[j].Value == "ALLOC_ODT_ENTRY") { // 0xD3
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::ALLOC_ODT_ENTRY);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::ALLOC_ODT_ENTRY);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_START") { // 0xD2
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_START);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_START);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_CLEAR") { // 0xD1
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_CLEAR);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_CLEAR);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM") { // 0xD0
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_RESET") { // 0xCF
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_RESET);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_RESET);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_PGM_PROCESSOR_INFO") { // 0xCE
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_PGM_PROCESSOR_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_PGM_PROCESSOR_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "GET_SECTOR_INFO") { // 0xCD
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SECTOR_INFO);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::GET_SECTOR_INFO);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_PREPARE") { // 0xCC
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_PREPARE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_PREPARE);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_FORMAT") { // 0xCB
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_FORMAT);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_FORMAT);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_NEXT") { // 0xCA
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_NEXT);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_NEXT);
}
else if (block.ItemList()[i].ItemList[j].Value == "DOWNLOAD_NEXT") { // 0xEF
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_DAQ_LIST_MODE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::SET_DAQ_LIST_MODE);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_MAX") { // 0xC9
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_MAX);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_MAX);
}
else if (block.ItemList()[i].ItemList[j].Value == "PROGRAM_VERIFY") { // 0xC8
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_VERIFY);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::PROGRAM_VERIFY);
}
else if (block.ItemList()[i].ItemList[j].Value == "WRITE_DAQ_MULTIPLE") { // 0xC7
m_stA2LProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::WRITE_DAQ_MULTIPLE);
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_nOptionalCommandList.push_back(A2L_OPTIONAL_COMMAND_TYPE::WRITE_DAQ_MULTIPLE);
}
}
else if (block.ItemList()[i].ItemList[j].Value == "COMMUNICATION_MODE_SUPPORTED") {
@ -601,9 +601,9 @@ void CIncSourceTestDlgDlg::loadA2lFile(std::string strFilePath)
}
if (block.ItemList()[i].ItemList[j].Value == "MASTER") {
j++;
m_stA2LProtocolLayer.m_stCommunicationModeSupported.m_cMaster_MAX_BS = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_stCommunicationModeSupported.m_cMaster_MAX_BS = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
j++;
m_stA2LProtocolLayer.m_stCommunicationModeSupported.m_cMaster_MIN_ST = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_stCommunicationModeSupported.m_cMaster_MIN_ST = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
}
@ -611,7 +611,7 @@ void CIncSourceTestDlgDlg::loadA2lFile(std::string strFilePath)
else if (block.ItemList()[i].ItemList[j].Value == "SEED_AND_KEY_EXTERNAL_FUNCTION") {
j++;
TRACE("[%d] %s\n", j, block.ItemList()[i].ItemList[j].Value.c_str());
m_stA2LProtocolLayer.m_strSeedAndKeyExternalFunction = block.ItemList()[i].ItemList[j].Value;
m_stA2LData.m_stIFDATAs.m_stProtocolLayer.m_strSeedAndKeyExternalFunction = block.ItemList()[i].ItemList[j].Value;
}
break;
@ -622,40 +622,457 @@ void CIncSourceTestDlgDlg::loadA2lFile(std::string strFilePath)
}
// 3. DAQ
if (block.ItemList()[i].BlockName == "DAQ") {
}
for (int j = 0; j < block.ItemList()[i].ItemList.size(); j++) {
// check digit
bool bIsDigit = true;
if (j > 0)
TRACE("asdf");
for (int cnt = 0; cnt < block.ItemList()[i].ItemList[j].Value.size(); cnt++) {
//int value = std::isdigit(block.ItemList()[i].ItemList[j].Value.at(cnt));
//int alpha = std::isalpha(block.ItemList()[i].ItemList[j].Value.at(cnt));
//TRACE("[%c][%d][%d]\n", block.ItemList()[i].ItemList[j].Value.at(cnt), value, alpha);
if (std::isdigit(block.ItemList()[i].ItemList[j].Value.at(cnt)) == 0)
bIsDigit = false;
}
for (int j = 0; j < block.ItemList()[i].ItemList.size(); j++) {
TRACE("[%d] %s\n", j, block.ItemList()[i].ItemList[j].Value.c_str());
switch (j) {
case 0: // mode
if (block.ItemList()[i].ItemList[j].Value == "STATIC") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nDaqMode = A2L_DAQ_MODE_TYPE::STATIC;
}
else if (block.ItemList()[i].ItemList[j].Value == "DYNAMIC") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nDaqMode = A2L_DAQ_MODE_TYPE::DYNAMIC;
}
break;
case 1://max daq
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nMaxDaq = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 2://max event channel
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nMaxEventChannel = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 3://min daq
m_stA2LData.m_stIFDATAs.m_stDAQ.m_cMinDaq = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 4://optimisation type
if (block.ItemList()[i].ItemList[j].Value == "OPTIMISATION_TYPE_DEFAULT") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOptimisationType = A2L_DAQ_OPTIMISATION_TYPE::OPTIMISATION_TYPE_DEFAULT;
}
else if (block.ItemList()[i].ItemList[j].Value == "OPTIMISATION_TYPE_ODT_TYPE_16") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOptimisationType = A2L_DAQ_OPTIMISATION_TYPE::OPTIMISATION_TYPE_ODT_TYPE_16;
}
else if (block.ItemList()[i].ItemList[j].Value == "OPTIMISATION_TYPE_ODT_TYPE_32") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOptimisationType = A2L_DAQ_OPTIMISATION_TYPE::OPTIMISATION_TYPE_ODT_TYPE_32;
}
else if (block.ItemList()[i].ItemList[j].Value == "OPTIMISATION_TYPE_ODT_TYPE_64") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOptimisationType = A2L_DAQ_OPTIMISATION_TYPE::OPTIMISATION_TYPE_ODT_TYPE_64;
}
else if (block.ItemList()[i].ItemList[j].Value == "OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOptimisationType = A2L_DAQ_OPTIMISATION_TYPE::OPTIMISATION_TYPE_ODT_TYPE_ALIGNMENT;
}
else if (block.ItemList()[i].ItemList[j].Value == "OPTIMISATION_TYPE_MAX_ENTRY_SIZE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOptimisationType = A2L_DAQ_OPTIMISATION_TYPE::OPTIMISATION_TYPE_MAX_ENTRY_SIZE;
}
break;
if (bIsDigit)
AddLogString(string_format("%d : Address 0x%X (%d) : %s itemlist=%d", j, atoi(block.ItemList()[i].ItemList[j].Value.c_str()), atoi(block.ItemList()[i].ItemList[j].Value.c_str()), block.ItemList()[i].ItemList[j].BlockName.c_str(), block.ItemList()[i].ItemList[j].ItemList.size()));
else
AddLogString(string_format("%d : %s : %s itemlist=%d", j, block.ItemList()[i].ItemList[j].Value.c_str(), block.ItemList()[i].ItemList[j].BlockName.c_str(), block.ItemList()[i].ItemList[j].ItemList.size()));
case 5://address extemtopm type
if (block.ItemList()[i].ItemList[j].Value == "ADDRESS_EXTENSION_FREE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nAddressExtention = A2L_DAQ_ADDRESS_EXTENSION::ADDRESS_EXTENSION_FREE;
}
else if (block.ItemList()[i].ItemList[j].Value == "ADDRESS_EXTENSION_ODT") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nAddressExtention = A2L_DAQ_ADDRESS_EXTENSION::ADDRESS_EXTENSION_ODT;
}
else if (block.ItemList()[i].ItemList[j].Value == "ADDRESS_EXTENSION_DAQ") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nAddressExtention = A2L_DAQ_ADDRESS_EXTENSION::ADDRESS_EXTENSION_DAQ;
}
break;
case 6://identification type
if (block.ItemList()[i].ItemList[j].Value == "IDENTIFICATION_FIELD_TYPE_ABSOLUTE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nIdentificationFieldType = A2L_DAQ_IDENTIFICATION_FIELD_TYPE::IDENTIFICATION_FIELD_TYPE_ABSOLUTE;
}
else if (block.ItemList()[i].ItemList[j].Value == "IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nIdentificationFieldType = A2L_DAQ_IDENTIFICATION_FIELD_TYPE::IDENTIFICATION_FIELD_TYPE_RELATIVE_BYTE;
}
else if (block.ItemList()[i].ItemList[j].Value == "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nIdentificationFieldType = A2L_DAQ_IDENTIFICATION_FIELD_TYPE::IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nIdentificationFieldType = A2L_DAQ_IDENTIFICATION_FIELD_TYPE::IDENTIFICATION_FIELD_TYPE_RELATIVE_WORD_ALIGNED;
}
break;
case 7://granularityodt type
if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nGranularityOdtSize = A2L_DAQ_GRANULARITY_ODT_ENTRY_SIZE::GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE;
}
else if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nGranularityOdtSize = A2L_DAQ_GRANULARITY_ODT_ENTRY_SIZE::GRANULARITY_ODT_ENTRY_SIZE_DAQ_WORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nGranularityOdtSize = A2L_DAQ_GRANULARITY_ODT_ENTRY_SIZE::GRANULARITY_ODT_ENTRY_SIZE_DAQ_DWORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nGranularityOdtSize = A2L_DAQ_GRANULARITY_ODT_ENTRY_SIZE::GRANULARITY_ODT_ENTRY_SIZE_DAQ_DLONG;
}
break;
case 8://MAX_ODT_ENTRY_SIZE_DAQ
m_stA2LData.m_stIFDATAs.m_stDAQ.m_cMaxOdtEntrySize = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
case 9://OverloadIndication
if (block.ItemList()[i].ItemList[j].Value == "NO_OVERLOAD_INDICATION") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOverloadIndication = A2L_OverloadIndication::NO_OVERLOAD_INDICATION;
}
else if (block.ItemList()[i].ItemList[j].Value == "OVERLOAD_INDICATION_PID") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOverloadIndication = A2L_OverloadIndication::OVERLOAD_INDICATION_PID;
}
else if (block.ItemList()[i].ItemList[j].Value == "OVERLOAD_INDICATION_EVENT") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nOverloadIndication = A2L_OverloadIndication::OVERLOAD_INDICATION_EVENT;
}
break;
default:
if (block.ItemList()[i].ItemList[j].Value == "STIM") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nStimBlock.m_bIsUse = true;
j++;
if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nStimBlock.m_nGranularityOdtEntrySizeStim = A2L_GranularityOdtEntrySizeStim::GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE;
}
else if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nStimBlock.m_nGranularityOdtEntrySizeStim = A2L_GranularityOdtEntrySizeStim::GRANULARITY_ODT_ENTRY_SIZE_STIM_WORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nStimBlock.m_nGranularityOdtEntrySizeStim = A2L_GranularityOdtEntrySizeStim::GRANULARITY_ODT_ENTRY_SIZE_STIM_DWORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nStimBlock.m_nGranularityOdtEntrySizeStim = A2L_GranularityOdtEntrySizeStim::GRANULARITY_ODT_ENTRY_SIZE_STIM_DLONG;
}
j++;
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nStimBlock.m_cMaxOdtEntrySizeStim = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
for (int k = 0; k < (block.ItemList()[i].ItemList[j].ItemList.size()); k++) {
AddLogString(string_format(" %d : %s : %s", k, block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str(), block.ItemList()[i].ItemList[j].ItemList[k].BlockName.c_str()));
}
else if (block.ItemList()[i].ItemList[j].Value == "TIMESTAMP_SUPPORTED") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_bIsUse = true;
j++;
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampTicks = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
j++;
if (block.ItemList()[i].ItemList[j].Value == "NO_TIME_STAMP") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedSize = A2L_TimestampSupportedSize::NO_TIME_STAMP;
}
else if (block.ItemList()[i].ItemList[j].Value == "SIZE_BYTE") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedSize = A2L_TimestampSupportedSize::SIZE_BYTE;
}
else if (block.ItemList()[i].ItemList[j].Value == "SIZE_WORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedSize = A2L_TimestampSupportedSize::SIZE_WORD;
}
else if (block.ItemList()[i].ItemList[j].Value == "SIZE_DWORD") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedSize = A2L_TimestampSupportedSize::SIZE_DWORD;
}
j++;
if (block.ItemList()[i].ItemList[j].Value == "UNIT_1NS") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_1NS;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_10NS") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_10NS;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_100NS") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_100NS;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_1US") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_1US;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_10US") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_10US;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_100US") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_100US;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_1MS") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_1MS;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_10MS") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_10MS;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_100MS") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_100MS;
}
else if (block.ItemList()[i].ItemList[j].Value == "UNIT_1S") {
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nTimeStampSupported.m_nTimestampSupportedUnit = A2L_TimestampSupportedUnit::UNIT_1S;
}
}
else if (block.ItemList()[i].ItemList[j].Value == "DAQ_LIST") {
for (int k = 0; k < (block.ItemList()[i].ItemList[j].ItemList.size()); k++) {
AddLogString(string_format(" %d : %s : %s", k, block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str(), block.ItemList()[i].ItemList[j].ItemList[k].BlockName.c_str()));
}
}
else if (block.ItemList()[i].ItemList[j].Value == "") { // event
if (block.ItemList()[i].ItemList[j].BlockName == "EVENT") {
if (block.ItemList()[i].ItemList[j].ItemList.size() > 0) {
A2L_DaqEvent daqEvent;
daqEvent.m_strEventChannelName = block.ItemList()[i].ItemList[j].ItemList[0].Value;
daqEvent.m_strEventChannelShortName = block.ItemList()[i].ItemList[j].ItemList[1].Value;
daqEvent.m_nEventChannelNumber = atoi(block.ItemList()[i].ItemList[j].ItemList[2].Value.c_str());
if (block.ItemList()[i].ItemList[j].ItemList[3].Value == "EVENT_DAQ")
daqEvent.m_nDaqEventType = A2L_DaqEventType::EVENT_DAQ;
else if (block.ItemList()[i].ItemList[j].ItemList[3].Value == "EVENT_STIM")
daqEvent.m_nDaqEventType = A2L_DaqEventType::EVENT_STIM;
else if (block.ItemList()[i].ItemList[j].ItemList[3].Value == "EVENT_DAQ_STIM")
daqEvent.m_nDaqEventType = A2L_DaqEventType::EVENT_DAQ_STIM;
daqEvent.m_cMaxDaqList = atoi(block.ItemList()[i].ItemList[j].ItemList[4].Value.c_str());
daqEvent.m_cTimeCycle = atoi(block.ItemList()[i].ItemList[j].ItemList[5].Value.c_str());
daqEvent.m_cTimeUnit = atoi(block.ItemList()[i].ItemList[j].ItemList[6].Value.c_str());
daqEvent.m_cPriority = atoi(block.ItemList()[i].ItemList[j].ItemList[7].Value.c_str());
m_stA2LData.m_stIFDATAs.m_stDAQ.m_nDaqEventList.push_back(daqEvent);
}
}
}
break;
}
}
}
// 4. PAG
if (block.ItemList()[i].BlockName == "PAG") {
m_stA2LData.m_stIFDATAs.m_stPAG.m_cMaxSegments = atoi(block.ItemList()[i].ItemList[0].Value.c_str());
}
// 5. XCP_ON_CAN
if (block.ItemList()[i].BlockName == "XCP_ON_CAN") {
for (int j = 0; j < block.ItemList()[i].ItemList.size(); j++) {
switch (j) {
case 0:// version
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_nVersion = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
break;
AddLogString("");
default:
if (block.ItemList()[i].ItemList[j].Value == "CAN_ID_MASTER") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_lCanIDMater = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "CAN_ID_SLAVE") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_lCanIDSlave = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "CAN_ID_BROADCAST") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_lCanIdBroadcast = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "BAUDRATE") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_lBaudrate = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "SAMPLE_POINT") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_cSamplePoint = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "SAMPLE_RATE") {
j++;
if (block.ItemList()[i].ItemList[j].Value == "SINGLE")
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_nSampleRate = A2L_CAN_SAMPLE_RATE::RATE_SINGLE;
else if (block.ItemList()[i].ItemList[j].Value == "TRIPLE")
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_nSampleRate = A2L_CAN_SAMPLE_RATE::RATE_TRIPLE;
}
else if (block.ItemList()[i].ItemList[j].Value == "BTL_CYCLES") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_cBtlCycles = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "SJW") {
j++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_cSJW = atoi(block.ItemList()[i].ItemList[j].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].Value == "MAX_DLC_REQUIRED") {
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_bIsMaxDlcRequired = true;
}
else if (block.ItemList()[i].ItemList[j].Value == "SYNC_EDGE") {
j++;
if (block.ItemList()[i].ItemList[j].Value == "SINGLE")
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_nSyncEdge = A2L_CAN_SYNC_EDGE::EDGE_SINGLE;
else if (block.ItemList()[i].ItemList[j].Value == "DUAL")
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_nSyncEdge = A2L_CAN_SYNC_EDGE::EDGE_DUAL;
}
else if (block.ItemList()[i].ItemList[j].Value == "") { // event
if (block.ItemList()[i].ItemList[j].BlockName == "DAQ_LIST_CAN_ID") {
if (block.ItemList()[i].ItemList[j].ItemList.size() > 0) {
A2L_DAQ_LIST_CAN_ID daqCanID;
daqCanID.m_nDaqListNumber = atoi(block.ItemList()[i].ItemList[j].ItemList[0].Value.c_str());
for (int k = 1; k < (block.ItemList()[i].ItemList[j].ItemList.size()); k++) {
if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "FIXED") {
k++;
unsigned long value = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
daqCanID.m_lFixedDAQCanIDList.push_back(value);
}
}
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_DaqList.push_back(daqCanID);
}
}
else if (block.ItemList()[i].ItemList[j].BlockName == "EVENT_CAN_ID_LIST") {
if (block.ItemList()[i].ItemList[j].ItemList.size() > 0) {
A2L_EVENT_LIST_CAN_ID eventCanID;
eventCanID.m_EventListNumber = atoi(block.ItemList()[i].ItemList[j].ItemList[0].Value.c_str());
for (int k = 1; k < (block.ItemList()[i].ItemList[j].ItemList.size()); k++) {
if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "FIXED") {
k++;
unsigned long value = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
eventCanID.m_lFixedDAQCanIDList.push_back(value);
}
}
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_EventList.push_back(eventCanID);
}
}
else if (block.ItemList()[i].ItemList[j].BlockName == "CAN_FD") {
if (block.ItemList()[i].ItemList[j].ItemList.size() > 0) {
for (int k = 0; k < (block.ItemList()[i].ItemList[j].ItemList.size()); k++) {
if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "MAX_DLC") {
k++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_nMAXDlc = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "CAN_FD_DATA_TRANSFER_BAUDRATE") {
k++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_lBaudrate = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "SAMPLE_POINT") {
k++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_cSamplePoint = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "BTL_CYCLES") {
k++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_cBtlCycles = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "SJW") {
k++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_cSJW = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
}
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "SYNC_EDGE") {
k++;
if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "SINGLE")
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_nSyncEdge = A2L_CAN_SYNC_EDGE::EDGE_SINGLE;
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "DUAL")
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_nSyncEdge = A2L_CAN_SYNC_EDGE::EDGE_DUAL;
}
else if (block.ItemList()[i].ItemList[j].ItemList[k].Value == "SECONDARY_SAMPLE_POINT") {
k++;
m_stA2LData.m_stIFDATAs.m_stXCPCAN.m_stCANFD.m_cSecondarySamplePoint = atoi(block.ItemList()[i].ItemList[j].ItemList[k].Value.c_str());
}
}
}
}
}
break;
}
}
}
}
//AddLogString(string_format("block.AsString() : %s", block.AsString().c_str()));
AddLogString("");
}
return;
AddLogString("");
const auto& compu_method_list = module->CompuMethods();
//EXPECT_GT(compu_method_list.size(), 0);
std::cout << "\t\tCOMPU METHOD" << std::endl;
for (const auto& [method_name, method] : compu_method_list) {
;
std::cout << method_name << " " << method->Description() << std::endl;
COMPU_METHOD compuMethod;
compuMethod.m_strName = method_name;
compuMethod.m_strDescription = method->Description();
compuMethod.m_strFormat = method->Format();
compuMethod.m_strUnit = method->PhysUnit();
if (method->Type() == a2l::A2lConversionType::LINEAR) {
compuMethod.m_nConversionType = A2L_TAB_CONVERSION_TYPE::LINEAR;
for (int cnt = 0; cnt < method->CoeffsLinear().size(); cnt++) {
compuMethod.m_Coeffs.push_back(method->CoeffsLinear().at(cnt));
}
}
else if (method->Type() == a2l::A2lConversionType::RAT_FUNC) {
compuMethod.m_nConversionType = A2L_TAB_CONVERSION_TYPE::RAT_FUNC;
for (int cnt = 0; cnt < method->Coeffs().size(); cnt++) {
compuMethod.m_Coeffs.push_back(method->Coeffs().at(cnt));
}
}
m_stA2LData.m_stCompuMethods.m_CompuMethodList.push_back(compuMethod);
}
std::cout << std::endl;
AddLogString("");
const auto& meas_list = module->Measurements();
//EXPECT_GT(meas_list.size(), 0);
std::cout << "\t\tMEASUREMENT" << std::endl;
AddLogString(string_format("measurement : %d", meas_list.size()));
for (const auto& [meas_name, meas] : meas_list) {
std::cout << meas_name << " " << meas->Description() << std::endl;
A2L_MEASUREMENT measurement;
measurement.m_strName = meas_name;
measurement.m_strDescription = meas->Description();
if (meas->DataType() == a2l::A2lDataType::UBYTE)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_UBYTE;
else if (meas->DataType() == a2l::A2lDataType::SBYTE)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_SBYTE;
else if (meas->DataType() == a2l::A2lDataType::UWORD)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_UWORD;
else if (meas->DataType() == a2l::A2lDataType::SWORD)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_SWORD;
else if (meas->DataType() == a2l::A2lDataType::ULONG)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_ULONG;
else if (meas->DataType() == a2l::A2lDataType::SLONG)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_SLONG;
else if (meas->DataType() == a2l::A2lDataType::A_UINT64)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_UINT64;
else if (meas->DataType() == a2l::A2lDataType::A_INT64)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_INT64;
else if (meas->DataType() == a2l::A2lDataType::FLOAT16_IEEE)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_FLOAT16_IEEE;
else if (meas->DataType() == a2l::A2lDataType::FLOAT32_IEEE)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_FLOAT32_IEEE;
else if (meas->DataType() == a2l::A2lDataType::FLOAT64_IEEE)
measurement.m_cDataType = A2L_DATA_TYPE::A2L_DATA_TYPE_FLOAT64_IEEE;
measurement.m_strCompuMothod = meas->Conversion();
measurement.m_cResolution = meas->Resolution();
measurement.m_cAccuracy = meas->Accuracy();
measurement.m_nLowerLimit = meas->LowerLimit();
measurement.m_nUpperLimit = meas->UpperLimit();
measurement.m_strSymbolLink = meas->SymbolLink().SymbolName;
measurement.m_nSymbolOffset = meas->SymbolLink().Offset;
measurement.m_nECUAddress = meas->EcuAddress();
if (meas->MatrixDim().size() > 0) {
for (int cnt = 0; cnt < meas->MatrixDim().size(); cnt++)
measurement.m_MatrixDimSizeList.push_back(meas->MatrixDim().at(cnt));
}
m_stA2LData.m_stMeasurements.m_MeasurementList.push_back(measurement);
}
std::cout << std::endl;
AddLogString("");
const auto& axis_list = module->AxisPtss();
//EXPECT_GT(axis_list.size(), 1);
@ -689,13 +1106,7 @@ void CIncSourceTestDlgDlg::loadA2lFile(std::string strFilePath)
AddLogString("");
const auto& compu_method_list = module->CompuMethods();
//EXPECT_GT(compu_method_list.size(), 0);
std::cout << "\t\tCOMPU METHOD" << std::endl;
for (const auto& [method_name, method] : compu_method_list) {
std::cout << method_name << " " << method->Description() << std::endl;
}
std::cout << std::endl;
const auto& compu_tab_list = module->CompuTabs();
//EXPECT_GT(compu_tab_list.size(), 0);
@ -755,21 +1166,6 @@ void CIncSourceTestDlgDlg::loadA2lFile(std::string strFilePath)
AddLogString("");
const auto& meas_list = module->Measurements();
//EXPECT_GT(meas_list.size(), 0);
std::cout << "\t\tMEASUREMENT" << std::endl;
AddLogString(string_format("measurement : %d", meas_list.size()));
i = 0;
for (const auto& [meas_name, meas] : meas_list) {
std::cout << meas_name << " " << meas->Description() << std::endl;
AddLogString(string_format(" %d : %s", i, meas->Description().c_str()));
}
std::cout << std::endl;
AddLogString("");
const auto& rec_list = module->RecordLayouts();
//EXPECT_GT(rec_list.size(), 0);
std::cout << "\t\tRECORD LAYOUT" << std::endl;

3
TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.h

@ -44,7 +44,8 @@ public:
protected:
CIncSourceTestDlgDlgAutoProxy* m_pAutoProxy;
HICON m_hIcon;
A2L_Protocol_Layer m_stA2LProtocolLayer;
A2L_Data m_stA2LData;
BOOL CanExit();

261
TestLibDlg/IncSourceTestDlg/common_def.h

@ -5,7 +5,20 @@
#include <stdint.h>
enum A2L_DATA_TYPE {
A2L_DATA_TYPE_UBYTE = 0, // 1 byte unsigned integer
A2L_DATA_TYPE_SBYTE, // 1 byte signed integer
A2L_DATA_TYPE_UWORD, // 2 byte unsigned integer
A2L_DATA_TYPE_SWORD, // 2 byte signed integer
A2L_DATA_TYPE_ULONG, // 4 byte unsigned integer
A2L_DATA_TYPE_SLONG, // 4 byte signed integer
A2L_DATA_TYPE_UINT64, // 8 byte unsigned integer
A2L_DATA_TYPE_INT64, // 8 byte signed integer
A2L_DATA_TYPE_FLOAT16_IEEE, // 4 byte(32 bit) floating point IEEE format
A2L_DATA_TYPE_FLOAT32_IEEE, // 4 byte(32 bit) floating point IEEE format
A2L_DATA_TYPE_FLOAT64_IEEE, // 8 byte(64 bit) floating point IEEE format
A2L_DATA_TYPE_FLOAT32_TASKING // 4 byte(32 bit) floating point tasking format
};
enum A2L_BYTE_ORDER_MSB_TYPE {
BYTE_ORDER_MSB_LAST = 0,
@ -140,20 +153,71 @@ enum A2L_TimestampSupportedUnit {
};
enum A2L_DaqListType {
DAQ = 1,
STIM = 2,
DAQ_STIM = 3
LIST_DAQ = 1,
LIST_STIM = 2,
LIST_DAQ_STIM = 3
};
enum A2L_DaqEventType {
EVENT_DAQ = 1,
EVENT_STIM = 2,
EVENT_DAQ_STIM = 3
};
enum A2L_PGMMode {
PGM_MODE_ABSOLUTE = 1,
PGM_MODE_FUNCTIONAL = 2,
PGM_MODE_ABSOLUTE_AND_FUNCTIONAL = 3
};
enum A2L_CAN_SAMPLE_RATE {
RATE_SINGLE = 1,
RATE_TRIPLE = 3
};
enum A2L_CAN_SYNC_EDGE {
EDGE_SINGLE = 1,
EDGE_DUAL = 2
};
enum A2L_TRANSCEIVER_DELAY_COMPENSATION {
COMPENSATION_OFF = 0,
COMPENSATION_ON = 1
};
enum A2L_TAB_CONVERSION_TYPE {
IDENTICAL = 0,
FORM, //- formula as specified in the Formula property.
LINEAR ,// 20260223 compumethod 일단 추가함 ax + b, coeffs_linear 값 가지는듯
RAT_FUNC, //- fractional rational function f(x) = (axx + bx + c) / (dxx + ex + f), where coefficients 'a' through 'f' are specified properties.
TAB_INTP, // - table with interpolation.
TAB_NOINTP, //- table without interpolation.
TAB_VERB, //- verbal conversion table.
UNKNOWN
};
enum A2L_CHRACTERISTICS_TYPE {
ASCII = 0,
CURVE, // - an array of values with 1 axis.
MAP,// - a table of values with 2 axes.
CUBOID,
CUBE_4,
CUBE_5,
VAL_BLK,
VALUE // - a single value with no axis.
};
struct A2L_CommunicatonModeSupported {
bool m_bIsBlockMode;
bool m_bIsBlockSlaveMode;
bool m_bIsBlockMasterMode;
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 {
struct A2L_XCP_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] */
@ -217,7 +281,7 @@ struct A2L_DaqListPredefined {
struct A2L_DaqList {
uint32_t m_nDaqListNumber;
A2L_DaqListType m_nDatListType;
A2L_DaqListType m_nDaqListType;
unsigned char m_cMaxOdt;
unsigned char m_cMaxOdtEntries;
unsigned char m_cFirstPid;
@ -227,7 +291,20 @@ struct A2L_DaqList {
};
struct A2L_Daq {
struct A2L_DaqEvent {
std::string m_strEventChannelName; // max len 101
std::string m_strEventChannelShortName; // max len 9
uint32_t m_nEventChannelNumber;
A2L_DaqEventType m_nDaqEventType;
unsigned char m_cMaxDaqList;
unsigned char m_cTimeCycle;
unsigned char m_cTimeUnit;
unsigned char m_cPriority;
};
struct A2L_XCP_Daq {
A2L_DAQ_MODE_TYPE m_nDaqMode;
uint32_t m_nMaxDaq; /* MAX_DAQ */
uint32_t m_nMaxEventChannel; /* MAX_EVENT_CHANNEL */
@ -241,7 +318,175 @@ struct A2L_Daq {
A2L_StimBlock m_nStimBlock;
A2l_DaqTimeStampSupported m_nTimeStampSupported;
std::list <A2L_DaqList> m_nDaqList;
std::list <A2L_DaqEvent> m_nDaqEventList;
};
struct A2L_XCP_PAG {
unsigned char m_cMaxSegments;
};
struct A2L_PGMSector {
std::string m_strSectorName;
unsigned char m_cSectorNumber;
unsigned long m_lAddress;
unsigned long m_llength;
unsigned char m_cClearSequenceNumber;
unsigned char m_cProgramSequenceNumber;
unsigned char m_cProgramMethod;
};
struct A2L_XCP_PGM {
A2L_PGMMode m_nPGMMode;
unsigned char m_nMaxSectors;
unsigned char m_nMaxCtoPgm;
A2L_CommunicatonModeSupported m_nCommunicationModeSupported;
std::list <A2L_PGMSector> m_nSectorList;
};
struct A2L_DAQ_LIST_CAN_ID {
uint32_t m_nDaqListNumber;
std::list <unsigned long> m_lFixedDAQCanIDList;
};
struct A2L_EVENT_LIST_CAN_ID {
uint32_t m_EventListNumber;
std::list <unsigned long> m_lFixedDAQCanIDList;
};
struct A2L_XCP_CANFD {
uint32_t m_nMAXDlc; // 8, 12, 16, 20, 24, 32, 48 or 64
unsigned long m_lBaudrate; // BAUDRATE [Hz]
unsigned char m_cSamplePoint;
unsigned char m_cBtlCycles;
unsigned char m_cSJW;
A2L_CAN_SYNC_EDGE m_nSyncEdge;
bool m_bIsMaxDlcRequired; // master to slave frames
unsigned char m_cSecondarySamplePoint;
A2L_TRANSCEIVER_DELAY_COMPENSATION m_nTransceiverDelayCompensation;
};
struct A2L_XCP_ON_CAN {
uint32_t m_nVersion; // xcp on can version
unsigned long m_lCanIdBroadcast; // auto detection CAN-ID
unsigned long m_lCanIDMater; // CMD/STIM CAN-ID
unsigned long m_lCanIDSlave; // RES/ERR/EV/SERV/DAQ CAN-ID
unsigned long m_lBaudrate; // Baudrate in Hz
unsigned char m_cSamplePoint; // Sample point in % of bit time
A2L_CAN_SAMPLE_RATE m_nSampleRate;
unsigned char m_cBtlCycles; // slots per bit time
unsigned char m_cSJW;
A2L_CAN_SYNC_EDGE m_nSyncEdge;
bool m_bIsMaxDlcRequired; // master to slave frames
std::list <A2L_DAQ_LIST_CAN_ID> m_DaqList;
std::list <A2L_EVENT_LIST_CAN_ID> m_EventList;
A2L_XCP_CANFD m_stCANFD;
};
struct A2L_IFDATAs_XCP {
uint32_t m_nXCPProtocolVersion;
A2L_XCP_Protocol_Layer m_stProtocolLayer;;
A2L_XCP_Daq m_stDAQ;
A2L_XCP_PAG m_stPAG;
A2L_XCP_PGM m_stPGM;
A2L_XCP_ON_CAN m_stXCPCAN;
};
// 20260223 unit 추후에
struct A2L_UNIT {
std::string m_strName;
std::string m_strDescription;
std::string m_strUnit;
};
struct A2L_UNITs {
std::list <A2L_UNIT> m_UnitList;
};
struct COMPU_METHOD {
std::string m_strName;
std::string m_strDescription;
A2L_TAB_CONVERSION_TYPE m_nConversionType;
std::string m_strFormat;
std::string m_strUnit;
std::list <double> m_Coeffs;
};
struct COMPU_METHODs {
std::list < COMPU_METHOD> m_CompuMethodList;
};
struct A2L_MEASUREMENT { // https://guide.intrepidcs.com/docs/asap2/a2l-item-area/measurements-tab/
std::string m_strName;
std::string m_strDescription;
A2L_DATA_TYPE m_cDataType;
std::string m_strCompuMothod;
unsigned char m_cResolution; // Smallest possible change in bits. (0 to 255)
unsigned char m_cAccuracy; // Possible variation from exact value in %.
int32_t m_nLowerLimit;
int32_t m_nUpperLimit;
int64_t m_nBitmask;
std::string m_strFormat; // Display formatting applied to numerical values. The syntax for this field is: %Length.Layout, Length = overall length, Layout = number of decimal places
std::string m_strSymbolLink;
int32_t m_nSymbolOffset;
int32_t m_nECUAddress;
std::list < int32_t > m_MatrixDimSizeList;
};
struct A2L_MEASUREMENTs {
std::list <A2L_MEASUREMENT> m_MeasurementList;
};
struct A2L_CHARACTERISTIC { // https://guide.intrepidcs.com/docs/asap2/a2l-item-area/characteristics-tab/
std::string m_strName;
std::string m_strDescription;
A2L_CHRACTERISTICS_TYPE m_cType;
int32_t m_nAddress;
std::string m_strRecordLayoutName;
int32_t m_nMaxDiff;
std::string m_strCompuMothod;
std::string m_strFormat; // Display formatting applied to numerical values. The syntax for this field is: %Length.Layout, Length = overall length, Layout = number of decimal places
int32_t m_nLowerLimit; // smallvalues, identify, bigvalue, linear, verbal, range byte
int32_t m_nUpperLimit;
int32_t m_nLowerLimitEx;
int32_t m_nUpperLimitEx;
std::string m_strSymbolLink;
int32_t m_nSymbolOffset;
int32_t m_nLength; // noral is 1, matix dim is other value
};
struct A2L_CHARACTERISTICs {
std::list <A2L_CHARACTERISTIC> m_CharacteristicList;
};
struct A2L_RECORDLAYOUT {
std::string m_strName;
int32_t m_nPosition;
A2L_DATA_TYPE m_nDataType;
std::string m_strIndexMode;
std::string m_strAddressType;
};
struct A2L_RECORDLAYOUTs {
std::list <A2L_RECORDLAYOUT> m_RecordLayoutList;
};
struct A2L_Data {
A2L_IFDATAs_XCP m_stIFDATAs;
A2L_UNITs m_stUnits;
COMPU_METHODs m_stCompuMethods;
A2L_MEASUREMENTs m_stMeasurements;
A2L_CHARACTERISTICs m_stCharacteristics;
A2L_RECORDLAYOUTs m_stRecordLayouts;
};
#endif
Loading…
Cancel
Save