VOS_UINT32 TAF_APS_RcvApsLocalPdpDeactivateInd_Active( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { VOS_UINT8 ucPdpId; TAF_APS_INTER_PDP_DEACTIVATE_REQ_STRU *pstLocalMsg; APS_PDP_CONTEXT_ENTITY_ST *pstPdpEntity; /* 初始化, 获取消息内容 */ pstLocalMsg = (TAF_APS_INTER_PDP_DEACTIVATE_REQ_STRU *)pstMsg; ucPdpId = pstLocalMsg->ucPdpId; pstPdpEntity = TAF_APS_GetPdpEntInfoAddr(ucPdpId); /* 停止流量统计 */ TAF_APS_StopDsFlowStats(pstPdpEntity->ucNsapi); /* 同步PDP状态和信息至ESM */ #if (FEATURE_ON == FEATURE_LTE) MN_APS_SndEsmPdpInfoInd(pstPdpEntity, SM_ESM_PDP_OPT_DEACTIVATE); #endif /* 向SM发送本地去激活请求 */ if (VOS_TRUE == pstPdpEntity->bitOpTransId) { TAF_APS_SndSmPdpLocalDeactivateReq(ucPdpId); } #if (FEATURE_ON == FEATURE_IPV6) /* 如果是缺省承载且地址类型是IPv6, 需要同步给ND Client */ if ( (TAF_APS_CheckPrimaryPdp(ucPdpId)) && (TAF_APS_CheckPdpAddrTypeIpv6(ucPdpId)) ) { TAF_APS_SndNdPdpDeactInd(TAF_APS_GetPdpEntNsapi(ucPdpId)); } #endif /* 如果SNDCP已经激活, 释放SNDCP资源 */ if (APS_SNDCP_ACT == pstPdpEntity->PdpProcTrack.ucSNDCPActOrNot) { Aps_ReleaseSndcpResource(ucPdpId); } /* 上报ID_EVT_TAF_PS_CALL_PDP_DEACTIVATE_IND事件 */ TAF_APS_SndPdpDeActivateInd(ucPdpId, TAF_APS_MapSmCause(pstLocalMsg->enCause)); /* 释放APS资源 */ Aps_ReleaseApsResource(ucPdpId); /* 配置IP过滤器 */ TAF_APS_IpfConfigUlFilter(ucPdpId); /* 主状态迁移至TAF_APS_STA_INACTIVE */ TAF_APS_SetCurrPdpEntityMainFsmState(TAF_APS_STA_INACTIVE); return VOS_TRUE; }
VOS_UINT32 TAF_APS_RcvPsCallEndReq_CdataHandOff_WaitHsmHandOffCnf( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { TAF_PS_MSG_STRU *pstAppMsg; TAF_PS_CALL_END_REQ_STRU *pstCallEndReq; VOS_UINT8 ucPdpId; /* 获取消息内容 */ pstAppMsg = (TAF_PS_MSG_STRU*)pstMsg; pstCallEndReq = (TAF_PS_CALL_END_REQ_STRU*)(pstAppMsg->aucContent); ucPdpId = TAF_APS_GetCurrFsmEntityPdpId(); /* 保存子状态机的入口消息 */ TAF_APS_SaveCurrSubFsmEntryMsg(ulEventType, pstMsg); /* 上报PS呼叫挂断响应事件 */ TAF_APS_SndCallEndCnf(&(pstCallEndReq->stCtrl), pstCallEndReq->ucCid, TAF_PS_CAUSE_SUCCESS); /* 停止保数据服务切换保护定时器 */ TAF_APS_StopTimer(TI_TAF_APS_1X_TO_HRPD_HANDOFF_TIMER, ucPdpId); //To do:暂时按照此流程做,后面参考标杆来做 /* 如果PPP已激活,通知PPP去激活 */ if (TAF_APS_CDATA_PPP_STATE_ACTIVE == TAF_APS_GetPdpEntPppState(ucPdpId)) { TAF_APS_SndPppDeactInd(ucPdpId); } /* 上报去激活的事件 */ TAF_APS_SndPdpDeActivateInd(ucPdpId, TAF_PS_CAUSE_SUCCESS); /* 释放APS资源 */ Aps_ReleaseApsResource(ucPdpId); /* 配置IP过滤 */ TAF_APS_IpfConfigUlFilter(ucPdpId); /* 主状态迁移至TAF_APS_STA_INACTIVE */ TAF_APS_SetCurrPdpEntityMainFsmState(TAF_APS_STA_INACTIVE); /* 退出子状态状态机 */ TAF_APS_QuitCurrSubFsm(); return VOS_TRUE; }