qmc__err.c

来自「基于vxworks操作系统的电话语音平台系统」· C语言 代码 · 共 127 行

C
127
字号
/************************************************************************/
/*                                                              		*/
/*                                                              		*/
/* (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 + =
减小字号Ctrl + -
显示快捷键?