From 60154e449b2756c1e46aa98763f53b2a6676f3b4 Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 24 Feb 2026 16:59:04 +0900 Subject: [PATCH] sync source --- .../IncSourceTestDlg/IncSourceTestDlgDlg.cpp | 630 ++++++++++++++---- .../IncSourceTestDlg/IncSourceTestDlgDlg.h | 3 +- TestLibDlg/IncSourceTestDlg/common_def.h | 261 +++++++- 3 files changed, 768 insertions(+), 126 deletions(-) diff --git a/TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.cpp b/TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.cpp index 0bfa0b5..cdf4895 100644 --- a/TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.cpp +++ b/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; diff --git a/TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.h b/TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.h index aeac510..d2fe66b 100644 --- a/TestLibDlg/IncSourceTestDlg/IncSourceTestDlgDlg.h +++ b/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(); diff --git a/TestLibDlg/IncSourceTestDlg/common_def.h b/TestLibDlg/IncSourceTestDlg/common_def.h index 521aa21..f49f949 100644 --- a/TestLibDlg/IncSourceTestDlg/common_def.h +++ b/TestLibDlg/IncSourceTestDlg/common_def.h @@ -5,7 +5,20 @@ #include - +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 m_nDaqList; + std::list 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 m_nSectorList; +}; + +struct A2L_DAQ_LIST_CAN_ID { + uint32_t m_nDaqListNumber; + std::list m_lFixedDAQCanIDList; +}; + +struct A2L_EVENT_LIST_CAN_ID { + uint32_t m_EventListNumber; + std::list 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 m_DaqList; + std::list 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 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 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 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 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 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 \ No newline at end of file