当前位置: 首页>>代码示例>>C++>>正文


C++ NDBGL2函数代码示例

本文整理汇总了C++中NDBGL2函数的典型用法代码示例。如果您正苦于以下问题:C++ NDBGL2函数的具体用法?C++ NDBGL2怎么用?C++ NDBGL2使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了NDBGL2函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: i4b_next_l2state

/*---------------------------------------------------------------------------*
 *	event handler, executes function and sets new state
 *---------------------------------------------------------------------------*/	
void i4b_next_l2state(l2_softc_t *l2sc, int event)
{
	int currstate, newstate;
	int (*savpostfsmfunc)(int) = NULL;

	/* check event number */
	if(event > N_EVENTS)
		panic("i4b_l2fsm.c: event > N_EVENTS\n");

	/* get current state and check it */
	if((currstate = l2sc->Q921_state) > N_STATES) 	/* failsafe */
		panic("i4b_l2fsm.c: currstate > N_STATES\n");	

	/* get new state and check it */
	if((newstate = l2state_tab[event][currstate].newstate) > N_STATES)
		panic("i4b_l2fsm.c: newstate > N_STATES\n");	
	
	
	if(newstate != ST_SUBSET)
	{	/* state function does NOT set new state */
		NDBGL2(L2_F_MSG, "FSM event [%s]: [%s/%d => %s/%d]",
				l2event_text[event],
                                l2state_text[currstate], currstate,
                                l2state_text[newstate], newstate);
        }

	/* execute state transition function */
        (*l2state_tab[event][currstate].func)(l2sc);

	if(newstate == ST_SUBSET)
	{	/* state function DOES set new state */
		NDBGL2(L2_F_MSG, "FSM S-event [%s]: [%s => %s]", l2event_text[event],
                                           l2state_text[currstate],
                                           l2state_text[l2sc->Q921_state]);
        }
        
	/* check for illegal new state */

	if(newstate == ST_ILL)
	{
		newstate = currstate;
		NDBGL2(L2_F_ERR, "FSM illegal state, state = %s, event = %s!",
                                l2state_text[currstate],
				l2event_text[event]);
	}

	/* check if state machine function has to set new state */

	if(newstate != ST_SUBSET)
		l2sc->Q921_state = newstate;        /* no, we set new state */

	if(l2sc->postfsmfunc != NULL)
	{
		NDBGL2(L2_F_MSG, "FSM executing postfsmfunc!");
		/* try to avoid an endless loop */
		savpostfsmfunc = l2sc->postfsmfunc;
		l2sc->postfsmfunc = NULL;
        	(*savpostfsmfunc)(l2sc->postfsmarg);
        }
}
开发者ID:MarginC,项目名称:kame,代码行数:63,代码来源:i4b_l2fsm.c

示例2: i4b_rxd_ack

/*---------------------------------------------------------------------------*
 *	got s or i frame, check if valid ack for last sent frame
 *---------------------------------------------------------------------------*/
void
i4b_rxd_ack(l2_softc_t *l2sc, struct isdn_l3_driver *drv, int nr)
{

#ifdef NOTDEF
	NDBGL2(L2_ERROR, "N(R)=%d, UA=%d, V(R)=%d, V(S)=%d, V(A)=%d",
		nr,
		l2sc->ua_num,
		l2sc->vr,
		l2sc->vs,
		l2sc->va);
#endif

	if(l2sc->ua_num != UA_EMPTY)
	{
		int s;

		s = splnet();
		
		M128DEC(nr);

		if(l2sc->ua_num != nr)
			NDBGL2(L2_ERROR, "((N(R)-1)=%d) != (UA=%d) !!!", nr, l2sc->ua_num);
			
		i4b_Dfreembuf(l2sc->ua_frame);
		l2sc->ua_num = UA_EMPTY;
		
		splx(s);
	}
}
开发者ID:MarginC,项目名称:kame,代码行数:33,代码来源:i4b_util.c

示例3: i4b_rxd_ack

/*---------------------------------------------------------------------------*
 *	got s or i frame, check if valid ack for last sent frame
 *---------------------------------------------------------------------------*/
void
i4b_rxd_ack(l2_softc_t *l2sc, int nr)
{

#ifdef NOTDEF
	NDBGL2(L2_ERROR, "N(R)=%d, UA=%d, V(R)=%d, V(S)=%d, V(A)=%d",
		nr,
		l2sc->ua_num,
		l2sc->vr,
		l2sc->vs,
		l2sc->va);
#endif

	if(l2sc->ua_num != UA_EMPTY)
	{
		CRIT_VAR;

		CRIT_BEG;
		
		M128DEC(nr);

		if(l2sc->ua_num != nr)
			NDBGL2(L2_ERROR, "((N(R)-1)=%d) != (UA=%d) !!!", nr, l2sc->ua_num);
			
		i4b_Dfreembuf(l2sc->ua_frame);
		l2sc->ua_num = UA_EMPTY;
		
		CRIT_END;
	}
}
开发者ID:MarginC,项目名称:kame,代码行数:33,代码来源:i4b_util.c

