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

📄 r2lchi.c

📁 phs 源代码 小灵通协议源代码 phs source code
💻 C
📖 第 1 页 / 共 2 页
字号:
	OUT_LCHEVT->msg_dat[5] = flg;
	OUT_LCHEVT->dmy[5] = IN_LCHEVT->msg_dat[0];
	m_excreq( (WORD*)&SYS_WORK->tsk_id );

	if ( reg )
	{
		set_up_b((U1 *)SYS_WORK->out_evt,0,sizeof(SYS_WORK->out_evt));
		SYS_WORK->tsk_id = TASKMNG;
		OUT_PRIEVT->evt_cod = ERT;
		OUT_PRIEVT->pri_cod = PSTCHAPH;
		OUT_PRIEVT->add_dat = reg;
		OUT_PRIEVT->dmy3 = IN_LCHEVT->msg_dat[0];
		m_excreq( (WORD*)&SYS_WORK->tsk_id );
	}
	Tchre_id = 0;
	//Rt_sts = ST_TCH_ACT;
	Rt_sts = (U1)rt_state_table->state;

	return (0);
}


U1 rt_dwsyn(void)
{
	U1	ret;

	ret = 0;

	if(IN_LCHEVT->evt_cod == EDWSYN)
	{
		SYS_WORK->tsk_id = TASKMNG;
		OUT_LCHEVT->evt_cod = ERT;
		OUT_LCHEVT->pri_cod = DOWN_BST;
		OUT_LCHEVT->dmy[5] = IN_LCHEVT->msg_dat[0];
		m_excreq( (WORD*)&SYS_WORK->tsk_id );
	}
	else
	{ /*  deal with the etxoff message at communication state */
		if((IN_LCHEVT->evt_cod == ETXOFF) && (Rt_sts == ST_TCH_REQ))

			return(0);

		Tchrrcnt = 0;
		rt_tm_stop( TR301ON );

		txstp_req(TCH1);
		SYS_WORK->tsk_id = TASKMNG;
		OUT_LCHEVT->evt_cod = ERT;
		OUT_LCHEVT->pri_cod = PSDWBRMV;
		switch ( IN_LCHEVT->evt_cod )
		{
			case EDWSYN	:
				OUT_LCHEVT->msg_dat[5] = 4;
				ret = 0;
				break;
			case ETXOFF	:
				OUT_LCHEVT->msg_dat[5] = 5;
				ret = 3;
				break;
		}
		OUT_LCHEVT->dmy[5] = IN_LCHEVT->msg_dat[0];
		m_excreq( (WORD*)&SYS_WORK->tsk_id );
		rt_tm_start( TR103ON );  /* communication process,if there have some error,
								in TX OFF,RT will wait  old tch sync message from cs. */

		//Rt_sts = ST_SYN_WAIT;
		Rt_sts = (U1)rt_state_table->state;
	}
	return (ret);

}

U1 rt_ufrq20(void)
{

#ifdef  _DEBUG_TC6_
		_SendStringToUart("rt_ufrq20\n",sizeof("rt_ufrq20\n"));
#endif
#ifdef SIMU_ON_PC
        ProtocolTrace(2,"!!!rt_ufrq20()\n");
#endif

	if ( IN_LCHEVT->msg_dat[2] == 0 )
	{
		rt_tm_start( TR101ON );


		tch_est_req( TCH_EST, (U1)(Rt_radinf.car_num-1), Rt_slot );

		//Rt_sts = ST_LCH_ASG;
		Rt_sts = (U1)rt_state_table->state;
	}
	else
	{
		if ( Lchercnt < LCHERMAX )
		{
			switch ( Rtlchdat[0] )
			{
				case LCHRQ	:
					Rtlchdat[3] &= 0x07;	/* area information notification status number */

					Rtlchdat[3] |= 0x30;	/* assigned channel use not possible
					(shows that assigned channel cannot be used due to interference etc.)*/
					Rtlchdat[0]++;	/* link channel establish re-request message */
					break;
			}
			move_up_b( tx_cac, Rtlchdat, 5 );
#ifdef SIMU_ON_PC
		SendUart2L1(SIMTSKDTW,TXCAC, 0 , tx_cac,5);
		ph_dt_req( L1_SCCH, DMY, OFF,0 );
#else
		ph_dt_req( L1_SCCH, DMY, OFF );
#endif

			Lchercnt++;
			Rt_sts = ST_LCH_RREQ;
		}
		else
		{
			SYS_WORK->tsk_id = TASKMNG;
			OUT_LCHEVT->evt_cod = ERT;
			OUT_LCHEVT->pri_cod = PSLCHNG;
			OUT_LCHEVT->msg_dat[4] = 2;
			m_excreq( (WORD*)&SYS_WORK->tsk_id );
			Rt_sts = ST_WAIT;
		}
	}

	return (0);
}


U1 rt_ufrq21(void)
{
	if ( IN_LCHEVT->msg_dat[2] == 0 )
	{
		rt_tm_start( TR101ON );
		tch_est_req( TCH_EST, (U1)(Rt_radinf.car_num-1), Rt_slot );

		Tchrests = 0;
		//Rt_sts = ST_TCH_REA;
		Rt_sts = (U1)rt_state_table->state;
	}
	else
	{
		rt_tchold( 1 );

		Tchrests = 1;
	}
	return (0);
}


