Call fail时retry机制介绍
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
当Call拨打时,若遇到失败,Modem会视情形进行retry。
详细过程是怎样的呢?
[SOLUTION]
详细过程如下:
1 拨打Common Call: ATDxxxxx;
1.1 Call建立失败: MOD_CSM->MOD_L4C: MSG_ID_L4CCSM_CC_CALL_SETUP_CNF
1.2 根据失败cause判断是否要retry:
l4ccsm_cc_call_setup_cnf_hdlr()
-> l4ccsm_cc_call_setup_cnf_aux_hdlr()
-> l4c_need_retry(cause) //这里的retry条件为mtk自定义,可根据需要修改。
1.3若需要retry,则启动timer,以CM_RETRY_TIMER为周期、MAX_CM_RETRY_COUNT为上限进行retry建立call。
1.4 CM_RETRY_TIMER的值不能超过255,否则无效。
2 拨打ECC Call: ATDExxxxx;
2.1 ECC Call建立失败: MOD_CSM->MOD_L4C:
MSG_ID_L4CCSM_CC_EMERGENCY_CALL_SETUP_CNF
2.2根据失败cause判断是否要更换RAT(切换2/3 G) 来retry:
l4ccsm_cc_call_setup_cnf_hdlr()
-> l4ccsm_cc_call_setup_cnf_aux_hdlr()
-> l4c_need_retry_other_rat(cause)
2.3需要切换RAT来继续ECC retry对应的option是 ECC_RETRY_ENHANCEMENT, 需要申请flavor build 打开此宏。
2.4 若需要retry other RAT,则dereg 当前RAT,切换到另一个RAT,再拨打电话。
2.4.1 切换到另一个RAT之后只会retry一次,不会以MAX_CM_RETRY_COUNT为retry次数
2.4.2 若拨通,则挂断后再切回原来的RAT。
2.4.3若仍然失败,则切回原来的RAT。
2.5 若不需要retry other RAT,则其余flow同1.3 。
当Call拨打时,若遇到失败,Modem会视情形进行retry。
详细过程是怎样的呢?
[SOLUTION]
详细过程如下:
1 拨打Common Call: ATDxxxxx;
1.1 Call建立失败: MOD_CSM->MOD_L4C: MSG_ID_L4CCSM_CC_CALL_SETUP_CNF
1.2 根据失败cause判断是否要retry:
l4ccsm_cc_call_setup_cnf_hdlr()
-> l4ccsm_cc_call_setup_cnf_aux_hdlr()
-> l4c_need_retry(cause) //这里的retry条件为mtk自定义,可根据需要修改。
1.3若需要retry,则启动timer,以CM_RETRY_TIMER为周期、MAX_CM_RETRY_COUNT为上限进行retry建立call。
1.4 CM_RETRY_TIMER的值不能超过255,否则无效。
2 拨打ECC Call: ATDExxxxx;
2.1 ECC Call建立失败: MOD_CSM->MOD_L4C:
MSG_ID_L4CCSM_CC_EMERGENCY_CALL_SETUP_CNF
2.2根据失败cause判断是否要更换RAT(切换2/3 G) 来retry:
l4ccsm_cc_call_setup_cnf_hdlr()
-> l4ccsm_cc_call_setup_cnf_aux_hdlr()
-> l4c_need_retry_other_rat(cause)
2.3需要切换RAT来继续ECC retry对应的option是 ECC_RETRY_ENHANCEMENT, 需要申请flavor build 打开此宏。
2.4 若需要retry other RAT,则dereg 当前RAT,切换到另一个RAT,再拨打电话。
2.4.1 切换到另一个RAT之后只会retry一次,不会以MAX_CM_RETRY_COUNT为retry次数
2.4.2 若拨通,则挂断后再切回原来的RAT。
2.4.3若仍然失败,则切回原来的RAT。
2.5 若不需要retry other RAT,则其余flow同1.3 。