| /***************************************************************************** |
| * Copyright Statement: |
| * -------------------- |
| * This software is protected by Copyright and the information contained |
| * herein is confidential. The software may not be copied and the information |
| * contained herein may not be used or disclosed except with the written |
| * permission of MediaTek Inc. (C) 2005 |
| * |
| * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| * |
| * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| * |
| * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| * |
| *****************************************************************************/ |
| |
| /***************************************************************************** |
| * |
| * Filename: |
| * --------- |
| * l1_dm.h |
| * |
| * Project: |
| * -------- |
| * Maui_Software |
| * |
| * Description: |
| * ------------ |
| * This file is for the dual mode operation. |
| * |
| * Author: |
| * ------- |
| * ------- |
| * |
| *============================================================================ |
| * HISTORY |
| * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! |
| *------------------------------------------------------------------------------ |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| * removed! |
| * |
| * removed! |
| * removed! |
| * removed! |
| *------------------------------------------------------------------------------ |
| * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! |
| *============================================================================ |
| ****************************************************************************/ |
| |
| #ifndef L1_DM_H |
| #define L1_DM_H |
| |
| #include "l1_surround_private.h" |
| #include "common_reg.h" |
| #include "l1d_data_l1core.h" |
| #include "l1d_cid.h" |
| #include "l1_types.h" |
| #include "l1_core_private.h" |
| #include "mph_types.h" |
| #include "tool.h" |
| #include "kal_general_types.h" |
| #include "mll1_gsm.h" |
| #include "gmss_public.h" |
| |
| /****************************** enum begin ************************************/ |
| typedef enum |
| { |
| UMTS_FDD_IDLE, |
| UMTS_FDD_FACH, |
| UMTS_FDD_EFACH_DRX, |
| UMTS_FDD_DCH, |
| UMTS_TDD_IDLE, |
| UMTS_TDD_FACH, |
| UMTS_TDD_DCH, |
| UMTS_C2K_IDLE, |
| LTE_IDLE, |
| LTE_DCH, |
| LTE_DCH_DRX, |
| GSM_IDLE, |
| GSM_DCH, |
| NEWRADIO_IDLE, |
| NEWRADIO_DCH, |
| MM_NULL |
| } mm_mode_enum; |
| |
| #if 0 |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| #endif |
| |
| /****************************** enum end **************************************/ |
| |
| |
| |
| /****************************** define begin ************************************/ |
| #define L1C_AG_AHEAD_FRAME 9 |
| #define L1C_AG_LENGTH_EBIT 173333 /* 80ms for 2G active */ |
| #define L1C_AG_NOT_CNF_LENGTH (-1) // |
| |
| |
| #define L1C_NORMAL_GAP_SERVICE (0x1) |
| #define L1C_AUTO_GAP_SERVICE (0x2) |
| #define L1C_GAP_STOP_TIME 3 |
| |
| #define GL1_GAP_NUM_IN_PERIOD GSM_SESSION_IN_PERIOD |
| |
| /* define database switch macros for 2G standby */ |
| #ifdef __GERAN_R8__ |
| #define SIM_REG_BA_OFFSET ( L1C_SIM1 ) //0 |
| #define SIM_PRIO_BA_OFFSET ( L1C_SIM_NUM ) //L1C_SIM_NUM |
| #define SWITCH_TO_PRIO_RESEL_STANDBY() ( l1c_sim_prio_ba_offset = SIM_PRIO_BA_OFFSET ) /* be called only when the sim is in standby mode */ |
| #define SWITCH_TO_REG_RESEL_STANDBY() ( l1c_sim_prio_ba_offset = SIM_REG_BA_OFFSET ) |
| #define SWITCH_TO_ASSIGNED_RESEL_STANDBY( mode ) ( l1c_sim_prio_ba_offset = (( mode == REG_RESEL_STANDBY )? SIM_REG_BA_OFFSET : SIM_PRIO_BA_OFFSET ) ) |
| #define L1C_RESEL_MODE_STANDBY ( (l1c_sim_prio_ba_offset == SIM_REG_BA_OFFSET)? REG_RESEL_STANDBY : PRIO_RESEL_STANDBY ) |
| #define IS_PRIO_RESEL_MODE_STANDBY ( l1c_sim_prio_ba_offset == SIM_PRIO_BA_OFFSET ) |
| #define IS_REG_RESEL_MODE_STANDBY ( l1c_sim_prio_ba_offset == SIM_REG_BA_OFFSET ) |
| #else |
| #define L1C_RESEL_MODE_STANDBY ( REG_RESEL_STANDBY ) |
| #endif /* __GERAN_R8__ */ |
| |
| /* define L1C MM mode macros for 2G standby */ |
| #define L1C_IS_CONNECTED_STANDBY(mode) ( mode == UMTS_FDD_FACH || mode == UMTS_TDD_FACH || mode == UMTS_FDD_DCH || mode == UMTS_TDD_DCH || mode == LTE_DCH ) |
| #define L1C_IS_IDLE_STANDBY(mode) ( mode == UMTS_FDD_IDLE || mode == UMTS_TDD_IDLE || mode == UMTS_C2K_IDLE || mode == LTE_IDLE || mode == NEWRADIO_IDLE ) |
| #define L1C_IS_IDLE_OR_CON_DRX_STANDBY(mode) ( mode == UMTS_FDD_IDLE || mode == UMTS_TDD_IDLE || mode == UMTS_FDD_EFACH_DRX || mode == UMTS_C2K_IDLE || mode == LTE_IDLE || mode == LTE_DCH_DRX || mode == NEWRADIO_IDLE ) |
| |
| /* this macro must be used in 2g standby */ |
| #define L1C_IS_UTRAN_TDD_MODE_STANDBY(mode) ( mode == UMTS_TDD_FACH || mode == UMTS_TDD_DCH || mode == UMTS_TDD_IDLE ) |
| #define L1C_IS_UTRAN_TDD_MODE_CONNECTED_STANDBY(mode) ( mode == UMTS_TDD_FACH || mode == UMTS_TDD_DCH ) |
| |
| |
| #define GL1_CHECK_BIT(a, mask) ( ((a)&(mask)) != 0 ) |
| #define GL1_SET_BIT(a, mask) ( (a) |= (mask) ) |
| #define GL1_CLEAR_BIT(a, mask) ( (a) &= ~(mask) ) |
| |
| |
| |
| #define DEFAULT_PM_PASS_PER_PERIOD_IDLE 1 |
| #define DEFAULT_PM_PASS_PER_PERIOD_EFACH_DRX 1 |
| #define DEFAULT_PM_PASS_PER_PERIOD_DCH_FACH 3 |
| #define DEFAULT_PM_PASS_PER_PERIOD_LTE_CONNECTED_DRX 1 |
| #define MAX_TRIES_FB_PLMN_2G_STANDBY 2 |
| #define MIN_3G_GAP_FRAME 8 /* 2 blocks, to avoid PCh norm/ext case. */ |
| #define RF_ADDITIONAL_MARGIN_FOR_SB_HEAD_EBITS (TQ_SBWIN_DSP_EXTEND1 * 2) |
| #define RF_ADDITIONAL_MARGIN_FOR_SB_TAIL_EBITS (TQ_SBWIN_DSP_EXTEND2 * 2) |
| #define FB_MAX_WINDOW_SLOTS (12*8+3) |
| #define FB_MAX_SEARCH_TOTAL_SLOTS (FB_MAX_WINDOW_SLOTS*8) /* use to stop FB search if UMTS_IDLE gap < FB_MAX_WINDOW_SLOTS */ |
| #define FRAME_IN_EBITS 10000 |
| #define SLOT_IN_EBITS 1250 |
| #define FB_MIN_WINDOW_EBITS 2176 //TDD gap use |
| #define FB_MIN_WINDOW_SLOTS 3 //FDD/LTE gap use |
| |
| #ifdef __UMTS_RAT__ // TDD needs 106, FDD needs 36 |
| #define L1_MAX_GAP_HANDLER 106 |
| #endif |
| |
| #if 0 |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| #endif |
| |
| #ifdef __UMTS_RAT__ |
| #define TD_SUBFRAME_TO_EBIT 10833 //10840 |
| #define TD_SLOT_TO_EBIT 1462 |
| #define LONG_GAP_LEN_FACH_DCH 10000 //10000 |
| #define MIN_SB_DELAY_ALLOW_FB_SEARCH 32502 /* # of ebit for 15ms */ |
| #define DEFALT_BSIC_RECONFIRM_TIME 5000 /* in unit of ms */ |
| #define DEFALT_BSIC_SEARCH_ABORT_TIME (DEFALT_BSIC_RECONFIRM_TIME*10/46) /* in unit of TDMA frames */ |
| #endif |
| |
| #ifdef __GL1_GEMINI__ |
| #if defined( __GL1_GEMINI_WCDMA__ ) || defined( __GEMINI__ ) || defined( __CDMA2000_RAT__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) |
| #define STANDBY_MEAS_LENGTH_ACTIVE_IDLE 2 //unit: frame |
| #endif |
| #endif |
| |
| #define SRVCC_USE_CGI_AUTO_GAPS 1 |
| |
| #if (SRVCC_USE_CGI_AUTO_GAPS) |
| #define SRVCC_BOOST_IN_QDBM 1 |
| #define SRVCC_MAX_BOOST_RANGE_IN_QDBM 12 |
| #define MAX_SRVCC_BSIC_ATTEMPTS 2 |
| #endif |
| /****************************** define end **************************************/ |
| |
| |
| /****************************** struct begin ************************************/ |
| typedef struct Gap_Handler Gap_Handler; |
| |
| struct Gap_Handler |
| { |
| Time start_time; |
| bool pm_period_start; |
| gsm_tgmp_enum purpose; |
| kal_uint16 gap_num; |
| sGAP gap[GL1_MAX_GAP_NUM_IN_ONE_FRAME]; |
| kal_bool gap_reschedule; |
| Gap_Handler* prev; |
| Gap_Handler* next; |
| }; |
| |
| typedef struct |
| { |
| Gap_Handler GAPPool[L1_MAX_GAP_HANDLER]; |
| Gap_Handler* unusedGAPs[L1_MAX_GAP_HANDLER]; |
| Gap_Handler* usedGAPs[L1_MAX_GAP_HANDLER]; |
| Gap_Handler* running_gap; |
| Gap_Handler* gapTimer_gap; |
| Gap_Handler* bsic_gap; |
| kal_uint32 t_reconfirm; /* In unit of TDMA frames(4.6ms). used for fach/dch/lte connected */ |
| kal_uint32 t_identify; /* In unit of TDMA frames(4.6ms). used for fach/dch/lte connected*/ |
| kal_uint32 bsic_reconfirm_para; /* In unit of msec. Used in FACH/DCH mode. */ |
| Time next_session_start_after; //for FB gap in the end of period, the first session in the next session must >= this time |
| uint16 fb_search_cnt_down; |
| kal_uint8 unusedGAPCount; |
| kal_uint8 usedGAPCount; |
| #ifdef __LTE_RAT__ |
| kal_uint8 tds_lte_left_gap_idx; //use for lte left pattern calculation |
| #endif /*__LTE_RAT__*/ |
| } GapGlobal; |
| |
| typedef struct |
| { |
| mm_mode_enum mode; |
| Timer activeRATTimer; |
| Timer standbyRATTimer; |
| /* 3G active, common parameters */ |
| kal_bool pm_meas_started; |
| intx pm_cell_num[ NUM_RESEL_MODE_STANDBY ]; |
| kal_bool lock_sm; |
| bool Dedi3G; |
| kal_uint8 GAPStatus; //bit0: normal gap, bit1: auto gap |
| kal_bool gap_suspended; // fmo_lock |
| kal_uint8 wait_HW_stop_count; /* frame countdown to wait 2G FB/SB, PM stop */ |
| bool umts_hspa; //TDS |
| |
| /* Power Scan */ |
| kal_bool power_scan_started; |
| kal_bool tempStopPSM; |
| /* RSSI measurement */ |
| kal_uint8 pm_pass_per_period; /* Default=1. */ |
| kal_uint8 pm_pass_this_period[ NUM_RESEL_MODE_STANDBY ]; |
| kal_uint8 pm_tid[ NUM_RESEL_MODE_STANDBY ]; |
| kal_uint8 pm_tid_new[ NUM_RESEL_MODE_STANDBY ]; |
| bool pm_tid_done[ NUM_RESEL_MODE_STANDBY ]; |
| bool next_pm_start_time_valid; |
| kal_uint8 next_pm_pass_per_period; //FDD connected |
| Time next_pm_start_time; //FDD connected |
| intx next_pm_cell_num; //connected |
| kal_uint8 arfcn_count_measured; //the number of arfcn that have been measured; reset when ba is changed or avg is reset |
| #if 1 //def __GL1_GEMINI__ |
| // Timer idleSuspendPM; //used to stop measurement at the end of idle gap |
| #endif |
| bool stopAllMeas; //only TDS use |
| //bool skip_next_gap; //TDS /* after long fb search gap in FACH/DCH, skip next gap to prevent conflict */ |
| Timer pmSessionTimer; //TDS |
| |
| /* BSIC search */ |
| Timer sbTimer; |
| Timer fbTimer; |
| Timer bsicSCTimer; |
| Timer dummyFBTimer; |
| Timer SRVCCGapSetTimer; |
| Timer SRVCCGapResetTimer; |
| bool resetSRVCCGapMeas; |
| bool first_gap_notify; |
| uint16 default_sb_window_ebits; |
| TID fb_tid; |
| TID sb_tid; |
| bool fb_started; |
| bool sb_started; |
| bool retry_sb; |
| bool fb_max_window; |
| kal_uint16 fb_total_search_slot; /* used to count total FB search slot in UMTS_IDLE */ |
| intx fb_slot_count; //slot for FDD, ebit for TDD |
| AGCCellData bsic_agc_cell; |
| //AfcParams* afc; |
| /*FDD*/ |
| //kal_uint8 bsic_slot; /* For FB window. */ |
| //scCellBSIC* bsic_cell; /* For FB or SB. */ |
| //AGCCellData cell; |
| //ARFCN fb_arfcn; |
| /* Gap Handler and Timing sync. */ |
| Timer gapTimer; |
| Timer gapStopTimer_all; //syy |
| Timer gapStopTimer_suspend; //syy: fmo lock timer |
| Timer syncTimer; |
| TID sync_tid; |
| Time sync_offset; |
| //Time sync_start_time; |
| |
| |
| /* For 2G active */ |
| Timer search_3gTimer; |
| kal_int8 GAPreservedFrames; /* The gap reserved frames for 3G, ex Timer_3GSearch, TimerAutoGap. Only SIM1 need to check it. */ |
| intx search_3g_FN26; |
| kal_uint8 search_3g_state_cnt; /* Range: 0~7. If equals 7, it will be reset to 0, and enters CM state. */ |
| kal_bool gap_schedule_started; |
| /* For 2G active/PCH, assign DRX period to 3G. */ |
| bool rf_checked; |
| bool l1i_checked; |
| bool rf_sleep; |
| kal_uint16 l1i_sleep_frame; |
| kal_uint16 l1i_sleep_ebit; |
| bool umts_gap_running; |
| Time umts_gap_start_time; |
| kal_uint32 umts_gap_len; |
| TID GAPtid; |
| TID SuspendGaptid; |
| |
| /* Measurement priority */ |
| MeasurementPriority meas_priority; |
| MeasurementPriority meas_priority_cgi; |
| MeasurementPriority meas_priority_scan; |
| #ifdef __GERAN_R8__ |
| MeasurementPriority meas_priority_higher; |
| #endif /* __GERAN_R8__ */ |
| |
| #ifdef __GERAN_R8__ |
| kal_bool pm_meas_started_higher; |
| #endif /* __GERAN_R8__ */ |
| |
| #if defined ( __GL1_GEMINI__ ) |
| Timer restartGAPtimer; // This variable is only used when active RAT is FDD or LTE. |
| #endif |
| |
| /* TDS */ |
| bool LockGAP; |
| #if defined (__GL1_GEMINI__) |
| bool isChannelLock; //used in TD MM Gemini lock and unlock mechanism |
| /*dm_global.isChannelLock only can be set as true when TDD is active RAT, it cannot be set as true when FDD is active RAT.*/ |
| #endif /* defined (__GL1_GEMINI__) */ |
| |
| //kal_uint8 gapPurpose; |
| kal_bool DRX_Tick; //2G active, for drx tick in gap pattern |
| |
| Timer autoGaptimer; |
| Timer autoGapReportTimer; |
| kal_int32 autoGaptimerLength; //the length L1C uses, from the time that AG can be used |
| kal_int32 autoGapLengthGive; //the length filled in report, from ST. If there's reservation after ST, this will be longer than autoGaptimerLength |
| |
| kal_bool standbyAGConfirm; |
| kal_int8 standbyAGUseCount; |
| Time standbyAGStartTime; |
| kal_int32 standbyAGLength; //-1 means not confirmed |
| Timer standbyAGStopTimer; //used to wait for L1D stop to send ReportGSMAutoGAPStop |
| Timer standbyAGEndTimer; //used to send reportGapEnd when reportCGI is stopped by upper layer |
| #ifdef __GL1_GEMINI__ |
| #if defined( __GL1_GEMINI_WCDMA__ ) || defined( __GEMINI__ ) || defined( __CDMA2000_RAT__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) |
| Timer standbyMeasTimer; // used to schedule standby measurement for standby meas |
| Timer standbyMeasTimerPowerScan; // used to schedule standby measurement for manual power scan request |
| #endif |
| #endif |
| #if defined( __GEMINI__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) |
| uint32 scanPeriod; |
| uint32 scanLength; |
| uint32 scanPeriod_PM; |
| uint32 scanLength_PM; |
| uint16 BSICPeriod; |
| uint8 rdrb_for_manualscan_standbymeas; |
| bool backup_meas; |
| bool backup_scan; |
| #endif |
| intx arfcn_start_index_copy; //To backup the value of arfcn_start_index |
| #ifdef __GL1_GEMINI__ |
| Timer VirtualSuspendCnfTimer; |
| #endif |
| } DualModeGlobal; |
| |
| |
| |
| /****************************** struct end **************************************/ |
| |
| |
| |
| |
| /****************************** function prototype begin ************************************/ |
| /* for autonomous gap, common for FDD, TDD, LTE */ |
| void L1T_AutoGAPStart( Time starting_time ); |
| void L1T_AutoGAPEnd( void ); |
| void L1T_GSMAutoGAPStop( void ); |
| void L1T_GSMAutoGAPConfirm( kal_bool, kal_int32 ); |
| |
| void L1I_Timer_AutoGap( Timer* timer ); |
| void L1I_Timer_ReportAutoGap( Timer* timer ); |
| void L1I_MMPutAutoGAP( void ); |
| intx L1I_GetGSMAutoGAPLengthEbit( void ); |
| void L1I_Timer_GSMAutoGAPStop(Timer* timer); |
| void L1I_Timer_GSMAutoGAPEnd(Timer* timer); |
| void L1T_ReRequestGSMAutoGAP( void ); |
| void L1I_ReRequestGSMAutoGAP( void ); |
| |
| |
| /* to suspend GL1 gap usage. to replace fach/fmo lock/unlock */ |
| void L1T_SuspendGAP( void ); |
| void L1T_ResumeGAP( void ); |
| |
| void L1T_CancelGap_Lock_2G( void ); |
| void L1T_CancelGap_Unlock_2G( void ); |
| void L1T_SetGAPPurpose_idle(kal_uint16 gap_num, ll1_gsm_standby_gap_struct *gap); |
| void L1I_Start_SACCh_Timer( bool delay ); |
| |
| void L1T_SetModeInStandby( ll1_active_rat_mode_status_enum mode ); |
| void L1I_Internal_StopGAP(void); |
| Gap_Handler* L1I_UpdateRunningGap( l1c_mm_sim_mode_enum local_sim_mode ); |
| |
| void L1T_GAPStatus(gl1_gap_status_enum GAPStatus); |
| void L1T_StartGAPSchedule( void ); |
| void L1T_StopGAPSchedule (void); |
| void L1T_StopGAPPattern(void); |
| void L1I_NextBSIC_GAP(void); |
| void L1I_Update_HP_SB_UTRAN_TDD( Gap_Handler* gap ); |
| void L1I_StartBSIC_GAP(Gap_Handler* gap); |
| void L1I_StartFB_GAP(Gap_Handler* gap); |
| void L1I_StartSB_GAP(Gap_Handler* gap); |
| void L1T_StandbyRAT(void); |
| void L1T_ActiveRAT(void); |
| void L1T_InterRATSyncGen(void); |
| void L1T_InitMM( void ); |
| void L1I_Set_L1D_DM_State( void ); |
| void L1I_Set_L1D_DM_Query_State( void ); |
| void L1I_Start_GAP_Timer(void); |
| void L1I_Init_GAPSchedule(void); // bool priority_low ); |
| void L1I_Timer_SB(Timer* timer); |
| void L1I_Timer_FB(Timer* timer); |
| #ifdef __GL1_GEMINI__ |
| void L1I_Timer_VirtualSuspendCnf(Timer* timer); |
| #endif |
| |
| void L1D_FCCh_DM( Report *report, ARFCN arfcn, int32 gap_len_ebit, AfcParams *afcParams, int16 repeat_cnt, L1D_APIcaller_id caller ); |
| void L1D_SCh_DM( Report *report, ARFCN arfcn, bool retry, intx ebitPosition, AfcParams *afcParams, L1D_APIcaller_id caller ); |
| |
| void L1T_SetGAPPattern_NR(kal_uint16 session_num, ll1_gsm_standby_gap_struct* session, ll1_active_rat_mode_status_enum mode, |
| kal_bool pm_tick, kal_uint8 pm_tid, kal_bool pm_tick_higher, kal_uint8 pm_tid_higher ); |
| |
| #ifdef __LTE_RAT__ |
| void L1T_SetGAPPattern_LTE(kal_uint16 session_num, ll1_gsm_standby_gap_struct* session, ll1_active_rat_mode_status_enum mode, |
| kal_uint32 t_reconfirm, kal_uint32 t_identify, kal_uint16 gap_expand_period, kal_uint8 n_freq, |
| kal_bool pm_tick, kal_uint8 pm_tid, |
| kal_bool pm_tick_higher, kal_uint8 pm_tid_higher, kal_uint8 gap_set_num ); |
| |
| void L1T_SetGAPPurpose_LTE_connected( kal_uint16 gap_num, ll1_gsm_standby_gap_struct *gap, kal_uint32 t_reconfirm_dch, kal_uint32 t_identify_dch, kal_uint16 gap_expand_period, kal_uint8 n_freq, kal_uint8 gap_set_num ); |
| #endif /*__LTE_RAT__*/ |
| |
| #ifdef __CDMA2000_RAT__ |
| void L1T_SetGAPPattern_C2K( kal_uint16 gap_num, ll1_gsm_standby_gap_struct* gap, ll1_active_rat_mode_status_enum mode, |
| kal_bool pm_tick, kal_uint8 pm_tid ); |
| #endif |
| |
| #ifdef __GERAN_R8__ |
| void L1T_SetGAPPattern_FDD( kal_uint16 gap_num, ll1_gsm_standby_gap_struct* gap, ll1_active_rat_mode_status_enum mode, |
| kal_uint32 t_reconfirm, kal_uint32 t_identify, |
| kal_bool pm_tick, kal_uint8 pm_tid, |
| kal_bool pm_tick_higher, kal_uint8 pm_tid_higher ); |
| //void L1T_GAPScheduleDone( kal_uint8 tid, kal_bool priority_search ); |
| #else |
| void L1T_SetGAPPattern_FDD( kal_uint16 gap_num, Gap_Session*gap, ll1_active_rat_mode_status_enum mode, |
| kal_uint32 t_reconfirm, kal_uint32 t_identify, |
| kal_bool pm_tick, kal_uint8 pm_tid ); |
| //void L1T_StartGAPSchedule( void ); |
| //void L1T_GAPScheduleDone( kal_uint8 tid ); |
| #endif /* __GERAN_R8__ */ |
| |
| #if defined ( __GL1_GEMINI__ ) && defined ( __GL1_MULTI_MODE__ ) |
| void L1T_StopALTGAPSchedule_2( void ); |
| void L1T_CancelGap_Lock_2G_2( void ); |
| bool L1I_QueryAny2GStandbyLockSM( void ); |
| bool L1I_QueryAnyDedicatedFlag( void ); |
| #endif |
| |
| void L1I_Timer_GAP(Timer* timer); |
| void L1I_Schedule_GapPurpose_rssi( Gap_Handler* gap, Timer* timer ); |
| |
| |
| /* L1 internal function for DM. */ |
| void L1I_InternalFrameTick_DM (void); |
| void L1I_StartSB_Timer(scCellBSIC* cell, kal_bool retry, intx sb_ebitDelay); |
| void L1I_StartFB_Timer(scCellBSIC* cell, intx ebitDelay, intx slot_count); |
| intx L1I_GetNormalGapFBLength( l1c_sim_mode_enum local_sim_mode ); |
| scCellBSIC* check_fb_position(Gap_Handler *gap, intx* ebitDelay, intx* slot_count); |
| scCellBSIC* check_sb_position(Gap_Handler *gap, intx* ebitDelay); |
| scCellBSIC* check_hp_sb_position(Gap_Handler *gap, intx* ebitDelay, bool* retry_sb, kal_uint16* sb_pos); |
| void L1_Prepare_HP_SB_Data( SChData* p ); |
| kal_uint16 ebit_2_slot(intx ebit); |
| void L1T_SetGAPPurpose_fach( kal_uint16 gap_num, ll1_gsm_standby_gap_struct *gap, kal_uint32 t_reconfirm_fach, kal_uint32 t_identify_fach); |
| void L1T_SetGAPPurpose_dch( gsm_tgmp_enum change_purpose, kal_uint16 gap_num, ll1_gsm_standby_gap_struct *gap, kal_uint32 t_reconfirm_dch, kal_uint32 t_identify_dch); |
| |
| |
| intx L1I_GetNext_SB_Position( Time servTime, int32 frameOffset, intx ebitOffset, intx gap_delay ); |
| kal_bool check_bcch_gap_coincide(intx timer_schedule_delay, intx gap_len, intx bcch_ebitDelay); |
| kal_bool check_sb_gap_coincide(intx gap_len, intx sb_ebitDelay); |
| kal_uint8 check_hp_sb_gap_coincide(intx gap_ebitDelay, intx len, intx sb_ebitDelay, kal_bool retry); |
| bool check_hp_sb_end(kal_uint16 hp_sb_pos); |
| |
| |
| //void L1I_Start_GAP_Timer(void); |
| #ifdef __GL1_GEMINI__ |
| #if defined( __GL1_GEMINI_WCDMA__ ) || defined( __GEMINI__ ) || defined( __CDMA2000_RAT__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) |
| void L1I_Timer_StandbyMeas( Timer* timer ); |
| void L1I_Timer_StandbyPowerScan (Timer* timer ); |
| bool L1I_IsNeedToDoStandbyMeas( void ); |
| void L1I_StartStandbyMeasTimer( void ); |
| #endif |
| #endif |
| #ifdef __GL1_GEMINI_WCDMA__ |
| void L1I_SetStandbyPwrScanPriority( bool is_PLMNList ); |
| #endif |
| void L1I_Timer_Search_3g(Timer* timer); |
| void L1I_Timer_BSICSC(Timer* timer); |
| void L1I_Timer_DUMMYFB(Timer* timer); |
| void L1I_Timer_SRVCCGapSet(Timer* timer); |
| void L1I_Timer_SRVCCGapReset(Timer* timer); |
| void L1I_BackupARFCNIndex(void); |
| void L1I_RestoreARFCNIndex(void); |
| |
| void L1I_TimerStandby( Timer* timer ); |
| void L1T_Next_BSICSC(void); |
| void L1T_StartStandby_Timer( void ); |
| void L1I_Timer_IRATSync(Timer* timer); |
| void L1I_Timer_ActiveRAT(Timer* timer); |
| |
| void L1T_Search_3g_Start(void); |
| void L1T_DM_SetMode( SurroundMode newMode ); |
| void L1T_DM_Set_search_3g_FN26(kal_uint8 search_3g_FN26); |
| |
| //void L1T_Init_GAPSchedule(void); // bool priority_low ); |
| void L1I_Init_3G_GAP_SimMode( l1c_mm_sim_mode_enum local_sim_mode ); |
| void L1I_Check_3G_GAP( l1c_mm_sim_mode_enum local_sim_mode ); |
| |
| #ifdef MTK_SLEEP_ENABLE |
| bool L1I_Assign_3G_GAP( kal_uint16 l1i_sleep_frame ); |
| #else |
| bool L1I_Assign_3G_GAP(void); |
| #endif |
| |
| bool L1I_Check_3G_GAP_From_Timer(int32 ebitDelay); |
| void L1I_gsm_gap_cancel_req(void); |
| |
| void L1I_ReportFCCh_DM( Report* report ); |
| void L1T_ReportFCCh_DM( Report* report ); |
| void L1I_StopSCh_DM( void); |
| void L1I_StopFCCh_DM( void ); |
| uint8 L1I_SChStop_DM( void ); |
| uint8 L1I_FCChStop_DM( void ); |
| void L1I_AbortReservationFCCh_DM( intx busyFrames, intx busyEBits ); |
| //void L1D_SCh_DM( Report* report, ARFCN arfcn, bool retry, AfcParams* afcParams ); |
| void L1I_ReportSCh_DM( Report* report ); |
| void L1T_ReportSCh_DM( Report* report ); |
| |
| void L1I_ReportSyncTime( Report* report ); |
| void L1T_ReportSyncTime( Report* report ); |
| void L1T_ReportSuspendGap( Report* report ); |
| void L1T_Init_Gap(void); |
| void L1I_Update_Gap(Gap_Handler* gap, intx remain_gap_len); |
| Gap_Handler* L1I_NewGapHandler(void); |
| void L1I_DeleteGapHandler(Gap_Handler* gap_handler); |
| |
| void L1T_ResetAFC_DM(void); |
| |
| intx L1_TimeDiff( Time timeA, Time timeB); |
| void L1I_InsertGapHandler(Gap_Handler* gap); |
| void L1I_RemoveGapHandler(Gap_Handler* gap_handler); |
| void L1I_DebugGapHandler(void); /* Only for debug purpose. */ |
| void L1I_RemoveSuspend( void ); |
| |
| void L1I_Schedule_GapPurpose_undefined(Gap_Handler* gap); |
| |
| void L1I_Consume_PM_DM(void); /* Used to consume PM cells, and not to fill it into PM queue. This is used for FMO_Lock request. */ |
| void L1I_MeasurementsProcessDummyResults( void ); |
| void L1T_SurroundReportTickStandby(void); |
| uint8 L1I_SurroundAbortReceive_DM( void ); |
| uint8 L1I_SurroundAbortBCChReceive_DM( void ); |
| intx L1I_NBCChStop( void ); |
| void L1I_Timer_Tick(Timer* timer); |
| void L1I_Timer_GAPStop_suspend(Timer* timer); |
| void L1I_Timer_GAPStop_all(Timer* timer); //syy |
| |
| //void L1I_TimerSuspendPMforGAP( Timer* timer ); //syy |
| |
| #ifdef __GL1_GEMINI__ |
| void L1I_Timer_restartGAP(Timer* timer); |
| kal_bool L1I_QueryIsContiFB( void ); |
| kal_uint32 L1I_QueryGAPReservedLength( void ); |
| #endif |
| |
| #ifdef __GL1_GEMINI__ |
| #if defined( __GL1_GEMINI_WCDMA__ ) || defined( __GEMINI__ ) || defined( __CDMA2000_RAT__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) |
| kal_uint32 L1I_QueryGAPPMReservedLength(void); |
| #endif /* defined( __GL1_GEMINI_WCDMA__ ) || defined( __GEMINI__ ) */ |
| #endif |
| |
| #if defined( __GEMINI__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) |
| void L1I_SetStandbyPwrScanParam( uint32 scanPeriod, uint32 scanLength ); |
| void L1I_SetStandbyBSICParam( uint16 scanPeriod ); |
| void L1I_AssignGAPinVirtualMode( void ); |
| |
| #ifdef __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ |
| void L1T_VStandbyMeasSetParam( uint32 MeasPeriod, uint32 MeasLength ); |
| #endif /* __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ */ |
| |
| #endif /* defined( __GEMINI__ ) || defined( __IRAT_MEAS_SUPPORT_IN_VIRTUAL_MODE__ ) */ |
| |
| #ifdef __GL1_MULTI_MODE__ |
| bool L1I_QueryAnyActiveRATinDedicated( void ); |
| #endif |
| |
| /* Interface with L1D. */ |
| //void L1D_FCCh_DM(Report* report, ARFCN arfcn, int16 gap_len, AfcParams* afcParams); |
| void L1D_Sync_To_3G_DM(Report* report); |
| void L1D_Start_Next_PM_DM( void ); |
| void L1D_Skip_PM_DM(L1D_APIcaller_id caller); |
| uint16 L1D_Get_SBWIN_LEN_DM(void); |
| intx L1D_Cal_PM_Count_DM( sGAP *gap ); |
| intx L1D_Cal_FB_Slot_Length_DM(intx ebit_duration); |
| void L1D_Sync_To_Multi_Mode( Report *report, L1D_APIcaller_id caller ); |
| bool L1D_check_3g_reli(void); |
| #if IS_GL1_MULTI_MODE_SUPPORT |
| void L1D_Set_GSM_RAT_Mode( L1D_MM_STATE L1D_DM_STATE, l1c_sim_mode_enum sim_idx, L1D_APIcaller_id caller); |
| void L1D_Set_GSM_Query_RAT_Mode( L1D_MM_STATE L1D_DM_STATE ); |
| #endif |
| |
| void L1I_ResetAFC_DM( void ); |
| |
| |
| void L1T_Set_Timer_UTRAN_FDD_and_EUTRAN( void ); |
| void L1T_Set_Timer_UTRAN_TDD( void ); |
| void L1T_SetGAPPattern_TDD( kal_uint16 gap_num, ll1_gsm_standby_gap_struct* gap, ll1_active_rat_mode_status_enum mode, |
| kal_bool pm_tick, kal_uint8 pm_tid |
| #ifdef __GERAN_R8__ |
| ,kal_bool pm_tick_higher, kal_uint8 pm_tid_higher |
| #endif |
| #ifdef __LTE_RAT__ |
| ,kal_uint16 dmo_lte_period, kal_uint16 dmo_lte_length |
| #endif |
| ); |
| |
| /* L1C DM Internal Use. */ |
| Time L1I_GapEndTime( Gap_Handler* session ); |
| void L1I_Stop_BSIC_Schedule_UTRAN_TDD( void ); |
| void L1I_Measurement_Period_Start_UTRAN_TDD( void ); |
| void L1I_Schedule_GapPurpose_rssi_UTRAN_TDD( Gap_Handler* gap, sGAP* gap_pattern ); |
| void L1I_Schedule_GapPurpose_bsic_UTRAN_TDD( Gap_Handler* gap, sGAP* gap_pattern ); |
| void L1I_Timer_GAP_UTRAN_TDD(Timer* timer); |
| void L1I_Timer_PM_Session_UTRAN_TDD( Timer* timer ); |
| void L1I_Reset_PM_Session( void ); |
| void L1T_SetGAPPurpose_fach_dch_UTRAN_TDD( kal_uint16 gap_num, ll1_gsm_standby_gap_struct* gap |
| #ifdef __LTE_RAT__ |
| ,kal_uint16 dmo_lte_period, kal_uint16 dmo_lte_length |
| #endif |
| ); |
| |
| #ifdef __UMTS_TDD128_MODE__ |
| /* TDD DM *//* L1C/D Interface function for DM. */ |
| /* TDD DM *///void L1D_Sync_To_3G_DM( Report *report ); |
| #if L1D_WT_COBIN_ARCHITECTURE_SUPPORT |
| /* TDD DM */void L1D_Set_Gap_TDD( sGAP *gap, L1D_APIcaller_id caller ); /* set GAP pattern to L1D in 3G FACH and DCH state */ |
| #else |
| /* TDD DM */void L1D_Set_Gap( sGAP *gap ); /* set GAP pattern to L1D in 3G FACH and DCH state */ |
| #endif |
| /* TDD DM *///void L1D_Set_GSM_RAT_Mode( L1D_MM_STATE L1D_DM_STATE, L1D_APIcaller_id caller ); |
| /* TDD DM *///bool L1D_IsTDStandby_DM(void); |
| /* TDD DM *///void L1D_SCh_DM( Report *report, ARFCN arfcn, bool retry, intx ebitPosition, AfcParams *afcParams ); |
| /* TDD DM *///void L1D_FCCh_DM( Report *report, ARFCN arfcn, int32 gap_len_ebit, AfcParams *afcParams, int16 repeat_cnt ); |
| /* TDD DM *///void L1D_Sync_To_3G_DM( Report *report ); |
| /* TDD DM *///uint16 L1D_Get_SBWIN_LEN_DM( void ); |
| #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT |
| /* TDD DM */void L1D_AFCSetDACValue_DM( AfcParams *p, int32 DacValue, L1D_APIcaller_id caller ); |
| #else |
| /* TDD DM */void L1D_AFCSetDACValue_DM( AfcParams *p, int16 DacValue, L1D_APIcaller_id caller ); |
| #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */ |
| /* TDD DM *///bool L1D_check_3g_reli( void ); |
| /* TDD DM */void L1D_AFCResetParams_DM( AfcParams *p, L1D_APIcaller_id caller ); |
| /* TDD DM */bool L1D_AFC_2G_ACTIVE_ASK_FreqCorrect( uint8 simIndex, kal_bool correction, kal_bool is_l1c, AfcParams *afcParams ); |
| /* TDD DM */void L1D_Start_Next_PM_DM( void ); |
| /* TDD DM *///void L1D_Skip_PM_DM( L1D_APIcaller_id caller ); |
| /* TDD DM *///intx L1D_Cal_PM_Count_DM( sGAP* gap ); |
| #if L1D_WT_COBIN_ARCHITECTURE_SUPPORT |
| #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT |
| /* TDD DM */kal_int32 L1D_AFCGetDAC_Value_DM_TDD(bool is_2g_2_3g); |
| #else |
| /* TDD DM */kal_int16 L1D_AFCGetDAC_Value_DM_TDD(bool is_2g_2_3g); |
| #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */ |
| /* TDD DM */void L1D_FCCh_Update_rxTime_TDD(Time rxTime, L1D_APIcaller_id caller); |
| /* TDD DM */void L1D_FBM_Update_left_times_TDD(int16 new_left_times, L1D_APIcaller_id caller); |
| /* TDD DM */intx L1D_Cal_PM_Count_DM_Query_TDD( sGAP *gap ); |
| #else |
| #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT |
| /* TDD DM */kal_int32 L1D_AFCGetDAC_Value_DM(bool is_2g_2_3g); |
| #else |
| /* TDD DM */kal_int16 L1D_AFCGetDAC_Value_DM(bool is_2g_2_3g); |
| #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */ |
| /* TDD DM */void L1D_FCCh_Update_rxTime(Time rxTime, L1D_APIcaller_id caller); |
| /* TDD DM */void L1D_FBM_Update_left_times(int16 new_left_times, L1D_APIcaller_id caller); |
| /* TDD DM */intx L1D_Cal_PM_Count_DM_Query( sGAP *gap ); |
| #endif |
| /* TDD DM */void L1D_Sync_To_Multi_Mode( Report *report, L1D_APIcaller_id caller ); |
| #endif /*__UMTS_TDD128_MODE__*/ |
| |
| /****************************** function prototype end **************************************/ |
| |
| |
| |
| |
| |
| |
| /****************************** global variable begin ************************************/ |
| |
| |
| #ifdef __GL1_GEMINI_WCDMA__ |
| #define gap_global gapGlobals_database[l1c_sim_mode] |
| #define local_gap_global gapGlobals_database[local_sim_mode] |
| extern GapGlobal gapGlobals_database[L1C_MM_SIM_NUM]; |
| #define dm_global dmGlobals_database[l1c_sim_mode] |
| #define local_dm_global dmGlobals_database[local_sim_mode] |
| extern DualModeGlobal dmGlobals_database[L1C_MM_SIM_NUM]; |
| #define gap_base gapBase_database[l1c_sim_mode] |
| #define local_gap_base gapBase_database[local_sim_mode] |
| extern Gap_Handler gapBase_database[L1C_MM_SIM_NUM]; |
| extern uint8 syncBitmap; |
| #else |
| #define local_gap_global gap_global |
| #define local_dm_global dm_global |
| #define local_gap_base gap_base |
| extern GapGlobal gap_global; |
| extern DualModeGlobal dm_global; |
| extern Gap_Handler gap_base; |
| #endif |
| bool L1I_QueryAllSIMInGSMIdle( void ); |
| |
| /****************************** global variable end **************************************/ |
| |
| |
| EXTERN_TRACE_CLASS( tcDM ); /* For L1 simulation. */ |
| |
| #endif |
| #if IS_TXRX_GET_INFO |
| kal_uint64 L1D_Rx_Active_Time(); |
| void L1D_Rx_Reset_Time(); |
| void L1I_CalculateFBRxTime(void); |
| void L1I_QueryFBStartTime(void); |
| Power L1I_QueryTxPowerInfo(void); |
| void L1I_getTxinformationTime(Power txpower, int32 reservationMask); |
| #endif |