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);
}