bool CTxEthernetDataStore::bSetConfigData(xmlDocPtr pDoc) { if(pDoc == NULL) { m_sTxWndPlacement.rcNormalPosition.top = -1; m_sTxWndPlacement.length = 0; for ( int i = 0 ; i < CHANNEL_ALLOWED; i++ ) { m_ouEthernet_Frame_Data.clear(); // m_ouFrameList[i].clear(); m_ouMapIndexToKey.clear(); m_strMessageNames[i].clear(); } return false; } xmlChar* pXpath = (xmlChar*)"//BUSMASTER_CONFIGURATION/Module_Configuration/Ethernet_Tx_Window/Window_Position"; xmlXPathObjectPtr pObjectPath = xmlUtils::pGetNodes(pDoc, pXpath); if (pObjectPath != NULL ) { xmlNodeSetPtr pNodeSet = pObjectPath->nodesetval; if( NULL != pNodeSet ) { xmlNodePtr pNode = pNodeSet->nodeTab[0]; //Take First One only WINDOWPLACEMENT WndPlacement; xmlUtils::ParseWindowsPlacement(pNode,WndPlacement); bSetTxData(TX_WINDOW_PLACEMENT, &WndPlacement); m_bValidTxWndSize = true; } } else { m_bValidTxWndSize = false; } xmlChar* pXpathChannel = (xmlChar*)"//BUSMASTER_CONFIGURATION/Module_Configuration/Ethernet_Tx_Window/Channel_Msg_List"; pObjectPath = xmlUtils::pGetNodes(pDoc, pXpathChannel); if (pObjectPath != NULL ) { xmlNodeSetPtr pNodeSet = pObjectPath->nodesetval; if( NULL != pNodeSet ) { for ( int i = 0 ; i < pNodeSet->nodeNr; i++) { xmlNodePtr pNode = pNodeSet->nodeTab[0]; //Take First One only bSetChannelConfig(pNode); } } } return true; }
BYTE* CTxWndDataStore::pbySetConfigData(BYTE* pbyConfigData, INT /*nConfigSize*/) { BYTE* pbyTemp = pbyConfigData; vReleaseMultiMsgInfo(m_psMsgBlockList); m_psMsgBlockList = NULL; PSMSGBLOCKLIST psBlockTail = NULL; m_unNumberOfMsgBlockCount = 0; if (pbyTemp != NULL) { BYTE byVersion = 0; COPY_DATA_2(&byVersion, pbyTemp, sizeof(BYTE)); int nVersion = (int)byVersion; COPY_DATA_2(&m_unNumberOfMsgBlockCount, pbyTemp, sizeof(UINT)); for (UINT i = 0; i < m_unNumberOfMsgBlockCount; i++) { PSMSGBLOCKLIST psTempBlock = new SMSGBLOCKLIST; char acName[MAX_PATH] = {_T('\0')}; COPY_DATA_2(acName, pbyTemp, (sizeof(char) * MAX_PATH)); strcpy_s(psTempBlock->m_acStrBlockName, defBLOCKNAME_SIZE, acName); COPY_DATA_2(&(psTempBlock->m_ucTrigger),pbyTemp, sizeof(UCHAR)); COPY_DATA_2(&(psTempBlock->m_bActive), pbyTemp, sizeof(BOOL)); COPY_DATA_2(&(psTempBlock->m_ucKeyValue), pbyTemp, sizeof(UCHAR)); COPY_DATA_2(&(psTempBlock->m_unTimeInterval), pbyTemp, sizeof(UINT)); COPY_DATA_2(&(psTempBlock->m_bType), pbyTemp, sizeof(BOOL)); COPY_DATA_2(&(psTempBlock->m_bTxAllFrame), pbyTemp, sizeof(BOOL)); COPY_DATA_2(&(psTempBlock->m_unMsgCount), pbyTemp, sizeof(UINT)); PSTXCANMSGLIST psTxCanMsgTail = NULL; for (UINT j = 0; j < psTempBlock->m_unMsgCount; j++) { PSTXCANMSGLIST psTempCanList = new STXCANMSGLIST; COPY_DATA_2(&(psTempCanList->m_sTxMsgDetails), pbyTemp, sizeof (STXCANMSGDETAILS)); if (psTempBlock->m_psTxCANMsgList == NULL)//For the first time { psTxCanMsgTail = psTempBlock->m_psTxCANMsgList = psTempCanList; } else { psTxCanMsgTail->m_psNextMsgDetails = psTempCanList; psTxCanMsgTail = psTempCanList; } } if (m_psMsgBlockList == NULL)//For the first time { psBlockTail = m_psMsgBlockList = psTempBlock; } else { psBlockTail->m_psNextMsgBlocksList = psTempBlock; psBlockTail = psTempBlock; } } //Get the Tx window placement WINDOWPLACEMENT WndPlacement; COPY_DATA_2(&WndPlacement, pbyTemp, sizeof (WINDOWPLACEMENT)); bSetTxData(TX_WINDOW_PLACEMENT, &WndPlacement); //Get the Tx splitter position STXMSGSPLITTERDATA sTxSpliiterData; COPY_DATA_2(&sTxSpliiterData, pbyTemp, sizeof(STXMSGSPLITTERDATA)); bSetTxData(TX_WND_SPLITTER_DATA, &sTxSpliiterData); if(nVersion >= 2) { COPY_DATA_2(&m_bAutoSavedEnabled, pbyTemp, sizeof(bool)); bSetTxData(TX_AUTO_UPDATE_ENABLE, &m_bAutoSavedEnabled); //save the status of auto save } } return pbyTemp; }