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

📄 mn80pub4.c

📁 phs 源代码 小灵通协议源代码 phs source code
💻 C
📖 第 1 页 / 共 2 页
字号:
	pSts = Mn_GetSpecState(phs_mode);
	if(NULL == pSts)
		return;

	switch(*pSts)
	{

	case ST_PP_DISC_COMM:
		m_frebuf((U1 *)pMsg);
		return;
	case ST_PP_TCH_EST_O:
	case ST_PP_TCH_EST_T:
	case ST_PP_HANDOVER:
		if (!CCSetup)
		{
			Mn_PRadioRelease();
			*pSts = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
			if(PHS_PUBLIC_STS == phs_mode)
				SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
			m_frebuf((U1 *)pMsg);
			return;
		}
		if (DLEstab == (SACCH | FACCH))
		{
			set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
			SYS_WORK->tsk_id = TASKL3;
			MN_OUT_EVT(L3C_MN_EVT)->evt_cod = EL3FRERQ;
			MN_OUT_EVT(L3C_MN_EVT)->add_dat[1] = FACCH	;
			m_excreq((WORD*)&SYS_WORK->tsk_id);
		}
	break;
	default :
	break;
	}

	set_up_b((BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
	SYS_WORK->tsk_id = TASKCC;
	MN_OUT_EVT(L3_MN_EVT)->evt_cod = ECC;
	MN_OUT_EVT(L3_MN_EVT)->pri_cod = PRCALDIS;			//CC disc req
	MN_OUT_EVT(L3_MN_EVT)->buf_adr = (BYTE*)pMsg;
	MN_OUT_EVT(L3_MN_EVT)->inf_len = pMsg->msg[2];
	MN_OUT_EVT(L3_MN_EVT)->inf_adr = (U1*)&pMsg->msg[3];
	if(1 == p_mail_flg)
		MN_OUT_EVT(L3_MN_EVT)->add_dat = 1;
	MN_OUT_EVT(L3_MN_EVT)->dmy3 = (U1)MN_IN_EVT(PM_MN_EVT)->add_dat;
	m_excreq((WORD*)&SYS_WORK->tsk_id);


	if (CallSts == ((U1)MN_IN_EVT(PM_MN_EVT)->add_dat + 1))
	{
		*pSts = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
		if(PHS_PUBLIC_STS == phs_mode)
			SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
	}
}



void Mn_PRadCutReq(void)	//PM->MN
{

	if(MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[2])
	{
		ReaVal = PRIERR;
		err_dsp(MN_IN_EVT(PM_MN_EVT)->msg_adr);
		return;
	}
	m_frebuf((U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr);
	ReaVal = 0xF0;
	RetryCount = 0;

	if(ST_PP_DISC_COMM == *Mn_GetSpecState(phs_mode))
	{
		set_up_b((BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
		SYS_WORK->tsk_id = TASKL3;
		MN_OUT_EVT(L3C_MN_EVT)->evt_cod = EINITL3;
		MN_OUT_EVT(L3C_MN_EVT)->dl_typ = 0;
		MN_OUT_EVT(L3C_MN_EVT)->dl_id = 1;

		m_excreq((WORD*)&SYS_WORK->tsk_id);
	}
	Mn_PRadioRelease();

	*Mn_GetSpecState(phs_mode) = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
	if(PHS_PUBLIC_STS == phs_mode)
		SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
}



void Mn_PCutDsp(void)	//CC->MN
{

	if(0 == MN_IN_EVT(L3_MN_EVT)->add_dat)
	{
		SYS_WORK->msg_adr = (M_MSB*)m_hntbuf();
		SYS_WORK->msg_adr->msg[0] = NONE;
		SYS_WORK->msg_adr->msg[1] = MDISCCOM;
		SYS_WORK->msg_adr->msg[2] = (BYTE)((L3_MN_EVT*)SYS_WORK->in_evt)->inf_len;
		move_up_b((U1*)SYS_WORK->msg_adr->msg+3 ,
					MN_IN_EVT(L3_MN_EVT)->inf_adr ,
					MN_IN_EVT(L3_MN_EVT)->inf_len);
		exec_uap(SYS_WORK->msg_adr);
	}


	else
	{
		Source = 0x65;
		ReaVal = 0xff;
	}


	if(MN_IN_EVT(L3_MN_EVT)->buf_adr)
		m_frebuf(MN_IN_EVT(L3_MN_EVT)->buf_adr);

	if(ST_PP_DISC_COMM == *Mn_GetSpecState(phs_mode))
	{
		return;
	}

	if(CallSts == (MN_IN_EVT(L3_MN_EVT)->dmy3 + 1))
	{
		*Mn_GetSpecState(phs_mode) = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
		if(PHS_PUBLIC_STS == phs_mode)
			SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
	}
}



void Mn_PReleaseDsp(void)//CC->MN
{
	SYS_WORK->msg_adr = (M_MSB*)m_hntbuf();
	SYS_WORK->msg_adr->msg[0] = NONE;
	SYS_WORK->msg_adr->msg[1] = MFREECOM;
	SYS_WORK->msg_adr->msg[2] = (BYTE)MN_IN_EVT(L3_MN_EVT)->inf_len;
	move_up_b((U1*)SYS_WORK->msg_adr->msg+3 , MN_IN_EVT(L3_MN_EVT)->inf_adr , MN_IN_EVT(L3_MN_EVT)->inf_len);

	exec_uap(SYS_WORK->msg_adr);

	if(MN_IN_EVT(L3_MN_EVT)->buf_adr)
	{
		if((MN_IN_EVT(L3_MN_EVT)->inf_adr[0] == IREASON0) &&
			((ReaVal==0) || (ReaVal == SEQERR)))
		{

			Source = 0x62;
			ReaVal = MN_IN_EVT(L3_MN_EVT)->inf_adr[1+MN_IN_EVT(L3_MN_EVT)->inf_adr[1]];
		}
		m_frebuf(MN_IN_EVT(L3_MN_EVT)->buf_adr);
	}

	if(CallSts == (MN_IN_EVT(L3_MN_EVT)->dmy3 + 1))
	{
		*Mn_GetSpecState(phs_mode) = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
		if(PHS_PUBLIC_STS == phs_mode)
			SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
	}
}


 void Mn_PReleaseReq(void)	//PM->MN
{

	set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
	SYS_WORK->tsk_id = TASKCC;
	MN_OUT_EVT(L3_MN_EVT)->evt_cod = ECC;
	MN_OUT_EVT(L3_MN_EVT)->pri_cod = PRCALFRE;
	MN_OUT_EVT(L3_MN_EVT)->buf_adr = (U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr;
	MN_OUT_EVT(L3_MN_EVT)->inf_len = MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[2];
	MN_OUT_EVT(L3_MN_EVT)->inf_adr = (U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr->msg + 3;
	MN_OUT_EVT(L3_MN_EVT)->add_dat = 0;
	MN_OUT_EVT(L3_MN_EVT)->dmy3 = (BYTE)MN_IN_EVT(PM_MN_EVT)->add_dat;

	m_excreq((WORD*)&SYS_WORK->tsk_id);

}



void Mn_PReleaseEnd(void)	//CC->MN
{
	if( (MN_IN_EVT(L3_MN_EVT)->add_dat == 1) && (ReCall == ON))
	{
		;
	}
	else
	{
		SYS_WORK->msg_adr = (M_MSB*)m_hntbuf();
		SYS_WORK->msg_adr->msg[0] = NONE;
		SYS_WORK->msg_adr->msg[1] = MFADLCOM;
		SYS_WORK->msg_adr->msg[2] = (BYTE)MN_IN_EVT(L3_MN_EVT)->inf_len;
		move_up_b((U1*)&SYS_WORK->msg_adr->msg[3] , MN_IN_EVT(L3_MN_EVT)->inf_adr , MN_IN_EVT(L3_MN_EVT)->inf_len);
		exec_uap(SYS_WORK->msg_adr);
	}

	if( MN_IN_EVT(L3_MN_EVT)->add_dat == 1)
	{
		Source = 0x66;
		ReaVal = 0xff;
	}
	else if( MN_IN_EVT(L3_MN_EVT)->add_dat == 1)
	{
		Source = 0x67;
		ReaVal = 0xff;
	}


	if(MN_IN_EVT(L3_MN_EVT)->buf_adr)
	{
		if( (MN_IN_EVT(L3_MN_EVT)->inf_adr[0] == IREASON0) &&
			( (ReaVal == 0)||(ReaVal==SEQERR) ) )
		{

			Source = 0x63;

			ReaVal = MN_IN_EVT(L3_MN_EVT)->inf_adr[1+MN_IN_EVT(L3_MN_EVT)->inf_adr[1]];
		}

		m_frebuf(MN_IN_EVT(L3_MN_EVT)->buf_adr);
	}

	if(CallSts == (MN_IN_EVT(L3_MN_EVT)->dmy3+1))
	{
		*Mn_GetSpecState(phs_mode) = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
		if(PHS_PUBLIC_STS == phs_mode)
			SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
	}

	CallSts &= ~(MN_IN_EVT(L3_MN_EVT)->dmy3 + 1);
}



void Mn_PLinkCut(void)	//L3C->MN
{

	DLEstab &= ~(MN_IN_EVT(L3C_MN_EVT)->add_dat[1]);
	if(!DLEstab)
	{
		Mn_settim(TITCHFRE);
	}
}



void Mn_PRadioCut(void)
{
	if(ST_PP_DISC_COMM == *Mn_GetSpecState(phs_mode))
	{
		if (RchDis)
		{
			m_stptim(T100MS, TITCHFRE, phs_mode);
			RchDis = OFF;
		}
	}
	else
	{
	}

	Mn_PRadioInit();
}


 void Mn_PRadioEnd(void)
{
	Mn_PRadioInit();
}


 void Mn_PRadioRelease(void)
{

	set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
	SYS_WORK->tsk_id = TASKRT;
	MN_OUT_EVT(L3_MN_EVT)->evt_cod = ERT;
	MN_OUT_EVT(L3_MN_EVT)->pri_cod = PRRCHDSC;
	MN_OUT_EVT(L3_MN_EVT)->dmy3 = TCH1;

	m_excreq((WORD*)&SYS_WORK->tsk_id);
}



void Mn_PTC309PTo(void)
{
	TC309PTim = OFF;
	Mn_PRadioRelease();
	*Mn_GetSpecState(phs_mode) = ST_PP_DISC_COMM;
#ifdef SIMU_ON_PC
	if(PHS_PUBLIC_STS == phs_mode)
		SendUart2L1( SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
}




void Mn_PRadioInit(void)
{
	U1	n;
	U1	fmode;
	U1	retry_enable = OFF;
#ifdef	EXT_IO
	U1	mnghis[6];
#endif
	U1	pm_cutreq = OFF;
	U1	len;

 	Short_chakko = 0;

	fmode = !phs_mode;

	if( (EMDLERRDSP == Mn_InEvtCod[0]) &&
		(ST_PP_TCH_EST_O == Mn_state.public_mod) &&
		(ON == ReCall) )
	{
		return;
	}

	if( EL3FRERS == Mn_InEvtCod[0] &&  ST_PP_TCH_SWT == Mn_state.public_mod )
	{

		if(1 == (U1)SYS_WORK->in_evt[2])
		{
			if (Sys_hodat[6])
			{
				if(!HndOvrReg)
					Mn_PHOTimOut();
				return;
			}
		}
	}

	if(EL3FRERS == Mn_InEvtCod[0] && ST_PP_HANDOVER == Mn_state.public_mod)
	{
		if(1 == (U1)SYS_WORK->in_evt[2] &&
			Sys_hodat[6] &&
			!HndOvrReg)
		{
			rt_tm_stop( (U2)0x0008 );		//The timer is in RT
			rt_rdbak();
			Mn_PHOTimOut();
			return;
		}
	}

	if( (EL3FRERS == Mn_InEvtCod[0]) &&
		(ST_PP_HANDOVER == Mn_state.public_mod) &&
		(1 == (U1)SYS_WORK->in_evt[2]) &&
		Sys_hodat[6] &&
		TCHflg)
	{
		if(HndOvrReg && !TCHCngReg)
		{
			Mn_state.public_mod = ST_PP_TCH_SWT;
		#ifdef SIMU_ON_PC
			SendUart2L1(SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
		#endif
			set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt) );
			SYS_WORK->tsk_id = TASKRT;
			MN_OUT_EVT(L3_MN_EVT)->evt_cod = ERT;
			MN_OUT_EVT(L3_MN_EVT)->pri_cod = PRTCHCNG;	//TCH switch request
			MN_OUT_EVT(L3_MN_EVT)->dmy3 = TCH1;
			MN_OUT_EVT(L3_MN_EVT)->add_dat = 0x29;		//CAUSE
			m_excreq((WORD*)&SYS_WORK->tsk_id);
			return;
		}
	}


	if(PM_MNG == Mn_InEvtCod[0] &&
		PMMN_COMM_DIS == Mn_InEvtCod[1])
	{
		if(!MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[2])
		{
			ReaVal = PRIERR;
			err_dsp(MN_IN_EVT(PM_MN_EVT)->msg_adr);
			return;
		}


		if(Mn_InfChk(&CHKTBL[4] ,
						(U1*)&MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[3],
						MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[2]))
		{

			ReaVal = PRIERR;
			err_dsp(MN_IN_EVT(PM_MN_EVT)->msg_adr);
			return;
		}

		m_frebuf((U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr);

		RetryCount = 0;
		pm_cutreq = ON;
	}


	if(CCHFact[PHS_PUBLIC_STS] == 0xFF &&
		ST_PP_WAIT == Mn_state.public_mod)
	{
		return;
	}


	if (( ReaVal == 0 ) || ( ReaVal == SEQERR ))
	{

		switch(Mn_InEvtCod[0])
		{
		  case TICSYNC:
			ReaVal = 0x02;
			break;
		  case TICCHEST:
			ReaVal = 0x06;
			retry_enable = ON;
			break;
		  case EMDLERRDSP:
		  case EL3FRERS:
			ReaVal = 0x3A;
			break;
		  case EL1_STAT:
			ReaVal = 0x83;
			break;
		  case ERT:
			switch(Mn_InEvtCod[1])
			{
		  	case	PSRCHDIS:
				Source = 0x41;
				ReaVal = (BIT8 | MN_IN_EVT(L3_MN_EVT)->add_dat);
			break;
			case	PSLCHREF:
				if( MN_IN_EVT(RT_MN_LCHEVT)->msg_dat[0] <= 0x07 )//msg_dat[0] ~ [3] == rx_cac[1] ....[4]
					ReaVal = 0x20 + MN_IN_EVT(RT_MN_LCHEVT)->msg_dat[0] ;	//refuse cause
				else if((MN_IN_EVT(RT_MN_LCHEVT)->msg_dat[0]>=0x09) && (MN_IN_EVT(RT_MN_LCHEVT)->msg_dat[0]<=0x0B))
					ReaVal = 0x20 + MN_IN_EVT(RT_MN_LCHEVT)->msg_dat[0] ;
				else
					ReaVal = 0x2C;
			break;
			case	PSLCHNG:
				// Here the incoming event struct is RT_LCHEVT
				switch(SYS_WORK->in_evt[8])
				{
				case 1:
					ReaVal = 0x2F;
				break;
				case 2:
					ReaVal = 0x31;
				break;
				case 3:
					ReaVal = 0x32;
				break;
				case 4:
					ReaVal = 0x33;
				break;
				default:
					ReaVal = 0x1F;
				break;
				}
			break;
			case PSSYNNG:
				ReaVal = 0x3A;
			break;
			default :
				ReaVal = 0xFA;
			}
		break;	//end case ERT
		default :
			ReaVal = 0x1F;
		}
	}

	WReMonTimN |= BIT8;
	Mn_PCCHTimStp(phs_mode);
	Mn_PCCHTimStp(fmode);
	WReMonTimN &= ~BIT8;

	set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
	SYS_WORK->tsk_id = TASKL3;
	MN_OUT_EVT(L3_MN_EVT)->evt_cod = EINITL3;
	MN_OUT_EVT(L3_MN_EVT)->pri_cod = 0;
	m_excreq((WORD*)&SYS_WORK->tsk_id);


	if(Mn_RInitCallLoc(pm_cutreq))
		return;
	slp_t_req(0xffff,0);
	ph_ini_req();
#ifdef	EXT_IO
		mnghis[0] = phs_mode;
		mnghis[1] = Mn_state.common_mod;
		mnghis[2] = Mn_state.public_mod;
		mnghis[3] = Mn_state.private_mod;
		mnghis[4] = Mn_state.ps2ps_mod;
		mnghis[5] = ReaVal;
		HisOut(6 , 0x4e , Mn_InEvtCod[0] , Mn_InEvtCod[1] , mnghis);
#endif

	if (RchDis)
	{
		m_stptim(T100MS, TITCHFRE, phs_mode);
		RchDis = OFF;
	}

	if ((phs_mode == PHS_PUBLIC_STS) && RetryCount)
	{
		RetryCount --;
		if(RetryCount)
		{
			if (RetryTim)
			{
				m_stptim(T20MS, TIRETRY, PHS_PUBLIC_STS );
			}
			Mn_settim(TIRETRY);
			CallChanel = PHS_PUBLIC_STS;

			if(CCHFact[PHS_PUBLIC_STS] == 0xff)
			{
				if(Mn_state.public_mod <= ST_PP_TCH_EST_O)
				{
					CCHFact[PHS_PUBLIC_STS ] = CCHCAL;
				}
				else if(Mn_state.public_mod <= ST_PP_TCH_EST_T)
				{
					CCHFact[PHS_PUBLIC_STS ] = CCHINC;
					if (ti_page)
						return;
					if (retry_enable == OFF)
					{
						goto	retry_disenable;
					}
				}
			}
			return;
		}
	}

retry_disenable:
	In_AreaMonitor = ON;
	if (RetryTim)
	{
		m_stptim(T20MS, TIRETRY, PHS_PUBLIC_STS);
		RetryTim = OFF;
	}
	if (ti_page)
	{
		if(phs_mode == PHS_PUBLIC_STS)
			m_stptim(T100MS , TIPAGE , PHS_PUBLIC_STS);
		ti_page = OFF;
	}

	n = 0;
	SYS_WORK->msg_adr = (M_MSB *)m_hntbuf();
	SYS_WORK->msg_adr->msg[0] = NONE;
	SYS_WORK->msg_adr->msg[1] = MFREETCH;		//Free TCH resource
	SYS_WORK->msg_adr->msg[3] = IAREAINF;
	move_up_b((U1*)&SYS_WORK->msg_adr->msg[4], SYS_AREA_P, 7);
	if (phs_mode == PHS_PUBLIC_STS)
	{
		n = 3;
		SYS_WORK->msg_adr->msg[11] = IMONTHRE;
		move_up_b((U1*)&SYS_WORK->msg_adr->msg[12], Sys_thresh, 2);
	}
	SYS_WORK->msg_adr->msg[11+n] = IREASON;

	if ((Source == 0x03) || (Source == 0)) 		/* Source:	MNG			*/
	{
		SYS_WORK->msg_adr->msg[12+n] = 0x02;
		SYS_WORK->msg_adr->msg[13+n] = 0x03;
		SYS_WORK->msg_adr->msg[14+n] = ReaVal;
		SYS_WORK->msg_adr->msg[2] = 0x0C + n;
		len = 15;
	}
	else
	{
		SYS_WORK->msg_adr->msg[12+n] = 0x03;
		SYS_WORK->msg_adr->msg[13+n] = Source >> 4;
		SYS_WORK->msg_adr->msg[14+n] = Source & 0x0f;
		SYS_WORK->msg_adr->msg[15+n] = ReaVal;
		SYS_WORK->msg_adr->msg[2] = 0x0D + n;
		len = 16;
	}

	if(CallMode == CALLMODE_LOCREG && phs_mode == PHS_PUBLIC_STS)
	{
		if(Ich_end_monF)
			reg_fail = ON;
		SYS_WORK->msg_adr->msg[len+n] = 0x77;
		SYS_WORK->msg_adr->msg[len+n+1] = 0x01;
		SYS_WORK->msg_adr->msg[len+n+2] = BIT3;

		Ich_end_monF = BIT8;
	}
	exec_uap(SYS_WORK->msg_adr);

	Mn_InitData();
	Sleep_Control(BSLPFORV);
#ifdef PROT_TEST
		HisOut(0x00,0xfe,0x0e,0x00,0x00);
#endif

}






 void Mn_Bst_Ho(void)
{

	if(TCH2 == MN_IN_EVT(L3_MN_EVT)->dmy3)
	{
		;
	}

	set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
	if ( !(Sys_rtfunc[4] & BIT3)
		&& !(Sys_rtfunc[4] & BIT5))
	{
		return;
	}
	if (!HndOvrReg && Sys_hodat[6] && phs_mode == PHS_PUBLIC_STS )
	{
		Mn_PHOTimOut();
	}
}


void	Mn_PowerSearch(void)
{
	if(Mn_state.public_mod != ST_PP_COMMUNCATING)
	{
		m_frebuf((U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr);
		return;
	}
	m_frebuf((U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr);

	if (!(Sys_rtfunc[4] & BIT3) && !(Sys_rtfunc[4] & BIT5))
	{
		Mn_TCHEndDsp();
		return;
	}
	if (!HndOvrReg && Sys_hodat[6] && phs_mode == PHS_PUBLIC_STS)
	{

		Mn_PHOTimOut();
	}
	else
	{
		Mn_TCHEndDsp();
	}
}


void Mn_HTCHDatReq(void)//PM->MN
{

	if(!MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[2])
	{
		ReaVal = PRIERR;
		err_dsp(MN_IN_EVT(PM_MN_EVT)->msg_adr);
		return;
	}

	if (DLEstab && !InfSFlg)
	{
		set_up_b( (BYTE*)SYS_WORK->out_evt , 0 , sizeof(SYS_WORK->out_evt));
		SYS_WORK->tsk_id = TASKCC;
		MN_OUT_EVT(L3_MN_EVT)->evt_cod = ECC;
		MN_OUT_EVT(L3_MN_EVT)->pri_cod = PRADDINF;
		MN_OUT_EVT(L3_MN_EVT)->buf_adr = (U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr;
		MN_OUT_EVT(L3_MN_EVT)->inf_len = MN_IN_EVT(PM_MN_EVT)->msg_adr->msg[2];
		MN_OUT_EVT(L3_MN_EVT)->inf_adr = (U1*)MN_IN_EVT(PM_MN_EVT)->msg_adr->msg + 3;
		MN_OUT_EVT(L3_MN_EVT)->add_dat = 1;
		MN_OUT_EVT(L3_MN_EVT)->dmy3 = (U1)MN_IN_EVT(PM_MN_EVT)->add_dat;


		m_excreq((WORD*)&SYS_WORK->tsk_id);
		InfSFlg = ON;
	}
	else
	{
		ReaVal = SEQERR;
		err_dsp(MN_IN_EVT(PM_MN_EVT)->msg_adr);
	}
}

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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