VOS_UINT32 diag_DrxSampleGetVersionProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId)
{
	DIAG_CMD_DRX_SAMPLE_GET_VERSION_CNF_STRU stCnfDrxSample;
	VOS_UINT32 ret = ERR_MSP_SUCCESS;
	VOS_INT32 value = ERR_MSP_SUCCESS;
    /* coverity[assign_zero] */
	va_list arglist = (va_list)VOS_NULL;


	ulDrxSampleCfgChnAddrEnterCnt ++;


    /* config regs */
    /* coverity[var_deref_model] */
    value = VOS_nvsprintf((VOS_CHAR*)(stCnfDrxSample.ulProductName), DIAG_PRODUCT_VERSION_LENGTH, (VOS_CHAR *)PRODUCT_NAME, arglist);
    /*lint -save -e830*/
    if(value < 0){}
    /*lint -restore*/
    /* coverity[var_deref_model] */
    value = VOS_nvsprintf((VOS_CHAR*)(stCnfDrxSample.ulSolutiongName), DIAG_PRODUCT_VERSION_LENGTH, (VOS_CHAR *)PRODUCT_CFG_CHIP_SOLUTION_NAME, arglist);
    /*lint -save -e830*/
    if(value < 0){}
    /*lint -restore*/
    ulDrxSampleCfgChnAddrExitCnt ++;

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

	return ret;

}
/*lint -e960 */
VOS_UINT32 OM_Printf(VOS_CHAR * pcformat, ... )
/*lint +e960 */
{
    VOS_UINT32          ulReturn = OM_OK;
    VOS_CHAR            *pcWarning;
    VOS_UINT32          ulTempLen;
    VOS_INT32           lRetLen;
    va_list             argument;
    VOS_UINT32          ulDataLen = 0;

    /* 数组前四字节存储模块ID,接着四个直接存储打印机别,从第九字节开始为转换后字符串,为确保在转换为字符串
     过程中不越界,多定义四字节作保护 */
    /*lint -e813 */
    VOS_CHAR            acOutput[VOS_MAX_PRINT_LEN + 12];
    /*lint +e813 */

#if (VOS_OS_VER == VOS_LINUX)
    if(in_interrupt())
    {
        printk("\r\nOM_Printf: RUN in the IRQ");

        return OM_ERR_RUNINIRQ;
    }
#endif

    *((VOS_UINT32*)acOutput)     = ACPU_PID_OM;
    *(((VOS_UINT32*)acOutput)+1) = LOG_LEVEL_INFO;

    /* 将格式化字符串和可变参数转换为字符串 */
    va_start( argument, pcformat );
    lRetLen = VOS_nvsprintf(acOutput + OM_PRINTF_OFFSET, VOS_MAX_PRINT_LEN, pcformat, argument);
    va_end( argument );

    /* 添加字符串结束标志 */
    acOutput[VOS_MAX_PRINT_LEN + OM_PRINTF_OFFSET - 1] = '\0';

    /* 对转换结果进行判断,并在转换后字符串中添加相应提示信息 */
    if( lRetLen >= (VOS_MAX_PRINT_LEN - 1) )
    {
        pcWarning = "OM_Printf: Warning!Print too long!!!";
        ulTempLen = VOS_StrLen(pcWarning );
        VOS_MemCpy(acOutput + OM_PRINTF_OFFSET, pcWarning, ulTempLen);

        /* 在转换后字符串倒数第二个字节添加换行符 */
        acOutput[VOS_MAX_PRINT_LEN + OM_PRINTF_OFFSET- 2] = '\n';
        ulDataLen = VOS_MAX_PRINT_LEN + OM_PRINTF_OFFSET - 1;
    }
    else if( lRetLen < 0 )
    {
        pcWarning = "OM_Printf:unknown internal error.\r\n";
        VOS_StrCpy(acOutput + OM_PRINTF_OFFSET, pcWarning );
        ulDataLen = VOS_StrLen(pcWarning ) + OM_PRINTF_OFFSET;
    }
    else
    {
        ulDataLen = (VOS_UINT32)lRetLen + OM_PRINTF_OFFSET;
    }

    ulReturn = OM_PrintfDataPut(acOutput, ulDataLen);

    return ulReturn;
}
/*lint -e960 */
VOS_UINT32 OM_PrintfWithModule(VOS_UINT32 ulModuleId, VOS_UINT32 ulLevel, VOS_CHAR * pcformat, ... )
/*lint +e960 */
{
    VOS_UINT32          ulReturn = OM_OK;
    VOS_CHAR            *pcWarning;
    VOS_UINT32          ulTempLen;
    VOS_INT32           lRetLen;
    va_list             argument;
    VOS_UINT32          ulDataLen = 0;

    /* 数组前四字节存储模块ID,从第九字节开始为转换后字符串,为确保在转换为字符串
     过程中不越界,多定义四字节作保护 */
    /*lint -e813 */
    VOS_CHAR            acOutput[VOS_MAX_PRINT_LEN + 12];
    /*lint +e813 */

#if (VOS_OS_VER == VOS_LINUX)
    if(in_interrupt())
    {
        printk("\r\nOM_PrintfWithModule: RUN in the IRQ");

        return OM_ERR_RUNINIRQ;
    }
#endif

    /* 输入参数检查 */
    if((LOG_MAX_MODULE_ID_APP < ulModuleId)||(LOG_MIN_MODULE_ID_ACPU_DRV > ulModuleId)
                                       ||(LOG_LEVEL_BUTT <= ulLevel))
    {
        vos_printf("\r\nOM_PrintfWithModule: Para Error, ModuleId is %d, Level is %d", ulModuleId, ulLevel);
        return OM_ERR_UNVALIDPARA;
    }

    ulReturn = OM_PrintfGetModuleIdLev(ulModuleId);
    if((ulLevel > ulReturn)||(LOG_LEVEL_OFF == ulLevel))
    {
        return OM_ERR_LOWLEVEL;
    }

    *((VOS_UINT32*)acOutput) = ulModuleId;
    *(((VOS_UINT32*)acOutput)+1) = ulLevel;

    /* 将格式化字符串和可变参数转换为字符串 */
    va_start( argument, pcformat );
    lRetLen = VOS_nvsprintf(acOutput + OM_PRINTF_OFFSET, VOS_MAX_PRINT_LEN, pcformat, argument);
    va_end( argument );

    /* 添加字符串结束标志 */
    acOutput[VOS_MAX_PRINT_LEN + OM_PRINTF_OFFSET - 1] = '\0';

    /* 对转换结果进行判断,并在转换后字符串中添加相应提示信息 */
    if(lRetLen >= (VOS_MAX_PRINT_LEN - 1))
    {
        pcWarning = "OM_Printf: Warning!Print too long!!!";
        ulTempLen = VOS_StrLen(pcWarning );
        VOS_MemCpy(acOutput + OM_PRINTF_OFFSET, pcWarning, ulTempLen);

        /* 在转换后字符串倒数第二个字节添加换行符 */
        acOutput[VOS_MAX_PRINT_LEN + OM_PRINTF_OFFSET- 2] = '\n';
        ulDataLen = VOS_MAX_PRINT_LEN + OM_PRINTF_OFFSET- 1;
    }
    else if( lRetLen < 0 )
    {
        pcWarning = "OM_Printf:unknown internal error.\r\n";
        VOS_StrCpy(acOutput + OM_PRINTF_OFFSET, pcWarning );
        ulDataLen = VOS_StrLen(pcWarning ) + OM_PRINTF_OFFSET;
    }
    else
    {
        ulDataLen = (VOS_UINT32)lRetLen + OM_PRINTF_OFFSET;
    }

    ulReturn = OM_PrintfDataPut(acOutput, ulDataLen);

    return ulReturn;
}