Beispiel #1
0
VOS_VOID SMR_TimerTr1mExpire()
{
    /* 停止timer TR1M */
    SMS_LOG( PS_PRINT_NORMAL, "SMS:SMR_TimerTr1mExpire: TimerStop: TR1M" );
    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_TR1M ) )
    {
        return;
    }

    if ( SMR_WAIT_FOR_RP_ACK == g_SmrEnt.SmrMo.ucState )
    {
        if ( SMS_TRUE == g_SmrEnt.SmrMo.ucMemAvailFlg )
        {                                                                       /*是内存通知过程                            */
            SMR_MemNotifyRetrans(SMR_SMT_ERROR_TR1M_TIMEOUT, VOS_NULL_PTR, 0);         /* 调用重发过程的处理                       */

            if (SMR_IDLE == g_SmrEnt.SmrMo.ucState)
            {
                SMC_SmrApiRelReq(SMR_SMC_REL_CAUSE_NORMAL, SMS_FALSE );             /* 释放当前正在建立的消息的资源 */
            }

        }
        else
        {
            SMC_SmrApiAbortReq(SMR_SMC_ABORT_CAUSE_TR1M_EXP);                   /* 向网侧报错                               */

            PS_LOG(WUEPS_PID_SMS, VOS_NULL, PS_PRINT_NORMAL, "SMR_TimerTr1mExpire:NORMAL:SMS state = SMR_IDLE");
            g_SmrEnt.SmrMo.ucState = SMR_IDLE;                                  /* 进入空闲                                 */

            SMS_SendMnReportReq(SMR_SMT_ERROR_TR1M_TIMEOUT, VOS_NULL_PTR, 0);

        }
    }
}
Beispiel #2
0
VOS_VOID SMR_TimerTr2mExpire()
{
    /* 停止timer TR2M */
    SMS_LOG( PS_PRINT_NORMAL, "SMS:SMR_TimerTr2mExpire: TimerStop: TR2M" );
    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_TR2M ) )
    {
        return;
    }

    /* g_SmrEnt.SmrMt.TimerInfo.ucTimerSta = SMS_TIMER_STATUS_STOP; */
    if (SMR_WAIT_TO_SND_RP_ACK == g_SmrEnt.SmrMt.ucState)
    {
        SMC_SmrApiAbortReq( SMR_SMC_ABORT_CAUSE_TR2M_EXP );                     /* 发送MNSMS_ABORT_REQ                      */
        /* SMR_MkSndReportError( g_SmrEnt.SmrMt.ucMr,SMR_ERR_CAUSE_TEMP_FAILURE );  发送SMRL_REPORT_IND                      */
        /*定时器超时后,还没有响应,通知AT修改+CNMI命令参数<mt>和<ds>置为0*/
        SMS_SendMnMtErrInd(SMR_SMT_ERROR_TR2M_TIMEOUT);
        PS_LOG(WUEPS_PID_SMS, VOS_NULL, PS_PRINT_NORMAL, "SMR_TimerTr2mExpire:NORMAL:SMS state = SMR_IDLE");
        g_SmrEnt.SmrMt.ucState = SMR_IDLE;                                      /* 状态迁移到空闲状态                       */
    }
}
Beispiel #3
0
/*******************************************************************************
Module:   SMR_TimerTramExpire
Function: TRAM定时器溢出处理
Input:
Output:
NOTE:
Return:   VOS_VOID
History:
1.   张志勇   2004.03.10   新规作成
2.
*******************************************************************************/
VOS_VOID SMR_TimerTramExpire()
{
    VOS_UINT8     ErrData[3];    /*A32D00461,zzy,pclint*/                                                    /* 定义临时指向RP_SMMA的指针                */

    /* 停止timer TRAM */
    SMS_LOG( PS_PRINT_NORMAL, "SMS:SMR_TimerTramExpire: TimerStop: TRAM" );
    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_TRAM ) )
    {
        return;
    }

    /* g_SmrEnt.SmrMo.aTimerInfo[1].ucTimerSta = SMS_TIMER_STATUS_STOP; */

    if ( SMR_WAIT_FOR_RETRANS_TIMER == g_SmrEnt.SmrMo.ucState )
    {
        g_SmrEnt.SmrMo.ucRetransFlg = SMR_RETRANS_PROCESS;                      /* 将实体内的RetransFlg置为SMR_RETRANS_PROC
                                                                                 * ESS                                      */
        ErrData[0] = 2;                                                    /* 填写RP_SMMA的消息长度                    */
        ErrData[1] = SMR_MTN_DATA_TYPE_RP_SMMA;                            /* 填写RP_SMMA的消息类型                    */
        g_SmrEnt.SmrMo.ucMr = ++g_ucSmsMR;
        ErrData[2] = g_SmrEnt.SmrMo.ucMr;                              /* 填写RP_SMMA的MR                          */

        SMC_SmrApiEstReq(g_ucCurSendDomain,ErrData,3);                                           /* 发送MNSMS_EST_REQ                        */

        /* 启动定时器TR1M */
        SMS_LOG( PS_PRINT_NORMAL, "SMS:SMR_TimerTramExpire: TimerStart: TR1M" );
        if ( SMS_FALSE == SMS_TimerStart( SMC_TIMER_ID_TR1M ) )
        {
            return;
        }

        /* g_SmrEnt.SmrMo.aTimerInfo[0].ucTimerSta = SMS_TIMER_STATUS_RUN; */

        g_SmrEnt.SmrMo.ucState                  = SMR_WAIT_FOR_RP_ACK;          /* 状态迁移到SMR_WAIT_FOR_RP_ACK状态        */
    }
}
VOS_VOID SMS_Poweroff(VOS_VOID)
{
    /*停止所有定时器*/
    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_PS_TC1M_MO ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_PS_TC1M_MO Timer stop fails" );
    }

    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_PS_TC1M_MT ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_PS_TC1M_MT Timer stop fails" );
    }


    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_CS_TC1M_MO ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_CS_TC1M_MO Timer stop fails" );
    }


    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_CS_TC1M_MT ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_CS_TC1M_MO Timer stop fails" );
    }

    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_TR1M ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_TR1M Timer stop fails" );
    }


    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_TR2M ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_TR2M Timer stop fails" );
    }


    if ( SMS_FALSE == SMS_TimerStop( SMC_TIMER_ID_TRAM ) )
    {
        SMS_LOG( PS_LOG_LEVEL_ERROR,
                 "SMS:SMS_Poweroff: SMC_TIMER_ID_TRAM Timer stop fails" );
    }

    /*释放所有正在进行的短信发送或接受过程*/
    g_ucCsRegFlg = SMS_FALSE;                                                   /* 记录此状态                               */

    SMC_ComCsMtErr(SMR_SMT_ERROR_NO_SERVICE, g_SmcCsEnt.SmcMt.ucTi);                                   /* 调用CS域MT实体的处理                     */

    SMC_ComCsMoErr(SMR_SMT_ERROR_NO_SERVICE, g_SmcCsEnt.SmcMo.ucTi);                         /* 调用CS域MO实体的处理                     */

    if (SMS_TRUE == g_SmcCsEnt.SmcMo.ucCpAckFlg)
    {                                                                   /* TI相等                                   */
        g_SmcCsEnt.SmcMo.ucCpAckFlg = SMS_FALSE;
        SMS_SendMnMoLinkCloseInd();
    }

    g_ucPsServiceStatus = SMS_FALSE;                                            /* 记录此状态                               */

    SMC_ComPsMtErr(SMR_SMT_ERROR_NO_SERVICE);                                  /* 调用PS域MT实体的处理                     */
    SMC_ComPsMoErr(SMR_SMT_ERROR_NO_SERVICE);                                  /* 调用PS域MO实体的处理                     */

    if (SMS_TRUE == g_SmcPsEnt.SmcMo.ucCpAckFlg)
    {                                                                   /* TI相等                                   */
        g_SmcPsEnt.SmcMo.ucCpAckFlg = SMS_FALSE;
        SMS_SendMnMoLinkCloseInd();
    }


#ifdef DMT
    SMS_InitEntity();
#endif

    return;
}