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); } } }
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; /* 状态迁移到空闲状态 */ } }
/******************************************************************************* 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; }