⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 layerapp.cpp

📁 map协议源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
SuId suId;
MaDlgId suDlgId;
MaDlgId spDlgId;
#endif
{
    TRC2(AppLiMatDlgCfm)

    Dialog              *curDlg;

#ifdef _MULTI_THREAD
    pthread_mutex_lock(&(dlgQueue->Lock));
#endif

    curDlg = dlgQueue->dlgFind(suDlgId, spDlgId);
    
#ifdef _MULTI_THREAD
    pthread_mutex_unlock(&(dlgQueue->Lock));
#endif

    if (curDlg == NULL)
    {
        AUACC_PRINT("AppLiMatDlgCfm__________Find dlg %ld failure \n",suDlgId);
    }
    else
    {
        curDlg->auLiMatDlgCfmPrs(spDlgId);
    }

  RETVALUE(ROK);
} /* AppLiMatDlgCfm  */


/*
*
*       Fun:   AppLiMatDelimInd
*
*       Desc:  This function packs
*
*       Ret:   ROK
*
*       Notes: None
*
*       File:  layerapp.c
*
*/

#ifdef ANSI
PUBLIC S16 AppLiMatDelimInd
(
Pst  *pst,
SuId suId,
MaDlgId suDlgId,
MaDlgId spDlgId
)
#else
PUBLIC S16 AppLiMatDelimInd (pst,suId,suDlgId,spDlgId)
Pst  *pst;
SuId suId;
MaDlgId suDlgId;
MaDlgId spDlgId;
#endif
{
    TRC2(AppLiMatDelimInd)

    MaAccMsgQElm        qElm;
    Dialog              *curDlg;

    AUACC_PRINT("AppLiMatDelimInd\n"); /* added by Adam  */

    qElm.evtType = MA_EVTDELIMIND;
    qElm.suId    = suId;
    qElm.suDlgId = suDlgId;
    qElm.spDlgId = spDlgId;

#ifdef _MULTI_THREAD
    pthread_mutex_lock(&(dlgQueue->Lock));
#endif

    curDlg = dlgQueue->dlgFind(suDlgId, spDlgId);

#ifdef _MULTI_THREAD
    pthread_mutex_unlock(&(dlgQueue->Lock));
#endif
    if (curDlg == NULLP)
    {
        AUACC_PRINT("AppLiMatDelimInd__________Find dlg %ld failure \n",suDlgId);
    }
    else
    {
        curDlg->auLiMatDelimIndPrs(&qElm);
        if (0)
        {
#if 1
            MaDlgId     auDlgId, maDlgId;
            auDlgId = curDlg->auDlgIdGet();
            maDlgId = curDlg->maDlgIdGet();
#endif

            if (dlgQueue->dlgDelete(curDlg->auDlgIdGet()) != ROK)
            {
                AUACC_PRINT("AppLiMatDelimInd_______dlgDelete failure \
                    auDlgId = %ld maDlgId = %ld\n",
                    auDlgId, maDlgId);
            }
            else
            {
                AUACC_PRINT("AppLiMatDelimInd_______dlgDelete ok \
                    auDlgId = %ld maDlgId = %ld\n",
                    auDlgId, maDlgId);
                RETVALUE(RFAILED);
            }
        }
    }

  RETVALUE(ROK);
} /* AppLiMatDelimInd  */


/*
*
*       Fun:   AppLiMatStatInd
*
*       Desc:  This function packs
*
*       Ret:   ROK
*
*       Notes: None
*
*       File:  layerapp.c
*
*/

#ifdef ANSI
PUBLIC S16 AppLiMatStatInd
(
Pst  *pst,
SuId suId,
MaDlgId suDlgId,
MaInvokeId *invkId,
U8         primType,
Status status
)
#else
PUBLIC S16 AppLiMatStatInd (pst,suId,suDlgId, invkId, primType, status)
Pst  *pst;
SuId suId;
MaDlgId suDlgId;
MaInvokeId *invkId;
U8         primType;
Status status;
#endif
{
    MaAccMsgQElm        qElm;
    Dialog              *curDlg;

    qElm.evtType = MA_EVTSTATIND;
    qElm.suId    = suId;
    qElm.suDlgId = suDlgId;
    qElm.s.statEv.primType = primType;
    qElm.s.statEv.invId.pres = invkId->pres;
    qElm.s.statEv.invId.octet = invkId->octet;

#ifdef _MULTI_THREAD
    pthread_mutex_lock(&(dlgQueue->Lock));
#endif

    curDlg = dlgQueue->dlgFind(suDlgId, AU_ID_NULL);
    
#ifdef _MULTI_THREAD
    pthread_mutex_unlock(&(dlgQueue->Lock));
#endif

    if (curDlg == NULLP)
    {
        AUACC_PRINT("AppLiMatStatInd__________Find dlg %ld failure \n",suDlgId);
    }
    else
    {
        curDlg->auLiMatStaIndPrs(&qElm);
    }

  RETVALUE(ROK);
} /* AppLiMatStatInd  */


