VOS_UINT32 diag_DrxDataSampleProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_DRX_DATA_SAMPLE_REG_WR_REQ_STRU *psDataSample = NULL;
    DIAG_CMD_DRX_DATA_SAMPLE_REG_WR_CNF_STRU stCnfDataSample = {0};
    VOS_UINT32 ret = 0;
    VOS_UINT32 ulDataLen = 0;

    psDataSample = (DIAG_CMD_DRX_DATA_SAMPLE_REG_WR_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    ulDataLen = ((MSP_DIAG_HEAD_STRU*)(DIAG_OFFSET_SOCP_GET_DIAG_HEAD(pstReq)))->ulDataSize - sizeof(MSP_DIAG_DATA_REQ_STRU);

    DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_BBP_SAMPLE,psDataSample->enBBPDataSampleCtrl,0,0);
    /*lint -save -e830*/
    if(BBP_DATA_SAMPLE_START == psDataSample->enBBPDataSampleCtrl)
    {
    /*lint -restore*/
        ret = diag_SendMsg(MSP_PID_DIAG_AGENT, MSP_PID_BBP_AGENT,ID_MSG_REQ_DRX_DATA_SAMPLE_START, \
        (VOS_UINT8*)psDataSample, ulDataLen);
    }
    else if(BBP_DATA_SAMPLE_STOP == psDataSample->enBBPDataSampleCtrl)
    {
        ret = diag_SendMsg(MSP_PID_DIAG_AGENT, MSP_PID_BBP_AGENT,ID_MSG_REQ_DRX_DATA_SAMPLE_STOP, \
        (VOS_UINT8*)psDataSample, ulDataLen);
    }
    else
    {
        ret = ERR_MSP_FAILURE;
    }

    /*打包回复给FW*/
    stCnfDataSample.ulRet = ret;
    ret = diag_AgentCnfFun((VOS_UINT8*)&stCnfDataSample,ulCmdId,sizeof(DIAG_CMD_DRX_DATA_SAMPLE_REG_WR_CNF_STRU));

    return ret;
}
VOS_UINT32 diag_GtrProcEntry(VOS_UINT8* pstReq , VOS_UINT32 ulCmdId)
{
    DIAG_CMD_GTR_SET_REQ_STRU* pstGtrReq = NULL;
    DIAG_CMD_GTR_SET_CNF_STRU stGtrCnf = {0};
    DIAG_GTR_DATA_RCV_PFN pfnCallBack = diag_GetGtrCallBack();
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_UINT32 ulCnfRst = ERR_MSP_SUCCESS;

    pstGtrReq = (DIAG_CMD_GTR_SET_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    if (pstGtrReq->ulGtrDtaSize > DIAG_CMD_DATA_MAX_LEN)
    {
        ulCnfRst = ERR_MSP_FAILURE;
    }
    else
    {
        if (pfnCallBack != NULL)
        {
            ulCnfRst = pfnCallBack(pstGtrReq->ulGtrDtaSize, pstGtrReq->aucDta);
        }
        else
        {
            ulCnfRst = ERR_MSP_FAILURE;
        }
    }

    stGtrCnf.ulRc = ulCnfRst;
    ret = diag_AgentCnfFun((VOS_UINT8*)&stGtrCnf,ulCmdId,sizeof(DIAG_CMD_GTR_SET_CNF_STRU));
    return ret;
}
VOS_UINT32 diag_FsMkdirProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_MAKE_DIR_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_MAKE_DIR_CNF stFsCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
#if(VOS_OS_VER == VOS_LINUX)
    mm_segment_t old_fs;

    old_fs = get_fs();
    set_fs(KERNEL_DS);
#endif

    pstFsReq = (DIAG_CMD_FS_MAKE_DIR_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    ret = (VOS_UINT32)DIAG_FS_MKDIR((VOS_CHAR*)pstFsReq->szDirectory,0755);/*lint !e628*/

    stFsCnf.ulRet = ret;
#if(VOS_OS_VER == VOS_LINUX)
    set_fs(old_fs);
#endif

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_MAKE_DIR_CNF));

    return ret;

}
VOS_UINT32 diag_DrxSampleGenProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_DRX_SAMPLE_REG_WR_REQ_STRU *psDrxSample = NULL;
	DIAG_CMD_DRX_SAMPLE_REG_WR_CNF_STRU stCnfDrxSample = {0};
	VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_UINT32 ulDataLen = 0;

	ulDrxSampleGenEnterCnt ++;
	psDrxSample = (DIAG_CMD_DRX_SAMPLE_REG_WR_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    ulDataLen = ((MSP_DIAG_HEAD_STRU*)(DIAG_OFFSET_SOCP_GET_DIAG_HEAD(pstReq)))->ulDataSize - sizeof(MSP_DIAG_DATA_REQ_STRU);

	DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_BBP_SAMPLE,psDrxSample->ulOmDrxSampleId,0,0);

    ret = BSP_MailBox_ComMsgWrite(EN_MAILBOX_SERVICE_LTE_HS_DIAG, psDrxSample, ulDataLen, EN_MAILBOX_SLEEP_WAKEUP);
	if(ret != VOS_OK)
	{
		ret = ERR_MSP_FAILURE;
	}

	ulDrxSampleGenExitCnt ++;

	/*打包回复给FW*/
    stCnfDrxSample.ulRet = ret;
    ret = diag_AgentCnfFun((VOS_UINT8*)&stCnfDrxSample, ulCmdId,sizeof(DIAG_CMD_DRX_SAMPLE_REG_WR_CNF_STRU));

	return ret;

}
Example #5
0
/*****************************************************************************
 Function Name   : diag_PrintCfgProc
 Description     : 该函数用于处理CfgProcEntry传进来的打印开关命令
 Input           : pstReq 待处理数据
 Output          : None
 Return          : VOS_UINT32

 History         :
    1.y00228784      2012-11-22  Draft Enact

*****************************************************************************/
VOS_UINT32 diag_PrintCfgProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    MSP_DIAG_HEAD_STRU *pstDiagHead = NULL;
    DIAG_CMD_LOG_CAT_PRINT_REQ_STRU* pstPrintSwtReq = NULL;
    DIAG_CMD_LOG_CAT_PRINT_CNF_STRU stPrintSwtCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_UINT32 ulSetRet;

    pstDiagHead = (MSP_DIAG_HEAD_STRU*)(DIAG_OFFSET_SOCP_GET_DIAG_HEAD(pstReq));

    pstPrintSwtReq = (DIAG_CMD_LOG_CAT_PRINT_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));


    /*设置打印开关到全局变量中*/
    ulSetRet = diag_CfgSetPrintSwt(pstPrintSwtReq, pstDiagHead->ulDataSize - sizeof(MSP_DIAG_DATA_REQ_STRU));
    DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_PRINT_CFG, ulSetRet, 0, 0);

    stPrintSwtCnf.ulRc = ulSetRet;

    stPrintSwtCnf.ulModuleId = pstPrintSwtReq->ulModuleId;

#if(VOS_OS_VER == VOS_LINUX)
    /*组包给FW回复*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stPrintSwtCnf,ulCmdId,sizeof(DIAG_CMD_LOG_CAT_PRINT_CNF_STRU));
#endif
    return ret;

}
VOS_UINT32 diag_BspAxiMonTerminateEntry(VOS_UINT8* pstReq , VOS_UINT32 ulCmdId)
{
    VOS_UINT32  ret ;
    VOS_UINT32 cnf_data_len = 0;
    VOS_UINT8 *pdata =NULL;
    AXI_MON_TERMINATE_CNF_STRU * axi_ter_cnf = NULL;

    pdata = (VOS_UINT8*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));
    axi_ter_cnf = DRV_AXI_MON_TERMINATE(pdata, (VOS_UINT*)&cnf_data_len);

    vos_printf("diag_BspAxiMonTerminateEntry  cnf_data_len  = 0x%x\n", cnf_data_len);

    if(VOS_NULL != axi_ter_cnf)
    {
        ret = diag_AgentCnfFun((VOS_UINT8*)axi_ter_cnf,ulCmdId,cnf_data_len);
        free(axi_ter_cnf);
    }
    else
    {
        vos_printf("diag_BspAxiMonTerminateEntry  ERROR\n");
        ret = ERR_MSP_FAILURE;
    }

    return ret;
}
VOS_UINT32 diag_FsSpaceProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_SPACE_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_SPACE_CNF stFsCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
#if(VOS_OS_VER == VOS_LINUX)
   mm_segment_t old_fs;

    old_fs = get_fs();
    set_fs(KERNEL_DS);
#endif
    pstFsReq = (DIAG_CMD_FS_SPACE_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    ret = (VOS_UINT32)DRV_FILE_GET_DISKSPACE((VOS_CHAR*)(pstFsReq->szDirectory),(VOS_UINT*)&stFsCnf.ulDiskSpace,
                    (VOS_UINT*)&stFsCnf.ulUsedSpace,(VOS_UINT*)&stFsCnf.ulValidSpace);

    stFsCnf.ulRet = ret;
#if(VOS_OS_VER == VOS_LINUX)
    set_fs(old_fs);
#endif

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_SPACE_CNF));


    return ret;

}
VOS_UINT32 diag_DrxSampleGetAddrProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_DRX_SAMPLE_GET_ADDR_REQ_STRU *psDrxSample = NULL;
	DIAG_CMD_DRX_SAMPLE_GET_ADDR_CNF_STRU stCnfDrxSample = {0};
	VOS_UINT32 ret = ERR_MSP_SUCCESS;

	VOS_UINT32 ulAddrType 	= 0;


	ulDrxSampleGetAddrEnterCnt ++;
	psDrxSample = (DIAG_CMD_DRX_SAMPLE_GET_ADDR_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));


	DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_BBP_SAMPLE,psDrxSample->eDiagDrxSampleAddr,0,0);

	ulAddrType = psDrxSample->eDiagDrxSampleAddr;

    stCnfDrxSample.ulDrxSampleType = ulAddrType;
	/* 获取对应的寄存器地址*/
	switch (ulAddrType)
	{
		case DRX_SAMPLE_BBP_DMA_BASE_ADDR:
			stCnfDrxSample.ulDrxSampleAddr = (VOS_UINT32)DRV_GET_IP_BASE_ADDR(BSP_IP_TYPE_BBPDMA);
			/* add code here */
			break;
		case DRX_SAMPLE_BBP_DBG_BASE_ADDR:
			stCnfDrxSample.ulDrxSampleAddr = (VOS_UINT32)DRV_GET_IP_BASE_ADDR(BSP_IP_TYPE_BBPDBG);
			/* add code here */
			break;
		case DRX_SAMPLE_BBP_SRC_BASE_ADDR:
			stCnfDrxSample.ulDrxSampleAddr = (VOS_UINT32)DRV_GET_IP_BASE_ADDR(BSP_IP_TYPE_BBPSRC);
			/* add code here */
			break;
		case DRX_SAMPLE_POW_ONOFF_CLK_BASE_ADDR:
			stCnfDrxSample.ulDrxSampleAddr = (VOS_UINT32)DRV_GET_IP_BASE_ADDR(BSP_IP_TYPE_SYSCTRL);
			/* add code here */
			break;
		case DRX_SAMPLE_SOCP_BASE_ADDR:
			stCnfDrxSample.ulDrxSampleAddr = (VOS_UINT32)DRV_GET_IP_BASE_ADDR(BSP_IP_TYPE_SOCP);
			/* add code here */
			break;
		default:
			break;
	}

	ulDrxSampleGetAddrExitCnt ++;

	/*打包回复给FW*/
    stCnfDrxSample.ulRet = VOS_OK;
    ret = diag_AgentCnfFun((VOS_UINT8*)&stCnfDrxSample, ulCmdId, sizeof(DIAG_CMD_DRX_SAMPLE_GET_ADDR_CNF_STRU));

	return ret;

}
VOS_UINT32 diag_RegWrProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
	DIAG_CMD_REG_WR_REQ_STRU* pstRegWRReq = NULL;
	DIAG_CMD_REG_WR_PARA_STRU* pstReqWrStru     = NULL;
    DIAG_CMD_REG_WR_CNF_PARA_STRU *pstCnfWrStru = NULL;
    DIAG_CMD_REG_WR_CNF_PARA_STRU *pstTempCnf = NULL;
    MSP_DIAG_HEAD_STRU *pstDiagHead             = NULL;
    VOS_UINT32 ulNum  = 0;
    VOS_UINT32 i = 0;
    VOS_UINT32 ret = 0;
    VOS_UINT32 ulMsgLen =0,ulLen = 0;

    /*入参判断*/
    pstDiagHead = (MSP_DIAG_HEAD_STRU*)(DIAG_OFFSET_SOCP_GET_DIAG_HEAD(pstReq));
    pstRegWRReq = (DIAG_CMD_REG_WR_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    ulLen = (pstDiagHead->ulDataSize - sizeof(MSP_DIAG_DATA_REQ_STRU));
    if((0 != ulLen % sizeof(DIAG_CMD_REG_WR_PARA_STRU)) ||(0 == ulLen))
    {
        return ERR_MSP_INVALID_PARAMETER;
    }

    ulNum = (pstDiagHead->ulDataSize - sizeof(MSP_DIAG_DATA_REQ_STRU)) / sizeof(DIAG_CMD_REG_WR_PARA_STRU);
    ulMsgLen = sizeof(DIAG_CMD_REG_WR_CNF_PARA_STRU) * ulNum;

	DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_NV_WR,ulNum,0,0);

    pstCnfWrStru = (DIAG_CMD_REG_WR_CNF_PARA_STRU*)VOS_MemAlloc(MSP_PID_DIAG_AGENT, DYNAMIC_MEM_PT,ulMsgLen);
    if(NULL == pstCnfWrStru)
    {
        return ERR_MSP_MALLOC_FAILUE;
    }

    pstTempCnf = pstCnfWrStru;
    for (i = 0; i < ulNum; i++)
    {
        /*lint -save -e740*/
        pstReqWrStru = (DIAG_CMD_REG_WR_PARA_STRU*)pstRegWRReq + i;
        /*lint -restore*/
        /* 组包命令参数*/
        ret = diag_SetRegValue(pstReqWrStru);

        pstTempCnf->ulAddr = pstReqWrStru->ulAddr;
        pstTempCnf->ulRc   = ret;
        pstTempCnf ++;
    }

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)pstCnfWrStru,ulCmdId,ulMsgLen);

     VOS_MemFree(MSP_PID_DIAG_AGENT,pstCnfWrStru);

    return ret;
}
VOS_UINT32 diag_FsQueryProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_QUERY_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_QUERY_CNF stFsCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;

    pstFsReq = (DIAG_CMD_FS_QUERY_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    if (DIAG_FS_ROOT_FOLDER == pstFsReq->ulFolderType)
    {
#if(VOS_OS_VER == VOS_LINUX)
        /* 锁定状态下,根目录受限制 */
        if(g_bAtDataLocked)
        {
            stFsCnf.ulLength = VOS_StrLen((VOS_CHAR*)g_acDiagLockedRootPath);
            VOS_MemCpy(stFsCnf.aucDirPath,g_acDiagLockedRootPath, stFsCnf.ulLength);
        }
        else
        {
            stFsCnf.ulLength = VOS_StrLen((VOS_CHAR*)g_acDiagRootPath);
            VOS_MemCpy(stFsCnf.aucDirPath,g_acDiagRootPath, stFsCnf.ulLength);
        }
#else
            stFsCnf.ulLength = VOS_StrLen((VOS_CHAR*)g_acDiagRootPath);
            VOS_MemCpy(stFsCnf.aucDirPath,g_acDiagRootPath, stFsCnf.ulLength);
#endif
        g_stDiagFileInfo.ulFileType = DIAG_FS_ROOT_FOLDER;

    }
    else if (DIAG_FS_LOG_FOLDER == pstFsReq->ulFolderType)
    {
        stFsCnf.ulLength = VOS_StrLen((VOS_CHAR*)g_acDiagLogDir);
        VOS_MemCpy(stFsCnf.aucDirPath,g_acDiagLogDir, stFsCnf.ulLength);
        g_stDiagFileInfo.ulFileType = DIAG_FS_LOG_FOLDER;
    }
    /*临终遗言文件所在的路径*/
    else if (DIAG_FS_DUMP_FOLDER == pstFsReq->ulFolderType)
    {
        stFsCnf.ulLength = VOS_StrLen((VOS_CHAR*)g_acDiagDumpDir);
        VOS_MemCpy(stFsCnf.aucDirPath, g_acDiagDumpDir, stFsCnf.ulLength);
        g_stDiagFileInfo.ulFileType = DIAG_FS_DUMP_FOLDER;
    }
    else
    {
        ret = ERR_MSP_FAILURE;
    }
    stFsCnf.ulRet = ret;

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_QUERY_CNF));
    return ret;

}
VOS_UINT32 diag_RegRdProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
	DIAG_CMD_REG_RD_REQ_STRU* pstRegQryReq = NULL;
    DIAG_CMD_REG_RD_CNF_PARA_STRU *pstRegQryCnf = NULL;
    DIAG_CMD_REG_RD_CNF_PARA_STRU *pstTempCnf = NULL;
    MSP_DIAG_HEAD_STRU *pstDiagHead         = NULL;
    VOS_UINT32 *pulReqRdAddr                = NULL;
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_UINT32 ulNum  = 0;
    VOS_UINT32 i = 0;
    VOS_UINT32 ulMsgLen = 0;

    pstDiagHead = (MSP_DIAG_HEAD_STRU*)(DIAG_OFFSET_SOCP_GET_DIAG_HEAD(pstReq));
    pstRegQryReq = (DIAG_CMD_REG_RD_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    ulNum = (pstDiagHead->ulDataSize - sizeof(MSP_DIAG_DATA_REQ_STRU)) / sizeof(VOS_UINT32);
    ulMsgLen = sizeof(DIAG_CMD_REG_RD_CNF_PARA_STRU) * ulNum;


	DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_REG_RD,ulNum,0,0);

    pstRegQryCnf = (DIAG_CMD_REG_RD_CNF_PARA_STRU*)VOS_MemAlloc(MSP_PID_DIAG_AGENT, DYNAMIC_MEM_PT,ulMsgLen);
    if(NULL == pstRegQryCnf)
    {
        return ERR_MSP_MALLOC_FAILUE;
    }

    pstTempCnf = pstRegQryCnf;

    for (i = 0; i < ulNum; i++)
    {
        /*lint -save -e740*/
        pulReqRdAddr = ((VOS_UINT32*)pstRegQryReq) + i;
        /*lint -restore*/
        ret = (VOS_UINT32)diag_RegRead(*pulReqRdAddr, ADDRTYPE32BIT, &(pstRegQryCnf->ulRegValue));
		if(ERR_MSP_SUCCESS == ret)
		{
			pstTempCnf->ulRc = ret;
			pstTempCnf->ulAddr =*pulReqRdAddr;
		}
        pstTempCnf++;
    }

    ret = diag_AgentCnfFun((VOS_UINT8*)pstRegQryCnf,ulCmdId,ulMsgLen);

    VOS_MemFree(MSP_PID_DIAG_AGENT,pstRegQryCnf);

    return ret;


}
/*****************************************************************************
 Function Name   : diag_FsOpenProc
 Description     : 打开或创建文件
 Input           :VOS_UINT8* pstReq
                VOS_UINT32 ulCmdId
 Output          : None
 Return          : VOS_UINT32

 History         :
    1.w00182550      2013-1-29  Draft Enact

*****************************************************************************/
VOS_UINT32 diag_FsOpenProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_OPEN_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_OPEN_CNF stFsCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;

    pstFsReq = (DIAG_CMD_FS_OPEN_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    /*不支持操作文件的重入操作*/
    if (DIAG_FILE_NULL != g_stDiagFileInfo.lFile)
    {
        diag_printf("warning: last File import not finished\n");
        diag_FsClose();
    }
    /*lint -save -e539*/
	diag_fs_log();
    /*lint -restore*/
    g_stDiagFileInfo.lFile = diag_FsOpen(pstFsReq->szDirectory, (VOS_INT)(pstFsReq->ulMode));

    if (g_stDiagFileInfo.lFile < 0)
    {
    	g_stDiagFileInfo.lFile = DIAG_FILE_NULL;
        ret = VOS_ERR;
    }
	else
	{
	    /*启动定时器*/
	    g_stDiagFileInfo.hTimer = VOS_NULL_PTR;

	    ret = VOS_StartRelTimer(&g_stDiagFileInfo.hTimer, diag_GetAgentPid(), DIAG_CMD_FILE_OPS_TIME_OUT_LEN, 0, DIAG_TMR_FILE_OP_TIMEOUT_PARAM,VOS_RELTIMER_NOLOOP, VOS_TIMER_NO_PRECISION);
        if(ret != ERR_MSP_SUCCESS)
        {
            /*lint -save -e717*/
            diag_printf("VOS_StartRelTimer fail [%s]\n",__func__);
            /*lint -restore*/
        }
        diag_fs_log();
	}
    stFsCnf.ulRet = ret;

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_OPEN_CNF));
	diag_fs_log();

    return ret;

}
/*****************************************************************************
 Function Name   : diag_FsScanProc
 Description     : 扫描所有文件或文件夹信息
 Input           :VOS_UINT8* pstReq
                VOS_UINT32 ulCmdId
 Output          : None
 Return          : VOS_UINT32

 History         :
    1.w00182550      2013-1-29  Draft Enact

*****************************************************************************/
VOS_UINT32 diag_FsScanProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_SCAN_DIR_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_SCAN_DIR_CNF* pstFsCnf = NULL;
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_UINT32              ulTotalNum;
    VOS_UINT32              ulTotalSize;

    pstFsReq = (DIAG_CMD_FS_SCAN_DIR_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

   /*得到目录内,文件和文件夹的总个数、总的名字长度*/
    if(VOS_OK != diag_FsGetDirInfo(pstFsReq->szDirectory,&ulTotalNum))
    {
        return VOS_ERR;
    }

    /*计算返回给工具侧消息包的长度*/
    ulTotalSize = (ulTotalNum* sizeof(DIAG_DIR_FILE_INFO_STRU)+ sizeof(DIAG_CMD_FS_SCAN_DIR_CNF));

    pstFsCnf = (DIAG_CMD_FS_SCAN_DIR_CNF*)VOS_MemAlloc(diag_GetAgentPid(), DYNAMIC_MEM_PT, ulTotalSize);
    if (VOS_NULL_PTR == pstFsCnf)
    {
        return VOS_ERR;
    }

    /*获取每个文件和文件夹的信息*/
    /*lint -save -e539*/
	if(ulTotalNum>0)
	{
    	ret = diag_FsGetItemInfo(pstFsReq->szDirectory,pstFsCnf->stDirInfo);
	}
    /*lint -restore*/

    pstFsCnf->ulRet = ret;
    pstFsCnf->ulDirNum= ulTotalNum;
    pstFsCnf->ulDirInfoLen= ulTotalNum * sizeof(DIAG_DIR_FILE_INFO_STRU);

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)pstFsCnf,ulCmdId,ulTotalSize);
    /*lint -save -e50*/
    VOS_MemFree(diag_GetAgentPid(), pstFsCnf);
    /*lint -restore*/
    return ret;

}
VOS_UINT32 diag_DrxSampleAbleChnProc(VOS_UINT8* pstReq, VOS_UINT32 ulCmdId)
{
	DIAG_CMD_DRX_SAMPLE_ABLE_CHN_REQ_STRU *psDrxSample = NULL;
	DIAG_CMD_DRX_SAMPLE_ABLE_CHN_CNF_STRU stCnfDrxSample = {0};
	VOS_UINT32 ret = ERR_MSP_SUCCESS;

	VOS_UINT32 ulChnAbleType = 0;

	ulDrxSampleAbleChnEnterCnt ++;
	psDrxSample = (DIAG_CMD_DRX_SAMPLE_ABLE_CHN_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));


	/* 调用socp 通道使能函数打开通道或者关闭通道*/
	ulChnAbleType = psDrxSample->eDiagDrxSampleAbleChn;
	switch (ulChnAbleType)
	{
		case DRX_SAMPLE_SOCP_CHN_ENABLE:
			{
				if(VOS_OK != DRV_SOCP_START(SOCP_CODER_SRC_LBBP9))
				{
					vos_printf("%s: enable channel failed!\n",__FUNCTION__);
				}
			break;
			}
		case DRX_SAMPLE_SOCP_CHN_DISABLE:
			{
				if(VOS_OK != DRV_SOCP_STOP(SOCP_CODER_SRC_LBBP9))
				{
					vos_printf("%s: disable channel failed!\n",__FUNCTION__);
				}
			break;
			}
		default:
			break;
	}
	ulDrxSampleAbleChnExitCnt ++;

	/*打包回复给FW*/
	stCnfDrxSample.ulRet = ret;
	ret = diag_AgentCnfFun((VOS_UINT8*)&stCnfDrxSample, ulCmdId,sizeof(DIAG_CMD_DRX_SAMPLE_ABLE_CHN_CNF_STRU));

	return ret;

}
/*lint -save -e550 -e539 -e438 -e830*/
VOS_UINT32 diag_BspLogProcEntry(VOS_UINT8* pstReq , VOS_UINT32 ulCmdId)
{
    /*lint -save -e830*/
    VOS_UINT32  ret = ERR_MSP_SUCCESS;
    VOS_UINT32 data_len = 0;
    VOS_UINT32 cnf_data_len = 0;
    MSP_DIAG_HEAD_STRU *pstDiagHead         = VOS_NULL;
    DIAG_bsp_log_swt_cfg_s *pstLogSet = VOS_NULL;
    DIAG_BSP_PRINT_LOG_SWT_CNF_STRU  stLogSetCnf  = {0};
    VOS_UINT8 *pstCnf = VOS_NULL;
    /*lint -restore*/

    pstDiagHead = (MSP_DIAG_HEAD_STRU*)(DIAG_OFFSET_SOCP_GET_DIAG_HEAD(pstReq));

    vos_printf("diag_BspLogProcEntry  ulCmdId = 0x%x\n",ulCmdId);

    if(DIAG_CMD_BSP_LOG_SET_ACORE == (MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId)) )
    {
        ret = ERR_MSP_SUCCESS;
    }
    else if(DIAG_CMD_BSP_LOG_SET_CCORE == (MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId)) )
    {
        pstLogSet = (DIAG_bsp_log_swt_cfg_s *)DIAG_OFFSET_HEAD_GET_DATA(pstReq);
        data_len = pstDiagHead->ulDataSize  - sizeof(MSP_DIAG_DATA_REQ_STRU);
        stLogSetCnf.ulRet  = ERR_MSP_SUCCESS;

        pstCnf = (VOS_UINT8 *)&stLogSetCnf ;
        cnf_data_len = sizeof(DIAG_BSP_PRINT_LOG_SWT_CNF_STRU);
    }
    else
    {
        ret = ERR_MSP_FAILURE;
    }

    if(VOS_NULL!=pstCnf)
    {
        ret = diag_AgentCnfFun(pstCnf,ulCmdId,cnf_data_len);
    }
	return ret;
}
VOS_UINT32 diag_BspAxiProcEntry (VOS_UINT8* pstReq , VOS_UINT32 ulCmdId)
{
    VOS_UINT32 ret = ERR_MSP_SUCCESS;

	VOS_UINT8 *pdata =NULL;
	DIAG_CMD_COMMON_CNF stAxiCnf ={0};

    diag_printf("[%s enter!]\n",__FUNCTION__);
    pdata = (VOS_UINT8*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    switch(MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId))
    {
        case DIAG_CMD_AXI_DATA_CONFIG:
            ret = diag_BspAxiDataConfigEntry(pstReq, ulCmdId);
            break;
        case DIAG_CMD_AXI_REG_CONFIG:
            ret = DRV_AXI_REG_CONFIG(pdata);
            break;
        case DIAG_CMD_AXI_DATA_CTRL:
            ret = DRV_AXI_DATA_CTRL(pdata);
            break;
        case DIAG_CMD_AXI_MON_CONFIG:
            ret = diag_BspAxiMonConfigEntry(pstReq, ulCmdId);
            break;
        case DIAG_CMD_AXI_MON_START:
            ret = DRV_AXI_MON_START(pdata);
            break;
        case DIAG_CMD_AXI_MON_TERMINATE:
            ret = diag_BspAxiMonTerminateEntry(pstReq, ulCmdId);
            break;
        default:
            break;

    }

	stAxiCnf.ulRet = ret;
	ret = diag_AgentCnfFun((VOS_UINT8*)&stAxiCnf,ulCmdId,sizeof(DIAG_CMD_COMMON_CNF));

    return ret;
}
VOS_UINT32 diag_FsDeleteProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_DELETE_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_DELETE_CNF stFsCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
#if(VOS_OS_VER == VOS_LINUX)
    mm_segment_t old_fs;

    old_fs = get_fs();
    set_fs(KERNEL_DS);
