コード例 #1
0
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_INT32 PPM_ReadPortData(CPM_PHY_PORT_ENUM_UINT32 enPhyPort, UDI_HANDLE UdiHandle, OM_PROT_HANDLE_ENUM_UINT32 enHandle)
{
    ACM_WR_ASYNC_INFO                   stInfo;

    if (VOS_ERROR == UdiHandle)
    {
        LogPrint("\r\n PPM_PortCloseProc: Input HANDLE  is err. \n");

        g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBUdiHandleErr++;

        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\n PPM_ReadPortData:Call DRV_UDI_IOCTL is Failed\n");

        g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBUdiHandleReadGetBufferErr++;

        return VOS_ERR;
    }

    /*lint -e40*/
    OM_ACPU_DEBUG_CHANNEL_TRACE(enPhyPort, (VOS_UINT8*)stInfo.pVirAddr, stInfo.u32Size, OM_ACPU_USB_CB);
    /*lint +e40*/

    if(VOS_OK != CPM_ComRcv(enPhyPort, (VOS_UINT8*)stInfo.pVirAddr, stInfo.u32Size))
    {
        LogPrint1("\r\n Info: PPM_ReadPortData:Call CPM_ComRcv is NULL, PhyPort is %d\n", (VOS_INT)enPhyPort);

        g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBUdiCommRcvNullPtrErr++;
    }

    g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBRcvPktNum++;
    g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBRcvPktByte += stInfo.u32Size;

    if(VOS_OK != DRV_UDI_IOCTL(UdiHandle, UDI_ACM_IOCTL_RETUR_BUFFER_CB, &stInfo))
    {
        LogPrint("\r\n PPM_ReadPortData:Call DRV_UDI_IOCTL UDI_ACM_IOCTL_RETUR_BUFFER_CB is Failed\n");

        g_stAcpuDebugInfo.astPortInfo[enHandle].ulUSBUdiHandleReadBufferFreeErr++;
    }

    return VOS_OK;
}
コード例 #3
0
/*****************************************************************************
 函 数 名  : 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;
}
コード例 #4
0
/*****************************************************************************
 Prototype      : Sock_ServerProc
 Description    : 服务器线程,用来处理服务器端和客户端的所有请求。
 Input          : lpParameter - Unused.
 Output         : void
 Return Value   : void

 History        : ---
    Date        : 2008-05-3
    Author      : g47350
    Modification: Created function
*****************************************************************************/
VOS_VOID PPM_SockServerProc(COMM_SOCKET_CTRL_INFO_STRU *pstSockInfo)
{
    VOS_INT8                                acRcvBuf[OM_APP_SPLIT_MSG_LEN];
    VOS_INT                                 lRevSize = 0;
    VOS_ULONG                               ulLockLevel;

    for(;;)
    {
        lRevSize = recv(pstSockInfo->socket, acRcvBuf, OM_APP_SPLIT_MSG_LEN, 0);

        VOS_SpinLockIntLock(&g_stSockTaskSpinLock, ulLockLevel);

            /*客户端已经关闭,需要将其清空*/
        #if (VOS_LINUX == VOS_OS_VER)
            if (0 >= lRevSize)
        #else
            if ((SOCKET_ERROR == lRevSize) || (0 == lRevSize))
        #endif
            {
                (VOS_VOID)VOS_SmP(pstSockInfo->SmClose, 0);
                closesocket(pstSockInfo->socket);
                pstSockInfo->socket = SOCK_NULL;
                VOS_SmV(pstSockInfo->SmClose);

                VOS_SpinUnlockIntUnlock(&g_stSockTaskSpinLock, ulLockLevel);

                continue;
            }

        /*将接收到的数据提交给上层处理*/
        CPM_ComRcv(pstSockInfo->enPhyPort, acRcvBuf, lRevSize);

        VOS_SpinUnlockIntUnlock(&g_stSockTaskSpinLock, ulLockLevel);
    }

}