275 lines
4.4 KiB
C
275 lines
4.4 KiB
C
//////////////////////////////////////////////////
|
|
//Title : scoc.h
|
|
//Auhtor : Liu Wei
|
|
//Desc : SCCP Connection-Oriented Control
|
|
//Created : 2007-04-22
|
|
//Revision :
|
|
//
|
|
//Revision :
|
|
//
|
|
//////////////////////////////////////////////////
|
|
|
|
#ifndef _SCOC_H_
|
|
#define _SCOC_H_
|
|
|
|
#include "scoc_if.h"
|
|
#include "../../../public/src/include/pub_list.h"
|
|
|
|
#define spLogDebug_STATIC
|
|
|
|
typedef struct SCCP_PRIMITIVE_CR_PRIMITIVE
|
|
{
|
|
u8 uUiPri;
|
|
u8 uAnsiFlag;
|
|
u16 wConnId;
|
|
Intra_Msg tIntraMsg;
|
|
}
|
|
SP_CrPriPara;
|
|
|
|
typedef union SCCP_PRIMITVE_POOL_Elemnet
|
|
{
|
|
SP_UiPriPara tUiPri;
|
|
SP_CrPriPara tCrPri;
|
|
}
|
|
SP_PriPoolEle;
|
|
|
|
typedef enum SCOC_FSM_ERROR
|
|
{
|
|
ERR_NONE, //show state string
|
|
ERR_FSM_DISCARD,
|
|
ERR_FSM_ERROR,
|
|
ERR_FSM_FATAL,
|
|
ERR_FSM_UNEXPECT_SIDE,
|
|
ERR_FSM_RESERVED,
|
|
ERR_FSM_UNEXPECT_PRI,
|
|
ERR_FSM_UNKOWN_ERROR_CODE,
|
|
ERR_TIMER_OUT,
|
|
}
|
|
CO_FsmErr;
|
|
|
|
typedef struct SCOC_QOS
|
|
{
|
|
u8 uInSequence;
|
|
u8 uReturnOnErr;
|
|
u8 uImportance;
|
|
u8 uHopcount;
|
|
u8 uMbit;
|
|
u8 uRecvSequnce;
|
|
u8 uSendSequnce;
|
|
}
|
|
CO_Qos;
|
|
|
|
typedef struct SCOC_CAUSE
|
|
{
|
|
u8 uRelCause;
|
|
u8 uReturnCause;
|
|
u8 uResetCause;
|
|
u8 uErrorCause;
|
|
u8 uRejectCause;
|
|
}
|
|
CO_Cause;
|
|
|
|
#define MAX_SCCP_MSG 256
|
|
|
|
typedef struct SCOC_Message
|
|
{
|
|
u8 uMsgType;
|
|
u8 uMsgClass;
|
|
u8 uMsgFlag;
|
|
u8 aSLR[SP_REF_LEN]; // 0x01 SLR present
|
|
u8 aDLR[SP_REF_LEN]; // 0x02 DLR present
|
|
SCCP_ADDR tCDA; // 0x04 CDA present
|
|
SCCP_ADDR tCGA; // 0x08 CGA present
|
|
CO_Qos tQos; // 0x10 QOS present
|
|
CO_Cause tCause; // 0x20 CAUSE present
|
|
u8 aMsgConent[MAX_SCCP_MSG]; // 0x40 DATA present
|
|
}
|
|
CO_Msg;
|
|
|
|
typedef struct CO_TIMER
|
|
{
|
|
u32 tmConnEst;
|
|
u32 tmIas;
|
|
u32 tmIar;
|
|
u32 tmRepeatRel;
|
|
u32 tmRel;
|
|
u32 tmReset; //unsupportted now
|
|
u32 tmGuard; //unsupportted now
|
|
//u32 tmIas;
|
|
//u32 tmIar;
|
|
//u32 tmIT;
|
|
u32 tmInternal;
|
|
}
|
|
CO_Timer;
|
|
|
|
typedef struct CO_CONNECTION_Section
|
|
{
|
|
CO_Status uCState;
|
|
SP_Pri uPri;
|
|
u8 uAnsiFlag;
|
|
CO_InstSide uSide;
|
|
|
|
u8 uSLS;
|
|
|
|
u8 uNetId;
|
|
int nDPC;
|
|
int nOPC;
|
|
u8 aSLR[SP_REF_LEN];
|
|
u8 aDLR[SP_REF_LEN];
|
|
u8 uClass;
|
|
u8 uCredit;
|
|
u8 eREA;
|
|
u8 eOR;
|
|
|
|
SCCP_ADDR tCDA;
|
|
SCCP_ADDR tCGA;
|
|
SCCP_ADDR tSPA;
|
|
|
|
SP_UD tUD;
|
|
|
|
CO_Timer tmSCOC;
|
|
}
|
|
CO_ConnSection;
|
|
|
|
typedef struct SCOC_POOL_PRIMITIVE_IN
|
|
{
|
|
|
|
}
|
|
CO_PoolPriIn;
|
|
|
|
|
|
typedef struct SCLC_DATA_BLOCK
|
|
{
|
|
|
|
}
|
|
CL_DataBlock;
|
|
|
|
typedef struct SCRC_DATA_BLOCK
|
|
{
|
|
|
|
}
|
|
CR_DataBlock;
|
|
|
|
typedef struct SCMG_DATA_BLOCK
|
|
{
|
|
|
|
}
|
|
CM_DataBlock;
|
|
|
|
#define CO_CS_MPORT 8192
|
|
|
|
#ifdef DEBUG
|
|
|
|
typedef enum SCOC_DEBUG_STATIC_VALUE
|
|
{
|
|
GET_IN_POOL = 30,
|
|
PUT_IN_POOL,
|
|
READ_IN_POOL,
|
|
WRITE_IN_POOL,
|
|
GET_OUT_POOL,
|
|
PUT_OUT_POOL,
|
|
PUT_ELE_APT,
|
|
PUT_ELE_SUC,
|
|
UL_POST_CO_APT,
|
|
UL_POST_CO,
|
|
CO_SUBMIT_UL_APT,
|
|
CO_SUBMIT_UL,
|
|
CO_TO_CR_APT,
|
|
CO_TO_CR,
|
|
CR_TO_CO_APT,
|
|
CR_TO_CO,
|
|
SP_TIMER_OUT,
|
|
}
|
|
CO_DebugStaticVal;
|
|
|
|
|
|
typedef struct SCOC_DEBUG_STATIC
|
|
{
|
|
u32 dGetInPool;
|
|
u32 dPutInPool;
|
|
u32 dReadInPool;
|
|
u32 dWriteInPool;
|
|
|
|
u32 dGetOutPool;
|
|
u32 dPutOutPool;
|
|
u32 dPutEleApt;
|
|
u32 dPutEleSuc;
|
|
|
|
u32 dCoSubmitUlApt;
|
|
u32 dCoSubmitUl;
|
|
u32 dUlPostCoApt;
|
|
u32 dUlPostCo;
|
|
|
|
u32 dCo2CrApt;
|
|
u32 dCo2Cr;
|
|
u32 dCr2CoApt;
|
|
u32 dCr2Co;
|
|
|
|
u32 dTimerOut;
|
|
u32 dbusyElem;
|
|
}
|
|
CO_DebugStatic;
|
|
#endif
|
|
|
|
|
|
|
|
typedef struct SCOC_DATA_BLOCK
|
|
{
|
|
u32 wConnIdCount;
|
|
CO_ConnSection tCSInst[CO_CS_MPORT];
|
|
CO_DebugStatic tCoDebugStatic;
|
|
}
|
|
CO_DataBlock;
|
|
|
|
typedef struct SCCP_ENTITY
|
|
{
|
|
u32 dLocalIP;
|
|
u32 dAlterIP;
|
|
u32 dSysID;
|
|
CL_DataBlock tCl;
|
|
CO_DataBlock tCo;
|
|
CR_DataBlock tCr;
|
|
CM_DataBlock tCm;
|
|
}
|
|
SP_Entity;
|
|
|
|
/* by simon at 23/9/26 */
|
|
extern SP_Entity tSpEntity;
|
|
extern SP_Entity *pSp;
|
|
|
|
|
|
typedef enum SCOC_POOL_OP
|
|
{
|
|
CO_GET_POOL,
|
|
CO_READ_POOL,
|
|
CO_PUT_POOL,
|
|
CO_WRITE_POOL,
|
|
}
|
|
CO_PoolOp;
|
|
|
|
typedef struct SCOC_POOL_ELEMENT
|
|
{
|
|
POOL_ENTRY ( SCOC_POOL_ELEMENT ) tPointer;
|
|
SP_PriPoolEle tPri;
|
|
BYTE flag;
|
|
}
|
|
CO_PoolEle;
|
|
|
|
typedef struct SCOC_POOL
|
|
{
|
|
POOL_HEAD ( CO_PriPool, SCOC_POOL_ELEMENT ) tPoolHead;
|
|
struct CO_PriPool *pPoolHead;
|
|
int uMaxPoolSize;
|
|
int uPoolCount;
|
|
}
|
|
CO_Pool;
|
|
|
|
#define MAX_IN_POOL 1024
|
|
#define MAX_OUT_POOL 512
|
|
|
|
extern CO_Pool *pInCoPool;
|
|
extern CO_Pool *pOutCoPool;
|
|
|
|
|
|
#endif
|