#endif

    pstFsReq = (DIAG_CMD_FS_DELETE_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));
    /*lint -save -e628*/
    if (DIAG_FS_ITEM_FOLDER == pstFsReq->ulItemType)
    {

        ret = (VOS_UINT32)DIAG_FS_RMDIR(pstFsReq->szDirectory);/*lint !e628*/

    }
    else if (DIAG_FS_ITEM_FILE == pstFsReq->ulItemType)
    {
        ret = (VOS_UINT32)DIAG_FS_RMFILE(pstFsReq->szDirectory);/*lint !e628*/
    }
    /*lint -restore*/
#if(VOS_OS_VER == VOS_LINUX)
    set_fs(old_fs);
#endif

    stFsCnf.ulRet = ret;

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_DELETE_CNF));


    return ret;

}
Example #18
0
/*****************************************************************************
 Function Name   : diag_AirCfgProc
 Description     : 该函数用于处理CfgProcEntry传进来的空口开关命令
 Input           : pstReq 待处理数据
 Output          : None
 Return          : VOS_UINT32

 History         :
    1.y00228784      2012-11-22  Draft Enact

*****************************************************************************/
VOS_UINT32 diag_AirCfgProc (VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_LOG_CAT_AIR_REQ_STRU* pstAirSwtReq = NULL;
    DIAG_CMD_LOG_CAT_AIR_CNF_STRU stAirSwtCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    ENUM_DIAG_CFG_SWT_U8 enLSwitch = 0;
    ENUM_DIAG_CFG_SWT_U8 enGuSwitch = 0;
    VOS_UINT32 ulSetRet = 0;/*lint !e958 */

    pstAirSwtReq = (DIAG_CMD_LOG_CAT_AIR_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));/*lint !e958 */

    /*设置LT空口开关值*/
    enLSwitch = DIAG_GET_CFG_SWT(pstAirSwtReq->ulSwitch);
    enGuSwitch = DIAG_GET_CFG_SWT(pstAirSwtReq->ulGuSwitch);

    ulSetRet = diag_CfgSetGlobalBitValue(&g_ulDiagCfgInfo,DIAG_CFG_LT_AIR_BIT,enLSwitch);

    /*设置GU空口开关值*/
    ulSetRet |= diag_CfgSetGlobalBitValue(&g_ulDiagCfgInfo,DIAG_CFG_GU_AIR_BIT,enGuSwitch);

    DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_AIR_CFG, pstAirSwtReq->ulSwitch, ulSetRet, 0);

    if(ERR_MSP_SUCCESS == ulSetRet)
    {
        stAirSwtCnf.ulRc = ERR_MSP_SUCCESS;
    }
    else
    {
        stAirSwtCnf.ulRc = ERR_MSP_FAILURE;
    }

#if(VOS_OS_VER == VOS_LINUX)
    /*组包给FW回复*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stAirSwtCnf,ulCmdId,sizeof(DIAG_CMD_LOG_CAT_AIR_CNF_STRU));
#endif
    return ret;
}
Example #19
0
/*****************************************************************************
 Function Name   : diag_EventCfgProc
 Description     : 该函数用于处理CfgProcEntry传进来的事件开关命令
 Input           : pstReq 待处理数据
 Output          : None
 Return          : VOS_UINT32

 History         :
    1.y00228784      2012-11-22  Draft Enact

*****************************************************************************/
VOS_UINT32 diag_EventCfgProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_LOG_CAT_EVENT_REQ_STRU* pstEvtSwtReq = NULL;
    DIAG_CMD_LOG_CAT_EVENT_CNF_STRU stEvtSwtCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_UINT32 ulSetRet;
    ENUM_DIAG_CFG_SWT_U8 enSwitch =0;

    pstEvtSwtReq = (DIAG_CMD_LOG_CAT_EVENT_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    /*设置事件开关值*/
    enSwitch = DIAG_GET_CFG_SWT(pstEvtSwtReq->ulSwitch);
    ulSetRet = diag_CfgSetGlobalBitValue(&g_ulDiagCfgInfo,DIAG_CFG_EVENT_BIT,enSwitch);
    DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_EVENT_CFG, pstEvtSwtReq->ulSwitch, ulSetRet, 0);

    stEvtSwtCnf.ulRc = ulSetRet;
    stEvtSwtCnf.ulSwitch = pstEvtSwtReq->ulSwitch;

