VOS_VOID SSA_ReportErrorEvent( VOS_UINT16 ClientId, VOS_UINT8 OpId, TAF_SS_ERROR ErrorCode ) { TAF_SS_CALL_INDEPENDENT_EVENT_STRU *pstSsEvent = VOS_NULL_PTR; pstSsEvent = (TAF_SS_CALL_INDEPENDENT_EVENT_STRU *)PS_MEM_ALLOC(WUEPS_PID_SS, sizeof(TAF_SS_CALL_INDEPENDENT_EVENT_STRU)); if (VOS_NULL_PTR == pstSsEvent) { SSA_LOG( ERROR_PRINT, "TAF_SSA_ReportEvtError: Alloc Mem Fail"); return; } /* 出错事件的OP项初始化 */ PS_MEM_SET(pstSsEvent, 0, sizeof(VOS_UINT32)); pstSsEvent->OP_Error = VOS_TRUE; pstSsEvent->SsEvent = TAF_SS_EVT_ERROR; pstSsEvent->ClientId = ClientId; pstSsEvent->OpId = OpId; pstSsEvent->ErrorCode = ErrorCode; TAF_SsEventReport(pstSsEvent); PS_MEM_FREE(WUEPS_PID_SS, pstSsEvent); return; }
VOS_VOID TAF_SSA_WaitAppRspTimerExpired(VOS_UINT8 ucTi) { TAF_SS_CALL_INDEPENDENT_EVENT_STRU *pstSsEvent; pstSsEvent = (TAF_SS_CALL_INDEPENDENT_EVENT_STRU *)PS_MEM_ALLOC(WUEPS_PID_SS, sizeof(TAF_SS_CALL_INDEPENDENT_EVENT_STRU)); if (VOS_NULL_PTR == pstSsEvent) { SSA_LOG( ERROR_PRINT, "TAF_SSA_WaitAppRspTimerExpired:ERROR: Alloc Mem Fail"); return; } /*察看状态表中当前Ti的相关参数,确定Ti的参数是否有误*/ if (SSA_IDLE == gastSsaStatetable[ucTi].ucState) { /*打印异常信息*/ SSA_LOG(WARNING_PRINT, "TAF_SSA_WaitAppRspTimerExpired:WARNING: Timer out,but Ti not exist"); PS_MEM_FREE(WUEPS_PID_SS, pstSsEvent); return; } /*向网络侧发送Release Complete消息,并告知原因,与UE 1.5的超时 处理类似, 向APP进行事件上报*/ PS_MEM_SET(pstSsEvent, 0, sizeof(TAF_SS_CALL_INDEPENDENT_EVENT_STRU)); pstSsEvent->SsEvent = TAF_SS_EVT_ERROR; pstSsEvent->OP_Error = 1; pstSsEvent->ClientId = gastSsaStatetable[ucTi].ClientId; pstSsEvent->OpId = gastSsaStatetable[ucTi].OpId; /* 填写ErrorCode,如果当前有UE主动发起的连接,并且网络超时,ErrorCode需要填成特殊的原因值 AT上报+CUSD: 5时会用到;其他情况下ErrorCode为TAF_ERR_TIME_OUT */ if (TAF_SSA_USSD_MT_CONN_STATE == gastSsaStatetable[ucTi].ucUssdFlag) { pstSsEvent->ErrorCode = TAF_ERR_USSD_USER_TIMEOUT; } else { pstSsEvent->ErrorCode = TAF_ERR_TIME_OUT; } TAF_SsEventReport(pstSsEvent); PS_MEM_FREE(WUEPS_PID_SS, pstSsEvent); SSA_ReturnError(0, ucTi, TAF_SS_MSG_TYPE_RLCOMPLETE,SS_CAUSE_RECOVERY_TIMER_EXPIRY); }