示例4: F_T01

/*---------------------------------------------------------------------------*
 *	FSM state ST_TEI_ASGD event dl establish request
 *---------------------------------------------------------------------------*/	
static void
F_T01(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_T01 executing");
	i4b_establish_data_link(l2sc);
	l2sc->l3initiated = 1;
}
开发者ID:MarginC,项目名称:kame,代码行数:10,代码来源:i4b_l2fsm.c

示例5: F_T10

/*---------------------------------------------------------------------------*
 *	FSM state ST_TEI_ASGD event rx'd DM
 *---------------------------------------------------------------------------*/	
static void
F_T10(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_T10 executing");

	if(l2sc->rxd_PF)
	{
		l2sc->Q921_state = ST_TEI_ASGD;
	}
	else
	{
#ifdef NOTDEF
		if(NOT able_to_etablish)
		{
			l2sc->Q921_state = ST_TEI_ASGD;
			return;
		}
#endif
		i4b_establish_data_link(l2sc);

		l2sc->l3initiated = 1;

		l2sc->Q921_state = ST_AW_EST;
	}
}
开发者ID:MarginC,项目名称:kame,代码行数:28,代码来源:i4b_l2fsm.c

示例6: F_T13

/*---------------------------------------------------------------------------*
 *	FSM state ST_TEI_ASGD event dl release request
 *---------------------------------------------------------------------------*/	
static void
F_T13(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_T13 executing");
	l2sc->postfsmarg = l2sc->unit;
	l2sc->postfsmfunc = DL_Rel_Cnf_A;
}
开发者ID:MarginC,项目名称:kame,代码行数:10,代码来源:i4b_l2fsm.c

示例7: F_MF19

/*---------------------------------------------------------------------------*
 *	FSM state ST_MULTIFR event rx'd RNR
 *---------------------------------------------------------------------------*/	
static void
F_MF19(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_MF19 executing");

	l2sc->peer_busy = 1;

	if(l2sc->rxd_CR == CR_CMD_FROM_NT)
	{
		if(l2sc->rxd_PF == 1)
		{
			i4b_enquiry_response(l2sc);
		}
	}
	else
	{
		if(l2sc->rxd_PF == 1)
		{
			i4b_mdl_error_ind(l2sc, "F_MF19", MDL_ERR_A);
                }
        }

	if(i4b_l2_nr_ok(l2sc->rxd_NR, l2sc->va, l2sc->vs))
        {
                l2sc->va = l2sc->rxd_NR;
                i4b_T203_stop(l2sc);
                i4b_T200_restart(l2sc);
		l2sc->Q921_state = ST_MULTIFR;
        }
        else
        {
                i4b_nr_error_recovery(l2sc);
		l2sc->Q921_state = ST_AW_EST;                
        }
}
开发者ID:MarginC,项目名称:kame,代码行数:38,代码来源:i4b_l2fsm.c

示例8: i4b_l2_nr_ok

/*---------------------------------------------------------------------------*
 *	check for v(a) <= n(r) <= v(s)
 *	nr = receive sequence frame counter, va = acknowledge sequence frame
 *	counter and vs = transmit sequence frame counter
 *---------------------------------------------------------------------------*/
int
i4b_l2_nr_ok(int nr, int va, int vs)
{
	if((va > nr) && ((nr != 0) || (va != 127)))
	{
		NDBGL2(L2_ERROR, "ERROR, va = %d, nr = %d, vs = %d [1]", va, nr, vs);
		return 0;	/* fail */
	}

	if((nr > vs) && ((vs != 0) || (nr != 127)))
	{
		NDBGL2(L2_ERROR, "ERROR, va = %d, nr = %d, vs = %d [2]", va, nr, vs);
		return 0;	/* fail */
	}
	return 1;		/* good */
}
开发者ID:MarginC,项目名称:kame,代码行数:21,代码来源:i4b_util.c

示例9: F_AE11

/*---------------------------------------------------------------------------*
 *	FSM state ST_AW_EST event T200 expiry
 *---------------------------------------------------------------------------*/	
static void
F_AE11(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_AE11 executing");

	if(l2sc->RC >= N200)
	{
		i4b_Dcleanifq(&l2sc->i_queue);

		i4b_mdl_error_ind(l2sc, "F_AE11", MDL_ERR_G);

		l2sc->postfsmarg = l2sc->unit;
		l2sc->postfsmfunc = DL_Rel_Ind_A;

		l2sc->Q921_state = ST_TEI_ASGD;
	}
	else
	{
		l2sc->RC++;

		i4b_tx_sabme(l2sc, P1);

		i4b_T200_start(l2sc);

		l2sc->Q921_state = ST_AW_EST;
	}
}
开发者ID:MarginC,项目名称:kame,代码行数:30,代码来源:i4b_l2fsm.c

