📄 l3main.c
字号:
/************************************************************************/
/* */
/* NAME l3main.c */
/* FUNC l3part main entry point */
/* */
/************************************************************************/
#ifndef PM_ONPC
#include "phs_def.h"
#include "l3c_def.h"
#include "l3_ext.h"
#include "l3c_ext.h"
#include "sysdef.h"
extern L3C_SYSWRK l3c_syswork;
#ifdef EXT_IO
#include "mn80sts.h"
extern MN_STATE Mn_state;
#endif
/************************************************************************/
/* */
/* NUMBER 1 */
/* CALL void l3_main() */
/* PARAM */
/* FUNC l3 main entry point */
/* RETURN void */
/* GLOBAL Sys_work :input and output message pointer*/
/* Sys_ccsinf :cs info */
/* L3_datcnf : */
/* L3_prgtbl[5]: function entry point */
/* */
/************************************************************************/
#ifdef _ON_SANYO_
void l3_main(void)
#else
void l3_main(void* mbox)
#endif
{
register U1 index;
U1 evt_cod;
#ifdef EXT_IO
U1 dim;
U1 type; /* #64K-RT57 */
U1 type1; /* #64K-RT57 */
U1 type2; /* #64K-RT57 */
#endif
#ifndef _ON_SANYO_
memcpy ((void *) l3c_syswork.in_evt, (const void *)(((EV_BUF_ST *)mbox)->event), sizeof (l3c_syswork.in_evt));
#endif
set_up_b((U1 *)SYS_WORK->out_evt, 0, sizeof(SYS_WORK->out_evt)); /* zch for protocol simulator */
index = L3COM; /* common part*/
evt_cod = (U1)SYS_WORK->in_evt[0];/* received event code */
switch ( (U2)(evt_cod & EVT_IMSK) )/* event code */
{
case EVT_L3: /* event from high layer */
if ( (evt_cod & EVT_CMSK) < 3 ) /* CC,MM RT part */
{
index = (evt_cod & EVT_CMSK)+1; /* index is CC,MM,RT */
}
else if (((evt_cod & EVT_CMSK) == 5 )/* initial */
&& ( IN_DLDEVT->dl_typ == 0 )) /* channel type */
{
if ( IN_DLDEVT->dl_id ) /* initial part */
{
#ifdef _ON_SANYO_
L3_prgtbl[IN_DLDEVT->dl_id].prg_adr();
#else
L3_prgtbl[IN_DLDEVT->dl_id].prg_adr(mbox);
#endif
return;
}
if(IN_DLDEVT->add_dat[1] == 0) /* tch1 */
{
for ( index = L3CC; index <= L3COM; index++ )
{ /*initial all part*/
#ifdef _ON_SANYO_
L3_prgtbl[index].prg_adr();
#else
L3_prgtbl[index].prg_adr(mbox);
#endif
}
return;
}
else /* add_dat[1] == 1 initial tch 2 */
{
#ifdef _ON_SANYO_
L3_prgtbl[L3COM].prg_adr();
#else
L3_prgtbl[L3COM].prg_adr(mbox);
#endif
return;
}
}
break;
case EVT_L2:
if ( SYS_PARTNER == PSDIRCAL ) /* if pickaback plane talking*/
{
L3cDldtds();
return;
}
switch ( IN_DLDEVT->evt_cod ) /* event code fromL2 */
{
case EDLDTDSP:
case EDLUDTDSP:
switch ( IN_MSGDAT->dat[0] )/* protocol discriminitor id */
{
case CC_ID: index = L3CC; break;
case MM_ID: index = L3MM; break;
case RT_ID: index = L3RT; break;
default : index = L3DEL; /* others*/
}
#ifdef EXT_IO
dim = 1;
if ( index == 1 ) dim = 3;
type1 = (U1)IN_DLDEVT->dl_id;
type2 = (U1)IN_DLDEVT->dl_typ;
type = (type1 << 4) | type2;
if (IN_MSGDAT->len > 32) {
HisOut(32, 0x30|index, IN_MSGDAT->dat[dim], type, (U1*)IN_MSGDAT->dat);
} else {
HisOut(IN_MSGDAT->len, 0x30|index, IN_MSGDAT->dat[dim],
type, (U1*)IN_MSGDAT->dat);
}
#endif
break;
case EDLDTRS: /*datalink confirm */
index = L3_datcnf;
L3_datcnf = 0;
break;
case EMDLERRDSP:
L3cMdlErr();
return;
}
break;
case EVT_L1: /* event from L1 */
if( IN_PHDEVT->evt_cod == EPHDTDSP )
{
if( IN_PHDEVT->ch_id == L1_SCCH )/* SCCH type */
{
if(!IN_PHDEVT->dmy[0] && (rx_cac[0] & ~BIT8)) /* 戞1CS偱辈霓賯艂葌
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -