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

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

	BYPrintf("@@@@@@@@@@@@@@@@@@@@@@SCC %d UNDERRUN@@@@@@@@@@@@@@@@@@@@@@", scc_num);

	LedSwitchOnOrOff( 1, 0 );
	LedSwitchOnOrOff( 1, 1 );
	LedSwitchOnOrOff( 1, 2 );
	LedSwitchOnOrOff( 1, 3 );

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

VOID qmc_glob_overrun(SI scc_num)
{
	UI i;

	BYPrintf("@@@@@@@@@@@@@@@@@@@@@@HDLC %d OVERRUN@@@@@@@@@@@@@@@@@@@@@@", scc_num);

	LedSwitchOnOrOff( 1, 0 );
	LedSwitchOnOrOff( 1, 1 );
	LedSwitchOnOrOff( 1, 2 );
	LedSwitchOnOrOff( 1, 3 );

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

VOID qmc_intr_q_overflow(SI scc_number)
{
	BYPrintf("@@@@@@@@@@@@@@@@@@@@@@SCC %d qmc_intr_q_overflow@@@@@@@@@@@@@@@@@@@@@@", scc_number);

	LedSwitchOnOrOff( 1, 0 );
	LedSwitchOnOrOff( 1, 1 );
	LedSwitchOnOrOff( 1, 2 );
	LedSwitchOnOrOff( 1, 3 );
}

VOID qmc_chan_underrun(SI chan_num)
{
	BYPrintf("@@@@@@@@@@@@@@@@@@@@@@SCC %d qmc_chan_underrun@@@@@@@@@@@@@@@@@@@@@@", chan_num);

	LedSwitchOnOrOff( 1, 0 );
	LedSwitchOnOrOff( 1, 1 );
	LedSwitchOnOrOff( 1, 2 );
	LedSwitchOnOrOff( 1, 3 );

	RestartQmcChannelSend(chan_num);
}
VOID qmc_chan_overrun(SI chan_num)
{
	BYPrintf("@@@@@@@@@@@@@@@@@@@@@@HDLC %d OVERRUN II@@@@@@@@@@@@@@@@@@@@", chan_num);

	LedSwitchOnOrOff( 1, 0 );
	LedSwitchOnOrOff( 1, 1 );
	LedSwitchOnOrOff( 1, 2 );
	LedSwitchOnOrOff( 1, 3 );

	RestartQmcChannelRecv(chan_num);
}

VOID qmc_chan_CRC_error(SI chan_num)
{
	STATIC UL ErrNum[NUM_OF_CHANNELS];

	LedSwitchOnOrOff( 1, 3 );

	ErrNum[chan_num]++;

	if (ErrNum[chan_num] > 10000)
	{
		ErrNum[chan_num] = 0;

#ifdef MINI_TAIZHAN
		if (0 != chan_num)
#endif
		BYPrintf("CRC-E CHAN %d", chan_num);
	}
}

⌨️ 快捷键说明

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