/*
*
*       Fun:   AppLiMatSteInd
*
*       Desc:  This function packs
*
*       Ret:   ROK
*
*       Notes: None
*
*       File:  layerapp.c
*
*/

#ifdef ANSI
PUBLIC S16 AppLiMatSteInd
(
Pst  *pst,
SuId suId,
CmSS7SteMgmt *steMgmt
)
#else
PUBLIC S16 AppLiMatSteInd (pst,suId, steMgmt)
Pst  *pst;
SuId suId;
CmSS7SteMgmt *steMgmt;
#endif
{
    if (steMgmt->evntType == EVTSSN_STE_IND)
        AUACC_PRINT("Dialog::auLiMatSteIndPrs---SSN %s,\n pc = %ld, ssn = %d,\
            status = %d, smi = %d\n",
            (steMgmt->mgmt.steInd.uStat == 0x03 ? "OUT OF SERVICE" : "IN SERVICE"),
            steMgmt->mgmt.steInd.aDpc,
            steMgmt->mgmt.steInd.aSsn, steMgmt->mgmt.steInd.uStat,
            steMgmt->mgmt.steInd.smi);
    else if (steMgmt->evntType == EVTPC_STE_IND)
        AUACC_PRINT("Dialog::auLiMatSteIndPrs---PC %s,\n pc = %ld, sps =%d\n",
            (steMgmt->mgmt.PCSteInd.sps == 0x00 ? "ACCESSIBLE" : "INACCESSIBLE"),
            steMgmt->mgmt.PCSteInd.dpc,steMgmt->mgmt.PCSteInd.sps);

    RETVALUE(ROK);
} /* AppLiMatSteInd  */


/*
*
*       Fun:   AppLiMatSteCfm
*
*       Desc:  This function packs
*
*       Ret:   ROK
*
*       Notes: None
*
*       File:  layerapp.c
*
*/

#ifdef ANSI
PUBLIC S16 AppLiMatSteCfm
(
Pst  *pst,
SuId suId,
CmSS7SteMgmt *steMgmt
)
#else
PUBLIC S16 AppLiMatSteCfm (pst,suId, steMgmt)
Pst  *pst;
SuId suId;
CmSS7SteMgmt *steMgmt;
#endif
{
    MaAccMsgQElm        qElm;
/*  Dialog              *curDlg;*/

    qElm.evtType         = MA_EVTSTECFM;
    qElm.suId            = suId;
#if 0
#ifdef _MULTI_THREAD
    pthread_mutex_lock(&(dlgQueue->Lock));
#endif

    curDlg = dlgQueue.dlgFind(suDlgId, spDlgId);
    
#ifdef _MULTI_THREAD
    pthread_mutex_unlock(&(dlgQueue->Lock));
#endif

    if (curDlg == NULLP)
    {
    }
    else
    {
        curDlg->auLiMatSteCfmPrs(&qElm);
    }
#endif
  RETVALUE(ROK);
} /* AppLiMatSteCfm  */


/* ----------------------------------------------------------------- */
/*                 Service Specific Primitives                       */
/* ----------------------------------------------------------------- */

/* --------------- Handover Management ----------------------------- */
#if MAP_MSC

/*
*
*       Fun:   upper interface - Handover Management Indication
*
*       Desc:  This function handles the  indication for Handover
*              services from the MAP user.
*
*       Ret:   ROK      - ok
*
*       Notes: None
*
*       File:  layerapp.c
*
*/

#ifdef ANSI
PUBLIC S16 AppLiMatHOMgmtInd
(
Pst        *pst,            /* post structure */
SuId       suId,            /* service user id */
MaDlgId    suDlgId,         /* Service user dialogue Id */
MaDlgId    spDlgId,         /* Service provider dialogue Id */
MaInvokeId *invkId,         /* Invoke Id */
MaOprType  oprType,         /* Operation type */
MaHoEv     *hoEv            /* Handover Event Structure */
)
#else
PUBLIC S16 AppLiMatHOMgmtInd(pst, suId, suDlgId, spDlgId, invkId, oprType, hoEv)
Pst      *pst;              /* post structure */
SuId     suId;              /* service user id */
MaDlgId  suDlgId;           /* Service user dialogue Id */
MaDlgId  spDlgId;           /* Service provider dialogue Id */
MaInvokeId *invkId;         /* Invoke Id */
MaOprType  oprType;         /* Operation type */
MaHoEv *hoEv;               /* Handover Event Structure */
#endif
{
/* added by Bruce for MAPE 2003/6/16 */
    MaAccMsgQElm  qElm;
    Dialog              *curDlg;
    
    TRC2(AppLiMatHOMgmtInd)
    
    AUACC_PRINT("MAP Handover Management Ind suId %d - SuDlgId %3ld   SpDlgId %3ld Operation %d\n", suId, suDlgId, spDlgId, oprType);
    
    switch(oprType)
    {
        case MA_PRE_HO:
            prehoReq_print(&(hoEv->preHoReq));
            break;
        case MA_PRE_SUBSHO:
            presubhoReq_print(&(hoEv->preSubHoReq));
            break;
        case MA_SNDENDSIG:
            sndendsigReq_print(&(hoEv->sndEndSigReq));
            break;
        case MA_PROCACCSIG:
            procaccsig_print(&(hoEv->procAccSigReq));
            break;
        case MA_FWDACCSIG:
            fwdaccsig_print(&(hoEv->fwdAccSigReq));
            break;    
    }

    qElm.evtType = MA_EVTHOMGMTIND;
    qElm.suId    = suId;
    qElm.suDlgId = suDlgId;
    qElm.spDlgId = spDlgId;
    qElm.s.operEv.invId.pres = invkId->pres;
    qElm.s.operEv.invId.octet = invkId->octet;
    qElm.s.operEv.oprCode = oprType;

#ifdef _MULTI_THREAD
    pthread_mutex_lock(&(dlgQueue->Lock));
#endif

    curDlg = dlgQueue->dlgFind(suDlgId, spDlgId);
    
#ifdef _MULTI_THREAD
    pthread_mutex_unlock(&(dlgQueue->Lock));
#endif

    if(hoEv != NULLP)
    {
        cmCpy((PTR)hoEv, (PTR)&qElm.s.operEv.oprEv.hoEv, sizeof(MaHoEv));
    }
    
    if (curDlg == NULLP)
    {
        AUACC_PRINT("[AppLiMatHOMgmtInd]--Find dlg %ld failure \n",suDlgId);
    }
    else
    {
        curDlg->auLiMatUpLocIndPrs(&qElm);
    }
    RETVALUE(ROK);

} /* end of AppLiMatHOMgmtInd */


/*
*
*       Fun:   upper interface - Handover Management Confirm
*
*       Desc:  This function handles the Confirm for Handover
*              services from the MAP user
*
*       Ret:   ROK      - ok
*
*       Notes: None
*
*       File:  layerapp.c
*
*/

#ifdef ANSI
PUBLIC S16 AppLiMatHOMgmtCfm
(
Pst        *pst,            /* post structure */
SuId       suId,            /* service user id */
MaDlgId    suDlgId,         /* Service user dialogue Id */
MaDlgId    spDlgId,         /* Service provider dialogue Id */
MaInvokeId *invkId,         /* Invoke Id */
MaOprType  oprType,         /* Operation type */
MaUsrErr   *usrErr,         /* User Error */
MaPrvErr   *prvErr,         /* provider Error */
MaHoEv     *hoEv            /* Handover Event Structure */
)
#else
PUBLIC S16 AppLiMatHOMgmtCfm(pst, suId, suDlgId, spDlgId, invkId, oprType, usrErr,prvErr, hoEv)
Pst      *pst;              /* post structure */
SuId     suId;              /* service user id */
MaDlgId  suDlgId;           /* Service user dialogue Id */
MaDlgId  spDlgId;           /* Service provider dialogue Id */
MaInvokeId *invkId;         /* Invoke Id */
MaOprType  oprType;         /* Operation type */
MaUsrErr  *usrErr;          /* User Error */
MaPrvErr  *prvErr;          /* provider Error */
MaHoEv     *hoEv;           /* Handover Event Structure */
#endif
{
    MaAccMsgQElm  qElm;
    
    TRC2(AppLiMatHOMgmtCfm)
    
    AUACC_PRINT("MAP Handover Management Cfm suId %d - SuDlgId %3ld   SpDlgId %3ld Operation %d\n", suId, suDlgId, spDlgId, oprType);
    
    switch(oprType)
    {
        case MA_PRE_HO:
            prehoRsp_print(&(hoEv->preHoRsp));
            break;
        case MA_PRE_SUBSHO:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -