⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmc__err.c

📁 基于vxworks操作系统的电话语音平台系统
💻 C
字号:
/************************************************************************/
/*                                                              		*/
/*                                                              		*/
/* (C) Copyright Bangyan Information Technology Ltd, 2000/9.            */
/*  All right reserved                                          		*/
/*                                                              		*/
/* Author: Zhuguosheng 	                                  				*/
/*                                                              		*/
/* Description:                                                 		*/
/*     Driver Set - QMC hdlc specific routines.            				*/
/*                                                              		*/
/* Routines                                                     		*/
/*     hdlc_qmc_tx                                              		*/
/*     hdlc_rx_internal                                         		*/
/*     hdlc_tx_internal                                         		*/
/*     qmc_hdlc_interrupt                                           	*/
/*                                                              		*/
/************************************************************************/

#include "PUB\PUB_INCL.H"
#include "DRVS\DRV860\PUB\NETCOMM.H"
#include "DRVS\DRV860\PUB\D860_PUB.H"
#include "DRVS\DRV860\PUB\MPC860.H"
#include "DRVS\DRV860\PUB\MASKS860.h"
#include "DRVS\DRV860\QMC\QMC.H"




EXTERN QMC_TABLE        qmc_table;
EXTERN EPPC             *quicc;

EXTERN VOID ReInitQmcScc(VOID);


VOID qmc_glob_underrun(SI scc_num);
VOID qmc_glob_overrun(SI scc_num);
VOID qmc_chan_underrun(SI chan_num);
VOID qmc_chan_overrun(SI chan_num);
VOID qmc_intr_q_overflow(SI scc_number);
VOID RestartQmcChannelRecv(UC channel_num );

VOID RestartQmcChannelRecv(UC channel_num )
{
	STRUCT qmc_hdlc_pram  *pram;
	register QUICC_BD *rbd;
	UI i;

	pram = CHANNEL_PRAM_BASE(quicc,channel_num);
	pram->zdstate = HDLC_ZD_STATE;
	pram->rstate = 0x31000000;
}
VOID RestartQmcChannelSend(UC channel_num )
{
	STRUCT qmc_hdlc_pram  *pram;
	register QUICC_BD *tbd;
	UI i;

	tbd = qmc_table[channel_num].FirstTxBd;
	for( i=0; i<qmc_table[channel_num].no_of_trn_bd; i++)
	{
		tbd->status |= T_R;
		tbd->length = 0;
		tbd++;
	}

	pram = CHANNEL_PRAM_BASE(quicc,channel_num);
	pram->chamr |= HDLC_CHAMR_POL;   /* Enable polling*/
}


VOID qmc_glob_underrun(SI scc_num)
{
	UI i;

	DEBUGPrintf("QMC  Global Underrun\n");

	LedSwitchOnOrOff( 1, 1 );

	for( i=0; i<48; i++ )
	{
		RestartQmcChannelSend(i);
	}
}

VOID qmc_glob_overrun(SI scc_num)
{
	UI i;

	DEBUGPrintf("QMC  Global Overrun\n");

	LedSwitchOnOrOff( 1, 1 );

	for( i=0; i<48; i++ )
	{
		RestartQmcChannelRecv(i);
	}
}

VOID qmc_intr_q_overflow(SI scc_number)
{
	LedSwitchOnOrOff( 1, 1 );
}

VOID qmc_chan_underrun(SI chan_num)
{
	LedSwitchOnOrOff( 1, 1 );

	DEBUGPrintf("QMC Channel %d underrun\n",chan_num);

	RestartQmcChannelSend(chan_num);
}
VOID qmc_chan_overrun(SI chan_num)
{
	LedSwitchOnOrOff( 1, 1 );

	DEBUGPrintf("QMC Channel %d overflow\n",chan_num);

	RestartQmcChannelRecv(chan_num);
}

VOID qmc_chan_CRC_error(SI chan_num)
{
/*	DEBUGPrintf("QMC CRC Error in Channel %d\n",chan_num);  */
	LedSwitchOnOrOff( 1, 1 );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -