/** * \return S_OK for success, S_FALSE for failure * * Registers the buffer pBufObj to the client ClientID */ HRESULT CDIL_CAN_MHS::CAN_ManageMsgBuf(BYTE bAction, DWORD ClientID, CBaseCANBufFSE* pBufObj) { HRESULT hResult = S_FALSE; UINT unClientIndex; UINT i; if (ClientID != 0) { if (bGetClientObj(ClientID, unClientIndex)) { SCLIENTBUFMAP &sClientObj = sg_asClientToBufMap[unClientIndex]; if (bAction == MSGBUF_ADD) { // **** Add msg buffer if (pBufObj) { if (sClientObj.m_unBufCount < MAX_BUFF_ALLOWED) { if (bIsBufferExists(sClientObj, pBufObj) == FALSE) { sClientObj.m_pClientBuf[sClientObj.m_unBufCount++] = pBufObj; hResult = S_OK; } else hResult = ERR_BUFFER_EXISTS; } } } else if (bAction == MSGBUF_CLEAR) { // **** Clear msg buffer if (pBufObj != NULL) //REmove only buffer mentioned bRemoveClientBuffer(sClientObj.m_pClientBuf, sClientObj.m_unBufCount, pBufObj); else // Remove all { for (i = 0; i < sClientObj.m_unBufCount; i++) sClientObj.m_pClientBuf[i] = NULL; sClientObj.m_unBufCount = 0; } hResult = S_OK; } ////else //// ASSERT(FALSE); } else hResult = ERR_NO_CLIENT_EXIST; } else { if (bAction == MSGBUF_CLEAR) { // **** clear msg buffer for (UINT i = 0; i < sg_unClientCnt; i++) CAN_ManageMsgBuf(MSGBUF_CLEAR, sg_asClientToBufMap[i].m_dwClientID, NULL); } hResult = S_OK; } return(hResult); }
/** * \brief Registers the buffer pBufObj to the client ClientID * \param[in] bAction, contains one of the values MSGBUF_ADD or MSGBUF_CLEAR * \param[in] ClientID, is the client ID * \param[in] pBufObj, is pointer to CBaseCANBufFSE object * \return S_OK for success, S_FALSE for failure * \authors Arunkumar Karri * \date 07.10.2011 Created */ HRESULT CDIL_ISOLAR_EVE_VCAN::CAN_ManageMsgBuf(BYTE bAction, DWORD ClientID, CBaseCANBufFSE* pBufObj) { HRESULT hResult = S_FALSE; if (ClientID != 0) { UINT unClientIndex; if (bGetClientObj(ClientID, unClientIndex)) { SCLIENTBUFMAP& sClientObj = sg_asClientToBufMap[unClientIndex]; if (bAction == MSGBUF_ADD) { /* Add msg buffer */ if (pBufObj != nullptr) { if (sClientObj.unBufCount < MAX_BUFF_ALLOWED) { if (bIsBufferExists(sClientObj, pBufObj) == FALSE) { sClientObj.pClientBuf[sClientObj.unBufCount++] = pBufObj; hResult = S_OK; } else { hResult = ERR_BUFFER_EXISTS; } } } } else if (bAction == MSGBUF_CLEAR) { /* clear msg buffer */ if (pBufObj != nullptr) { /* Remove only buffer mentioned */ bRemoveClientBuffer(sClientObj.pClientBuf, sClientObj.unBufCount, pBufObj); } else { /* Remove all */ for (UINT i = 0; i < sClientObj.unBufCount; i++) { sClientObj.pClientBuf[i] = nullptr; } sClientObj.unBufCount = 0; } hResult = S_OK; } } else { hResult = ERR_NO_CLIENT_EXIST; } } else { if (bAction == MSGBUF_CLEAR) { /* clear msg buffer */ for (UINT i = 0; i < sg_unClientCnt; i++) { CAN_ManageMsgBuf(MSGBUF_CLEAR, sg_asClientToBufMap[i].dwClientID, nullptr); } hResult = S_OK; } } return hResult; }