#if(VOS_OS_VER == VOS_LINUX)
    /*组包给FW回复*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stEvtSwtCnf,ulCmdId,sizeof(DIAG_CMD_LOG_CAT_EVENT_CNF_STRU));
#endif
    return ret;
}
VOS_UINT32 diag_FsImportProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
    DIAG_CMD_FS_IMPORT_REQ* pstFsReq = NULL;
    DIAG_CMD_FS_IMPORT_CNF stFsCnf = {0};
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    VOS_INT32 lResult =0;
#if(VOS_OS_VER == VOS_LINUX)
    mm_segment_t old_fs;
#endif

    pstFsReq = (DIAG_CMD_FS_IMPORT_REQ*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));

    if (DIAG_FILE_NULL == g_stDiagFileInfo.lFile)
    {
        return ERR_MSP_FAILURE;
    }
    diag_fs_log();

    /*停止定时器*/
    VOS_StopRelTimer(&g_stDiagFileInfo.hTimer);

    /*写文件完毕,关闭文件*/
    if (0 == pstFsReq->ulSize)
    {

		diag_fs_log();
        diag_FsClose();
        /*打包回复给FW*/
        stFsCnf.ulRet = ERR_MSP_SUCCESS;
        ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_IMPORT_CNF));
        return ret;
    }

#if(VOS_OS_VER == VOS_LINUX)
    old_fs = get_fs();
    set_fs(KERNEL_DS);
#endif

#if(VOS_OS_VER == VOS_LINUX)
    lResult = DIAG_FS_WRITE(g_stDiagFileInfo.lFile, pstFsReq->acContent, pstFsReq->ulSize);
#else
    lResult = DIAG_FS_WRITE((FILE *)g_stDiagFileInfo.lFile, pstFsReq->acContent, pstFsReq->ulSize);
#endif

	diag_fs_log();

#if(VOS_OS_VER == VOS_LINUX)
    set_fs(old_fs);
#endif

    /*写文件操作失败或者写入长度不正确*/
    if ((DIAG_FS_ERROR == lResult)||(lResult != (VOS_INT32)(pstFsReq->ulSize)))
    {
		diag_fs_log();
		diag_printf("[%s]!,lResult=%d\n",__FUNCTION__,lResult);
		diag_FsClose();
        return VOS_ERR;
    }

    /*启动定时器*/
    ret = VOS_StartRelTimer(&g_stDiagFileInfo.hTimer, diag_GetAgentPid(),DIAG_CMD_FILE_OPS_TIME_OUT_LEN,0,DIAG_TMR_FILE_OP_TIMEOUT_PARAM,VOS_RELTIMER_NOLOOP, VOS_TIMER_NO_PRECISION);
    if(ret != ERR_MSP_SUCCESS)
    {
        diag_printf("VOS_StartRelTimer fail [%s]\n",__func__);
    }

    stFsCnf.ulRet = ret;

    /*打包回复给FW*/
    ret = diag_AgentCnfFun((VOS_UINT8*)&stFsCnf,ulCmdId,sizeof(DIAG_CMD_FS_IMPORT_CNF));
    return ret;

}
VOS_UINT32 diag_DrxSampleGetChnSizeProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
	DIAG_CMD_DRX_SAMPLE_GET_CHNSIZE_REQ_STRU *psDrxSample = NULL;
	DIAG_CMD_DRX_SAMPLE_GET_CHNSIZE_CNF_STRU stCnfDrxSample = {0};
	VOS_UINT32 ret = ERR_MSP_SUCCESS;

	VOS_UINT32 ulAddrType = 0;

	ulDrxSampleGetChnSizeEnterCnt ++;
	psDrxSample = (DIAG_CMD_DRX_SAMPLE_GET_CHNSIZE_REQ_STRU*)(DIAG_OFFSET_HEAD_GET_DATA(pstReq));


	DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_BBP_SAMPLE,psDrxSample->eDiagDrxSampleChnSize,0,0);

	ulAddrType = psDrxSample->eDiagDrxSampleChnSize;
	switch (ulAddrType)
	{
		case DRX_SAMPLE_BBP_DMA_LOG0_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG0_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG0_MEM_SIZE;
			break;
		case DRX_SAMPLE_BBP_DMA_LOG1_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG1_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG1_MEM_SIZE;
			break;
		case DRX_SAMPLE_BBP_DMA_LOG2_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG2_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG2_MEM_SIZE;
			break;
		case DRX_SAMPLE_BBP_DMA_LOG3_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG3_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG3_MEM_SIZE;
            break;
		case DRX_SAMPLE_BBP_DMA_LOG4_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG4_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG4_MEM_SIZE;
            break;
		case DRX_SAMPLE_BBP_DMA_LOG5_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG5_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG5_MEM_SIZE;
            break;
		case DRX_SAMPLE_BBP_DMA_LOG6_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG6_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG6_MEM_SIZE;
            break;
		case DRX_SAMPLE_BBP_DMA_LOG7_CHNSIZE:
			stCnfDrxSample.ulChnAddr = BBP_LOG7_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_LOG7_MEM_SIZE;
			break;
		case DRX_SAMPLE_BBP_DMA_DATA_CHNSIZE:
            /*lint -save -e778*/
			stCnfDrxSample.ulChnAddr = BBP_DS_MEM_ADDR;
            stCnfDrxSample.ulChnSize = BBP_DS_MEM_SIZE;
            /*lint -restore*/
			break;
		default:
			break;
	}
	ulDrxSampleGetChnSizeExitCnt ++;

	/*打包回复给FW*/
	stCnfDrxSample.ulRet = ret;
    stCnfDrxSample.ulChnType = ulAddrType;
	ret = diag_AgentCnfFun((VOS_UINT8*)&stCnfDrxSample, ulCmdId,sizeof(DIAG_CMD_DRX_SAMPLE_GET_CHNSIZE_CNF_STRU));

	return ret;

}
VOS_UINT32 diag_BspSysviewProcEntry(VOS_UINT8* pstReq , VOS_UINT32 ulCmdId)
{
    VOS_UINT32  ret ;
    VOS_UINT32 cnf_data_len = 0;

    DIAG_BSP_SYVIEW_SWT_CFG_STRU *pstSysviewSet = VOS_NULL;
    DIAG_BSP_SYVIEW_SWT_CNF_STRU  *pstLogSysviewCnf  = {0};
    VOS_UINT8 *pstCnf = VOS_NULL;



    if((DIAG_CMD_BSP_SYSVIEW_SWT_ACORE == (MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId)))
        ||(DIAG_CMD_BSP_CPU_SWT_ACORE == (MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId))))
    {
        ret = ERR_MSP_SUCCESS;
    }
    else if((DIAG_CMD_BSP_SYSVIEW_SWT_CCORE == (MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId)) )
                ||(DIAG_CMD_BSP_CPU_SWT_CCORE == (MSP_STRU_ID_0_15_CMD_CATEGORY(ulCmdId))))
    {

        pstSysviewSet = (DIAG_BSP_SYVIEW_SWT_CFG_STRU *)DIAG_OFFSET_HEAD_GET_DATA(pstReq);

         ret= DRV_SYSVIEW_SWT_SET(pstSysviewSet->trace_type,pstSysviewSet->trace_swt,pstSysviewSet->period);

        if(ret  == ERR_MSP_SUCCESS)
        {
            if((pstSysviewSet->trace_type ==SYSVIEW_TASK_INFO )&&(pstSysviewSet->trace_swt ==1 ))
            {
                cnf_data_len = sizeof(DIAG_BSP_SYVIEW_SWT_CNF_STRU)+sizeof(DIAG_BSP_TASK_INFO_STRU)*128;
                /* coverity[returned_null] */
                pstLogSysviewCnf =(DIAG_BSP_SYVIEW_SWT_CNF_STRU*)VOS_MemAlloc(MSP_PID_DIAG_AGENT, DYNAMIC_MEM_PT,cnf_data_len);
                /* coverity[dereference] */
                pstLogSysviewCnf->ullen = sizeof(DIAG_BSP_TASK_INFO_STRU)*128;
                DRV_GET_ALL_TASK_ID_NAME((pstLogSysviewCnf->st_task_info), sizeof(DIAG_BSP_TASK_INFO_STRU)*128);
            }
            else
            {
                cnf_data_len = sizeof(DIAG_BSP_SYVIEW_SWT_CNF_STRU);
                /* coverity[returned_null] */
                pstLogSysviewCnf =(DIAG_BSP_SYVIEW_SWT_CNF_STRU*)VOS_MemAlloc(MSP_PID_DIAG_AGENT, DYNAMIC_MEM_PT,cnf_data_len);
                /* coverity[dereference] */
                pstLogSysviewCnf->ullen  = 0;
            }
        }
        else
        {
            cnf_data_len = sizeof(DIAG_BSP_SYVIEW_SWT_CNF_STRU);
            /* coverity[returned_null] */
            pstLogSysviewCnf =(DIAG_BSP_SYVIEW_SWT_CNF_STRU*)VOS_MemAlloc(MSP_PID_DIAG_AGENT, DYNAMIC_MEM_PT,cnf_data_len);
            /* coverity[dereference] */
            pstLogSysviewCnf->ullen  = 0;

        }

        pstLogSysviewCnf->ulRet = ret;
        pstLogSysviewCnf->trace_type =pstSysviewSet->trace_type;
        pstCnf = (VOS_UINT8 *)pstLogSysviewCnf ;

    }
    else
    {
        ret = ERR_MSP_FAILURE;
    }

    if(VOS_NULL!=pstCnf)
    {
        ret = diag_AgentCnfFun(pstCnf,ulCmdId,cnf_data_len);

         VOS_MemFree(diag_GetAgentPid(), pstCnf);
    }

    return ret;
}