📄 isupptl.cpp
字号:
/* ======================================================================== *\
|
|
| JOYIT Communication Technology
| Copyright (C) 2003~2006, All Right Reserved.
|
| System: Programmable Signaling Gateway
| Sub-system:
| Filename: isup.cpp
| Environment: Red Hat Linux 7.2 & GNU C/C++ Compiler 2.96
| Function description: ISUP Protocol class
|
\* ======================================================================== */
#ifndef _ISUPPTL_HPP
#include "isupptl.hpp"
#endif
#ifndef _ISUPFMT_HPP
#include "isupfmt.hpp"
#endif
#ifndef _JOYITIEFMT_HPP
#include "joyitiefmt.hpp"
#endif
UINT8 CIsupPdu::IsupIe2JoyitIe[MAX_IE];
UINT8 CIsupPdu::JoyitIe2IsupIe[MAX_IE];
UINT16 CIsupPdu::IsupMsg2JoyitMsg[MAX_MSG];
UINT8 CIsupPdu::JoyitMsg2IsupMsg[MAX_MSG];
CIsupPdu::CIsupPdu( ) : CPduBase(0, ISUP_VAR_CHINA, 24, 0)
{
ownedPcmId = 0;
ownedTsId = 0;
rlcType = 0;
}
CIsupPdu::CIsupPdu(CIsupPdu& s) : CPduBase(s) // Copy construction function. Add 2005-11-19, by Wujianjin.
{
ownedPcmId = s.ownedPcmId;
ownedTsId = s.ownedTsId;
}
CIsupPdu::CIsupPdu(UINT8 pt, UINT8 pv, UINT8 pcf, UINT16 mt) : CPduBase(pt, pv, pcf, mt)
{
}
CIsupPdu::~CIsupPdu( )
{
}
void CIsupPdu::InitStaticData( ) // Initialize static data member.
{
InitIsupIe( );
InitJoyitIe( );
InitIsupMsg( );
InitJoyitMsg( );
}
void CIsupPdu::InitIsupIe( ) // Initialize IsupIe2JoyitIe array.
{
memset(IsupIe2JoyitIe, 0xff, MAX_IE);
IsupIe2JoyitIe[ISUP_IE_ACCDLVINF] = PSG_IE_ACCDLVINF;
IsupIe2JoyitIe[ISUP_IE_ACCTRN] = PSG_IE_ACCTRN;
IsupIe2JoyitIe[ISUP_IE_AUTOCNGLVL] = PSG_IE_AUTOCNGLVL;
IsupIe2JoyitIe[ISUP_IE_BCKCALLIND] = PSG_IE_BCKCALLIND;
IsupIe2JoyitIe[ISUP_IE_CALLDVSINF] = PSG_IE_CALLDVSINF;
IsupIe2JoyitIe[ISUP_IE_CALLHSTINF] = PSG_IE_CALLHSTINF;
IsupIe2JoyitIe[ISUP_IE_CALLRFR] = PSG_IE_CALLRFR;
IsupIe2JoyitIe[ISUP_IE_CLNPRTNUM] = PSG_IE_CLNPRTNUM;
IsupIe2JoyitIe[ISUP_IE_CLNPRTCTG] = PSG_IE_CLNPRTCTG;
IsupIe2JoyitIe[ISUP_IE_CAUSEIND] = PSG_IE_CAUSEIND;
IsupIe2JoyitIe[ISUP_IE_CGPSPVIND] = PSG_IE_CGPSPVIND;
IsupIe2JoyitIe[ISUP_IE_CCTSTATEIND] = PSG_IE_CCTSTATEIND;
IsupIe2JoyitIe[ISUP_IE_CLSUSRGRP] = PSG_IE_CLSUSRGRP;
IsupIe2JoyitIe[ISUP_IE_CONNUM] = PSG_IE_CONNUM;
IsupIe2JoyitIe[ISUP_IE_CONREQ] = PSG_IE_CONREQ;
IsupIe2JoyitIe[ISUP_IE_COTIND] = PSG_IE_COTIND;
IsupIe2JoyitIe[ISUP_IE_ECHOINF] = PSG_IE_ECHOINF;
IsupIe2JoyitIe[ISUP_IE_ENDOPT] = PSG_IE_ENDOPT;
IsupIe2JoyitIe[ISUP_IE_EVENTINF] = PSG_IE_EVENTINF;
IsupIe2JoyitIe[ISUP_IE_FACIND] = PSG_IE_FACIND;
IsupIe2JoyitIe[ISUP_IE_FWDCALLIND] = PSG_IE_FWDCALLIND;
IsupIe2JoyitIe[ISUP_IE_FREECALLIND] = PSG_IE_FREECALLIND;
IsupIe2JoyitIe[ISUP_IE_GNRDGT] = PSG_IE_GNRDGT;
IsupIe2JoyitIe[ISUP_IE_GNRIND] = PSG_IE_GNRIND;
IsupIe2JoyitIe[ISUP_IE_GNRNUM] = PSG_IE_GNRNUM;
IsupIe2JoyitIe[ISUP_IE_GNRRFR] = PSG_IE_GNRRFR;
IsupIe2JoyitIe[ISUP_IE_HOPCNT] = PSG_IE_HOPCNT;
IsupIe2JoyitIe[ISUP_IE_INFIND] = PSG_IE_INFIND;
IsupIe2JoyitIe[ISUP_IE_INFRQSIND] = PSG_IE_INFRQSIND;
IsupIe2JoyitIe[ISUP_IE_LCTNUM] = PSG_IE_LCTNUM;
IsupIe2JoyitIe[ISUP_IE_MCIDRQSIND] = PSG_IE_MCIDRQSIND;
IsupIe2JoyitIe[ISUP_IE_MCIDRSPIND] = PSG_IE_MCIDRSPIND;
IsupIe2JoyitIe[ISUP_IE_MSGCMPIND] = PSG_IE_MSGCMPIND;
IsupIe2JoyitIe[ISUP_IE_MLPPPRC] = PSG_IE_MLPPPRC;
IsupIe2JoyitIe[ISUP_IE_NTRCONIND] = PSG_IE_NTRCONIND;
IsupIe2JoyitIe[ISUP_IE_NTWSPCFCL] = PSG_IE_NTWSPCFCL;
IsupIe2JoyitIe[ISUP_IE_OPTBCKCALLIND]= PSG_IE_OPTBCKCALLIND;
IsupIe2JoyitIe[ISUP_IE_OPTFWDCALLIND]= PSG_IE_OPTFWDCALLIND;
IsupIe2JoyitIe[ISUP_IE_ORGCLDNUM] = PSG_IE_ORGCLDNUM;
IsupIe2JoyitIe[ISUP_IE_ORGISCPC] = PSG_IE_ORGISCPC;
IsupIe2JoyitIe[ISUP_IE_PARACOMPINFO]= PSG_IE_PARACOMPINFO;
IsupIe2JoyitIe[ISUP_IE_PRPDELAYCNT] = PSG_IE_PRPDELAYCNT;
IsupIe2JoyitIe[ISUP_IE_RNGSTATUS] = PSG_IE_RNGSTATUS;
IsupIe2JoyitIe[ISUP_IE_REDNGNUM] = PSG_IE_REDNGNUM;
IsupIe2JoyitIe[ISUP_IE_REDIRINF] = PSG_IE_REDIRINF;
IsupIe2JoyitIe[ISUP_IE_REDIRNUM] = PSG_IE_REDIRNUM;
IsupIe2JoyitIe[ISUP_IE_REDIRNUMRSTR]= PSG_IE_REDIRNUMRSTR;
IsupIe2JoyitIe[ISUP_IE_RMTOPR] = PSG_IE_RMTOPR;
IsupIe2JoyitIe[ISUP_IE_SRVACT] = PSG_IE_SRVACT;
IsupIe2JoyitIe[ISUP_IE_SPC] = PSG_IE_SPC;
IsupIe2JoyitIe[ISUP_IE_SUBNUM] = PSG_IE_SUBNUM;
IsupIe2JoyitIe[ISUP_IE_RESSUSIND] = PSG_IE_RESSUSIND;
IsupIe2JoyitIe[ISUP_IE_TRNNTWSLC] = PSG_IE_TRNNTWSLC;
IsupIe2JoyitIe[ISUP_IE_TRNMDMRQR] = PSG_IE_TRNMDMRQR;
IsupIe2JoyitIe[ISUP_IE_TRNMDMRQRP] = PSG_IE_TRNMDMRQRP;
IsupIe2JoyitIe[ISUP_IE_TRNMDMUSE] = PSG_IE_TRNMDMUSE;
IsupIe2JoyitIe[ISUP_IE_USRSRVINF] = PSG_IE_USRSRVINF;
IsupIe2JoyitIe[ISUP_IE_USRSRVINFP] = PSG_IE_USRSRVINFP;
IsupIe2JoyitIe[ISUP_IE_USRTELSRVINF]= PSG_IE_USRTELSRVINF;
IsupIe2JoyitIe[ISUP_IE_USRTOUSRIND] = PSG_IE_USRTOUSRIND;
IsupIe2JoyitIe[ISUP_IE_USRTOUSRINF] = PSG_IE_USRTOUSRINF;
IsupIe2JoyitIe[ISUP_IE_CRGINF] = PSG_IE_CRGINF;
}
void CIsupPdu::InitJoyitIe( ) // Initialize JoyitIe2IsupIe array.
{
memset(JoyitIe2IsupIe, 0xff, MAX_IE);
JoyitIe2IsupIe[PSG_IE_ACCDLVINF] = ISUP_IE_ACCDLVINF;
JoyitIe2IsupIe[PSG_IE_ACCTRN] = ISUP_IE_ACCTRN;
JoyitIe2IsupIe[PSG_IE_AUTOCNGLVL] = ISUP_IE_AUTOCNGLVL;
JoyitIe2IsupIe[PSG_IE_BCKCALLIND] = ISUP_IE_BCKCALLIND;
JoyitIe2IsupIe[PSG_IE_CALLDVSINF] = ISUP_IE_CALLDVSINF;
JoyitIe2IsupIe[PSG_IE_CALLHSTINF] = ISUP_IE_CALLHSTINF;
JoyitIe2IsupIe[PSG_IE_CALLRFR] = ISUP_IE_CALLRFR;
JoyitIe2IsupIe[PSG_IE_CLNPRTNUM] = ISUP_IE_CLNPRTNUM;
JoyitIe2IsupIe[PSG_IE_CLNPRTCTG] = ISUP_IE_CLNPRTCTG;
JoyitIe2IsupIe[PSG_IE_CAUSEIND] = ISUP_IE_CAUSEIND;
JoyitIe2IsupIe[PSG_IE_CGPSPVIND] = ISUP_IE_CGPSPVIND;
JoyitIe2IsupIe[PSG_IE_CCTSTATEIND] = ISUP_IE_CCTSTATEIND;
JoyitIe2IsupIe[PSG_IE_CLSUSRGRP] = ISUP_IE_CLSUSRGRP;
JoyitIe2IsupIe[PSG_IE_CONNUM] = ISUP_IE_CONNUM;
JoyitIe2IsupIe[PSG_IE_CONREQ] = ISUP_IE_CONREQ;
JoyitIe2IsupIe[PSG_IE_COTIND] = ISUP_IE_COTIND;
JoyitIe2IsupIe[PSG_IE_ECHOINF] = ISUP_IE_ECHOINF;
JoyitIe2IsupIe[PSG_IE_ENDOPT] = ISUP_IE_ENDOPT;
JoyitIe2IsupIe[PSG_IE_EVENTINF] = ISUP_IE_EVENTINF;
JoyitIe2IsupIe[PSG_IE_FACIND] = ISUP_IE_FACIND;
JoyitIe2IsupIe[PSG_IE_FWDCALLIND] = ISUP_IE_FWDCALLIND;
JoyitIe2IsupIe[PSG_IE_FREECALLIND] = ISUP_IE_FREECALLIND;
JoyitIe2IsupIe[PSG_IE_GNRDGT] = ISUP_IE_GNRDGT;
JoyitIe2IsupIe[PSG_IE_GNRIND] = ISUP_IE_GNRIND;
JoyitIe2IsupIe[PSG_IE_GNRNUM] = ISUP_IE_GNRNUM;
JoyitIe2IsupIe[PSG_IE_GNRRFR] = ISUP_IE_GNRRFR;
JoyitIe2IsupIe[PSG_IE_HOPCNT] = ISUP_IE_HOPCNT;
JoyitIe2IsupIe[PSG_IE_INFIND] = ISUP_IE_INFIND;
JoyitIe2IsupIe[PSG_IE_INFRQSIND] = ISUP_IE_INFRQSIND;
JoyitIe2IsupIe[PSG_IE_LCTNUM] = ISUP_IE_LCTNUM;
JoyitIe2IsupIe[PSG_IE_MCIDRQSIND] = ISUP_IE_MCIDRQSIND;
JoyitIe2IsupIe[PSG_IE_MCIDRSPIND] = ISUP_IE_MCIDRSPIND;
JoyitIe2IsupIe[PSG_IE_MSGCMPIND] = ISUP_IE_MSGCMPIND;
JoyitIe2IsupIe[PSG_IE_MLPPPRC] = ISUP_IE_MLPPPRC;
JoyitIe2IsupIe[PSG_IE_NTRCONIND] = ISUP_IE_NTRCONIND;
JoyitIe2IsupIe[PSG_IE_NTWSPCFCL] = ISUP_IE_NTWSPCFCL;
JoyitIe2IsupIe[PSG_IE_OPTBCKCALLIND]= ISUP_IE_OPTBCKCALLIND;
JoyitIe2IsupIe[PSG_IE_OPTFWDCALLIND]= ISUP_IE_OPTFWDCALLIND;
JoyitIe2IsupIe[PSG_IE_ORGCLDNUM] = ISUP_IE_ORGCLDNUM;
JoyitIe2IsupIe[PSG_IE_ORGISCPC] = ISUP_IE_ORGISCPC;
JoyitIe2IsupIe[PSG_IE_PARACOMPINFO] = ISUP_IE_PARACOMPINFO;
JoyitIe2IsupIe[PSG_IE_PRPDELAYCNT] = ISUP_IE_PRPDELAYCNT;
JoyitIe2IsupIe[PSG_IE_RNGSTATUS] = ISUP_IE_RNGSTATUS;
JoyitIe2IsupIe[PSG_IE_REDNGNUM] = ISUP_IE_REDNGNUM;
JoyitIe2IsupIe[PSG_IE_REDIRINF] = ISUP_IE_REDIRINF;
JoyitIe2IsupIe[PSG_IE_REDIRNUM] = ISUP_IE_REDIRNUM;
JoyitIe2IsupIe[PSG_IE_REDIRNUMRSTR] = ISUP_IE_REDIRNUMRSTR;
JoyitIe2IsupIe[PSG_IE_RMTOPR] = ISUP_IE_RMTOPR;
JoyitIe2IsupIe[PSG_IE_SRVACT] = ISUP_IE_SRVACT;
JoyitIe2IsupIe[PSG_IE_SPC] = ISUP_IE_SPC;
JoyitIe2IsupIe[PSG_IE_SUBNUM] = ISUP_IE_SUBNUM;
JoyitIe2IsupIe[PSG_IE_RESSUSIND] = ISUP_IE_RESSUSIND;
JoyitIe2IsupIe[PSG_IE_TRNNTWSLC] = ISUP_IE_TRNNTWSLC;
JoyitIe2IsupIe[PSG_IE_TRNMDMRQR] = ISUP_IE_TRNMDMRQR;
JoyitIe2IsupIe[PSG_IE_TRNMDMRQRP] = ISUP_IE_TRNMDMRQRP;
JoyitIe2IsupIe[PSG_IE_TRNMDMUSE] = ISUP_IE_TRNMDMUSE;
JoyitIe2IsupIe[PSG_IE_USRSRVINF] = ISUP_IE_USRSRVINF;
JoyitIe2IsupIe[PSG_IE_USRSRVINFP] = ISUP_IE_USRSRVINFP;
JoyitIe2IsupIe[PSG_IE_USRTELSRVINF] = ISUP_IE_USRTELSRVINF;
JoyitIe2IsupIe[PSG_IE_USRTOUSRIND] = ISUP_IE_USRTOUSRIND;
JoyitIe2IsupIe[PSG_IE_USRTOUSRINF] = ISUP_IE_USRTOUSRINF;
JoyitIe2IsupIe[PSG_IE_CRGINF] = ISUP_IE_CRGINF;
}
void CIsupPdu::InitIsupMsg( ) // Initialize IsupMsg2JoyitMsg array.
{
memset(IsupMsg2JoyitMsg, 0xff, sizeof(UINT16)*MAX_MSG);
IsupMsg2JoyitMsg[ISUP_ACM] = PSG_MSG_ISUP_ACM;
IsupMsg2JoyitMsg[ISUP_ANM] = PSG_MSG_ISUP_ANM;
IsupMsg2JoyitMsg[ISUP_BLO] = PSG_MSG_ISUP_BLO;
IsupMsg2JoyitMsg[ISUP_BLA] = PSG_MSG_ISUP_BLA;
IsupMsg2JoyitMsg[ISUP_CPG] = PSG_MSG_ISUP_CPG;
IsupMsg2JoyitMsg[ISUP_CGB] = PSG_MSG_ISUP_CGB;
IsupMsg2JoyitMsg[ISUP_CGBA] = PSG_MSG_ISUP_CGBA;
IsupMsg2JoyitMsg[ISUP_CQM] = PSG_MSG_ISUP_CQM;
IsupMsg2JoyitMsg[ISUP_CQR] = PSG_MSG_ISUP_CQR;
IsupMsg2JoyitMsg[ISUP_GRS] = PSG_MSG_ISUP_GRS;
IsupMsg2JoyitMsg[ISUP_GRA] = PSG_MSG_ISUP_GRA;
IsupMsg2JoyitMsg[ISUP_CGU] = PSG_MSG_ISUP_CGU;
IsupMsg2JoyitMsg[ISUP_CGUA] = PSG_MSG_ISUP_CGUA;
IsupMsg2JoyitMsg[ISUP_CRG] = PSG_MSG_ISUP_CRG;
IsupMsg2JoyitMsg[ISUP_CFN] = PSG_MSG_ISUP_CFN;
IsupMsg2JoyitMsg[ISUP_CON] = PSG_MSG_ISUP_CON;
IsupMsg2JoyitMsg[ISUP_COT] = PSG_MSG_ISUP_COT;
IsupMsg2JoyitMsg[ISUP_CCR] = PSG_MSG_ISUP_CCR;
IsupMsg2JoyitMsg[ISUP_FAC] = PSG_MSG_ISUP_FAC;
IsupMsg2JoyitMsg[ISUP_FAA] = PSG_MSG_ISUP_FAA;
IsupMsg2JoyitMsg[ISUP_FRJ] = PSG_MSG_ISUP_FRJ;
IsupMsg2JoyitMsg[ISUP_FAR] = PSG_MSG_ISUP_FAR;
IsupMsg2JoyitMsg[ISUP_FOT] = PSG_MSG_ISUP_FOT;
IsupMsg2JoyitMsg[ISUP_IDR] = PSG_MSG_ISUP_IDR;
IsupMsg2JoyitMsg[ISUP_IRS] = PSG_MSG_ISUP_IRS;
IsupMsg2JoyitMsg[ISUP_INF] = PSG_MSG_ISUP_INF;
IsupMsg2JoyitMsg[ISUP_INR] = PSG_MSG_ISUP_INR;
IsupMsg2JoyitMsg[ISUP_IAM] = PSG_MSG_ISUP_IAM;
IsupMsg2JoyitMsg[ISUP_LPA] = PSG_MSG_ISUP_LPA;
IsupMsg2JoyitMsg[ISUP_NRM] = PSG_MSG_ISUP_NRM;
IsupMsg2JoyitMsg[ISUP_OLM] = PSG_MSG_ISUP_OLM;
IsupMsg2JoyitMsg[ISUP_PAM] = PSG_MSG_ISUP_PAM;
IsupMsg2JoyitMsg[ISUP_REL] = PSG_MSG_ISUP_REL;
IsupMsg2JoyitMsg[ISUP_RLC] = PSG_MSG_ISUP_RLC;
IsupMsg2JoyitMsg[ISUP_RSC] = PSG_MSG_ISUP_RSC;
IsupMsg2JoyitMsg[ISUP_RES] = PSG_MSG_ISUP_RES;
IsupMsg2JoyitMsg[ISUP_SGM] = PSG_MSG_ISUP_SGM;
IsupMsg2JoyitMsg[ISUP_SAM] = PSG_MSG_ISUP_SAM;
IsupMsg2JoyitMsg[ISUP_SUS] = PSG_MSG_ISUP_SUS;
IsupMsg2JoyitMsg[ISUP_UBL] = PSG_MSG_ISUP_UBL;
IsupMsg2JoyitMsg[ISUP_UBA] = PSG_MSG_ISUP_UBA;
IsupMsg2JoyitMsg[ISUP_UCIC] = PSG_MSG_ISUP_UCIC;
IsupMsg2JoyitMsg[ISUP_UPA] = PSG_MSG_ISUP_UPA;
IsupMsg2JoyitMsg[ISUP_UPT] = PSG_MSG_ISUP_UPT;
IsupMsg2JoyitMsg[ISUP_USR] = PSG_MSG_ISUP_USR;
IsupMsg2JoyitMsg[ISUP_OPR] = PSG_MSG_ISUP_OPR;
IsupMsg2JoyitMsg[ISUP_MPM] = PSG_MSG_ISUP_MPM;
IsupMsg2JoyitMsg[ISUP_CCL] = PSG_MSG_ISUP_CCL;
}
void CIsupPdu::InitJoyitMsg( ) // Initialize JoyitMsg2IsupMsg array.
{
memset(JoyitMsg2IsupMsg, 0xff, MAX_MSG);
JoyitMsg2IsupMsg[PSG_MSG_ISUP_ACM-0x100] = ISUP_ACM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_ANM-0x100] = ISUP_ANM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_BLO-0x100] = ISUP_BLO;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_BLA-0x100] = ISUP_BLA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CPG-0x100] = ISUP_CPG;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CGB-0x100] = ISUP_CGB;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CGBA-0x100] = ISUP_CGBA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CQM-0x100] = ISUP_CQM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CQR-0x100] = ISUP_CQR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_GRS-0x100] = ISUP_GRS;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_GRA-0x100] = ISUP_GRA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CGU-0x100] = ISUP_CGU;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CGUA-0x100] = ISUP_CGUA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CRG-0x100] = ISUP_CRG;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CFN-0x100] = ISUP_CFN;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CON-0x100] = ISUP_CON;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_COT-0x100] = ISUP_COT;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CCR-0x100] = ISUP_CCR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_FAC-0x100] = ISUP_FAC;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_FAA-0x100] = ISUP_FAA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_FRJ-0x100] = ISUP_FRJ;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_FAR-0x100] = ISUP_FAR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_FOT-0x100] = ISUP_FOT;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_IDR-0x100] = ISUP_IDR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_IRS-0x100] = ISUP_IRS;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_INF-0x100] = ISUP_INF;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_INR-0x100] = ISUP_INR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_IAM-0x100] = ISUP_IAM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_LPA-0x100] = ISUP_LPA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_NRM-0x100] = ISUP_NRM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_OLM-0x100] = ISUP_OLM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_PAM-0x100] = ISUP_PAM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_REL-0x100] = ISUP_REL;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_RLC-0x100] = ISUP_RLC;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_RSC-0x100] = ISUP_RSC;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_RES-0x100] = ISUP_RES;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_SGM-0x100] = ISUP_SGM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_SAM-0x100] = ISUP_SAM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_SUS-0x100] = ISUP_SUS;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_UBL-0x100] = ISUP_UBL;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_UBA-0x100] = ISUP_UBA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_UCIC-0x100] = ISUP_UCIC;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_UPA-0x100] = ISUP_UPA;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_UPT-0x100] = ISUP_UPT;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_USR-0x100] = ISUP_USR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_OPR-0x100] = ISUP_OPR;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_MPM-0x100] = ISUP_MPM;
JoyitMsg2IsupMsg[PSG_MSG_ISUP_CCL-0x100] = ISUP_CCL;
}
uchar CIsupPdu::ToJoyitIe(UINT8 id) // ISUP's IE to ISUP API's IE index.
{
return (id < MAX_IE) ? IsupIe2JoyitIe[id] : 0xff;
}
uchar CIsupPdu::ToIsupIe(UINT8 id) // ISUP API's IE index to ISUP's IE.
{
return (id < MAX_IE) ? JoyitIe2IsupIe[id] : 0xff;
}
UINT16 CIsupPdu::ToJoyitMsg(UINT8 id) // ISUP message type to ISUP API message index.
{
return (id < MAX_MSG) ? IsupMsg2JoyitMsg[id] : 0xFFFF;
}
uchar CIsupPdu::ToIsupMsg(UINT16 id) // ISUP API message index to ISUP message type.
{
UINT8 msgindex = id - 0x100;
return (msgindex < MAX_MSG) ? JoyitMsg2IsupMsg[msgindex] : 0xFF;
}
int CIsupPdu::Unpacked(char * ptr, UINT16 len, UINT8 mod)
{
int r = 0;
switch (mod)
{
case MOD_JOYIT:
case MOD_TUPAPI:
case MOD_ISUPAPI:
case MOD_Q931API:
r = DecomposeJoyitApi(ptr, len);
break;
case MOD_ISUP:
r = DecomposeIsupPdu(ptr, len);
break;
default:
break;
} // End of switch(mod)
return r;
}
char * CIsupPdu::OutPut(UINT16& len, UINT8 mod)
{
char * pPdu = NULL;
len = 0;
switch (mod)
{
case MOD_JOYIT:
pPdu = ComposeJoyitApi(len);
break;
case MOD_ISUP:
pPdu = ComposeIsupPdu(len);
break;
default:
break;
} // End of switch(mod)
return pPdu;
}
// Return:
// >= 0 Success.
// -1 ISUP message too short.
// -2 ISUP message type unrecognized.
// -3 ISUP message content invalid IE value.
// -4 ISUP IE unrecognized.
// -5 ISUP message too long, exceeding data be attached.
int CIsupPdu::DecomposeIsupPdu(char * ptr, UINT16 len)
{
int r = 0;
char *pPdu = ptr;
// UINT8 noie;
// UINT16 pos = 0; // Calculate the length of PDU.
// int isup_header_len;
char tmpbuf[64];
char eoop = 0;
memset(tmpbuf, 0, 64);
LengthOfHeader = (24 == GetSS7Pcf( )) ? sizeof(SIsupHead24bits) : sizeof(SIsupHead14bits);
if (len < LengthOfHeader)
{
// Exception.
r = -1; // Message data string too short.
}
else
{ // Begin to decompose pdu.
// Store the ISUP message header.
memcpy(Header, ptr, LengthOfHeader);
// pos += LengthOfHeader;
pPdu += LengthOfHeader;
uchar vptr; // Variable parameter value.
uchar vpos; // Variable parameter pointer position.
uchar optr; // Optional parameter value.
uchar opos; // Optional parameter pointer position.
uchar ieLen, numLen;
uchar isupIe, joyitIe;
vptr = 0; // Variable pointer not exist.
optr = 0; // Optional pointer not exist.
// Gain ISUP message type.
UINT16 mt = Header[LengthOfHeader-1];
SetMessageType(CIsupPdu::ToJoyitMsg(mt));
if (0xFFFF == GetMessageType( ))
{
r = -2; // ISUP message type unrecognized.
}
else
{
// Get FIX and VARIABLE parameter.
switch (GetMessageType( ))
{
case PSG_MSG_ISUP_ACM: // Backward call indicator and optional parameter.
case PSG_MSG_ISUP_CON:
PutIE(PSG_IE_BCKCALLIND, sizeof(SBackwardCallIndicators), pPdu);
pPdu += sizeof(SBackwardCallIndicators);
optr = *pPdu ++;
break;
case PSG_MSG_ISUP_ANM: // Only optional parameters.
case PSG_MSG_ISUP_RLC:
case PSG_MSG_ISUP_FOT:
case PSG_MSG_ISUP_UPT:
case PSG_MSG_ISUP_UPA:
case PSG_MSG_ISUP_FAC:
case PSG_MSG_ISUP_NRM:
case PSG_MSG_ISUP_IDR:
case PSG_MSG_ISUP_IRS:
case PSG_MSG_ISUP_SGM:
case PSG_MSG_ISUP_OPR:
case PSG_MSG_ISUP_CCL:
optr = *pPdu ++;
break;
case PSG_MSG_ISUP_CPG: // Event information and optional parameters.
PutIE(PSG_IE_EVENTINF, sizeof(SEventInformation), pPdu);
pPdu += sizeof(SEventInformation);
opos = pPdu - ptr;
optr = *pPdu ++;
break;
case PSG_MSG_ISUP_CQR: // Only variable.
vpos = pPdu - ptr;
vptr = *pPdu ++;
ieLen = *pPdu --;
ieLen = ieLen + 2;
PutIE(PSG_IE_RNGSTATUS, ieLen, pPdu);
pPdu += ieLen;
pPdu ++;
ieLen = *pPdu --;
ieLen = ieLen + 2;
PutIE(PSG_IE_CIRSTA, ieLen , pPdu);
pPdu += ieLen;
break;
case PSG_MSG_ISUP_GRA:
vpos = pPdu - ptr;
vptr = *pPdu ++;
ieLen = *pPdu ++;
tmpbuf[0] = CGIND_RESET;
memcpy(tmpbuf+1, pPdu, ieLen);
tmpbuf[1] ++; // Range --> Number of circuits.
PutIE(PSG_IE_CG_IND, ieLen+1, tmpbuf);
pPdu += ieLen;
break;
case PSG_MSG_ISUP_CFN:
vpos = pPdu - ptr;
vptr = *pPdu ++;
opos = pPdu - ptr;
optr = *pPdu ++;
ieLen = *pPdu ++;
PutIE(PSG_IE_CAUSEIND, ieLen, pPdu);
pPdu += ieLen;
break;
case PSG_MSG_ISUP_COT:
PutIE(PSG_IE_COTIND, sizeof(SContinuityIndicators), pPdu);
pPdu += sizeof(SContinuityIndicators);
break;
case PSG_MSG_ISUP_FRJ: // Facility indicator and V & O.
PutIE(PSG_IE_FACIND, sizeof(SFacilityIndicators), pPdu);
pPdu += sizeof(SFacilityIndicators);
vpos = pPdu - ptr;
vptr = *pPdu ++;
opos = pPdu - ptr;
optr = *pPdu ++;
ieLen = *pPdu ++;
PutIE(PSG_IE_CAUSEIND, ieLen, pPdu);
pPdu += ieLen;
break;
case PSG_MSG_ISUP_INF:
PutIE(PSG_IE_INFIND, sizeof(SInformationIndicators), pPdu);
pPdu += sizeof(SInformationIndicators);
opos = pPdu - ptr;
optr = *pPdu ++;
break;
case PSG_MSG_ISUP_INR:
PutIE(PSG_IE_INFRQSIND, sizeof(SInformationRequestIndicators), pPdu);
pPdu += sizeof(SInformationRequestIndicators);
opos = pPdu - ptr;
optr = *pPdu ++;
break;
case PSG_MSG_ISUP_IAM:
PutIE(PSG_IE_NTRCONIND, sizeof(SNatureOfConnection), pPdu);
pPdu += sizeof(SNatureOfConnection);
PutIE(PSG_IE_FWDCALLIND, sizeof(SForwardCallIndicators), pPdu);
pPdu += sizeof(SForwardCallIndicators);
PutIE(PSG_IE_CLNPRTCTG, sizeof(SCallingPartysCatetgory), pPdu);
pPdu += sizeof(SCallingPartysCatetgory);
PutIE(PSG_IE_TRNMDMRQR, sizeof(STransmissionMediumRequirement), pPdu);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -