OpenSS7
SS7 for the
Common Man

© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved.
Last modified:

Home Overview Status News Documentation Resources About
   
 Overview
 Status
 News
 Documentation
 Resources
 About

   
Home Index Prev Next More Download Info FAQ Mail   Home -> Resources -> Browse Source -> strss7/drivers/slsi/sls_lsla.h


File /code/strss7/drivers/slsi/sls_lsla.h



#ident "@(#) $Id: sls_lsla.h,v 0.8.2.1 2002/10/18 02:40:38 brian Exp $"

#ifndef __SLS_LSLA_H__
#define __SLS_LSLA_H__

/*
 *  Signalling Link Activate (LSLA) Figure 38/Q.704
 */

static inline void lk_lsta_determine_terminal(lk_t * lk);
static inline void lk_lsac_activation_unsuccessful(lk_t * lk);
static inline void lk_lsac_activation_not_possible(lk_t * lk);

static inline void lk_lsla_start_activation(lk_t * lk)
{
	switch (lk->statem.lsla_state) {
	case LK_STATE_IDLE:
		if (lk->config.terminal_predetermined) {
			lk_l1_connect(lk);
			lk_lsac_start_signalling_link(lk);
			lk->statem.terminal_determined = 0;
			lk->statem.data_link_determined = 0;	/* error in SDL */
		} else {
			lk->statem.lsla_state = LK_STATE_WAIT;
			lk->statem.activation = 1;
			lk_lsta_determine_terminal(lk);
			if (!lk->config.data_link_predetermined)
				lk->statem.data_link_determined = 1;
			else {
				lk->statem.activation = 1;
				lk_lsda_determine_data_link(lk);
			}
		}
		break;
	}
}

static inline void lk_lsla_restart_activation(lk_t * lk)
{
	switch (lk->statem.lsla_state) {
	case LK_STATE_IDLE:
		if (!lk->config.data_link_predetermined) {
			lk->statem.lsla_state = LK_STATE_WAIT;
			lk->statem.activation = 1;
			lk_lsda_determine_data_link(lk);
		} else {
			lk_lsac_activation_unsuccessful(lk);
			lk_lsac_start_signalling_link(lk);
		}
		break;
	}
}

static inline void __lk_lsla_determined(lk_t * lk)
{
	if (lk->statem.terminal_determined && lk->statem.data_link_determined) {
		lk->statem.lsla_state = LK_STATE_IDLE;
		lk_l1_connect(lk);
		lk_lsac_start_signalling_link(lk);
		lk->statem.terminal_determined = 0;
		lk->statem.data_link_determined = 0;	/* error in SDL */
	}
}

static inline void lk_lsla_data_link(lk_t * lk)
{				/* called by MTP module */
	switch (lk->statem.lsla_state) {
	case LK_STATE_WAIT:
		lk->statem.data_link_determined = 1;
		__lk_lsla_determined(lk);
		break;
	}
}

static inline void lk_lsla_terminal(lk_t * lk)
{				/* called by MTP module */
	switch (lk->statem.lsla_state) {
	case LK_STATE_WAIT:
		lk->statem.terminal_determined = 1;
		__lk_lsla_determined(lk);
		break;
	}
}

static inline void lk_lsla_no_data_link(lk_t * lk)
{
	switch (lk->statem.lsla_state) {
	case LK_STATE_WAIT:
		lk->statem.lsla_state = LK_STATE_IDLE;
		lk_lsac_activation_not_possible(lk);
		lk->statem.terminal_determined = 0;
		lk->statem.data_link_determined = 0;	/* error in SDL */
		break;
	}
}

static inline void lk_lsla_no_terminal(lk_t * lk)
{				/* called by MTP module */
	switch (lk->statem.lsla_state) {
	case LK_STATE_WAIT:
		lk->statem.lsla_state = LK_STATE_IDLE;
		lk_lsac_activation_not_possible(lk);
		lk->statem.terminal_determined = 0;
		lk->statem.data_link_determined = 0;	/* error in SDL */
		break;
	}
}

static inline void lk_lsla_deactivate_link(lk_t * lk)
{
	switch (lk->statem.lsla_state) {
	case LK_STATE_WAIT:
		lk->statem.lsla_state = LK_STATE_IDLE;
		lk->statem.terminal_determined = 0;
		lk->statem.data_link_determined = 0;	/* error in SDL */
		break;
	}
}

#endif				/* __SLS_LSLA_H__ */


Home Index Prev Next More Download Info FAQ Mail   Home -> Resources -> Browse Source -> strss7/drivers/slsi/sls_lsla.h

OpenSS7
SS7 for the
Common Man
Home Overview Status News Documentation Resources About

© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved.
Last modified: