📄 ss7_mtp2.h
字号:
// File Name: SS7_MTP2.h/////////////////////////////////////////////////#ifndef _EASYTELECOM_SS7_MTP2_H_XING_20080903_#define _EASYTELECOM_SS7_MTP2_H_XING_20080903_#include <sys/types.h>#include <unistd.h>#include <pthread.h>#include <sys/time.h> #include "TypeDef.h"#include "CircularBuffer.h"#include "CircularResendBuffer.h"#define MTP2_EVENT_QUEUE 10240#define MTP2_RECV_BUF_SIZE 50000#define MTP2_MSU2L3_BUF_SIZE 102400#define MTP2_SEND_BUF_SIZE 50000#define MTP2_LSSU_BUF_SIZE 50000#define HIGH_WATER_LEVEL (0.8)#define MID_WATER_LEVEL (0.6)class SS7_MTP2 {public: SS7_MTP2(void); SS7_MTP2(int _portNumber); SS7_MTP2(int _portNumber,int _recvBufSize,int _msu2L3BufSize, int _sendBufSize,int _reSendbufSize); virtual ~SS7_MTP2(void); CircularBuffer recvBuffer; // store SUs from L1 CircularBuffer MSU2L3Buffer; // store MSUs for L3 to retrieve CircularBuffer eventQueue; // internal events buffer for FSM updating void setPortNumber(int _portNumber) { portNumber = _portNumber; } int getPortNumber(void) { return portNumber; } LSCState getLSCState(void) { return lscState; } IACState getIACState(void) { return iacState; } TXCState getTXCState(void) { return txcState; } RCState getRCState(void) { return rcState; } CCState getCCState(void) { return ccState; }private: int fd; int portNumber; CircularBuffer LSSUBuffer; // for sending LSSUs CircularBuffer sendBuffer; // for sending LSSUs CircularBuffer resendBuffer; // for sending LSSUs// CircularResendBuffer sendBuffer; // store MSUs for sending to L1 LSCState lscState; IACState iacState; POCState pocState; TXCState txcState; RCState rcState; AERMState aermState; SUERMState suermState; CCState ccState; DAEDRState daedrState; DAEDTState daedtState; int Ti; // AERM threshold int recvHighWaterLevel; int recvMidWaterLevel; float errorRate; MTP2_TIMER timers[7]; bool octetCountingMode; bool alignmentComplete; bool emergency; bool linkFailure; bool localProcessorOutage; bool processorOutage; bool noProcessorOutage; bool level3IndicationReceived; bool LSSUAvailable; bool SIBreceived; bool RTBfull; bool MSUinhibited; int TXC_FSNF; int TXC_FSNL; // not used by RC int TXC_FSNT; int TXC_FSNX; int TXC_FIB; int TXC_BIB; int RC_FSNF; // int RC_FSNT; // int RC_FSNX; // int RC_FIBX; int BSNR; int FSNR; int FIBR; int BIBR; int FIBT;
int BIBT;
int BSNT;
int UNB; int UNF; int Cm; int FSNC; int Cp; int RTR; int Ca; int Cs; int su; bool furtherproving;
bool FISUMSUaccepted;
bool abnormalBSNR;
bool abnormalFIBR;
bool congestionDiscard;
bool congestionAccept;
SUWithLength * pSUWithLen; SndSigUnit * pSndSigUnit; // mutex needed ? fd_set * prdfdset; fd_set * pwrfdset;
int devfd; int maxfd; struct timeval IACTimer; struct timeval FISUTimer; struct timeval LSCRestartTimer;public: void setRdfSet(fd_set * _rdfdset) { prdfdset = _rdfdset; } void setWrfSet(fd_set * _wrfdset) { pwrfdset = _wrfdset; } void setDevfd(int _devfd) { devfd = _devfd; } void setMaxfd(int _maxfd) { maxfd = _maxfd; } DAEDRState getDAEDRState(void) { return daedrState; }private: void init_data_member(void); int sendSINorSIE(bool _emergency); int TXC_SendFISU(void); int TXC_SendLSSU(void); void FISUMSURecvdBSNRBIBR(SUWithLength * _pSUWithLen); // write message to L1 int writeMessage(unsigned char * _data, int _count); SUType getSUType(SUHeaderL2 * suHeader) { if( suHeader->LI == 0 ) { return SUTypeFISU; } else if( suHeader->LI > 2 ) { return SUTypeMSU; } else { return SUTypeLSSU; } } int EraseRTBMSU(int maxFSN); int writeSUDowntoL1(SndSigUnit * sndSU);public: int sendLSSU(void); int sendFISU(void); int sendSIO(void); int sendSIN(void); int sendSIE(void); int sendSIOS(void); int sendSIPO(void);public: int initMTP2(void); int resetRecvBuffer(void); int poweron(); int start(); int updateStates(); int LSC(int event_in, unsigned long param); int TXC(int event_in, unsigned long param); int RC(int event_in, unsigned long param); int POC(int event_in, unsigned long param); int IAC(int event_in, unsigned long param); int CC(int event_in, unsigned long param); int AERM(int event_in, unsigned long param); int SUERM(int event_in, unsigned long param); int DAEDR(int event_in, unsigned long param); int DAEDT(int event_in, unsigned long param); void checkTimers(void); // primitive for MTP-3 int sendMessage(unsigned char * _data, int _count); // send messages from the sending buffer int sendMessage(int _number); // L3 request to read data from L2 recvBuffer int readMesssage(unsigned char * _buffer, int _len);};typedef int (SS7_MTP2::*FSMFunc)(int,unsigned long);#endif // _EASYTELECOM_SS7_MTP2_H_XING_20080903_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -