VOS_UINT32 diag_PhyWriteAsync(DIAG_PORT_PHY_BEAR_ENUM enPort,VOS_UINT8 *pucDataBuf,VOS_UINT32 ulLen) { VOS_INT32 ret = ERR_MSP_SUCCESS; ACM_WR_ASYNC_INFO stVcom = {0}; VOS_INT32 slHandle = 0; if(DIAG_PORT_GET_STATE(enPort) ==ACM_EVT_DEV_SUSPEND) { SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ERR_MSP_SUCCESS; } slHandle = DIAG_PORT_GET_HANDLE(enPort); if(slHandle == UDI_INVALID_HANDLE) { SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ERR_MSP_FAILURE; } #if(FEATURE_SOCP_ON_DEMAND == FEATURE_ON) /* 工具已下发断开连接命令,丢数据 */ if(!(g_ulDiagCfgInfo & (1 << 1))) { SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ERR_MSP_SUCCESS; } #endif #ifdef FEATURE_UPGRADE_TL stVcom.pBuffer = (VOS_CHAR*)pucDataBuf; #else stVcom.pVirAddr = (VOS_CHAR*)pucDataBuf; stVcom.pPhyAddr = (VOS_CHAR*)SCM_CoderDestMemVirtToPhy(DIAG_PORT_GET_CODE_DES(enPort), pucDataBuf); #endif stVcom.u32Size = ulLen; DIAG_DEBUG_SDM_FUN((DIAG_DEBUG_MSG_ID_ENUM)(EN_DIAG_DEBUG_TCP_WRT+(VOS_UINT32)enPort), ulLen, 0, 0); ret = udi_ioctl((int)slHandle, ACM_IOCTL_WRITE_ASYNC, &stVcom); if(ret == ERR_MSP_SUCCESS) { DIAG_DEBUG_SDM_FUN((DIAG_DEBUG_MSG_ID_ENUM)(EN_DIAG_DEBUG_TCP_WRT_SUCC+(VOS_UINT32)enPort), ulLen, 0, 0); return ERR_MSP_SUCCESS; } SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return (VOS_UINT32)ret;/* [false alarm]:屏蔽Fortify */ }
/***************************************************************************** 函 数 名 : diag_PortWrtCB 功能描述 : 输入参数 : 输出参数 : 返 回 值 : 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2012年8月27日 修改内容 : Creat Function *****************************************************************************/ VOS_VOID diag_PortWrtCB (DIAG_PORT_PHY_BEAR_ENUM enPort,VOS_CHAR* pDoneBuff, VOS_INT s32DoneSize) { DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_TCP_WRT_CB+enPort,(VOS_UINT32)pDoneBuff , (VOS_UINT32)s32DoneSize, 0); if(s32DoneSize < 0) { DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_TCP_WRT_CB_ERR+enPort,(VOS_UINT32)pDoneBuff , (VOS_UINT32)s32DoneSize, 0); //释放编码目标通道的buf SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),0); return ; } //释放编码目标通道的buf SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),(VOS_UINT32)s32DoneSize); return; }
/*lint -save -e958*/ VOS_UINT32 diag_VcomWriteSync(DIAG_PORT_PHY_BEAR_ENUM enPort, APP_VCOM_DEV_INDEX_UINT8 enDevIndex, VOS_UINT8 *pucDataBuf,VOS_UINT32 ulLen) { VOS_UINT32 ulRet = ERR_MSP_SUCCESS; diag_TraceDebug(pucDataBuf, ulLen); if(DIAG_PORT_GET_STATE(enPort) == ACM_EVT_DEV_READY) { ulRet = APP_VCOM_Send(enDevIndex,pucDataBuf,ulLen); SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); } else { diag_printf("[%s],enport :%d,status :%d\n",__FUNCTION__,enPort,DIAG_PORT_GET_STATE(enPort)); SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ERR_MSP_FAILURE; } return ulRet; }
VOS_UINT32 diag_PhyWriteAsync(DIAG_PORT_PHY_BEAR_ENUM enPort,VOS_UINT8 *pucDataBuf,VOS_UINT32 ulLen) { VOS_INT32 ret = ERR_MSP_SUCCESS; ACM_WR_ASYNC_INFO stVcom = {0}; VOS_INT32 slHandle = 0; if(DIAG_PORT_GET_STATE(enPort) ==ACM_EVT_DEV_SUSPEND) { SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ERR_MSP_SUCCESS; } slHandle = DIAG_PORT_GET_HANDLE(enPort); if(slHandle == UDI_INVALID_HANDLE) { SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ERR_MSP_FAILURE; } stVcom.pBuffer = (VOS_CHAR*)pucDataBuf; stVcom.u32Size = ulLen; DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_TCP_WRT+enPort, ulLen, 0, 0); ret = udi_ioctl((int)slHandle, ACM_IOCTL_WRITE_ASYNC, &stVcom); if(ret == ERR_MSP_SUCCESS) { DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_TCP_WRT_SUCC+enPort, ulLen, 0, 0); return ERR_MSP_SUCCESS; } SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(enPort),ulLen); return ret; }
VOS_UINT32 diag_WriteData( VOS_UINT8* aucDataBuf, VOS_UINT32 enChanID,VOS_UINT32 ulLen) { VOS_UINT32 ret = ERR_MSP_SUCCESS; VOS_UINT32 usSentLen = 0; diag_TraceDebug(aucDataBuf, ulLen); if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_SOCKET_BEARER_TCP_20248) { ret = diag_TcpSendData(EN_TCP_PORT_DIAG,aucDataBuf, ulLen,&usSentLen); SCM_RlsDestBuf(enChanID,ulLen); return ret; } else if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_USB_BEARER_DIAG_CTRL) { //回复和主动上报分开通道发送 if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_PhyWriteAsync(EN_DIAG_USB_BEARER_DIAG_CTRL,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else if(enChanID == SOCP_CODER_DST_LOM_IND) { if( EN_DIAG_SEND_LOG_TO_USB == diag_GetLogSendType()) { return diag_PhyWriteAsync(EN_DIAG_USB_BEARER_DIAG_APP,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else { drx_msp_fid_vote_lock(DRX_DIAG_LOG_SAVE_VOTE); diag_StorDataToSD(aucDataBuf, ulLen); /* 该处需要直接read data done*/ SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(EN_DIAG_USB_BEARER_DIAG_APP),ulLen); drx_msp_fid_vote_unlock(DRX_DIAG_LOG_SAVE_VOTE); return ERR_MSP_SUCCESS; } } } else if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_HSIC_BEARER_DIAG_CTRL) { //回复和主动上报分开通道发送 if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_PhyWriteAsync(EN_DIAG_HSIC_BEARER_DIAG_CTRL,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else if(enChanID == SOCP_CODER_DST_LOM_IND) { return diag_PhyWriteAsync(EN_DIAG_HSIC_BEARER_DIAG_APP,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } } /*APP VCOM*/ else if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_VCOM_BEABER_DIAG_CTRL) { //回复和主动上报分开通道发送 if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_VcomWriteSync(EN_DIAG_VCOM_BEABER_DIAG_CTRL,DIAG_APPVCOM_CHAN_CTRL,\ (VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else if(enChanID == SOCP_CODER_DST_LOM_IND) { return diag_VcomWriteSync(EN_DIAG_VCOM_BEABER_DIAG_APP,DIAG_APPVCOM_CHAN_APP,\ (VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } } else { return ERR_MSP_FAILURE; } return ERR_MSP_SUCCESS; }