示例10: F_AR08

/*---------------------------------------------------------------------------*
 *	FSM state ST_AW_REL event rx'd DISC
 *---------------------------------------------------------------------------*/	
static void
F_AR08(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_AR08 executing");
	MDL_Status_Ind(l2sc->unit, STI_L2STAT, LAYER_IDLE);
	i4b_tx_ua(l2sc, l2sc->rxd_PF);	
}
开发者ID:MarginC,项目名称:kame,代码行数:10,代码来源:i4b_l2fsm.c

示例11: F_AR11

/*---------------------------------------------------------------------------*
 *	FSM state ST_AW_REL event T200 expiry
 *---------------------------------------------------------------------------*/	
static void
F_AR11(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_AR11 executing");

	if(l2sc->RC >= N200)
	{
		i4b_mdl_error_ind(l2sc, "F_AR11", MDL_ERR_H);

		l2sc->postfsmarg = l2sc->unit;
		l2sc->postfsmfunc = DL_Rel_Cnf_A;

		l2sc->Q921_state = ST_TEI_ASGD;
	}
	else
	{
		l2sc->RC++;

		i4b_tx_disc(l2sc, P1);

		i4b_T200_start(l2sc);

		l2sc->Q921_state = ST_AW_REL;
	}
}
开发者ID:MarginC,项目名称:kame,代码行数:28,代码来源:i4b_l2fsm.c

示例12: F_MF07

/*---------------------------------------------------------------------------*
 *	FSM state ST_MULTIFR event rx'd SABME
 *---------------------------------------------------------------------------*/	
static void
F_MF07(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_MF07 executing");

	i4b_clear_exception_conditions(l2sc);

	MDL_Status_Ind(l2sc->unit, STI_L2STAT, LAYER_ACTIVE);	

	i4b_tx_ua(l2sc, l2sc->rxd_PF);

	i4b_mdl_error_ind(l2sc, "F_MF07", MDL_ERR_F);

	if(l2sc->vs != l2sc->va)
	{
		i4b_Dcleanifq(&l2sc->i_queue);
	
		l2sc->postfsmarg = l2sc->unit;
		l2sc->postfsmfunc = DL_Est_Ind_A;
	}

	i4b_T200_stop(l2sc);
	i4b_T203_start(l2sc);

	l2sc->vs = 0;
	l2sc->va = 0;
	l2sc->vr = 0;	
}
开发者ID:MarginC,项目名称:kame,代码行数:31,代码来源:i4b_l2fsm.c

示例13: F_MF12

/*---------------------------------------------------------------------------*
 *	FSM state ST_MULTIFR event dl data request
 *---------------------------------------------------------------------------*/	
static void
F_MF12(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_MF12 executing");

	i4b_i_frame_queued_up(l2sc);
}
开发者ID:MarginC,项目名称:kame,代码行数:10,代码来源:i4b_l2fsm.c

示例14: F_T09

/*---------------------------------------------------------------------------*
 *	FSM state ST_TEI_ASGD event rx'd UA
 *---------------------------------------------------------------------------*/	
static void
F_T09(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_T09 executing");
	i4b_mdl_error_ind(l2sc, "F_T09", MDL_ERR_C);
	i4b_mdl_error_ind(l2sc, "F_T09", MDL_ERR_D);	
}
开发者ID:MarginC,项目名称:kame,代码行数:10,代码来源:i4b_l2fsm.c

示例15: F_T07

/*---------------------------------------------------------------------------*
 *	FSM state ST_TEI_ASGD event rx'd SABME
 *---------------------------------------------------------------------------*/	
static void
F_T07(l2_softc_t *l2sc)
{
	NDBGL2(L2_F_MSG, "FSM function F_T07 executing");

/* XXX */
#ifdef NOTDEF
	if(NOT able to establish)
	{
		i4b_tx_dm(l2sc, l2sc->rxd_PF);
		l2sc->Q921_state = ST_TEI_ASGD;
		return;
	}
#endif

	i4b_clear_exception_conditions(l2sc);

	MDL_Status_Ind(l2sc->unit, STI_L2STAT, LAYER_ACTIVE);
	
	i4b_tx_ua(l2sc, l2sc->rxd_PF);

	l2sc->vs = 0;
	l2sc->va = 0;
	l2sc->vr = 0;	

	l2sc->postfsmarg = l2sc->unit;
	l2sc->postfsmfunc = DL_Est_Ind_A;

	i4b_T203_start(l2sc);	

	l2sc->Q921_state = ST_MULTIFR;
}
开发者ID:MarginC,项目名称:kame,代码行数:35,代码来源:i4b_l2fsm.c


注:本文中的NDBGL2函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。