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; }