VOS_VOID PPM_GetSendDataLen(SOCP_CODER_DST_ENUM_U32 enChanID, VOS_UINT32 ulDataLen, VOS_UINT32 *pulSendDataLen, CPM_PHY_PORT_ENUM_UINT32 *penPhyport) { CPM_PHY_PORT_ENUM_UINT32 enPhyport; if (SOCP_CODER_DST_OM_CNF == enChanID) { enPhyport = CPM_QueryPhyPort(CPM_OM_CFG_COMM); } else { enPhyport = CPM_QueryPhyPort(CPM_OM_IND_COMM); } /*当发送是通过USB并且发送长度大于60k的时候,需要限制发送长度*/ if (((CPM_IND_PORT == enPhyport) || (CPM_CFG_PORT == enPhyport)) &&(ulDataLen > USB_MAX_DATA_LEN)) { LogPrint1("PPM_GetSendDataLen: Change the send Data Len %d", (VOS_INT)ulDataLen); *pulSendDataLen = USB_MAX_DATA_LEN; } else { *pulSendDataLen = ulDataLen; /*其他情况下不需要调整当前的大小,包括sd、wifi*/ } *penPhyport = enPhyport; return; }
VOS_VOID PPM_PortCloseProc(OM_PROT_HANDLE_ENUM_UINT32 enHandle, CPM_PHY_PORT_ENUM_UINT32 enPhyPort) { VOS_ULONG ulLockLevel; OM_LOGIC_CHANNEL_ENUM_UINT32 enChannel; VOS_BOOL ulSndMsg; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseSlice = OM_GetSlice(); if (VOS_ERROR == g_astOMPortUDIHandle[enHandle]) { return; } DRV_UDI_CLOSE(g_astOMPortUDIHandle[enHandle]); g_astOMPortUDIHandle[enHandle] = VOS_ERROR; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseOkNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseOkSlice = OM_GetSlice(); VOS_SpinLockIntLock(&g_stPpmPortSwitchSpinLock, ulLockLevel); ulSndMsg = VOS_FALSE; enChannel = OM_LOGIC_CHANNEL_BUTT; /* CFG端口处理GU和TL的端口断开,发消息到GU和TL去处理,但不断开CPM的关联 */ if (OM_USB_CFG_PORT_HANDLE == enHandle) { if (enPhyPort == CPM_QueryPhyPort(CPM_OM_CFG_COMM)) { ulSndMsg = VOS_TRUE; enChannel = OM_LOGIC_CHANNEL_CNF; } } /* IND端口断开时发消息到GU和TL去处理,但不断开CPM的关联 */ else if (OM_USB_IND_PORT_HANDLE == enHandle) { if (enPhyPort == CPM_QueryPhyPort(CPM_OM_IND_COMM)) { ulSndMsg = VOS_TRUE; enChannel = OM_LOGIC_CHANNEL_IND; } } else { } VOS_SpinUnlockIntUnlock(&g_stPpmPortSwitchSpinLock, ulLockLevel); if (VOS_TRUE == ulSndMsg) { PPM_DisconnectAllPort(enChannel); } return; }
/***************************************************************************** 函 数 名 : CPM_Show 功能描述 : 显示当前的逻辑和物理端口对应关系 输入参数 : 无 输出参数 : 无 返 回 值 : 无 *****************************************************************************/ VOS_VOID CPM_Show(VOS_VOID) { CPM_PHY_PORT_ENUM_UINT32 enPhyPort; CPM_LOGIC_PORT_ENUM_UINT32 enLogicPort; vos_printf("\r\nCPM_Show The Logic and Phy Relation is :"); for(enLogicPort=CPM_AT_COMM; enLogicPort<CPM_COMM_BUTT; enLogicPort++) { enPhyPort = CPM_QueryPhyPort(enLogicPort); vos_printf("\r\nThe Logic Port %d is connnect PHY Port %d.", enLogicPort, enPhyPort); } vos_printf("\r\nCPM_Show The Phy Info is :"); for(enPhyPort=0; enPhyPort<(CPM_PORT_BUTT - CPM_APP_PORT); enPhyPort++) { vos_printf("\r\nThe Phy %d Port's Rec Func is 0x%x, Send Func is 0x%x", enPhyPort, g_astCPMPhyPortCfg[enPhyPort].pRcvFunc, g_astCPMPhyPortCfg[enPhyPort].pSendFunc); } for(enLogicPort=0; enLogicPort<CPM_COMM_BUTT; enLogicPort++) { vos_printf("\r\nThe Logic %d Port's Rec Func is 0x%x, Send Func is 0x%x", enLogicPort, g_astCPMLogicPortCfg[enLogicPort].pRcvFunc, g_astCPMLogicPortCfg[enLogicPort].pSendFunc); } return; }
/***************************************************************************** 函 数 名 : GU_OamVComStatus 功能描述 : 用于ACPU上面处理VCom端口断开后的OM链接断开 输入参数 : pucData: 需要发送的数据内容 ulDataLen: 数据长度 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2012年2月2日 作 者 : zhuli 修改内容 : Creat Function *****************************************************************************/ VOS_VOID GU_OamVComStatus(APP_VCOM_EVT_UINT32 enPortState) { if(APP_VCOM_EVT_RELEASE == enPortState) { g_stVComDebugInfo.ulVCOMOutNum++; g_stVComDebugInfo.ulVCOMOutTime = OM_GetSlice(); if (CPM_VCOM_PORT == CPM_QueryPhyPort(CPM_OM_COMM)) { GU_OamDisconnectPorts(CPM_VCOM_PORT); g_stAcpuPcToUeSucRecord.stRlsInfo.ulRlsDrvSuspend++; g_stAcpuPcToUeSucRecord.stRlsInfo.ulSlice = OM_GetSlice(); } } else if(APP_VCOM_EVT_OPEN == enPortState) { g_stVComDebugInfo.ulVCOMInNum++; g_stVComDebugInfo.ulVCOMInTime = OM_GetSlice(); } else { LogPrint1("GU_OamVComStatus: The VCOM Port State %d is Unknow", (VOS_INT)enPortState); } return; }
VOS_VOID GU_OamPortCloseProc(OM_PROT_HANDLE_ENUM_UINT32 enHandle, CPM_PHY_PORT_ENUM_UINT32 enPhyPort) { g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseSlice = OM_GetSlice(); if (enPhyPort == CPM_QueryPhyPort(CPM_OM_COMM)) { GU_OamDisconnectPorts(enPhyPort); g_stAcpuPcToUeSucRecord.stRlsInfo.ulRlsPortClose++; g_stAcpuPcToUeSucRecord.stRlsInfo.ulSlice = OM_GetSlice(); } if (VOS_ERROR != g_astOMPortUDIHandle[enHandle]) { DRV_UDI_CLOSE(g_astOMPortUDIHandle[enHandle]); g_astOMPortUDIHandle[enHandle] = VOS_ERROR; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseOkNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBCloseOkSlice = OM_GetSlice(); } return; }
/***************************************************************************** 函 数 名 : GU_OamPortStatus 功能描述 : 用于ACPU上面处理物理端口断开后的OM链接断开 输入参数 : pucData: 需要发送的数据内容 ulDataLen: 数据长度 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2012年2月2日 作 者 : zhuli 修改内容 : Creat Function *****************************************************************************/ VOS_VOID GU_OamPortStatus(OM_PROT_HANDLE_ENUM_UINT32 enHandle, CPM_PHY_PORT_ENUM_UINT32 enPhyPort,ACM_EVT_E enPortState) { if(ACM_EVT_DEV_SUSPEND == enPortState) { g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBOutNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBOutTime = OM_GetSlice(); if (enPhyPort == CPM_QueryPhyPort(CPM_OM_COMM)) { GU_OamDisconnectPorts(enPhyPort); g_stAcpuPcToUeSucRecord.stRlsInfo.ulRlsDrvSuspend++; g_stAcpuPcToUeSucRecord.stRlsInfo.ulSlice = OM_GetSlice(); } } else if(ACM_EVT_DEV_READY == enPortState) { g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBINNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBINTime = OM_GetSlice(); } else { LogPrint2("GU_OamUSBStatusCB: The USB Port %d State %d is Unknow", (VOS_INT)enPhyPort, (VOS_INT)enPortState); g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBStateErrNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBStateErrTime = OM_GetSlice(); } return; }
VOS_UINT32 GU_OamLogPortSwitch(VOS_UINT32 ulPhyPort) { CPM_PHY_PORT_ENUM_UINT32 enPhyPort; if ((CPM_VCOM_PORT != ulPhyPort) && (CPM_APP_PORT != ulPhyPort)) { vos_printf("\r\n GU_OamPortSwitch: enPhyPort is error.port %d\n", ulPhyPort); return VOS_ERR; } enPhyPort = CPM_QueryPhyPort(CPM_OM_COMM); if (ulPhyPort != enPhyPort) { /* 断开连接 */ GU_OamDisconnectPorts(enPhyPort); g_stAcpuPcToUeSucRecord.stRlsInfo.ulRlsPortSwitch++; g_stAcpuPcToUeSucRecord.stRlsInfo.ulSlice = OM_GetSlice(); CPM_ConnectPorts(ulPhyPort, CPM_OM_COMM); } return VOS_OK; }
/***************************************************************************** 函 数 名 : GU_OamUSBReadData 功能描述 : 用于ACPU上面底软把数据通过ICC发送给OM模块 输入参数 : enPhyPort: 物理端口 UdiHandle:设备句柄 输出参数 : 无 返 回 值 : VOS_ERR/VOS_OK 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2012年2月2日 作 者 : zhuli 修改内容 : Creat Function *****************************************************************************/ VOS_INT32 GU_OamReadPortData(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, UDI_HANDLE UdiHandle) { ACM_WR_ASYNC_INFO stInfo; CPM_PHY_PORT_ENUM_UINT32 enPcvoiceRet; CPM_PHY_PORT_ENUM_UINT32 enDiagRet; if (VOS_ERROR == UdiHandle) { LogPrint("\r\nGU_OamReadPortData: Input HANDLE is err. \n"); return VOS_ERR; } VOS_MemSet(&stInfo, 0, sizeof(stInfo)); /* 获取USB的IO CTRL口的读缓存 */ if (VOS_OK != DRV_UDI_IOCTL(UdiHandle, UDI_ACM_IOCTL_GET_READ_BUFFER_CB, &stInfo)) { LogPrint("\r\nGU_OamReadPortData:Call DRV_UDI_IOCTL is Failed\n"); return VOS_ERR; } /*lint -e40*/ OM_ACPU_DEBUG_TRACE((VOS_UINT8*)stInfo.pBuffer, stInfo.u32Size, OM_ACPU_USB_CB); /*lint +e40*/ /*判断当前是否承载的是Pcvoice*/ enPcvoiceRet = CPM_QueryPhyPort(CPM_PCVOICE_COMM); enDiagRet = CPM_QueryPhyPort(CPM_DIAG_COMM); if ((enPhyPort != enPcvoiceRet)&&(enPhyPort != enDiagRet)) { CPM_PnpAppPortCB(enPhyPort, VOS_TRUE); /*需要重新链接物理和逻辑端口关系*/ } if(VOS_OK != CPM_ComRcv(enPhyPort, (VOS_UINT8*)stInfo.pBuffer, stInfo.u32Size)) { LogPrint1("\r\n Info: GU_OamReadPortData:Call CPM_ComRcv is NULL, PhyPort is %d\n", (VOS_INT)enPhyPort); } if(VOS_OK != DRV_UDI_IOCTL(UdiHandle, UDI_ACM_IOCTL_RETUR_BUFFER_CB, &stInfo)) { LogPrint("\r\nGU_OamReadPortData:Call DRV_UDI_IOCTL UDI_ACM_IOCTL_RETUR_BUFFER_CB is Failed\n"); } return VOS_OK; }
/***************************************************************************** 函 数 名 : GU_OamPortStatusCB 功能描述 : 用于ACPU上面处理物理端口断开后的OM链接断开 输入参数 : pucData: 需要发送的数据内容 ulDataLen: 数据长度 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2012年2月2日 作 者 : zhuli 修改内容 : Creat Function *****************************************************************************/ VOS_VOID GU_OamAppStatusCB(ACM_EVT_E enPortState) { if (CPM_APP_PORT == CPM_QueryPhyPort(CPM_PCVOICE_COMM))/*当前运行的是Pcvoice业务,不处理*/ { LogPrint1("\r\n Info: GU_OamAppStatusCB: Pcvoice Rec The USB Port State %d", enPortState); return; } GU_OamPortStatus(OM_APP_PORT_HANDLE, CPM_APP_PORT, enPortState); return; }
VOS_INT GU_OamVComReadData(VOS_UINT8 ucDevIndex, VOS_UINT8 *pData, VOS_UINT32 uslength) { if(ucDevIndex != APP_VCOM_DEV_INDEX_LOG) { vos_printf("\r\n GU_OamVComReadData:PhyPort port is error: %d\n", ucDevIndex); return VOS_ERR; } #if (VOS_LINUX == VOS_OS_VER) down(&g_stVCOMRxBuffSem); #endif g_stVComDebugInfo.ulVCOMRcvNum++; g_stVComDebugInfo.ulVCOMRcvLen += uslength; if ((VOS_NULL_PTR == pData) || (0 == uslength)) { #if (VOS_LINUX == VOS_OS_VER) up(&g_stVCOMRxBuffSem); #endif vos_printf("\r\n GU_OamVComReadData:Send data is NULL\n"); return VOS_ERR; } if (CPM_PORT_BUTT == CPM_QueryPhyPort(CPM_OM_COMM)) { CPM_ConnectPorts(CPM_VCOM_PORT, CPM_OM_COMM); } /*lint -e40*/ OM_ACPU_DEBUG_TRACE((VOS_UINT8*)pData, uslength, OM_ACPU_USB_CB); /*lint +e40*/ if(VOS_OK != CPM_ComRcv(CPM_VCOM_PORT, pData, uslength)) { g_stVComDebugInfo.ulVCOMRcvErrNum++; g_stVComDebugInfo.ulVCOMRcvErrLen += uslength; vos_printf("\r\n Info: GU_OamVComReadData:Call CPM_ComRcv is fail, PhyPort is CPM_VCOM_PORT \n"); } #if (VOS_LINUX == VOS_OS_VER) up(&g_stVCOMRxBuffSem); #endif return VOS_OK; }
VOS_UINT32 GU_OamQueryLogPort(VOS_UINT32 *pulLogPort) { if (VOS_NULL_PTR == pulLogPort) { vos_printf("\r\n GU_OamQueryLogPort: para is NULL !!\n"); return VOS_ERR; } *pulLogPort = CPM_QueryPhyPort(CPM_OM_COMM); if ((CPM_APP_PORT != *pulLogPort) && (CPM_VCOM_PORT != *pulLogPort)) { vos_printf("\r\n GU_OamQueryLogPort: log prot is not support. port:%d!!\n", *pulLogPort); return VOS_ERR; } return VOS_OK; }
VOS_VOID GU_OamGetSendDataLen(VOS_UINT32 ulDataLen, VOS_UINT32 *pulSendDataLen, CPM_PHY_PORT_ENUM_UINT32 *penPhyport) { CPM_PHY_PORT_ENUM_UINT32 enPhyport; enPhyport = CPM_QueryPhyPort(CPM_OM_COMM); /*当发送是通过USB并且发送长度大于60k的时候,需要限制发送长度*/ if (((CPM_APP_PORT == enPhyport)||(CPM_CTRL_PORT == enPhyport)) &&(ulDataLen > USB_MAX_DATA_LEN)) { LogPrint1("GU_OamUSBWriteDataCB: Change the send Data Len %d", (VOS_INT)ulDataLen); *pulSendDataLen = USB_MAX_DATA_LEN; } else { *pulSendDataLen = ulDataLen; /*其他情况下不需要调整当前的大小,包括sd、wifi*/ } *penPhyport = enPhyport; return; }
VOS_UINT32 PPM_LogPortSwitch(VOS_UINT32 ulPhyPort, VOS_BOOL ulEffect) { CPM_PHY_PORT_ENUM_UINT32 enPhyCfgPort; CPM_PHY_PORT_ENUM_UINT32 enPhyIndPort; VOS_ULONG ulLockLevel; VOS_BOOL ulSndMsg; if ((CPM_OM_PORT_TYPE_USB != ulPhyPort) && (CPM_OM_PORT_TYPE_VCOM != ulPhyPort)) { vos_printf("\r\n PPM_LogPortSwitch: enPhyPort is error.port %d\n", ulPhyPort); g_stPpmPortSwitchInfo.ulPortTypeErr++; return VOS_ERR; } /* 切换的端口与当前端口一致不切换 */ if (ulPhyPort == g_stPortCfg.enPortNum) { DRV_SOCP_VOTE(SOCP_VOTE_PPM_RCV, SOCP_VOTE_FOR_WAKE); /* 切换到VCOM输出时在LOG延迟写入开启情况下需要重新设置SOCP的超时中断 */ if (CPM_OM_PORT_TYPE_VCOM == g_stPortCfg.enPortNum) { (VOS_VOID)DRV_SOCP_SET_TIMEOUT(SOCP_TIMEOUT_TRF, 0); } /* 为了规避USB输出时开启了延时写入无法连接工具,切换到USB输出时需要重新设置SOCP的超时中断到默认值 */ if (CPM_OM_PORT_TYPE_USB == g_stPortCfg.enPortNum) { (VOS_VOID)DRV_SOCP_SET_TIMEOUT(SOCP_TIMEOUT_TRF, 0x17); } DRV_SOCP_VOTE(SOCP_VOTE_PPM_RCV, SOCP_VOTE_FOR_SLEEP); return VOS_OK; } g_stPpmPortSwitchInfo.ulStartSlice = OM_GetSlice(); enPhyCfgPort = CPM_QueryPhyPort(CPM_OM_CFG_COMM); enPhyIndPort = CPM_QueryPhyPort(CPM_OM_IND_COMM); ulSndMsg = VOS_FALSE; VOS_SpinLockIntLock(&g_stPpmPortSwitchSpinLock, ulLockLevel); /* 切换到VCOM输出 */ if (CPM_OM_PORT_TYPE_VCOM == ulPhyPort) { /* 当前是USB输出 */ if ((CPM_CFG_PORT == enPhyCfgPort) && (CPM_IND_PORT == enPhyIndPort)) { /* 需要断开连接 */ ulSndMsg = VOS_TRUE; CPM_DisconnectPorts(CPM_CFG_PORT, CPM_OM_CFG_COMM); CPM_DisconnectPorts(CPM_IND_PORT, CPM_OM_IND_COMM); } /* 当前OM走VCOM上报 */ CPM_ConnectPorts(CPM_VCOM_CFG_PORT, CPM_OM_CFG_COMM); CPM_ConnectPorts(CPM_VCOM_IND_PORT, CPM_OM_IND_COMM); g_stPortCfg.enPortNum = CPM_OM_PORT_TYPE_VCOM; } /* 切换到USB输出 */ else { /* 当前是VCOM输出 */ if ((CPM_VCOM_CFG_PORT == enPhyCfgPort) && (CPM_VCOM_IND_PORT == enPhyIndPort)) { /* 断开连接 */ ulSndMsg = VOS_TRUE; CPM_DisconnectPorts(CPM_VCOM_CFG_PORT, CPM_OM_CFG_COMM); CPM_DisconnectPorts(CPM_VCOM_IND_PORT, CPM_OM_IND_COMM); } /* OM走USB上报 */ CPM_ConnectPorts(CPM_CFG_PORT, CPM_OM_CFG_COMM); CPM_ConnectPorts(CPM_IND_PORT, CPM_OM_IND_COMM); g_stPortCfg.enPortNum = CPM_OM_PORT_TYPE_USB; } VOS_SpinUnlockIntUnlock(&g_stPpmPortSwitchSpinLock, ulLockLevel); if (VOS_TRUE == ulSndMsg) { PPM_DisconnectAllPort(OM_LOGIC_CHANNEL_CNF); } DRV_SOCP_VOTE(SOCP_VOTE_PPM_RCV, SOCP_VOTE_FOR_WAKE); /* 切换到VCOM输出时在LOG延迟写入开启情况下需要重新设置SOCP的超时中断 */ if (CPM_OM_PORT_TYPE_VCOM == g_stPortCfg.enPortNum) { (VOS_VOID)DRV_SOCP_SET_TIMEOUT(SOCP_TIMEOUT_TRF, 0); } /* 为了规避USB输出时开启了延时写入无法连接工具,切换到USB输出时需要重新设置SOCP的超时中断到默认值 */ if (CPM_OM_PORT_TYPE_USB == g_stPortCfg.enPortNum) { (VOS_VOID)DRV_SOCP_SET_TIMEOUT(SOCP_TIMEOUT_TRF, 0x17); } DRV_SOCP_VOTE(SOCP_VOTE_PPM_RCV, SOCP_VOTE_FOR_SLEEP); g_stPpmPortSwitchInfo.ulSwitchSucc++; g_stPpmPortSwitchInfo.ulEndSlice = OM_GetSlice(); if (VOS_TRUE == ulEffect) { if (VOS_OK != NV_Write(en_NV_Item_Om_Port_Type, &g_stPortCfg, sizeof(OM_CHANNLE_PORT_CFG_STRU))) { vos_printf("\r\n PPM_LogPortSwitch: NV_Write fail\n"); } } return VOS_OK; }
VOS_VOID PPM_PortStatus(OM_PROT_HANDLE_ENUM_UINT32 enHandle, CPM_PHY_PORT_ENUM_UINT32 enPhyPort,ACM_EVT_E enPortState) { VOS_ULONG ulLockLevel; OM_LOGIC_CHANNEL_ENUM_UINT32 enChannel; VOS_BOOL ulSndMsg; if (ACM_EVT_DEV_SUSPEND == enPortState) { g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBOutNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBOutTime = OM_GetSlice(); VOS_SpinLockIntLock(&g_stPpmPortSwitchSpinLock, ulLockLevel); ulSndMsg = VOS_FALSE; enChannel = OM_LOGIC_CHANNEL_BUTT; /* CFG端口处理GU和TL的端口断开,发消息到GU和TL去处理,但不断开CPM的关联 */ if (OM_USB_CFG_PORT_HANDLE == enHandle) { if (enPhyPort == CPM_QueryPhyPort(CPM_OM_CFG_COMM)) { ulSndMsg = VOS_TRUE; enChannel = OM_LOGIC_CHANNEL_CNF; } } /* IND端口断开时发消息到GU和TL去处理 */ else if (OM_USB_IND_PORT_HANDLE == enHandle) { if (enPhyPort == CPM_QueryPhyPort(CPM_OM_IND_COMM)) { ulSndMsg = VOS_TRUE; enChannel = OM_LOGIC_CHANNEL_IND; } } else { } VOS_SpinUnlockIntUnlock(&g_stPpmPortSwitchSpinLock, ulLockLevel); if (VOS_TRUE == ulSndMsg) { PPM_DisconnectAllPort(enChannel); } } else if(ACM_EVT_DEV_READY == enPortState) { g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBINNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBINTime = OM_GetSlice(); } else { LogPrint2("PPM_PortStatus: The USB Port %d State %d is Unknow", (VOS_INT)enPhyPort, (VOS_INT)enPortState); g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBStateErrNum++; g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBStateErrTime = OM_GetSlice(); } return; }