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_lsda.h


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


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

#ifndef __SLS_LSDA_H__
#define __SLS_LSDA_H__

/*
 *  Signalling Link Data Link Allocation (LSDA) Figure 42/Q.704
 */

static void inline lk_lsda_determine_data_link(lk_t * lk)
{
	switch (lk->statem.lsda_state) {
	case LK_STATE_IDLE:
		lk->statem.lsda_state = LK_STATE_WAIT;
		/* FIXME: request alternate routing data */
		break;
	}
}

static void inline lk_lsda_data_link_available(lk_t * lk)
{
	switch (lk->statem.lsda_state) {
	case LK_STATE_IDLE:
		lk->statem.data_link_available = 1;
		break;
	case LK_STATE_WAIT:
		lk->statem.data_link_available = 1;
		break;
	case LK_STATE_WAITING:
		lk->statem.data_link_available = 1;
		break;
	case LK_STATE_WAITING_FOR_CONNECTION:
		lk->statem.data_link_available = 1;
		break;
	}
}

static void inline lk_lsda_signalling_data_link_connection_order(lk_t * lk)
{				/* from remote MTP */
	switch (lk->statem.lsda_state) {
	case LK_STATE_IDLE:
		lk->statem.lsda_state = LK_STATE_WAITING;
		/* FIXME: request alternate routing data */
		break;
	}
}

static void inline lk_lsda_connection_successful(lk_t * lk)
{				/* from remote MTP */
	switch (lk->statem.lsda_state) {
	case LK_STATE_WAITING_FOR_CONNECTION:
		lk_timer_stop(t7);
		if (lk->statem.activation)
			lk_lsla_data_link(lk);
		if (lk->statem.restoration)
			lk_lslr_data_link(lk);
		lk->statem.activation = 0;
		lk->statem.restoration = 0;
		lk->statem.lsda_state = LK_STATE_IDLE;
		break;
	}
}

static void lk_t7_timeout(lk_t * lk)
{
	/* FIXME: make me dooo something */
}

static void inline lk_lsda_connection_not_successful(lk_t * lk)
{				/* from remote MTP */
	switch (lk->statem.lsda_state) {
	case LK_STATE_WAITING_FOR_CONNECTION:
		lk_timer_stop(t7);
		if (lk->statem.data_link_available) {	/* FIXME: is this check correct? */
			/* FIXME: select data link */
			// mtp_hmrt_signalling_data_link_connection_order(lk);
			lk_timer_start(t7);
			lk->statem.lsda_state = LK_STATE_WAITING_FOR_CONNECTION;
		} else {
			if (lk->statem.activation)
				lk_lsla_no_data_link(lk);
			if (lk->statem.restoration)
				lk_lslr_no_data_link(lk);
			lk->statem.activation = 0;
			lk->statem.restoration = 0;
			lk->statem.lsda_state = LK_STATE_IDLE;
		}
		break;
	}
}

static void inline lk_lsda_connection_not_possible(lk_t * lk)
{				/* from remote MTP */
	switch (lk->statem.lsda_state) {
	case LK_STATE_WAITING_FOR_CONNECTION:
		lk_timer_stop(t7);
		if (lk->statem.activation)
			lk_lsla_no_data_link(lk);
		if (lk->statem.restoration)
			lk_lslr_no_data_link(lk);
		lk->statem.activation = 0;
		lk->statem.restoration = 0;
		lk->statem.lsda_state = LK_STATE_IDLE;
		break;
	}
}

static void inline lk_lsda_alternate_routing_data(lk_t * lk)
{
	/* 
	 *  Alternate routing data identifies alternative link
	 *  to be used for routing link management messages.
	 */
	switch (lk->statem.lsda_state) {
	case LK_STATE_WAIT:
		if (lk->statem.data_link_available) {	/* FIXME: is this check correct? */
			/* FIXME: select data link */
			// mtp_hmrt_signalling_data_link_connection_order(lk);
			lk_timer_start(t7);
			lk->statem.lsda_state = LK_STATE_WAITING_FOR_CONNECTION;
		} else {
			if (lk->statem.activation)
				lk_lsla_no_data_link(lk);
			if (lk->statem.restoration)
				lk_lslr_no_data_link(lk);
			lk->statem.activation = 0;
			lk->statem.restoration = 0;
			lk->statem.lsda_state = LK_STATE_IDLE;
		}
		break;
	case LK_STATE_WAITING:
		break;
	}
}

#endif				/* __SLS_LSDA_H__ */


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

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

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