/*lint -e960*/
VOS_VOID  NAS_ERABM_SndIpRabmDataInd
(
    VOS_UINT8                           ucEpsbId,
    const VOS_UINT8                    *pucIpMsg,
    VOS_UINT32                          ulIpMsgLen
)
{
    IP_RABM_DATA_IND_STRU              *pstDataInd  = VOS_NULL_PTR;
    VOS_UINT32                          ulTmpLength = NAS_ERABM_NULL;

    /*根据空口消息的长度分配空间*/
    if( NAS_ERABM_NULL == ulIpMsgLen)
    {
        NAS_ERABM_WARN_LOG("NAS_ERABM_SndIpRabmDataInd: WARNING: Msg Length is zero");
        return ;
    }
    else if(ulIpMsgLen > NAS_ERABM_MIN_SND_MSG_LEN)
    {
        ulTmpLength = ulIpMsgLen - NAS_ERABM_MIN_SND_MSG_LEN ;
        pstDataInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(IP_RABM_DATA_IND_STRU) + ulTmpLength);
    }
    else/*如果长度小于NAS_ERABM_MIN_SND_MSG_LEN,分配的空间等于NAS_ERABM_MIN_SND_MSG_LEN*/
    {
        pstDataInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(IP_RABM_DATA_IND_STRU));
    }

    if (VOS_NULL_PTR == pstDataInd)
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndIpRabmDataInd:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(   NAS_ERABM_GET_MSG_ENTITY(pstDataInd),
                        NAS_ERABM_NULL,
                        NAS_ERABM_GET_MSG_LENGTH(pstDataInd));

    /*填写消息头*/
    NAS_ERABM_WRITE_IP_MSG_HEAD(pstDataInd, ID_IP_RABM_DATA_IND);

    /* 填写消息内容 */
    pstDataInd->ucEpsbId = ucEpsbId;
    pstDataInd->stIpMsg.ulIpMsgSize = ulIpMsgLen;

    /*lint -e669*/
    NAS_ERABM_MEM_CPY(   pstDataInd->stIpMsg.aucIpMsg,
                        pucIpMsg,
                        ulIpMsgLen);
    /*lint +e669*/

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstDataInd);
}
VOS_VOID NAS_ERABM_SndErabmCdsRabReleaseInd( VOS_UINT32 ulEpsbId )
{
#if (VOS_OS_VER != VOS_WIN32)

    CDS_ERABM_RAB_RELEASE_IND_STRU  *pstRabReleaseInd = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstRabReleaseInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(CDS_ERABM_RAB_RELEASE_IND_STRU));
    if (VOS_NULL_PTR == pstRabReleaseInd)
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndErabmCdsRabReleaseInd:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(  NAS_ERABM_GET_MSG_ENTITY(pstRabReleaseInd),
                        NAS_ERABM_NULL,
                        NAS_ERABM_GET_MSG_LENGTH(pstRabReleaseInd));

    /*赋值 EpsbId*/
    pstRabReleaseInd->ucRabId = (VOS_UINT8)ulEpsbId;


    /*填写消息头*/
    NAS_ERABM_WRITE_CDS_MSG_HEAD(pstRabReleaseInd,ID_QOS_FC_ERABM_RAB_RELEASE_IND);

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstRabReleaseInd);
#endif
}
VOS_VOID NAS_ERABM_SndErabmCdsFreeBuffDataInd( VOS_VOID )
{

    ERABM_CDS_FREE_BUFF_DATA_IND_STRU  *pstFreeBuffDataInd = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstFreeBuffDataInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(ERABM_CDS_FREE_BUFF_DATA_IND_STRU));
    if (VOS_NULL_PTR == pstFreeBuffDataInd)
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndErabmCdsSndBuffDataInd:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(  NAS_ERABM_GET_MSG_ENTITY(pstFreeBuffDataInd),
                        NAS_ERABM_NULL,
                        NAS_ERABM_GET_MSG_LENGTH(pstFreeBuffDataInd));

    /*填写消息头*/
    NAS_ERABM_WRITE_CDS_MSG_HEAD(pstFreeBuffDataInd,ID_ERABM_CDS_FREE_BUFF_DATA_IND);

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstFreeBuffDataInd);

}
/*lint -e961*/
VOS_VOID NAS_ERABM_SndErabmCdsSndBuffDataInd
(
    CDS_ERABM_SEND_BUFF_DATA_ALLOWED_TYPE_ENUM_UINT32   enSndBuffDataAllowedType
)
{

    ERABM_CDS_SEND_BUFF_DATA_IND_STRU  *pstSndBuffDataInd = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstSndBuffDataInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(ERABM_CDS_SEND_BUFF_DATA_IND_STRU));
    if (VOS_NULL_PTR == pstSndBuffDataInd)
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndErabmCdsSndBuffDataInd:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(  NAS_ERABM_GET_MSG_ENTITY(pstSndBuffDataInd),
                        NAS_ERABM_NULL,
                        NAS_ERABM_GET_MSG_LENGTH(pstSndBuffDataInd));

    /*填写消息头*/
    NAS_ERABM_WRITE_CDS_MSG_HEAD(pstSndBuffDataInd,ID_ERABM_CDS_SEND_BUFF_DATA_IND);

    pstSndBuffDataInd->enSndBuffDataAllowedType = enSndBuffDataAllowedType;

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstSndBuffDataInd);

}
/*****************************************************************************
 Function Name   : NAS_ERABM_SndRabmEmmResumeRsp
 Description     : ESM模块回复ID_EMM_ERABM_RESUME_RSP消息
 Input           : EMM_ERABM_RSLT_TYPE_ENUM_UINT32       enRslt
 Output          : None
 Return          : VOS_VOID

 History         :
    1.lihong00150010      2011-05-03  Draft Enact

*****************************************************************************/
VOS_VOID NAS_ERABM_SndRabmEmmResumeRsp
(
    EMM_ERABM_RSLT_TYPE_ENUM_UINT32      enRslt
)
{
    EMM_ERABM_RESUME_RSP_STRU            *pstRabmEmmResumeRsp  = VOS_NULL_PTR;

    /*分配空间并检验分配是否成功*/
    pstRabmEmmResumeRsp = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(EMM_ERABM_RESUME_RSP_STRU));

    /*检测是否分配成功*/
    if (VOS_NULL_PTR == pstRabmEmmResumeRsp)
    {
        /*打印异常信息*/
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndRabmEmmResumeRsp:ERROR:Alloc Msg fail!");
        return ;
    }

    /*清空*/
    NAS_ERABM_MEM_SET( NAS_ERABM_GET_MSG_ENTITY(pstRabmEmmResumeRsp), 0, NAS_ERABM_GET_MSG_LENGTH(pstRabmEmmResumeRsp));

    /*填写消息头*/
    NAS_ERABM_WRITE_EMM_MSG_HEAD(pstRabmEmmResumeRsp, ID_EMM_ERABM_RESUME_RSP);

    /*填写响应结果*/
    pstRabmEmmResumeRsp->enRslt= enRslt;

    /*调用消息发送函数 */
    NAS_ERABM_SND_MSG(pstRabmEmmResumeRsp);
}
VOS_VOID NAS_ERABM_SndRabmEmmReestReq
(
    VOS_UINT32                          ulIsEmcType
)
{
    EMM_ERABM_REEST_REQ_STRU    *pstReestReq = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstReestReq = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(
                                        sizeof(EMM_ERABM_REEST_REQ_STRU));
    if ( VOS_NULL_PTR == pstReestReq )
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndRabmEmmReestReq:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(NAS_ERABM_GET_MSG_ENTITY(pstReestReq), NAS_ERABM_NULL,\
                     NAS_ERABM_GET_MSG_LENGTH(pstReestReq));

    /*填写消息头*/
    NAS_ERABM_WRITE_EMM_MSG_HEAD(pstReestReq, ID_EMM_ERABM_REEST_REQ);
	/* lihong00150010 emergency tau&service begin */
    pstReestReq->ulIsEmcType = ulIsEmcType;
	/* lihong00150010 emergency tau&service end */
    /* 调用消息发送函数 */
    NAS_ERABM_SND_MSG(pstReestReq);

}
VOS_VOID NAS_ERABM_SndErabmCdsRabCreatInd( VOS_UINT32 ulEpsbId )
{
#if (VOS_OS_VER != VOS_WIN32)

    CDS_ERABM_RAB_CREATE_IND_STRU  *pstRabCreatInd = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstRabCreatInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(CDS_ERABM_RAB_CREATE_IND_STRU));

    if (VOS_NULL_PTR == pstRabCreatInd)
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndErabmCdsRabCreatInd:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(  NAS_ERABM_GET_MSG_ENTITY(pstRabCreatInd),
                        NAS_ERABM_NULL,
                        NAS_ERABM_GET_MSG_LENGTH(pstRabCreatInd));

    /* 赋值QCI */
    pstRabCreatInd->enQci = NAS_ERABM_GetEpsbQCI(ulEpsbId);


    /*赋值 EpsbId及关联EPsbId */
    pstRabCreatInd->ucRabId = (VOS_UINT8)ulEpsbId;
    if (ESM_ERABM_BEARER_TYPE_DEDICATED == NAS_ERABM_GetEpsbBearerType(ulEpsbId))
    {
        pstRabCreatInd->ucLinkRabId = (VOS_UINT8)NAS_ERABM_GetEpsbLinkedEpsbId(ulEpsbId);
    }
    else
    {
        pstRabCreatInd->ucLinkRabId = pstRabCreatInd->ucRabId;
    }

    /*填写消息头*/
    NAS_ERABM_WRITE_CDS_MSG_HEAD(pstRabCreatInd,ID_QOS_FC_ERABM_RAB_CREATE_IND);

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstRabCreatInd);
#endif
}
VOS_VOID NAS_ERABM_SndRabmEmmRelReq( VOS_VOID)
{
    EMM_ERABM_REL_REQ_STRU    *pstRelReq  = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstRelReq = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(EMM_ERABM_REL_REQ_STRU));
    if ( VOS_NULL_PTR == pstRelReq )
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndRabmEmmRelReq:ERROR:Alloc msg fail!" );
        return;
    }

    NAS_ERABM_MEM_SET(NAS_ERABM_GET_MSG_ENTITY(pstRelReq), NAS_ERABM_NULL,\
                     NAS_ERABM_GET_MSG_LENGTH(pstRelReq));

    /*填写消息头*/
    NAS_ERABM_WRITE_EMM_MSG_HEAD(pstRelReq, ID_EMM_ERABM_REL_REQ);

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstRelReq);

}
/*****************************************************************************
 Function Name   : NAS_ERABM_SndRabmTcResumeInd
 Description     : ERABM模块向ETC发送ID_ETC_ERABM_RESUME_IND消息
 Input           : None
 Output          : None
 Return          : VOS_VOID

 History         :
    1.lihong00150010      2011-05-03  Draft Enact

*****************************************************************************/
VOS_VOID NAS_ERABM_SndRabmTcResumeInd( VOS_VOID )
{
    ETC_ERABM_RESUME_IND_STRU            *pstRabmTcResumeInd  = VOS_NULL_PTR;

    /*分配空间并检验分配是否成功*/
    pstRabmTcResumeInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(sizeof(ETC_ERABM_RESUME_IND_STRU));

    /*检测是否分配成功*/
    if (VOS_NULL_PTR == pstRabmTcResumeInd)
    {
        /*打印异常信息*/
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndRabmTcResumeInd:ERROR:Alloc Msg fail!");
        return ;
    }

    /*清空*/
    NAS_ERABM_MEM_SET( NAS_ERABM_GET_MSG_ENTITY(pstRabmTcResumeInd), 0, NAS_ERABM_GET_MSG_LENGTH(pstRabmTcResumeInd));

    /*填写消息头*/
    NAS_ERABM_WRITE_TC_MSG_HEAD(pstRabmTcResumeInd, ID_ETC_ERABM_RESUME_IND);

    /*调用消息发送函数 */
    NAS_ERABM_SND_MSG(pstRabmTcResumeInd);
}
VOS_VOID NAS_ERABM_SndRabmEmmDrbSetupInd( VOS_VOID )
{
    EMM_ERABM_DRB_SETUP_IND_STRU    *pstDrbSetInd = VOS_NULL_PTR;

    /*分配空间和检测是否分配成功*/
    pstDrbSetInd = (VOS_VOID*)NAS_ERABM_ALLOC_MSG(
                                        sizeof(EMM_ERABM_DRB_SETUP_IND_STRU));
    if ( VOS_NULL_PTR == pstDrbSetInd )
    {
        NAS_ERABM_ERR_LOG("NAS_ERABM_SndRabmEmmDrbSetupInd:ERROR:Alloc msg fail!" );
        return;
    }

    /*清空*/
    NAS_ERABM_MEM_SET(NAS_ERABM_GET_MSG_ENTITY(pstDrbSetInd), NAS_ERABM_NULL,\
                     NAS_ERABM_GET_MSG_LENGTH(pstDrbSetInd));

    /*填写消息头*/
    NAS_ERABM_WRITE_EMM_MSG_HEAD(pstDrbSetInd, ID_EMM_ERABM_DRB_SETUP_IND);

    /* 调用消息发送函数*/
    NAS_ERABM_SND_MSG(pstDrbSetInd);

}