VOS_VOID MTC_TlRfCtrlModemPowerStateChange(
    MODEM_ID_ENUM_UINT16                enModemId,
    MTC_MODEM_POWER_STATE_ENUM_UINT8    enPowerState
)
{
    /* 主卡关机场景 */
    if ((MODEM_ID_0 == enModemId) && (MTC_MODEM_POWER_OFF == enPowerState))
    {
        MTC_ProcTlRfCtrl(MTC_GetModemSerCellBandInfo(MODEM_ID_0));
        return;
    }

    /* 副卡开机场景 */
    if ((MODEM_ID_1 == enModemId) && (MTC_MODEM_POWER_ON == enPowerState))
    {
        MTC_ProcTlRfCtrl(MTC_GetModemSerCellBandInfo(MODEM_ID_0));
        return;
    }

    /* 副卡关机场景 */
    if ((MODEM_ID_1 == enModemId) && (MTC_MODEM_POWER_OFF == enPowerState))
    {
        MTC_SetTlRfCtrlEnalbeFlag(PS_FALSE);
        return;
    }

    return;
}
PS_BOOL_ENUM_UINT8 MTC_ProcB39B32IntrusionStrategy(VOS_VOID)
{
    RRC_MTC_MS_BAND_INFO_STRU          *pstSerCellBandInfo = VOS_NULL_PTR;
    VOS_UINT32                          ulB39Ret;
    MTC_MODEM_POWER_STATE_ENUM_UINT8    enModem1PowerState;
    TAF_MTC_SRV_CONN_STATE_ENUM_UINT8   enModem0PsState;
    TAF_MTC_SRV_CONN_STATE_ENUM_UINT8   enModem1PsState;
    TAF_MTC_SRV_CONN_STATE_ENUM_UINT8   enModem1CsState;
    TAF_MTC_SRV_CONN_STATE_ENUM_UINT8   enModem0CsState;

    /* 初始化 */
    enModem0PsState     = TAF_MTC_SRV_CONN_STATE_BUTT;
    enModem0CsState     = TAF_MTC_SRV_CONN_STATE_BUTT;
    enModem1PsState     = TAF_MTC_SRV_CONN_STATE_BUTT;
    enModem1CsState     = TAF_MTC_SRV_CONN_STATE_BUTT;
    ulB39Ret            = PS_FALSE;
    enModem1PowerState  = MTC_MODEM_POWER_STATE_BUTT;

    /* 判断modem1是否开机 */
    enModem1PowerState =  MTC_GetModemPowerState(MODEM_ID_1);
    if (MTC_MODEM_POWER_OFF == enModem1PowerState)
    {
        /* 打孔方案不生效 */
        return PS_FALSE;
    }

    /* 判断主卡是否存在B39 */
    pstSerCellBandInfo = MTC_GetModemSerCellBandInfo(MODEM_ID_0);
    ulB39Ret = MTC_BAND_CHECK64(*((VOS_UINT64 *)&(pstSerCellBandInfo->aulBandInfo[0])), MTC_BAND_MASK_B39);
    if (VOS_FALSE == ulB39Ret)
    {
        /* 打孔方案不生效 */
        return PS_FALSE;
    }

    /* 判断主副卡的业务状态 */
    enModem0PsState = MTC_GetPsConnStateInfo(MODEM_ID_0);
    enModem0CsState = MTC_GetCsConnStateInfo(MODEM_ID_0);
    enModem1PsState = MTC_GetPsConnStateInfo(MODEM_ID_1);
    enModem1CsState = MTC_GetCsConnStateInfo(MODEM_ID_1);

    /* 主卡存在CS,则打孔方案不生效 */
    if (TAF_MTC_SRV_EXIST == enModem0CsState)
    {
        return PS_FALSE;
    }

    /* 副卡CS, 则打孔方案生效 */
    if (TAF_MTC_SRV_EXIST == enModem1CsState)
    {
        return PS_TRUE;
    }

    /* 主卡PS,副卡IDLE, 则打孔方案生效 */
    if ( (TAF_MTC_SRV_EXIST == enModem0PsState)
      && ( (TAF_MTC_SRV_EXIST != enModem1CsState)
         && (TAF_MTC_SRV_EXIST != enModem1PsState) ) )
    {
        return PS_TRUE;
    }

    /* 其它情况打孔方案不生效 */
    return PS_FALSE;
}
VOS_VOID MTC_RcvIntrusionBandInfoInd(VOS_VOID * pMsg)
{
    MODEM_ID_ENUM_UINT16                    enModemId;
    MTC_MODEM_INFO_STRU                    *pstModemInfo;
    RRC_MTC_INTRUSION_BAND_INFO_IND_STRU   *pstModemBandInfo;
    MTC_CFG_ENUM_UINT8                      enIntrusionCfg;
    MTC_CFG_ENUM_UINT8                      enNotchCfg;
#if 0
    MTC_CFG_ENUM_UINT8                      enNarrowDcsCfg;
#endif
    pstModemBandInfo    = (RRC_MTC_INTRUSION_BAND_INFO_IND_STRU*)pMsg;
    enModemId           = VOS_GetModemIDFromPid(pstModemBandInfo->stMsgHeader.ulSenderPid);

    /* 检查ModemID有效性,并更新本地全局变量 */
    if (enModemId >= MODEM_ID_BUTT)
    {
        MTC_ERROR1_LOG("MTC_RcvIntrusionBandInfoInd: Err ModemId ", enModemId);
        return;
    }

    pstModemInfo = MTC_GetModemCtxAddr(enModemId);

    PS_MEM_CPY(&pstModemInfo->stCurBandInfo,
               &pstModemBandInfo->stCurBandInfo,
               sizeof(RRC_MTC_MS_BAND_INFO_STRU));

    PS_MEM_CPY(&pstModemInfo->stSerCellBandInfo,
               &pstModemBandInfo->stSerCellBandInfo,
               sizeof(RRC_MTC_MS_BAND_INFO_STRU));

    enIntrusionCfg  = MTC_GetIntrusionCfg();
    enNotchCfg      = MTC_GetNotchCfg();

    /* 将当前MTC上下文上报到SDT */
    MTC_DEBUG_TraceCtxInfo();

    if (MTC_CFG_ENABLE == enIntrusionCfg)
    {
        /* 更新频段信息后,触发干扰控制裁决 */
        MTC_ProcIntrusionStrategy();
    }

    if (MTC_CFG_ENABLE == enNotchCfg)
    {
        /* 更新频段信息后,触发notch控制裁决 */
        MTC_ProcNotchStrategy();
    }
#if 0
    /* 判断Narrow band dcs裁决是否使能 */
    enNarrowDcsCfg = MTC_GetNarrowBandDcsCfg();
    if (MTC_CFG_ENABLE == enNarrowDcsCfg)
    {
        /* 执行Narrow band dcs裁决 */
        MTC_ProcNarrowDcsStrategy();
    }
#endif
    /* TL射频控制开关开启时, 触发干扰控制裁决 */
    if ( (MTC_CFG_ENABLE == MTC_GetTlRfCtrlCfg())
      && (MODEM_ID_0 == enModemId) )
    {
        MTC_ProcTlRfCtrl(MTC_GetModemSerCellBandInfo(enModemId));
    }

    return;
}