Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}