VOS_VOID MTC_ProcNarrowDcsStrategy(VOS_VOID)
{
    MTC_MODEM_POWER_STATE_ENUM_UINT8        enGModemPowerState;
#if 0
    MTC_INTRUSION_GSM_BAND_STATE_ENUM_UINT8 enGsmBandState;
    PS_BOOL_ENUM_UINT8                      enWithB31Flag;
    PS_BOOL_ENUM_UINT8                      enWithB32Flag;
#endif
    enGModemPowerState  = MTC_GetModemPowerState(MODEM_ID_1);

    /* G modem未开机时 */
    if (MTC_MODEM_POWER_ON != enGModemPowerState)
    {
        /* 去使能Narrow band dcs */
        MTC_ChangeNarrowBandDcsState(PS_FALSE);
        return;
    }
    else
    {
        MTC_ChangeNarrowBandDcsState(PS_TRUE);
        return;
    }
#if 0
    /* 获取G modem的频段状态 */
    enGsmBandState      = MTC_GetModem1GsmBandState();

    /* 不存在任何频段 */
    if (MTC_INTRUSION_GSM_BAND_NONE == enGsmBandState)
    {
        /* 去使能Narrow band dcs */
        MTC_ChangeNarrowBandDcsState(PS_FALSE);
        return;
    }

    /* 1. 仅存在频段B31,需要Narrow Band Dcs
       2. 存在频段B31以及其他频段,需要Narrow Band Dcs
     */
    enWithB31Flag = MTC_CheckGsmWithB31(MTC_GetModemCurBandInfo(MODEM_ID_1));
    enWithB32Flag = MTC_CheckGsmWithB32(MTC_GetModemCurBandInfo(MODEM_ID_1));

    /* 存在B31且不存在B32的场景下,需要Narrow Band Dcs */
    if ((PS_TRUE  == enWithB31Flag)
     && (PS_FALSE == enWithB32Flag))
    {
        /* 使能Narrow band dcs */
        MTC_ChangeNarrowBandDcsState(PS_TRUE);
    }
    else
    {
        /* 去使能Narrow band dcs */
        MTC_ChangeNarrowBandDcsState(PS_FALSE);
    }
    return;
#endif
}
VOS_VOID MTC_ProcNotchStrategy(VOS_VOID)
{
    MTC_MODEM_POWER_STATE_ENUM_UINT8        enModem0PowerState;
    MTC_MODEM_POWER_STATE_ENUM_UINT8        enModem1PowerState;
    MTC_INTRUSION_GSM_BAND_STATE_ENUM_UINT8 enGsmBandState;
    MTC_INTRUSION_TL_BAND_STATE_ENUM_UINT8  enTLBandState;
    PS_BOOL_ENUM_UINT8                      enWithB3Flag;
    PS_BOOL_ENUM_UINT8                      enWithB34B39Flag;

    /* 获取Modem0与Modem1的开机状态 */
    enModem0PowerState  = MTC_GetModemPowerState(MODEM_ID_0);
    enModem1PowerState  = MTC_GetModemPowerState(MODEM_ID_1);
    if ( (MTC_MODEM_POWER_ON != enModem0PowerState)
      || (MTC_MODEM_POWER_ON != enModem1PowerState) )
    {
        /* 两个Modem未同时开机时需要复位Notch功能 */
        MTC_ChangeNotchState(PS_FALSE);
        return;
    }

    /* 两个Modem同时开机,但其中一个或两个Modem不存在任何频段,需要使能Notch */
    enGsmBandState  = MTC_GetModem1GsmBandState();
    enTLBandState   = MTC_GetModem0TLBandState();
    if ( (MTC_INTRUSION_GSM_BAND_NONE == enGsmBandState)
      || (MTC_INTRUSION_TL_BAND_NONE == enTLBandState) )
    {
        MTC_ChangeNotchState(PS_TRUE);
        return;
    }

    enWithB3Flag     = MTC_CheckGsmWithB3(MTC_GetModemCurBandInfo(MODEM_ID_1));
    enWithB34B39Flag = MTC_CheckTLWithB34B39(MTC_GetModemCurBandInfo(MODEM_ID_0));

    /* GSM B3和TL B34/B39同时存在时需要使能Notch,否则复位Notch */
    if (PS_TRUE == (enWithB3Flag & enWithB34B39Flag))
    {
        MTC_ChangeNotchState(PS_TRUE);
    }
    else
    {
        MTC_ChangeNotchState(PS_FALSE);
    }

    return;
}
VOS_VOID MTC_DEBUG_TraceNotchInfo(VOS_VOID)
{
    MTC_MSG_BUF_STRU                   *pstBufAddr          = VOS_NULL_PTR;
    RRC_MTC_MS_BAND_INFO_STRU          *pstBandInfo         = VOS_NULL_PTR;
    RRC_MTC_MS_BAND_INFO_STRU          *pstNcellBandInfo    = VOS_NULL_PTR;
    MTC_DEBUG_ALL_MODEM_NOTCH_INFO_STRU stDebugNotchInfo;
    MODEM_ID_ENUM_UINT16                enModemId;

    PS_MEM_SET(&stDebugNotchInfo, 0x0, sizeof(MTC_DEBUG_ALL_MODEM_NOTCH_INFO_STRU));

    /*  填写消息头 */
    MTC_DEBUG_CFG_MSG_HDR(&stDebugNotchInfo.stMsgHeader,
                            UEPS_PID_MTC, UEPS_PID_MTC,
                            sizeof(MTC_DEBUG_ALL_MODEM_NOTCH_INFO_STRU) - VOS_MSG_HEAD_LENGTH);

    stDebugNotchInfo.stMsgHeader.ulMsgName  = ID_DEBUG_MTC_NOTCH_INFO;

    for (enModemId = 0; enModemId < MODEM_ID_BUTT; enModemId++)
    {
        pstBufAddr          = MTC_GetBufAddr(enModemId);
        pstBandInfo         = MTC_GetModemCurBandInfo(enModemId);
        pstNcellBandInfo    = MTC_GetModemNCellBandInfo(enModemId);

        PS_MEM_CPY(&stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBandInfo, pstBandInfo, sizeof(RRC_MTC_MS_BAND_INFO_STRU));
        PS_MEM_CPY(&stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufBandInfo.stModemBandInfo,
                   &pstBufAddr->stBufBandInfoMsg.stIntrusionBandInfoMsg.stCurBandInfo,
                   sizeof(RRC_MTC_MS_BAND_INFO_STRU));
        PS_MEM_CPY(&stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufNCellFreqInfo.stLteNcellFreqInfo,
                   &pstBufAddr->stBufUsingFreqInfoMsg.stUsingFreqInfoMsg.stLteFreqInfo,
                   sizeof(RRC_MTC_LTE_NCELL_INFO_STRU));

        PS_MEM_CPY(&stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufNCellFreqInfo.stTdsNcellFreqInfo,
                   &pstBufAddr->stBufUsingFreqInfoMsg.stUsingFreqInfoMsg.stTdsFreqInfo,
                   sizeof(RRC_MTC_TDS_NCELL_INFO_STRU));

        stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufNCellFreqInfo.ucBufNcellBandFlag  = pstBufAddr->stBufUsingFreqInfoMsg.enExitBufMsgFlag;
        stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufNCellFreqInfo.ulSndPid            = pstBufAddr->stBufUsingFreqInfoMsg.stUsingFreqInfoMsg.stMsgHeader.ulSenderPid;
        stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufBandInfo.ucBufBandInfoFlag        = pstBufAddr->stBufBandInfoMsg.enExitBufMsgFlag;
        stDebugNotchInfo.stModemNotchInfo[enModemId].stModemBufInfo.stBufBandInfo.ulSndPid                 = pstBufAddr->stBufBandInfoMsg.stIntrusionBandInfoMsg.stMsgHeader.ulSenderPid;

        PS_MEM_CPY(&stDebugNotchInfo.stModemNotchInfo[enModemId].stModemNcellBandInfo, pstNcellBandInfo,sizeof(RRC_MTC_MS_BAND_INFO_STRU));
    }

    /* 发送消息 */
    MTC_DEBUG_TraceEvent(&stDebugNotchInfo);

    return;

}
MTC_INTRUSION_TL_BAND_STATE_ENUM_UINT8 MTC_GetModem0TLBandState(VOS_VOID)
{
    RRC_MTC_MS_BAND_INFO_STRU          *pulBandInfo = VOS_NULL_PTR;

    pulBandInfo = MTC_GetModemCurBandInfo(MODEM_ID_0);

    /* 通过读取Bit位获取当前Band状态 */
    if ( (0 == pulBandInfo->aulBandInfo[0])
      && (0 == pulBandInfo->aulBandInfo[1]) )
    {
        return MTC_INTRUSION_TL_BAND_NONE;
    }
    else if (0 != (pulBandInfo->aulBandInfo[1] & (1 << MTC_BAND_B39_BIT)))
    {
        return MTC_INTRUSION_TL_BAND_WITH_B39;
    }
    else
    {
        return MTC_INTRUSION_TL_BAND_WITHOUT_B39;
    }

}
MTC_INTRUSION_GSM_BAND_STATE_ENUM_UINT8 MTC_GetModem1GsmBandState(VOS_VOID)
{
    VOS_UINT32                          ulLoop;
    VOS_UINT32                          ulLineNum;
    VOS_UINT8                           ucBand31;
    VOS_UINT8                           ucBand32;
    VOS_UINT8                           ucBandOther;
    RRC_MTC_MS_BAND_INFO_STRU          *pulBandInfo = VOS_NULL_PTR;
    MTC_INTRUSION_GSM_BAND_STATE_ENUM_UINT8 enGsmBandState;

    pulBandInfo = MTC_GetModemCurBandInfo(MODEM_ID_1);

    /* 通过读取Bit位获取当前Band状态 */
    if (0 != (pulBandInfo->aulBandInfo[0] & (1 << MTC_BAND_B31_BIT)))
    {
        ucBand31 = VOS_TRUE;
    }
    else
    {
        ucBand31 = VOS_FALSE;
    }

    if (0 != (pulBandInfo->aulBandInfo[0] & ((VOS_UINT32)1 << MTC_BAND_B32_BIT)))
    {
        ucBand32 = VOS_TRUE;
    }
    else
    {
        ucBand32 = VOS_FALSE;
    }

    if ( (0 != (pulBandInfo->aulBandInfo[0] & MTC_BAND_WITHOUT_B3))
      || (0 != pulBandInfo->aulBandInfo[1]) )
    {
        ucBandOther = VOS_TRUE;
    }
    else
    {
        ucBandOther = VOS_FALSE;
    }

    /* 通过查表获取当前GSM频段状态 */
    enGsmBandState  = MTC_INTRUSION_GSM_BAND_STATE_BUTT;
    ulLineNum       = sizeof(g_stMtcIntrusionGsmBandStateTbl) / sizeof(MTC_INTRUSION_GSM_BAND_STATE_STRU);

    for (ulLoop = 0; ulLoop < ulLineNum; ulLoop++)
    {
        if (g_stMtcIntrusionGsmBandStateTbl[ulLoop].ucBand31 != ucBand31)
        {
            continue;
        }

        if (g_stMtcIntrusionGsmBandStateTbl[ulLoop].ucBand32 != ucBand32)
        {
            continue;
        }

        if (g_stMtcIntrusionGsmBandStateTbl[ulLoop].ucBandOther != ucBandOther)
        {
            continue;
        }

        enGsmBandState = g_stMtcIntrusionGsmBandStateTbl[ulLoop].enGsmBandState;

        break;
    }

    return enGsmBandState;
}