Files
svc.ems/plat/sccp/src/include/scoc.h
2024-09-27 15:39:34 +08:00

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