/****************************************************************************** Function Name : TSX_VerifyMessage Input(s) : Output : HRESULT Functionality : Member of : CTSExecutionCAN Friend of : - Author(s) : Venkatanarayana Makam Date Created : 01/04/2011 Modifications : ******************************************************************************/ HRESULT CTSExecutionCAN::TSX_VerifyMessage(CBaseEntityTA* pEntity, CResultVerify& ouVerifyResult) { //TODO::Proper Handling Required UCHAR* pucData; STCANDATA sCanData; UINT unVerifyCount; HRESULT hResult = S_OK; CBaseEntityTA* pVerifyEntity; CVerify_MessageData ouVerifyData; CString omResult; sMESSAGE sMsg; CSignalInfoArray ouSignalInfo; pEntity->GetSubEntryCount(unVerifyCount); ouVerifyResult.m_MessageResultList.RemoveAll(); //Loop For all Messages for(UINT j=0; j<unVerifyCount; j++) { pEntity->GetSubEntityObj(j, &pVerifyEntity); pVerifyEntity->GetEntityData(VERIFY_MESSAGE, &ouVerifyData); if(m_ouCanBufVFSE.ReadFromBuffer(&sCanData, (__int64)ouVerifyData.m_dwMessageID)==0) { pucData = new UCHAR[sCanData.m_uDataInfo.m_sCANMsg.m_ucDataLen]; memcpy(pucData, &sCanData.m_uDataInfo.m_sCANMsg.m_ucData, sCanData.m_uDataInfo.m_sCANMsg.m_ucDataLen); } else { pucData = new UCHAR[8]; memset(pucData, 0, 8); } //Interprete The Messages SMSGENTRY* sMsgEntry = new SMSGENTRY; pEntity->m_ouDataBaseManager.nGetMessageInfo(ouVerifyData.m_omMessageName, sMsg); sMsgEntry->m_psMsg = &sMsg; sMsgEntry->m_psNext = NULL; m_ouMsgInterpret.vSetMessageList(sMsgEntry); m_ouMsgInterpret.bInterpretMsgs(ouVerifyData.m_dwMessageID, pucData, ouSignalInfo); CString strVerDisplay = "Verifying Message "+ouVerifyData.m_omMessageName; TSX_DisplayMessage(strVerDisplay); //Verify The Signals CMessageResult ouMsgResult; omResult = "SUCCESS"; if( bVerifyCanMessage(ouVerifyData, ouSignalInfo, ouMsgResult) == FALSE) { omResult = "FAIL"; hResult = S_FALSE; } ouVerifyResult.m_MessageResultList.AddTail(ouMsgResult); TSX_DisplayResult(omResult); delete []pucData; } return hResult; }
/****************************************************************************** Function Name : TSX_SendMessage Input(s) : Output : HRESULT Functionality : Member of : CTSExecutionCAN Friend of : - Author(s) : Venkatanarayana Makam Date Created : 01/04/2011 Modifications : ******************************************************************************/ HRESULT CTSExecutionCAN::TSX_SendMessage(CBaseEntityTA* pEntity) { UCHAR aucData[8]; CBaseEntityTA* pSendEntity; UINT unSendCount; pEntity->GetSubEntryCount(unSendCount); for(UINT j=0; j<unSendCount; j++) { STCAN_MSG stCanData; CSend_MessageData ouSendData; pEntity->GetSubEntityObj(j, &pSendEntity); pSendEntity->GetEntityData(SEND_MESSAGE, &ouSendData); sMESSAGE* pMsg = pEntity->m_ouDataBaseManager.unGetMsg(ouSendData.m_dwMessageID); bMakeCanMessage(pMsg, ouSendData, aucData, stCanData); CString strSendDisplay = _("Sending Message ")+ouSendData.m_omMessageName; TSX_DisplayMessage(strSendDisplay); m_pouDIL_CAN->DILC_SendMsg(m_dwClientId, stCanData); } return S_OK; }
/****************************************************************************** Function Name : TSX_VerifyMessage Input(s) : Output : HRESULT Functionality : Member of : CTSExecutionCAN Friend of : - Author(s) : Venkatanarayana Makam Date Created : 01/04/2011 Modifications : ******************************************************************************/ HRESULT CTSExecutionCAN::TSX_VerifyMessage(CBaseEntityTA* pEntity, CResultVerify& ouVerifyResult) { //TODO::Proper Handling Required UCHAR pucData[8]; INT dataSize = 8; STCANDATA sCanData; UINT unVerifyCount; HRESULT hResult = S_OK; CBaseEntityTA* pVerifyEntity; CVerify_MessageData ouVerifyData; CString omResult; IFrame* sMsg; CVerifyData ouVerify; pEntity->GetSubEntryCount(unVerifyCount); ouVerifyResult.m_MessageResultList.RemoveAll(); pEntity->GetEntityData(VERIFY, &ouVerify); ouVerifyResult.m_eResult = ouVerify.m_eAttributeError; //Loop For all Messages for(UINT j=0; j<unVerifyCount; j++) { pEntity->GetSubEntityObj(j, &pVerifyEntity); pVerifyEntity->GetEntityData(VERIFY_MESSAGE, &ouVerifyData); if(m_ouCanBufVFSE.ReadFromBuffer(&sCanData, (__int64)ouVerifyData.m_dwMessageID)==0) { dataSize = sCanData.m_uDataInfo.m_sCANMsg.m_ucDataLen; memcpy(pucData, &sCanData.m_uDataInfo.m_sCANMsg.m_ucData, sCanData.m_uDataInfo.m_sCANMsg.m_ucDataLen); } else { dataSize = 8; memset(pucData, 0, 8); } //Interprete The Messages SMSGENTRY* sMsgEntry = new SMSGENTRY; pEntity->m_ouDataBaseManager.nGetMessageInfo(ouVerifyData.m_omMessageName, &sMsg); if ( nullptr == sMsg ) { return S_FALSE; } std::list<InterpreteSignals> interPretedSignalList; sMsg->InterpretSignals( pucData, dataSize, interPretedSignalList, false ); CString strVerDisplay = _("Verifying Message ")+ouVerifyData.m_omMessageName; TSX_DisplayMessage(strVerDisplay); //Verify The Signals CMessageResult ouMsgResult; omResult = _("SUCCESS"); if( ouVerifyData.m_byChannelNumber == sCanData.m_uDataInfo.m_sCANMsg.m_ucChannel ) // solves issue #711, 4th bullet point { if ( bVerifyCanMessage( ouVerifyData, interPretedSignalList, ouMsgResult ) == FALSE ) { omResult = _("FAIL"); hResult = S_FALSE; } } else { omResult = _("FAIL"); hResult = S_FALSE; } ouVerifyResult.m_MessageResultList.AddTail(ouMsgResult); TSX_DisplayResult(omResult); //delete []pucData; } if( S_FALSE != hResult ) { ouVerifyResult.m_eResult = SUCCESS; } return hResult; }