如何分开设定sim卡插卡和拔卡的debounce time
目前MTK的设计,插卡跟拔卡时间是一样的,都是来自于codegen.dws中的配置。
但是有时候客户想插卡和拔卡设定不同的时间,插卡时间可以设置长一些,确保卡放好后再上电,拔卡时可以设短一些,让卡可以及时下电。
这个想法可以实现,修改方法参考如下:
modem侧的代码:custom_sim_driver.c
1. void sim_hot_plug_eint_cb_rm_h_common(kal_uint32 idx, SIM_ICC_APPLICATION app)
{
if (iccHotPlugTable[idx].polarity == LEVEL_HIGH)
{
/* Remove card: polarity LEVEL_HIGH. When interrupt occurs, we should change it to
LEVEL_LOW
otherwise we will alwasy receive interrupt */
iccHotPlugTable[idx].removed = KAL_TRUE;
if (iccHotPlugTable[idx].plugOutcb != NULL)
{
#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
SIM_PlugEvent_Poll_Timer_Cb(app);
#else
iccHotPlugTable[idx].plugOutcb(app);
#ifdef SIM_HOT_SWAP_V2
SIM_PlugEvent_Cb(app);
#endif
#endif
}
#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].removed = KAL_TRUE;
if (iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].plugOutcb != NULL)
{
#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
SIM_PlugEvent_Poll_Timer_Cb(SIM_ICC_APPLICATION_PHONE2);
#else
iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].plugOutcb(SIM_ICC_APPLICATION_PHONE2);
#ifdef SIM_HOT_SWAP_V2
SIM_PlugEvent_Cb(SIM_ICC_APPLICATION_PHONE2);
#endif
#endif
}
#endif
iccHotPlugTable[idx].polarity = LEVEL_LOW;
#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].polarity = LEVEL_LOW;
#endif
kal_sprintf(sim_dbg_custom_str,"[SIM_CUS_DRV:%d]
但是有时候客户想插卡和拔卡设定不同的时间,插卡时间可以设置长一些,确保卡放好后再上电,拔卡时可以设短一些,让卡可以及时下电。
这个想法可以实现,修改方法参考如下:
modem侧的代码:custom_sim_driver.c
1. void sim_hot_plug_eint_cb_rm_h_common(kal_uint32 idx, SIM_ICC_APPLICATION app)
{
if (iccHotPlugTable[idx].polarity == LEVEL_HIGH)
{
/* Remove card: polarity LEVEL_HIGH. When interrupt occurs, we should change it to
LEVEL_LOW
otherwise we will alwasy receive interrupt */
iccHotPlugTable[idx].removed = KAL_TRUE;
if (iccHotPlugTable[idx].plugOutcb != NULL)
{
#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
SIM_PlugEvent_Poll_Timer_Cb(app);
#else
iccHotPlugTable[idx].plugOutcb(app);
#ifdef SIM_HOT_SWAP_V2
SIM_PlugEvent_Cb(app);
#endif
#endif
}
#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].removed = KAL_TRUE;
if (iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].plugOutcb != NULL)
{
#if defined(__SIM_HOT_SWAP_POLL_TIMER__)
SIM_PlugEvent_Poll_Timer_Cb(SIM_ICC_APPLICATION_PHONE2);
#else
iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].plugOutcb(SIM_ICC_APPLICATION_PHONE2);
#ifdef SIM_HOT_SWAP_V2
SIM_PlugEvent_Cb(SIM_ICC_APPLICATION_PHONE2);
#endif
#endif
}
#endif
iccHotPlugTable[idx].polarity = LEVEL_LOW;
#if defined (__DUAL_SIM_HOT_SWAP_CO_DECK_SUPPORT__)
iccHotPlugTable[SIM_ICC_APPLICATION_PHONE2].polarity = LEVEL_LOW;
#endif
kal_sprintf(sim_dbg_custom_str,"[SIM_CUS_DRV:%d]