📄 r2lchi.c
字号:
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 + -