U1 rt_ufrq22(void)
{

	if ( IN_LCHEVT->msg_dat[2] == 0 )
	{
		rt_tm_start( TR101ON );
		tch_est_req( TCH_EST, (U1)(Rt_radinf.car_num-1), Rt_slot );

		//Rt_sts = ST_RLCH_ASG;
		Rt_sts = (U1)rt_state_table->state;
	}
	else
	{
		if ( Lchercnt < LCHERMAX )
		{
			switch( Rtlchdat[0] )
			{
				case LCHRQ	:
					Rtlchdat[3] &= 0x07;

					Rtlchdat[3] |= 0x30;
					Rtlchdat[0]++;
					break;
			}
			move_up_b( tx_cac, Rtlchdat, 5 );
#ifdef SIMU_ON_PC
		SendUart2L1(SIMTSKDTW,TXCAC, 0 , tx_cac,5);
#endif
			rt_tm_start( TRCCHESTON );
#ifdef SIMU_ON_PC
			ph_dt_req( L1_SCCH, DMY, OFF,0 );
#else
			ph_dt_req( L1_SCCH, DMY, OFF );
#endif
			Lchercnt++;
			Rt_sts = ST_RLCH_RREQ;
		}
		else
		{
			rt_recall_lch_send();
		}
	}

	return (0);
}



U1 rt_dlcnf(void)
{
	set_up_b((U1 *)SYS_WORK->out_evt, 0, sizeof(SYS_WORK->out_evt));


	SYS_WORK->tsk_id = TASKMNG;
	OUT_PRIEVT->evt_cod = ERT;
	if ( Rtlchsts == 0xFF )
	{
		OUT_PRIEVT->pri_cod = PSRCHEND;
	}
	else
	{
		OUT_PRIEVT->pri_cod = PSRCHDIS;
		OUT_PRIEVT->add_dat = Rtlchsts;
	}
	OUT_PRIEVT->dmy3 = (U1)IN_DLDEVT->dl_id;
	m_excreq( (WORD*)&SYS_WORK->tsk_id );
	rt_trstp();
	//Rt_sts = ST_WAIT;
	Rt_sts = (U1)rt_state_table->state;
	return (0);
}


U1 rt_l3ini(void)
{
	rt_trstp();

	Rt_sts = ST_WAIT;
	//Rt_sts = rt_state_table->state;

	return (0);
}


void rt_tchold(U1 cause)
{
	U1	tch_id;

	if ( cause == 1 )
	{
		tch_id = TCH_REA;
	}
	else
	{
		rt_tm_stop( TR105ON );
		tch_id = TCH_HO;
		move_up_b(enc_set, Rt_enc, 2);
		enc_req();
		rt_tm_start_algo2(SYNBSTON);
	}

	rt_rdbak();
	csid_set_req( (U1*)Rt_radinf.cs_id );
	tch_est_req( tch_id, (U1)(Rt_radinf.car_num-1), Rt_slot );

	SYS_WORK->tsk_id = TASKMNG;
	OUT_LCHEVT->evt_cod = ERT;
	OUT_LCHEVT->pri_cod = PSDWBRMV;
	OUT_LCHEVT->msg_dat[5] = cause;
	m_excreq( (WORD*)&SYS_WORK->tsk_id );
	if (!(Rt_tim & TR103ON))
		rt_tm_start( TR103ON ); /*when switch-type or recall-type switching,
		if ther occurs error(unwanted wave,doesn't new cs list),RT wait old tch sync message. */

	Rt_sts = ST_SYN_WAIT;
}

/***********************************************************************************************/
/*                                                                      			*/
/*		NUMBER		4				                                 */
/*		CALL		void rt_recall_lch_send(void)                         		*/
/*		PARAM						                                 */
/*		FUNC		select another csid to link channel establish
				in recalling switch state					*/
/*		GLOBAL		tx_cac[8]:	tx_cac is lch request message content		*/
/*				Rt_sts	:	RT state					*/
/*				Rt_mntcs[13]:	camp cs list table:CS-ID,RSSI			*/
/*				Rt_mntcnt:	camp cslist count				*/
/*                                                                      			*/
/************************************************************************/
void rt_recall_lch_send(void)
{

	if ( Rt_mntcnt )
	{ /* select another csid to link channel establish */
		Rt_mntcnt--;
		move_up_b( SYS_CSID_P, (U1*)Rt_mntcs[Rt_mntcnt].cs_id, 6 );   /* set cs info in communication state */
		move_up_b( (U1*)Rt_radinf.cs_id, (U1*)Rt_mntcs[Rt_mntcnt].cs_id, 6);

		cch_est_req( SYS_FREQ, SYS_CSID_P, Rt_gain );   /* cch establish request */

		rt_tm_start( TRCCHESTON );   /* start timer to wait lch assign message */

		if((Rtlchdat[0] & 0x0f) == 0x02) /* if the value is link channel re-request message */
		{
			Rtlchdat[0]--; /* link channel establish request message */
			Rtlchdat[3] &= ~0x78;
		}
		if ( Sys_ccsinf[19] == 0x04 )
		{
			Rtlchdat[3] |= 0x08;
		}
		move_up_b( tx_cac, Rtlchdat, 5);
#ifdef SIMU_ON_PC
		SendUart2L1(SIMTSKDTW,TXCAC, 0 , tx_cac,5);
		ph_dt_req( L1_SCCH, DMY, OFF,0 );   /* link channel request */
#else
		ph_dt_req( L1_SCCH, DMY, OFF );   /* link channel request */
#endif

		Lchercnt = 1;
		Rt_sts = ST_RLCH_REQ;
	}
	else
	{
		rt_tchold( 2 );   /* tch switch fail,get old tch */

	}
}

#undef __RTLCHI_C_

#ifdef __cplusplus
}
#endif


#endif

⌨️ 快捷键说明

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