[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6
MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF modem version: NA
Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/l1/interface/gl1/l1_public.h b/mcu/l1/interface/gl1/l1_public.h
new file mode 100644
index 0000000..c76bbca
--- /dev/null
+++ b/mcu/l1/interface/gl1/l1_public.h
@@ -0,0 +1,1625 @@
+/*******************************************************************************
+* Modification Notice:
+* --------------------------
+* This software is modified by MediaTek Inc. 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_public.h
+ *
+ * Project:
+ * --------
+ * Maui_Software
+ *
+ * Description:
+ * ------------
+ * Layer1 public interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ *
+ *******************************************************************************/
+
+/******************************************************************************
+ *
+ * File: /MTKteam/source/gprsmtk/l1/generic/SCCS/s.l1_public.h
+ * -----
+ *
+ * SCCS Version: 2.21
+ * -------------
+ *
+ * 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 Communications Consultants Worldwide Limited (C) 2001
+ *
+ * Project:
+ * --------
+ *
+ * Software Unit: Layer1 public interface.
+ * --------------
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Modification History:
+ * ---------------------
+ * Date Vers Auth Details
+ * ---- ---- ---- -------
+ * 28-Mar-01 2.1 VKL Initial version
+ * 25-Apr-01 2.2 APB Add prototype for strdup
+ * 27-Apr-01 2.3 VKL Added AGCGroupPTCCh and AGCGroupMax.
+ * Changed prototypes of L1D_ReportPeriod() and
+ * L1D_PTCChStart().
+ * Added prototypes for L1D_DChSetTxPower() and
+ * L1D_PDTChSetHoppingSequence()
+ * 01-May-01 2.4 VKL Renames PSM functions
+ * 01-May-01 2.5 DBT Fix merge errors
+ * Change prototype for PDTCh drivers
+ * 21-May-01 2.6 VKL removed ifdef WIN32 ( now in l1_const.h)
+ * replaces L1_PSM* functions by new power measurement
+ * manager functions
+ * renamed parameter to L1D_CBChStart and
+ * L1D_PBCChStart
+ * change parameters to L1D_PTCChStart
+ * surround cell power measurements now done in
+ * separate module, not in report period any more.
+ * L1D_ReportPeriod therfore no longer gets scan list
+ * added functions for PCh, PAGCh, PRACh, and
+ * interference measurements.
+ * 15-Jul-01 2.7 VKL Added ARFCN conversion functions
+ * Added L1I_GetUplinkPDTCh()
+ * Added MAC functions
+ * Added driver to adjust frequency
+ * TCh drv now get param to mark if a blk can be DTXed
+ * PAGCh driver now gets time slot parameters
+ * PDTCh driver no longer gets time slot allocation.
+ * MAC now handles this.
+ * Add burstLength param to L1D_RACh() and L1D_PRACh()
+ * Removed rachData parameter from L1D_PTCChUp()
+ * 08-Aug-01 2.8 VKL Added L1I_ReportRxBurstData()
+ * Added startTimeSlot parameter to L1D_FCChTStart()
+ * and L1D_FCChT()
+ * 02-Sep-01 2.9 VKL Change params to L1I_GetUplinkPDTCh(), add dtxAllowed
+ * parameter to L1D_ReportPeriod(), pass DChParams
+ * structure to L1D_DChStart() instead of individual ones
+ * pass timeSlotPosition to L1D_PTCChUp(), ..Down() instead
+ * add L1D_PDTChStart() and L1D_PDTChStop()
+ * change L1D_PTDCh() params, cleanup BSIC vs. TSC usage,
+ * add bsic field to TBFParams, add subBlock field to RxData
+ * replace reportPeriodLock field by monitorReport field
+ * 12-Sep-01 2.10 VKL Add ARFCN2INDEX for backward compatibility, add AGC parameter
+ * structure and variable declaration
+ * 13-Sep-01 2.11 VKL Add drivers for neighbour PBCCh receive
+ * 26-Sep-01 2.12 VKL Added tsc parameter to L1D_PTCChStart()
+ * Added L1D_PollResp() and L1D_PDTChSetHoppingSequence()
+ * 28-Sep-01 2.13 VKL Changed parameters of L1I_GetUplinkPDTCh()
+ * Changed AGC completely.
+ * Added prototype for L1D_GetHardwareGain()
+ * 28-Sep-01 2.14 SGB Add temporary OLD_AGC conditional compile option
+ * 09-Oct-01 2.15 VKL Add new AGC constants
+ * 09-Oct-01 2.16 VKL Add new AGC constant
+ * 09-Oct-01 2.17 VKL Add AGC algorithm for NPBCCh and interference
+ * measurements
+ * 10-Oct-01 2.18 VKL Add per cell AFC support
+ * 12-Oct-01 2.19 VKL Add sacchPosition parameter to L1D_DChStart
+ * 11-Oct-01 2.20 SY Revise AGC interface and add paramter of L1D_DChStart
+ * 26-Oct-01 2.21 VKL Remove L1D_AdjustFrequency() prototype
+ * Increse size of agcScaleBetaServingCell array
+ * 26-Oct-01 2.21 SGB Correct File history
+ * 17-Nov-01 2.22 VKL Change AGC interface
+ * Replace AGCGroup values by #defines to temporarily
+ * patch in new AGC
+ * Move AGCParams to l1_types.h
+ * 21-Nov-01 2.23 VKL Make PRACh aware of syncTimeSlot
+ * Remove frequencyError param from L1I_ReportRxBurstData
+ * 04-Dec-01 2.24 VKL Add flags parameter to L1I_GetUplinkFACCh()
+ * Replace L1D_TChF() by L1D_TCh().
+ * Add fn parameter to L1D_NPBCCh()
+ *
+ *****************************************************************************/
+
+#ifndef l1_generic_l1_public_h
+#define l1_generic_l1_public_h
+
+#if !defined(GEN_FOR_PC)
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#endif // GEN_FOR_PC
+
+#include "l1_const.h"
+#include "l1_types_public.h"
+#include "l1_tool.h"
+#include "l1_types.h"
+
+#if !defined(IC_BURNIN_TEST) && !defined(GEN_FOR_PC) && !defined(__NO_L1TRC_GEN__)
+#include "TrcMod.h"
+#endif
+
+#include "mph_types.h"
+#include "l1d_cid.h"
+#include "kal_general_types.h"
+#include "l1d_public.h"
+#ifdef __MTK_TARGET__
+#include "perf_api.h"
+#endif
+
+/* -------------------------------------------------------------------------- */
+/* --- layer1 functions accessible by hardware driver ----------------------- */
+/* -------------------------------------------------------------------------- */
+
+#define ARFCN2INDEX L1_ARFCNToIndex /* backward compatibility */
+
+intx L1_ARFCNToIndex( ARFCN arfcn );
+ARFCN L1_IndexToARFCN( intx index );
+FrequencyBand L1_ARFCNToFrequencyBand( ARFCN arfcn );
+
+#if IS_DYNAMICAL_NOISE_FLOOR_AND_SATURATION_SUPPORT
+intx L1_PowerToIndex( Power power );
+#endif
+
+
+typedef enum
+{
+ caller_l1c,
+ caller_tst,
+ caller_l1d,
+}L1D_APIcaller_id;
+
+/* --- getting uplink data -------------------------------------------------- */
+
+#if IS_DUAL_CORE_GL1AC_MODEM_SUPPORT
+void L1I_GetUplinkSACCh( kal_uint32 ul_data_index, QueryTxDataCallback* callback);
+#else /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+BlockData* L1I_GetUplinkSACCh( void );
+#endif /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+#if IS_DUAL_CORE_GL1AC_MODEM_SUPPORT
+void L1I_GetUplinkFACCh( intx flags, kal_uint32 ul_data_index, QueryTxDataCallback* callback);
+#else /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+BlockData* L1I_GetUplinkFACCh( intx flags );
+#endif /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+/*AMR_ENABLE*/
+BlockData* L1I_GetUplinkRATSCCh( intx flags );
+/*end of AMR_ENABLE*/
+#if IS_DUAL_CORE_GL1AC_MODEM_SUPPORT
+void L1I_GetUplinkSDCCh( kal_uint32 ul_data_index, QueryTxDataCallback* callback);
+#else /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+BlockData* L1I_GetUplinkSDCCh( void );
+#endif /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT*/
+BlockData* L1I_GetUplinkCSD( intx flags );
+
+/* --- replying reports ----------------------------------------------------- */
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
+ #if IS_2G_C_VALUE_SUPPORT
+ #if IS_2G_RAS_DECISION_INCLUDE_DSP_POW_SUPPORT
+ void L1I_ReportRxBurstData( Report *report, ARFCN arfcn, intx rxSlotIndex, intx subBlock, intx timingError_ebits, Power power_dBm, Power power_dBm_rxd, Power dspPower_dBm, Power dspPower_dBm_drx, int16 dsp_c_value, int16 dsp_c_value_drx, int16 snr );
+ #else
+ void L1I_ReportRxBurstData( Report *report, ARFCN arfcn, intx rxSlotIndex, intx subBlock, intx timingError_ebits, Power power_dBm, Power power_dBm_rxd, int16 dsp_c_value, int16 dsp_c_value_drx, int16 snr );
+ #endif /* IS_2G_RAS_DECISION_INCLUDE_DSP_POW_SUPPORT */
+ #else
+ #if IS_2G_RAS_DECISION_INCLUDE_DSP_POW_SUPPORT
+ void L1I_ReportRxBurstData( Report *report, ARFCN arfcn, intx rxSlotIndex, intx subBlock, intx timingError_ebits, Power power_dBm, Power power_dBm_rxd, Power dspPower_dBm, Power dspPower_dBm_drx, int16 snr );
+ #else
+ void L1I_ReportRxBurstData( Report *report, ARFCN arfcn, intx rxSlotIndex, intx subBlock, intx timingError_ebits, Power power_dBm, Power power_dBm_rxd, int16 snr );
+ #endif /* IS_2G_RAS_DECISION_INCLUDE_DSP_POW_SUPPORT */
+ #endif /* IS_2G_C_VALUE_SUPPORT */
+#else
+void L1I_ReportRxBurstData( Report *report, ARFCN arfcn, intx rxSlotIndex, intx subBlock, intx timingError_ebits, Power power_dBm, int16 snr );
+#endif
+void L1I_PutReport( Report *report );
+
+/* --- hopping -------------------------------------------------------------- */
+
+ARFCN L1_CalcHoppingARFCN( HoppingSequence *hs, FrameNumber frame );
+
+/* --- power scan ----------------------------------------------------------- */
+
+#if IS_2G_TAS_ANT_IDX_FOR_PM_WINDOW_SUPPORT
+#if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+bool L1I_MeasurementsGetARFCN( ARFCN* arfcn, l1c_sim_mode_enum* sim_mode, GL1_AntennaInfo *antenna_assigned);
+#else
+bool L1I_MeasurementsGetARFCN( ARFCN* arfcn, l1c_sim_mode_enum* sim_mode);
+#endif /* IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 ) */
+#endif
+
+void L1I_MeasurementsPutResult( PMResult pmResult );
+
+/* --- MAC ------------------------------------------------------------------ */
+
+void L1I_MACSetReceivedUSF(TimeSlot timeSlot, intx usf, Report* report);
+bool L1I_MACFrameTick( PacketTransferSpec *pts );
+#if IS_DUAL_CORE_GL1AC_MODEM_SUPPORT
+void L1I_PreGetUplinkPDTCh( Report* report, kal_uint32 ul_data_index, QueryTxDataCallback *callback );
+#else /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+void L1I_PreGetUplinkPDTCh(PrePacketUplinkSpec *ppus, Report* report);
+#endif /* IS_DUAL_CORE_GL1AC_MODEM_SUPPORT */
+bool L1I_PRAChCheckUSFFree( void );
+
+/* --- AFC ------------------------------------------------------------------ */
+typedef struct
+{
+ Power burstpower;
+ uint16 snr;
+ int16 freq_offset;
+
+#if IS_SAIC_CHIP_MT6223_AND_LATTER_VERSION
+ int16 tx_freq_offset;
+ int16 c_value;
+ #if IS_2G_C_VALUE_SUPPORT
+ int16 c_value_drx;
+ #endif
+ bool isSAIC;
+ #if IS_EGPRS
+ bool isEPSK;
+ #endif
+#endif /* End of "IS_SAIC_CHIP_MT6223_AND_LATTER_VERSION" */
+
+} BurstAfcDB;
+
+typedef struct
+{
+ BurstAfcDB burstafc[4];
+
+#if IS_ACC_NC_AFC_DB_UPDATE_SUPPORT
+ bool AfcForNbcch;
+#endif /* IS_ACC_NC_AFC_DB_UPDATE_SUPPORT */
+
+} AfcUpdateParams;
+
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+int32 L1I_AFCGetFBSBFreqSetting( AfcParams *p, bool beginfreqcorrection );
+int32 L1I_AFCAdjustFBSBFreqSetting( AfcParams *p, uint8 sub_stage );
+#else
+uint16 L1I_AFCGetFBSBFreqSetting( AfcParams *p, bool beginfreqcorrection );
+
+uint16 L1I_AFCAdjustFBSBFreqSetting( AfcParams *p, uint8 sub_stage );
+#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+void L1I_AFCFBSBUpdate( AfcParams *p, intx freq_offset, int8 freqcorrectionstepcnt, bool decodeOk, FrequencyBand band );
+
+void L1I_AFCBeforeTick( AfcParams *p );
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+int32 L1I_AFCGetNBFreqSetting( void );
+#else
+uint16 L1I_AFCGetNBFreqSetting( void );
+#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+void L1I_AFCNBUpdate( AfcUpdateParams *p, TimeSlotMask timeSlots, FrequencyBand band );
+void L1I_AFCAfterTick( void );
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+void L1I_SetAFcData( int32 calibrated_dac_default, intx calibrated_int_slope );
+#else
+void L1I_SetAFcData( int16 calibrated_dac_default, intx calibrated_int_slope );
+#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+
+#if IS_GEMINI_SUPPORT
+void L1I_AFCSetDatabaseToSIMx( uint8 simIndex );
+#endif
+
+//extern intx afc_inv_slope;
+//extern int16 afc_dac_default; /* move to l1d_public.h */
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+extern int32 onek_hz_dac;
+#else
+extern int16 onek_hz_dac;
+#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+
+#if IS_TDD_DUAL_MODE_SUPPORT
+extern int16 GSM_afc_inv_slope;
+extern intx GSM_afc_dac_default;
+#endif
+
+extern Power agc_gainoffset_h2l;
+extern Power agc_gprs_gainoffset;
+#if IS_EGPRS
+extern Power agc_edge_gainoffset;
+#endif
+
+/*XO*//* --XO AFC------------------------------------------------------------ */
+/*XO*/ void L1IXO_PrepareTuneSlope( bool freq_crt );
+/*XO*/ void L1DXO_PrepareTuneSlope( Report *report );
+/*XO*/ void L1DXO_TuneSlope( void );
+/*XO*/ bool L1DXO_IsSlopeCorrected( void );
+
+/* --- AGC ------------------------------------------------------------------ */
+
+typedef Report* AGCGroup;
+
+#define AGCGroupPowerMeasurement NULL
+#define AGCGroupFCCh report
+#define AGCGroupSCh report
+#define AGCGroupNBCCh report
+#define AGCGroupBCCh report
+#define AGCGroupPCh report
+#define AGCGroupCBCh report
+#define AGCGroupSACChC report
+#define AGCGroupSDCCh report
+#define AGCGroupTCh report
+#define AGCGroupSACChT report
+#define AGCGroupFCChT report
+#define AGCGroupSChT report
+#define AGCGroupPTCCh report
+#define AGCGroupPBCCh report
+#define AGCGroupNPBCCh report
+#define AGCGroupPPCh report
+#define AGCGroupPAGCh report
+#define AGCGroupPDTCh report
+#define AGCGroupInterference imm.params.report
+
+/*
+ first beta (forgetting factor) in the table. This is used if the delay
+ between the measurements is zero after scaling the delay.
+ This is a floating point number used to init the AGCs internal tables.
+*/
+#define BETA0 (0.1)
+
+/*
+ The AGC uses fixed point arithmetic for scales and forgetting factors (beta).
+ This constant defines the number of bits after the decimal point.
+*/
+#define AGC_PRECISION 10
+
+/*
+ Convert a floating point number to the AGCs internal fixed point format
+*/
+#define AGC_TOFIX(n) ((int16)((1<<AGC_PRECISION)*(n)))
+
+extern const AGCParams agcParams[ FrequencyBandCount ];
+#if IS_DYNAMICAL_NOISE_FLOOR_AND_SATURATION_SUPPORT
+extern AGCParams_T agcParams_p[];
+#endif
+
+
+void L1I_AGCBeforeBlock( Report *report, TimeSlotMask timeSlots );
+Gain L1I_AGCGetGain( Report *report, ARFCN arfcn, TimeSlot timeSlot );
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
+L1D_RX_POWER L1I_AGCGetInputPower( Report *report, ARFCN arfcn, TimeSlot timeSlot );
+ #if IS_2G_EXTERNAL_LNA_SUPPORT
+L1D_RX_POWER L1I_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, L1D_RX_POWER observedDSPOutputPower, L1D_RX_GAIN usedGain, BurstAfcDB *pBurstData, L1D_RX_ELNA_TYPE elna_status );
+L1D_RX_POWER L1I_AGCMeasurementUpdate( ARFCN arfcn, L1D_RX_POWER observedDSPOutputPower, L1D_RX_GAIN usedGain, L1D_RX_ELNA_TYPE elna_status );
+ #else
+L1D_RX_POWER L1I_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, L1D_RX_POWER observedDSPOutputPower, L1D_RX_GAIN usedGain, BurstAfcDB *pBurstData );
+L1D_RX_POWER L1I_AGCMeasurementUpdate( ARFCN arfcn, L1D_RX_POWER observedDSPOutputPower, L1D_RX_GAIN usedGain );
+ #endif
+L1D_RX_POWER L1I_AGCMeasurementGetInputPower( ARFCN arfcn );
+#else
+ #if IS_2G_EXTERNAL_LNA_SUPPORT
+Power L1I_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, Power observedDSPOutputPower, Gain usedGain, BurstAfcDB *pBurstData, MMRF_ELNA_TYPE_E elna_status );
+Power L1I_AGCMeasurementUpdate( ARFCN arfcn, Power observedDSPOutputPower, Gain usedGain, MMRF_ELNA_TYPE_E elna_status );
+ #else
+Power L1I_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, Power observedDSPOutputPower, Gain usedGain, BurstAfcDB *pBurstData );
+Power L1I_AGCMeasurementUpdate( ARFCN arfcn, Power observedDSPOutputPower, Gain usedGain );
+ #endif
+Gain L1I_AGCMeasurementGetGain( ARFCN arfcn );
+#endif
+void L1I_AGCAfterBlock( Report *report, TimeSlotMask timeSlots );
+
+
+
+
+
+/* -------------------------------------------------------------------------- */
+/* --- hardware driver functions -------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+
+/* --- starting and stopping ------------------------------------------------ */
+
+void L1D_Init0( void );
+void L1D_Init( void );
+void L1D_Init2(void);
+void L1D_Exit( L1D_APIcaller_id caller );
+void L1D_Meta_Init( void );
+
+void L1D_Start( void );
+void L1D_Stop( L1D_APIcaller_id caller );
+
+/* --- ticking and sleeping ------------------------------------------------- */
+
+void L1D_FrameTick( void );
+
+bool L1D_PowerDown( intx frames );
+void L1D_PowerUp( void );
+
+/* --- drivers -------------------------------------------------------------- */
+
+#if IS_TDD_DUAL_MODE_SUPPORT
+/*TDD*/ /*--------------------------- GSM Using Only ------------------------------*/
+ #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+/*TDD*/ void L1D_AFCSetDACValue_DM( AfcParams *p, int32 DacValue, L1D_APIcaller_id caller );
+ #else
+/*TDD*/ void L1D_AFCSetDACValue_DM( AfcParams *p, int16 DacValue, L1D_APIcaller_id caller );
+ #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+/*TDD*/ bool L1D_check_3g_reli( void );
+/*TDD*/ void L1D_AFCResetParams_DM( AfcParams *p, L1D_APIcaller_id caller );
+/*TDD*/ /*--------------------------- TDD Using Only ------------------------------*/
+/*TDD*/ kal_uint16 L1D_GetInitMode( void );
+/*TDD*/ void L1D_ErrorCheck_DM_RF_Conflict( uint32 start_subfn, uint16 start_chip, uint32 end_subfn, uint16 end_chip );
+/*TDD*/ /*--------------------------- GSM/TDD Using ------------------------------*/
+ #if L1D_WT_COBIN_ARCHITECTURE_SUPPORT
+ #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+/*TDD*/ kal_int32 L1D_AFCGetDAC_Value_DM_TDD( bool is_2g_2_3g );
+ #else
+/*TDD*/ kal_int16 L1D_AFCGetDAC_Value_DM_TDD( bool is_2g_2_3g );
+ #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+ #else
+ #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+/*TDD*/ kal_int32 L1D_AFCGetDAC_Value_DM( bool is_2g_2_3g );
+ #else
+/*TDD*/ kal_int16 L1D_AFCGetDAC_Value_DM( bool is_2g_2_3g );
+ #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+ #endif
+/*TDD*/ void L1D_AFCChangeTDReliable_DM( bool is_afc_reliable );
+#endif
+void L1D_AFC_Control_Switch_DM( kal_bool is_2G_control );
+
+void L1D_AFC_Update_Mode(kal_uint8 sim_num, kal_uint8 new_mode, L1D_APIcaller_id caller );
+void L1D_AFC_Update_Gap_Start(kal_uint8 sim_num, L1D_APIcaller_id caller);
+#ifdef __UMTS_FDD_MODE__
+/*FDD*/ bool L1D_AFC_2G_ACTIVE_ASK_FreqCorrect( uint8 simIndex, kal_bool correction, kal_bool is_l1c, AfcParams *afcParams );
+#endif
+
+#if !IS_MultiMode_AFC_Support
+ #ifdef __UMTS_FDD_MODE__
+ #if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+/*FDD*/ void L1D_AFCSetDACValue_DM( AfcParams *p, int32 DacValue, L1D_APIcaller_id caller );
+ #else
+/*FDD*/ void L1D_AFCSetDACValue_DM( AfcParams *p, int16 DacValue, L1D_APIcaller_id caller );
+ #endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+/*FDD*/ int16 L1D_AFCGetServingDACValue_DM( void );
+/*FDD*/ void L1D_AFCResetParams_DM( AfcParams *p, L1D_APIcaller_id caller );
+ #endif
+#endif
+
+void L1D_Update_DSP_2G_TimeStamp( kal_uint32 timestamp );
+void L1D_Update_DSP_3G_TimeStamp( kal_uint16 timestamp );
+
+void L1D_AFCSetParams( uint8 simIndex, AfcParams *afc, L1D_APIcaller_id caller );
+bool L1D_AFCGetServingReliable( uint8 simIndex );
+
+#if IS_GEMINI_SUPPORT
+kal_bool L1D_AFC_Ask_FreqCorrection_2( uint8 simIndex, kal_bool correction, AfcParams *afcParams);
+#endif
+
+void L1D_SCDedicateModeStart( L1D_APIcaller_id caller );
+void L1D_SCDedicateModeEnd( L1D_APIcaller_id caller );
+void L1D_SCAccessModeStart( L1D_APIcaller_id caller );
+void L1D_SCAccessModeEnd( L1D_APIcaller_id caller );
+void L1D_SetInitMode( int16 mode );
+int L1D_CheckIfMetaMode( void );
+uint8 L1D_IRDMA_Power_GetHandle( void );
+void L1D_IRDMA_Power_On( uint8 handle );
+void L1D_IRDMA_Power_Off( uint8 handle );
+
+Gain L1D_SetHardwareGain( FrequencyBand band, Gain gain );
+void L1D_AGCControl( void *privateData );
+
+void L1D_ExtendFrame( intx extendFrameEBits, L1D_APIcaller_id caller );
+void L1D_AdjustFrame( intx adjustFrameEBits, L1D_APIcaller_id caller );
+void L1D_SetSync( FrameNumber setSyncFrame, intx setSyncEBits, L1D_APIcaller_id caller );
+void L1D_Write_HW_TQWRAP( uint16 tq );
+
+#if IS_GEMINI_SUPPORT
+void L1D_SetSIM2FrameNumber( FrameNumber setSyncFrame );
+void L1D_SetSIM2FrameNumber_ForRx( uint8 simIndex, FrameNumber setSyncFrame, int8 burstCnt );
+void L1D_SetSIM2FrameNumber_ForTx( uint8 simIndex, FrameNumber setSyncFrame, int8 burstCnt );
+#endif
+
+void L1D_FCCh( Report *report, ARFCN arfcn, bool frequencyCorrect, AfcParams *afc, L1D_APIcaller_id caller );
+void L1D_FCChStop( L1D_APIcaller_id caller );
+
+void L1D_SCh( Report *report, ARFCN arfcn, AfcParams *afc, L1D_APIcaller_id caller );
+void L1D_SChStop( uint8 simIndex, L1D_APIcaller_id caller );
+
+void L1D_NBCCh( Report *report, ARFCN arfcn, BSIC bsic, AfcParams *afc, L1D_APIcaller_id caller );
+
+void L1D_BCCh( Report *report, ARFCN arfcn, BSIC bsic, L1D_APIcaller_id caller );
+
+void L1D_PCh( Report *report, ARFCN arfcn, BSIC bsic, L1D_APIcaller_id caller );
+#ifdef __L1_CB__
+void L1D_CBChStart( HoppingSequence *hoppingSequence, TSC tsc, TimeSlot timeSlotPosition, L1D_APIcaller_id caller );
+void L1D_CBCh( Report *report, L1D_APIcaller_id caller );
+void L1D_CBChStop( L1D_APIcaller_id caller );
+#endif
+#if IS_GSM_INCREASE_RACH_TX_POWER_SUPPORT
+ #if IS_2G_TAS_SUPPORT || IS_2G_Gen95_UTAS_SUPPORT || IS_2G_Gen97_UTAS_SUPPORT
+void L1D_RACh( ARFCN arfcn, BSIC bsic, Power txPower, RAChData rachData, intx burstLength, TSC tsc ,l1c_d_intf_params* l1c_d_intf_params, int8 rachTxCount, L1D_APIcaller_id caller );
+ #else
+void L1D_RACh( ARFCN arfcn, BSIC bsic, Power txPower, RAChData rachData, intx burstLength, TSC tsc, int8 rachTxCount, L1D_APIcaller_id caller );
+ #endif
+#else
+ #if IS_2G_TAS_SUPPORT || IS_2G_Gen95_UTAS_SUPPORT || IS_2G_Gen97_UTAS_SUPPORT
+void L1D_RACh( ARFCN arfcn, BSIC bsic, Power txPower, RAChData rachData, intx burstLength, TSC tsc ,l1c_d_intf_params* l1c_d_intf_params, L1D_APIcaller_id caller );
+ #else
+void L1D_RACh( ARFCN arfcn, BSIC bsic, Power txPower, RAChData rachData, intx burstLength, TSC tsc, L1D_APIcaller_id caller );
+ #endif
+#endif
+void L1D_ReportPeriod( Report *report, TimingAdvance timingAdvance, int8 dtxsetting, L1D_APIcaller_id caller );
+void L1D_ReportPeriodStop( L1D_APIcaller_id caller );
+
+#if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_DChAB( bool isTCh, l1c_d_intf_params* l1c_d_intf_params, L1D_APIcaller_id caller);
+#else
+void L1D_DChAB( bool isTCh, L1D_APIcaller_id caller );
+#endif /* IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )*/
+void L1D_DChStart( DChParams *params, intx sacchPosition, L1D_APIcaller_id caller );
+void L1D_DChStop( bool releaseDCh, L1D_APIcaller_id caller );
+void L1D_DChStopHandoverASAP( L1D_APIcaller_id caller );
+void L1D_DChSetHoppingSequence( HoppingSequence *hoppingSequence, L1D_APIcaller_id caller );
+void L1D_DChSetCiphering( bool enable, int8 algorithm, uint8 key[ 8 ], L1D_APIcaller_id caller );
+void L1D_DChSetChannelMode( TChMode channelMode, SubChannel subChannel, bool dtxAllowed, L1D_APIcaller_id caller );
+void L1D_DChSetAMRChannelMode( TChMode channelMode, SubChannel subChannel, bool dtxAllowed, TChAMRConfig *amrConfig, L1D_APIcaller_id caller );
+void L1D_DChSetAMRConfig( TChAMRConfig *amrConfig, L1D_APIcaller_id caller );
+void L1D_DChSetAMRQICompensated( uint16 amrCompensated );
+void L1D_DChInitAMRQICompensated( void );
+void L1D_DChSetLoopMode( LoopMode mode, L1D_APIcaller_id caller );
+void L1D_DChSetTxPower( Power txPower, L1D_APIcaller_id caller );
+#ifdef __EGPRS_MODE__
+void L1D_EGPRSSetSRBMode( bool isOn, TimeSlot dnTsOffset, bool mBit, L1D_APIcaller_id caller );
+#endif /*__EGPRS_MODE__*/
+
+void L1D_SDCChDown( Report *report, L1D_APIcaller_id caller );
+#if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_SDCChUp( bool handover ,l1c_d_intf_params* intf_params, L1D_APIcaller_id caller);
+#else
+void L1D_SDCChUp( bool handover , L1D_APIcaller_id caller);
+#endif
+void L1D_SACChCDown( Report *report, L1D_APIcaller_id caller );
+#if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_SACChCUp( bool handover, l1c_d_intf_params* intf_params, L1D_APIcaller_id caller );
+#else
+void L1D_SACChCUp( bool handover, L1D_APIcaller_id caller );
+#endif /* IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 ) */
+#if IS_DUAL_CORE_MODEM_SUPPORT
+void L1D_SetSABMData( BlockData *data, L1D_APIcaller_id caller );
+#endif /* IS_DUAL_CORE_MODEM_SUPPORT */
+
+#define TCH_BLOCK 0x01 /* interleaved block starts and other one ends */
+#define TCH_FACCHU 0x02 /* uplink FACCh block start */
+#define TCH_FACCHD 0x04 /* downlink FACCh block end */
+#define TCH_NODTXD 0x08 /* no downlink DTX allowed on this block */
+#define TCH_NODTXU 0x10 /* no uplink DTX allowed on this block */
+#define TCH_QSUB 0x20 /* monitor block quality to sub for normal block */
+#define TCH_QFACCHSUB 0x40 /* monitor block quality to sub for FACCh block */
+#define TCH_FORCEFACCH 0x80 /* interleaved block starts and other one ends */
+
+#define SACCH_NONE_SHIFT 0x0000
+#define SACCH_RIGHT_SHIFT 0x0100
+#define SACCH_LEFT_SHIFT 0x0200
+
+#if IS_DUAL_LOOP_AFC_CONTROL_SUPPORT
+#define MAX_FBCORRECTION_SEARCH_TIME (110) //(110+52) // FB Search time increase 13*4 caused by USE_3_SUBSTAGES_FB_STAGE1=1
+#else
+#define MAX_FBCORRECTION_SEARCH_TIME (110)
+#endif
+
+void L1D_TCh( Report *report, intx flags, HandoverState handover, L1D_APIcaller_id caller );
+void L1D_SACChT( Report *report, intx subBlock, bool handover, L1D_APIcaller_id caller );
+void L1D_DChGetCsdASAP( Report *report , Report *oldreport, L1D_APIcaller_id caller );
+
+void L1D_FCChTStart( Report *report, ARFCN arfcn, TimeSlot startTimeSlot, AfcParams *afc, L1D_APIcaller_id caller );
+void L1D_FCChT( L1D_APIcaller_id caller );
+void L1D_FCChTStop( L1D_APIcaller_id caller );
+
+void L1D_SChT( Report *report, ARFCN arfcn, intx ebitPosition, AfcParams *afc, L1D_APIcaller_id caller );
+
+void L1D_PTCChStart( HoppingSequence *hoppingSequence, BSIC bsic, TSC tsc, intx burstLength, L1D_APIcaller_id caller );
+void L1D_PTCChSetHoppingSequence( HoppingSequence *hoppingSequence );
+void L1D_PTCChStop( L1D_APIcaller_id caller );
+void L1D_PTCChDown( Report *report, intx subBlock, TimeSlot timeSlotPosition, L1D_APIcaller_id caller );
+#if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_PTCChUp( Power txPower, TimeSlot timeSlotPosition, l1c_d_intf_params* intf_params, L1D_APIcaller_id caller);
+ #else
+void L1D_PTCChUp( Power txPower, TimeSlot timeSlotPosition , L1D_APIcaller_id caller);
+ #endif
+
+void L1D_PBCChStart( HoppingSequence *hoppingSequence, TSC tsc, TimeSlot timeSlotPosition );
+void L1D_PBCCh( Report *report, bool decodeUSF, L1D_APIcaller_id caller );
+void L1D_PBCChStop( L1D_APIcaller_id caller );
+
+void L1D_NPBCChStart( HoppingSequence *hoppingSequence, TSC tsc, TimeSlot timeSlotPosition, AfcParams *afc, L1D_APIcaller_id caller );
+void L1D_NPBCCh( Report *report, FrameNumber fn, L1D_APIcaller_id caller );
+void L1D_NPBCChStop( L1D_APIcaller_id caller );
+
+void L1D_PPChStart( HoppingSequence *hoppingSequence, TSC tsc, TimeSlot timeSlotPosition, L1D_APIcaller_id caller );
+void L1D_PPCh( Report *report, bool decodeUSF, L1D_APIcaller_id caller );
+void L1D_PPChStop( L1D_APIcaller_id caller );
+
+void L1D_PAGCh( Report *report, HoppingSequence *hoppingSequence, TSC tsc, TimeSlot timeSlotPosition, bool decodeUSF, L1D_APIcaller_id caller );
+
+#if IS_2G_TAS_SUPPORT || IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_PRACh( ARFCN arfcn, BSIC bsic, TimeSlot timeSlot, TimeSlot timeSlotPosition, Power txPower, RAChData rachData, intx burstLength, TSC tsc , l1c_d_intf_params* intf_params, L1D_APIcaller_id caller );
+#else
+void L1D_PRACh( ARFCN arfcn, BSIC bsic, TimeSlot timeSlot, TimeSlot timeSlotPosition, Power txPower, RAChData rachData, intx burstLength, TSC tsc, L1D_APIcaller_id caller );
+#endif
+
+ #if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_PollResp( HoppingSequence *hoppingSequence, BSIC bsicOrTSC, Power txPower, TimingAdvance timingAdvance, BlockData *blockData, int burstLength , l1c_d_intf_params *intf_params, L1D_APIcaller_id caller);
+ #else
+void L1D_PollResp( HoppingSequence *hoppingSequence, BSIC bsicOrTSC, Power txPower, TimingAdvance timingAdvance, BlockData *blockData, int burstLength , L1D_APIcaller_id caller);
+ #endif
+
+void L1D_PDTChStart( HoppingSequence *hoppingSequence, TSC tsc, BSIC bsic, bool egprs, L1D_APIcaller_id caller );
+#if IS_RTTI_EDGE_SUPPORT
+void L1D_PDTCh( Report *report, bool ccReset, bool egprs, bool isEven, L1D_APIcaller_id caller );
+#else
+void L1D_PDTCh( Report *report, bool ccReset, bool egprs, L1D_APIcaller_id caller );
+#endif
+void L1D_PDTChSetHoppingSequence( HoppingSequence *hoppingSequence );
+void L1D_PDTChStop( bool released, L1D_APIcaller_id caller );
+void L1D_PDTChS_StopTxProcess( int16 forceDSPTXNoProcess );
+
+void L1D_PACChDown( Report *report, HoppingSequence *hs, TSC tsc, L1D_APIcaller_id caller );
+
+void L1D_Interference( Report *report, ARFCN arfcn, L1D_APIcaller_id caller );
+
+void L1D_DChUpdateTA( uint8 timingAdvance, L1D_APIcaller_id caller );
+
+void L1D_PM_FillPMQueue( void );
+
+kal_bool L1D_FBSB_Status_Querry(char querry_mode, char SIM_index);
+
+void L1D_Suspend_PM( bool suspend, L1D_APIcaller_id caller );
+void L1D_PM_ConsumePMQueue( void );
+#if defined(__GEMINI__) && defined(__UMTS_RAT__)
+extern kal_bool UL1D_UMTS_Is_In_Dedi_Mode( void );
+#endif
+
+void L1D_GetCurrentTime( uint32 *frame_number, uint16 *tq_count );
+void L1D_MeasureMaxDuration_Start( sMTMAXTIME *data );
+void L1D_MeasureMaxDuration_Stop( sMTMAXTIME *data );
+#if IS_DUAL_CORE_MODEM_SUPPORT
+void L1D_MeasureMaxDuration_SetStopTime( sMTMAXTIME *data, int16 stop_time );
+#endif /* IS_DUAL_CORE_MODEM_SUPPORT */
+void L1D_MeasureMaxEnd_Start( sMTMAXTIME *data );
+void L1D_MeasureMaxEnd_Stop( sMTMAXTIME *data );
+void L1D_MeasureTime_L1I_Start( void );
+void L1D_MeasureTime_L1I_Stop( void );
+void L1D_MeasureTime_L1I_Skip( void );
+
+/* --- sleep mode manager --------------------------------------------------- */
+
+void L1SM_FrameTick( uint16 *frames, uint16 *ebit );
+void L1SM_BeginCalibration( void );
+
+/* --- test mode ------------------------------------------------------------ */
+
+void L1ITST_AGCBeforeBlock( Report *report, TimeSlotMask timeSlots );
+Gain L1ITST_AGCGetGain( Report *report, ARFCN arfcn, TimeSlot timeSlot );
+#if defined(__2G_RX_DIVERSITY_PATH_SUPPORT__)
+L1D_RX_POWER L1ITST_AGCGetInputPower( Report *report, ARFCN arfcn, TimeSlot timeSlot );
+ #if IS_2G_EXTERNAL_LNA_SUPPORT
+L1D_RX_POWER L1ITST_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, L1D_RX_POWER observedDSPOutputPower, L1D_RX_GAIN usedGain, BurstAfcDB *pBurstData, L1D_RX_ELNA_TYPE elna_status);
+ #else
+L1D_RX_POWER L1ITST_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, L1D_RX_POWER observedDSPOutputPower, L1D_RX_GAIN usedGain, BurstAfcDB *pBurstData );
+ #endif
+#else
+ #if IS_2G_EXTERNAL_LNA_SUPPORT
+Power L1ITST_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, Power observedDSPOutputPower, Gain usedGain, BurstAfcDB *pBurstData, MMRF_ELNA_TYPE_E elna_status );
+ #else
+Power L1ITST_AGCUpdate( Report *report, ARFCN arfcn, TimeSlot timeSlot, Power observedDSPOutputPower, Gain usedGain, BurstAfcDB *pBurstData );
+ #endif
+#endif
+void L1ITST_AGCAfterBlock( Report *report, TimeSlotMask timeSlots );
+
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+int32 L1ITST_AFCGetFBSBFreqSetting( AfcParams *p, bool beginfreqcorrection );
+#else
+uint16 L1ITST_AFCGetFBSBFreqSetting( AfcParams *p, bool beginfreqcorrection );
+#endif
+void L1ITST_AFCFBSBUpdate( AfcParams *p, intx freq_offset, intx freqcorrectionstepcnt, bool decodeOk, FrequencyBand band );
+
+void L1ITST_AFCBeforeTick( AfcParams *p );
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+int32 L1ITST_AFCGetNBFreqSetting( void );
+#else
+uint16 L1ITST_AFCGetNBFreqSetting( void );
+#endif
+void L1ITST_AFCNBUpdate( AfcUpdateParams *afcupdate, TimeSlotMask timeSlots, FrequencyBand band );
+void L1ITST_AFCAfterTick( void );
+
+bool L1ITST_MACFrameTick( PacketTransferSpec *pts );
+#if IS_DUAL_CORE_MODEM_SUPPORT
+void L1ITST_PreGetUplinkPDTCh( Report* report, kal_uint32 ul_data_index, QueryTxDataCallback *callback );
+#else
+void L1ITST_PreGetUplinkPDTCh( PrePacketUplinkSpec *ppus, Report *report );
+#endif /* IS_DUAL_CORE_MODEM_SUPPORT */
+void L1ITST_MACSetReceivedUSF( TimeSlot timeSlot, intx usf, Report *report );
+bool L1ITST_PRAChCheckUSFFree( void );
+
+#if IS_DUAL_CORE_MODEM_SUPPORT
+void L1ITST_GetUplinkSACCh( kal_uint32 ul_data_index, QueryTxDataCallback *callback );
+void L1ITST_GetUplinkFACCh( intx flags, kal_uint32 ul_data_index, QueryTxDataCallback *callback );
+#else
+BlockData* L1ITST_GetUplinkSACCh( void );
+BlockData* L1ITST_GetUplinkFACCh( intx flags );
+#endif /* IS_DUAL_CORE_MODEM_SUPPORT */
+BlockData* L1ITST_GetUplinkRATSCCh( intx flags ); /*AMR_ENABLE*/
+#if IS_DUAL_CORE_MODEM_SUPPORT
+void L1ITST_GetUplinkSDCCh( kal_uint32 ul_data_index, QueryTxDataCallback *callback );
+#else
+BlockData* L1ITST_GetUplinkSDCCh( void );
+#endif /* IS_DUAL_CORE_MODEM_SUPPORT */
+BlockData* L1ITST_GetUplinkCSD( intx flags );
+
+void L1D_RXWin_On( ARFCN arfcn );
+void L1D_RXWin_Off( void );
+#if defined(__EPSK_TX__)
+void L1D_RF_SetRampApcLevelEPSK( int rf_band, int power_in_dBm, int apc_dac );
+#endif
+void L1D_TXWin_On( ARFCN arfcn, uint8 modtype, uint8 powerlev );
+void L1D_TXWin_Off( void );
+void L1D_SetBBTXCfg( const sBBTXCfg *bbtx );
+void L1D_ReadBBTXCfg( sBBTXCfg *bbtx );
+intx L1D_ReadBBTXCfgVer( void );
+void L1D_RF_SetBBTXParameters( void *table );
+void L1D_RF_SetRampApcLevel( int rf_band, int power_in_dBm, int apc_dac );
+
+#if IS_EGPRS
+ #if !defined(__NEW_TBF_ARCH__)
+void L1D_SetIRParams( TFI tfi, bool dnRlcAckMode, int16 WS, bool resetIR, L1D_APIcaller_id caller );
+ #else
+void L1D_SetIRParams( uint8 idx, TFI tfi, IRParams *ir, L1D_APIcaller_id caller );
+void L1D_BackupRestore_AllVQ( uint8 ctrl, bool isNextTbfEdge, L1D_APIcaller_id caller ); // 0: restore, 1: backup
+ #endif
+ #if IS_RTTI_EDGE_SUPPORT || IS_FANR_EDGE_SUPPORT
+#define __2G_R7_L1_WORKAROUND__
+void L1D_SetULTBFParams( UpSpecParams *up, uint8 idx2 );
+ #endif
+#endif
+
+void L1D_GetBatteryMeasurementSetting( SBATMEASARG *meas_args );
+void L1D_SetBatteryVoltage( int volt );
+void L1D_SetBatteryTemperature( int temp );
+void L1D_SetRFTemperature( int temp );
+#if IS_2G_TAS_SUPPORT || IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1D_SetRFTxPowerDecrementTable_TAS( bool valid, uint8 op_code, uint8 tx_reduction_table[4][2][4], uint8 tx_reduction_table_tas[4][2][4]);
+#else
+void L1D_SetRFTxPowerDecrementTable( bool valid, uint8 op, uint8 tx_reduction_table[4][2][4] );
+#endif
+void L1D_SIM_Notify_DSP( uint8 simIndex );
+void L1D_SIM_Notify( uint8 simIndex, uint8 status, L1D_APIcaller_id caller );
+uint8 L1D_IS_GetRFTemperatureFromADC( void );
+uint8 L1D_IS_GetBatteryInfoFromADC( void );
+int32 L1D_UpdateVoltInfoPeriod( void );
+
+void L1D_VOLTCOM_Enable_in_Meta( void *data );
+void L1D_VOLTCOM_Disable_in_Meta( void *data );
+
+#if IS_TX_POWER_CONTROL_SUPPORT
+void L1D_TXPC_Enable_in_Meta( void *data );
+void L1D_TXPC_Disable_in_Meta( void *data );
+#endif
+
+#define CHECK_PM_AVAILABLE 0x00
+#define CHECK_FBM_IN_QUEUE 0x01
+#define CHECK_SBM_IN_QUEUE 0x02
+#define CHECK_IMM_IN_QUEUE 0x04
+#define CHECK_FSIWIN_USING 0x08
+#define CHECK_PM_SUSPENDED 0x10
+#define CHECK_PM_SKIPPED 0x20
+#define CHECK_ONE_PM_BYPASS 0x40
+
+/* --- Feature of Modem Hard Real Time Recovery --------------------------------------------------------- */
+
+typedef enum
+{
+ MDTR_MSG_PENDING_FLAG, /* 0*/
+ MDTR_MSG_TIMER_CONFLICT, /* 1*/
+ MDTR_MSG_L1C_TR_COMPLETE, /* 2*/
+ MDTR_MSG_32K_WRAP, /* 3*/
+ MDTR_MSG_PRE_EQ_ASSERT, /* 4*/
+ MDTR_MSG_POST_EQ_ASSERT, /* 5*/
+ MDTR_MSG_CD_DONE_ASSERT, /* 6*/
+ MDTR_MSG_PENDING_PARAMS, /* 7*/
+ MDTR_MSG_TIMING_PARAMS, /* 8*/
+ MDTR_MSG_DLY_RESUME_SET, /* 9*/
+ MDTR_MSG_DLY_RESUME_CLR, /*10*/
+ MDTR_MSG_ALIGN_FRAME /*11*/
+} MDTR_DBG_MSG;
+
+bool L1D_MDTR_TimingAbnormal(void);
+void L1D_MDTR_DebugMessage(MDTR_DBG_MSG msgID, int32 param1, int32 param2);
+void L1I_MDTR_RaisePendingFlag(void);
+void L1I_MDTR_RaiseRecoverFlag(intx frames, intx ebits);
+
+void L1_Get_Cal_Data_Download_Info( void );
+void L1T_UpdateCalibrationData( kal_uint32 cal_lid, L1dOperationMode mode );
+uint16 L1D_Check_PM_Window_Is_Available( void );
+#if IS_FORCE_ENHENCE_PM_SUPPORT
+void L1D_Set_Force_Enhence_PM(bool enable, L1D_APIcaller_id caller);
+#endif
+int16 L1D_Get_RFOnTime( void );
+
+#ifdef __SGTDS_STANDBY_AFC_TRACKING__
+Standby_AfcParams_list* L1I_GetStandbyAFCList_TDD( void );
+bool L1I_IsTDDinDedicate( void );
+bool L1I_IsSpecialGAPHandlingStarted( void );
+#ifdef __GL1_GEMINI__
+void L1I_ClearReservation_SGTDS( void );
+#endif
+#endif
+
+#ifdef __GL1_GEMINI_WCDMA__
+bool L1I_QueryAnyPLMN_BSIC_NBCCh( void );
+#endif
+
+#if IS_2G_RXD_SUPPORT
+uint16 L1D_RAS_NVRAM_LID_QUERY(void);
+#endif /* IS_2G_RXD_SUPPORT */
+
+#if IS_2G_TAS_SUPPORT||IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+ #if IS_2G_Gen95_UTAS_SUPPORT || ( CUR_GEN > MD_GEN95 )
+void L1I_AssignUTASParameters( TASPublicParams* custom_param, MMRFD_ANT_HW_LAYOUT_INFO_T* ant_hw_layout_info);
+#if IS_GSM_TX_DETECTOR_SUPPORT
+void L1I_UpdateTxDValue( Power avg_txPower_det ); //L1C->L1D
+#endif /* End of IS_GSM_TX_DETECTOR_SUPPORT*/
+ #elif IS_2G_TAS_SUPPORT
+void L1I_AssignTASParameters( TASPublicParams* public ); //L1C->L1D
+ #else
+ #endif
+uint16 L1D_TAS_NVRAM_LID_QUERY(void); //L1D->L1C
+bool L1_CheckSimMode(l1c_sim_mode_enum local_sim_mode); //L1C->L1D
+ #if IS_2G_TAS_INHERIT_4G_ANT
+bool L1I_QueryInheritAntennaFromLteBand(kal_uint8 g_band,kal_uint8* l_band); //L1C->L1D
+ #endif
+#endif
+
+#if defined(__MD93__)
+#if IS_2G_RXD_SUPPORT
+AntennaStatus L1I_QueryAntennaStatus( FrequencyBand band, l1c_sim_mode_enum local_sim_mode, uint8 *rxd_mode);
+#elif IS_2G_TAS_SUPPORT
+AntennaStatus L1I_QueryAntennaStatus( FrequencyBand band, l1c_sim_mode_enum local_sim_mode);
+#endif /*IS_2G_RXD_SUPPORT*/
+#endif /* __MD93__*/
+
+#if IS_2G_RXD_SUPPORT
+void L1I_AssignRASParameters( RASPublicParams* public ); /* for l1d to assign RAS public parameter from NVRAM */
+#endif
+
+#if IS_2G_DYNAMIC_HW_CLOCK_SUPPORT
+void L1I_AssignParameters_HW_CLOCK( L1D_RF_INTERFERENCE_ARFCN_INDICATION_T* HWClockParams );
+#endif
+
+void L1D_CheckAllGl1dActDone( Report *report, L1D_APIcaller_id caller );
+
+#if IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT
+uint8 L1D_Apply_Frequent_Wakeup(void);
+#endif /* IS_AFC_CAPABILITY_ENHANCEMENT_SUPPORT */
+
+#if IS_FAST_TIMING_ADJUST_SUPPORT
+void L1I_Set_TCh_timing_adjustment(l1c_sim_mode_enum local_sim_mode, int16 timing_adj);
+#endif
+
+/****************************************************************************
+ FUNCTION NAME: GL1_FLIGHT_MODE_SWITCH
+
+ DESCRIPTION: GL1 PERF recovery API
+
+ PARAMETERS: None
+
+ RETURNED VALUES: None
+
+*****************************************************************************/
+#define GL1_ASSERT_Reboot( st ) if(!(st)) ASSERT( 0 )
+
+#ifdef __MTK_TARGET__
+#define GL1_WARNING(expr) MODEM_WARNING_MESSAGE( expr )
+
+#if defined(__GL1_GEMINI__)
+#define GL1_FLIGHT_MODE_SWITCH \
+{ \
+ protocol_exception_recovery_info_struct info; \
+ info.protocol_id = l1c_sim_mode; \
+ info.disable_escalate_recovery = KAL_TRUE; \
+ info.debug.p_buf = NULL; \
+ info.debug.size = 0; \
+ PROTOCOL_EXCEPTION_RECOVERY( MOD_L1, RECOVERY_TYPE_FLIGHT_MODE, &info );\
+}
+#else
+#define GL1_FLIGHT_MODE_SWITCH \
+{ \
+ protocol_exception_recovery_info_struct info; \
+ info.protocol_id = 0; \
+ info.disable_escalate_recovery = KAL_TRUE; \
+ info.debug.p_buf = NULL; \
+ info.debug.size = 0; \
+ PROTOCOL_EXCEPTION_RECOVERY( MOD_L1, RECOVERY_TYPE_FLIGHT_MODE, &info );\
+}
+#endif /* End of defined(__GL1_GEMINI__)*/
+#else /* XlSIM*/
+#define GL1_WARNING(expr) GL1_ASSERT_Reboot( expr )
+#define GL1_FLIGHT_MODE_SWITCH (void)0
+#endif /* __MTK_TARGET__ */
+
+#endif /*l1_generic_l1_public_h*/