[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/agps/eepapi.h b/mcu/interface/protocol/agps/eepapi.h
new file mode 100644
index 0000000..7485692
--- /dev/null
+++ b/mcu/interface/protocol/agps/eepapi.h
@@ -0,0 +1,143 @@
+/*****************************************************************************
+* 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) 2016
+*
+* 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).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef EEPAPI_H
+#define EEPAPI_H
+/*****************************************************************************
+
+ FILE NAME: eepapi.h
+
+ DESCRIPTION : EEP task interface
+
+ This include file provides system wide global type declarations and
+ constants
+ HISTORY :
+ See Log at end of file
+
+*****************************************************************************/
+
+#include "sysdefs.h"
+
+/*------------------------------------------------------------------------
+* EXE Interfaces - Definition of Signals, GPIO and Mailboxes
+*------------------------------------------------------------------------*/
+
+#define EEP_RUN_SIGNAL EXE_SIGNAL_1 /* */
+
+
+/*----------------------------------------------------------------------------
+ Defines Constants used in this file
+----------------------------------------------------------------------------*/
+#define EEP_SLEEP_WAKEUP_FLAG MON_DEEP_SLEEP_EEP_1_FLAG /* for EEP activity */
+
+/*----------------------------------------------------------------------------
+* EEP States : Kind of Virtual State
+*----------------------------------------------------------------------------*/
+typedef enum
+{
+ GPS_PGPS_OFF,
+ GPS_PGPS_ON
+} GpsPgpsStateT;
+
+/*----------------------------------------------------------------------------
+* Message IDs for signals and commands sent to LEC
+*----------------------------------------------------------------------------*/
+
+typedef enum
+{
+ /* from PSW */
+ EEP_GPS_PGPS_SAVED_SEED_MSG, /* Saved Seed file */
+ EEP_GPS_PGPS_SAVED_CLOCK_MSG, /* Saved Clock file */
+
+ /* from ETS */
+ EEP_TST_FSM_READ_MSG,
+ EEP_TST_FSM_WRITE_MSG,
+
+ EEP_TST_RXN_VERSION_MSG,
+ EEP_TST_SEED_CREATE_FROM_TSEED_MSG,
+ EEP_TST_SEED_CHECK_SEED_FILE_MSG,
+ EEP_TST_SEED_DELETE_SEED_FILE_MSG,
+
+ EEP_TST_EEPH_START_PROPAGATOR_MSG,
+ EEP_TST_EEPH_STOP_PROPAGATOR_MSG,
+ EEP_TST_EEPH_CHECK_EEPH_FILES_MSG,
+ EEP_TST_EEPH_DELETE_EEPH_FILES_MSG,
+
+ EEP_NUM_MSGS_ID
+} EepMsgIdT;
+
+/* For the Rerference, Define EEP send Msg IDs to other Tasks */
+/* It should be defined in each Task's api.h file */
+typedef enum
+{
+ EEP_SEND_NUM_MSGS_ID
+} EepSendMsgIdT;
+
+typedef enum
+{
+ NONE = 0x00, /* After Powered On */
+ PATCH = 0x01, /* For Patch Uploading */
+ EEP = 0x02, /* For Propagator */
+ LEC = 0x03 /* For STE's Call */
+
+} CalledByWhoT;
+
+/*----------------------------------------------------------------------------
+* Defined functions in EEP
+*----------------------------------------------------------------------------*/
+/* *pSeed: input - A pointer to where the EEP can get a Seed data from.
+ sSeed: input - Size of seed data. */
+
+extern void EepWriteSeedFile(char *pSeed, kal_uint16 sSeed);
+
+/* *pClock: input - A pointer to where the EEP can get a Clock data from.
+ sClock: input - Size of Clock data. */
+extern void EepWriteClockFile(char *pClock, kal_uint16 sClock);
+
+
+#endif
+/*****************************************************************************
+* $Log: eepapi.h $
+* Revision 1.0 2009/09/08 schun
+*****************************************************************************/
+
diff --git a/mcu/interface/protocol/agps/eeperrs.h b/mcu/interface/protocol/agps/eeperrs.h
new file mode 100644
index 0000000..47d7e8c
--- /dev/null
+++ b/mcu/interface/protocol/agps/eeperrs.h
@@ -0,0 +1,72 @@
+/*****************************************************************************
+* 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) 2016
+*
+* 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).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef EEPERRS_H
+#define EEPERRS_H
+/*****************************************************************************
+
+ FILE NAME: eeperrs.h
+
+ DESCRIPTION:
+
+ This file contains the fault ids for the EEP software unit.
+
+*****************************************************************************/
+
+/*------------------------------------------------------------------------
+* The following definitions are fault ids for MonFault.
+*-----------------------------------------------------------------------*/
+
+typedef enum
+{
+ EEP_WRITE_GNB_GET_BUFF_ERR = 0x00,
+ EEP_GPS_RESET_ERR
+
+} EEPErrsT;
+
+/*****************************************************************************
+* Initial revision
+*****************************************************************************/
+
+#endif
+
diff --git a/mcu/interface/protocol/agps/lbs_loc_info_struct.h b/mcu/interface/protocol/agps/lbs_loc_info_struct.h
new file mode 100644
index 0000000..3f83ed5
--- /dev/null
+++ b/mcu/interface/protocol/agps/lbs_loc_info_struct.h
@@ -0,0 +1,71 @@
+#ifndef _LBS_LOC_INFO_STRUCT_H_
+#define _LBS_LOC_INFO_STRUCT_H_
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+
+/******************************************************************************
+ * Location info
+ *****************************************************************************/
+typedef struct
+{
+ kal_int64 lat; //double lat
+ kal_int64 lng; //double lng
+ kal_int32 acc;
+ kal_uint32 loc_source; // bitmap of AGPS_MD_LOC_SOURCE_xxx
+ /* #define AGPS_MD_LOC_SOURCE_NONE 0x00
+ #define AGPS_MD_LOC_SOURCE_GNSS 0x01
+ #define AGPS_MD_LOC_SOURCE_NLP 0x02
+ #define AGPS_MD_LOC_SOURCE_SENSOR 0x04 */
+} loc_info_struct;
+
+/********************************
+ * Description
+ * - src_mod requests/stops LBS forwards location info
+ *
+ * Direction
+ * - src_mod -> LBS
+ *********************************/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool loc_query;
+ kal_uint8 notify_freq;
+ /* notify_freq is a positive integer and not to be 0.
+ LBS receives notify_freq location informations from AP side and forwards lastest one to src_mod.
+ [Example] notify_freq = 2
+ LBS receives location info from AP:
+ location info 1
+ location info 2 -> forward to src_mod
+ location info 3
+ location info 4 -> forward to src_mod */
+} lbs_loc_info_req_struct;
+
+/********************************
+ * Description
+ * - LBS notifies src_mod if LBS_LOC_INFO_REQ is successful or not
+ *
+ * Direction
+ * - LBS -> src_mod
+ *********************************/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ kal_bool loc_query_success;
+} lbs_loc_info_cnf_struct;
+
+/********************************
+ * Description
+ * - recivied AGPS location info by LBS
+ *
+ * Direction
+ * - LBS -> src_mod
+ *********************************/
+typedef struct
+{
+ LOCAL_PARA_HDR
+ loc_info_struct loc_info;
+} lbs_loc_info_ind_struct;
+
+#endif /* _LBS_LOC_INFO_STRUCT_H_ */
diff --git a/mcu/interface/protocol/agps/lec_msg_struct.h b/mcu/interface/protocol/agps/lec_msg_struct.h
new file mode 100644
index 0000000..ea9f1d1
--- /dev/null
+++ b/mcu/interface/protocol/agps/lec_msg_struct.h
@@ -0,0 +1,292 @@
+/*****************************************************************************
+* 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) 2016
+*
+* 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).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+
+ FILE NAME: lec_msg_struct.h
+
+ DESCRIPTION:
+
+ This file contains the defenitions of all the LEC msg structures.
+
+*****************************************************************************/
+#ifndef _LEC_MSG_STRUCT_H_
+#define _LEC_MSG_STRUCT_H_
+
+#include "kal_public_defs.h"
+#include "lecapi.h"
+#include "l1dapi.h"
+
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ GpsDevConfigDataT msg;
+}lec_gps_device_power_on_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecPseudorangeMsmtReqMsgT msg;
+}lec_pseudorange_msmt_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ GpsEndMsgT msg;
+}lec_session_end_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValNwkRptSystemTimeMsgT msg;
+}lec_36bit_nwk_cdma_time_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AGpsMSBased801T msg;
+}lec_psw_gps_eph_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AGpsMSBased801T msg;
+}lec_psw_gps_alm_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ AGpsMSBased801T msg;
+}lec_psw_loc_resp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecGpsEndGpsAckMsgT msg;
+}lec_gps_end_gps_ack_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ GpsDevConfigDataT msg;
+}lec_call_back_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecGetRfBandMsgT msg;
+}lec_get_rf_band_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ ValGpsPRMeasMsgT msg;
+}lec_ap_gps_pseudorange_msmt_rsp_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecGpsSysReadyT msg;
+}lec_psw_ready_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecL1dGpsTimeMsg msg;
+}lec_l1d_gps_time_ind_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecGpsRefAdjMsgT msg;
+}lec_gps_ref_freq_adj_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_sensitivity_assist_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_gps_ms_based_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_gps_ms_based_getassist_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_gps_init_gps_ack_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_gps_cont_gps_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_gps_hw_enable_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_dbm_read_blk_rsp_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_dbm_write_blk_rsp_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_gps_reset_assist_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_apmode_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_testmode_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_usermode_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecNMEACfgSetMsgT msg;
+}lec_nmea_cfg_set_ets_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+ LecNmeaCfgGetReqMsgT msg;
+}lec_nmea_cfg_get_ets_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+GpsReStartT msg;
+}lec_psw_restart_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_psw_cdma_system_rsp_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+LecGpsFacGetCNoMsgT msg;
+}lec_val_factory_get_rf_cno_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_val_factory_stop_rf_cno_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_lte_trn_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_assist_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_fix_time_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_aa_assist_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_qos_req_msg_struct;
+
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_val_ap_gps_start_ack_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_apf_ready_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_precise_time_aiding_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_frequency_aiding_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+ValGpsPRMeasMsgT msg;
+}LEC_AP_GPS_PSEUDORANGE_MSMT_RSP_MSG_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_reference_location_aiding_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_val_cp_gps_stop_ack_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_assist_finish_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_stop_ack_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+LecCustomerIdSettingMsgT msg;
+}lec_customer_setting_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_period_sync_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_gps_period_sync_stop_req_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_ap_delete_assit_data_cnf_msg_struct;
+typedef struct
+{
+ LOCAL_PARA_HDR
+}lec_startup_signal_msg_struct;
+
+#endif
diff --git a/mcu/interface/protocol/agps/lecapi.h b/mcu/interface/protocol/agps/lecapi.h
new file mode 100644
index 0000000..5abd02d
--- /dev/null
+++ b/mcu/interface/protocol/agps/lecapi.h
@@ -0,0 +1,914 @@
+/*****************************************************************************
+* 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) 2016
+*
+* 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).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef LECAPI_H
+#define LECAPI_H
+/*****************************************************************************
+
+ FILE NAME: lecapi.h
+
+ DESCRIPTION : LEC task interface
+
+ This include file provides system wide global type declarations and
+ constants
+ HISTORY :
+ See Log at end of file
+
+*****************************************************************************/
+
+#include "monapi.h"
+#include "valapi.h"
+
+#define MAX_GPS_SV_NUM_INVIEW 16
+/*------------------------------------------------------------------------
+* EXE Interfaces - Definition of Signals, GPIO and Mailboxes
+*------------------------------------------------------------------------*/
+
+//#define LEC_STARTUP_SIGNAL EXE_SIGNAL_1 /* From Mon Task */
+//#define LEC_RUN_GPS_LIBRARY_SIGNAL EXE_SIGNAL_2 /* For Every 50msec run the GPS Lib */
+//#define LEC_RUN_PATCH_SIGNAL EXE_SIGNAL_3 /* For Patch Uploding by LEC */
+
+/* LEC command mailbox id */
+#define LEC_MAILBOX EXE_MAILBOX_1_ID
+
+/* GPIO Mapping for Target */
+#define LEC_POWER_EN HWD_GPIO_NUM /* This GPIO pin can be change by Customer */
+#define LEC_RESET_N HWD_GPIO_NUM /* This GPIO pin can be change by Customer */
+
+#ifdef MTK_CBP
+
+#else
+#define LEC_UART1_IN HWD_GPIO_NUM /* Do not change this Port assign */
+#define LEC_UART1_OUT HWD_GPIO_NUM /* Do not change this Port assign */
+#define LEC_FRAME_SYNC HWD_GPIO_NUM /* Do not change this Port assign */
+#define LEC_UART1_RTS HWD_GPIO_NUM /* Do not change this Port assign */
+#endif
+
+
+/* This is MAX PDE data size for IS801 and IS801-1 */
+#define MAX_801_SIZE 200
+
+#define MAX_EPH_DATA_BUFFER (1024) /* To support 16 PRNs in one EPH data */
+#define MAX_PRNS_PER_ONE_EPH_MSG (16)
+#define MAX_ALM_DATA_BUFFER (2048) /* to support 32 PRNs in one ALM data */
+#define MAX_PRNS_PER_ONE_ALM_MSG (32)
+
+/*----------------------------------------------------------------------------
+ Defines Constants used in this file
+----------------------------------------------------------------------------*/
+
+/* GPS Calibration related Data */
+#define LEC_CAL_INIT_FROM_NVRAM (01) /* GPS Cal data initialized from NV Ram */
+#define LEC_CAL_INIT_FROM_CODE (02) /* GPS Cal data initialized from Code */
+#define LEC_CAL_INIT_FROM_CODE_NV_ERR (03) /* GPS Cal data initialized from Code, Wrong NV data */
+#define LEC_CAL_INIT_FROM_CODE_FOR_FACTORY (04) /* GPS Cal data initialized from Code, Wrong NV data */
+
+#define LEC_1X_DO_GPS_GROUP_DELAY (34195) /* 3.5 Chip */
+
+
+
+#if (defined DATACARD_LTE_P1_USB_DPRAM) /* Stealth */
+#define LEC_CELL_GPS_GROUP_DELAY (-9770) /* 1 Chip */
+#define LEC_CELL_GPS_AA_CODE_PHASE (9) /* +9 Chips */
+#define LEC_CELL_GPS_PRM_WHOLE_CHIPS (8) /* -8 Chips */
+#define LEC_CELL_GPS_PRM_FRACT_CHIPS (48) /* -0.48 chips */
+
+#define LEC_PCS_GPS_GROUP_DELAY (-9770) /* 1 Chip */
+#define LEC_PCS_GPS_AA_CODE_PHASE (9) /* +9 Chips */
+#define LEC_PCS_GPS_PRM_WHOLE_CHIPS (8) /* -8 Chips */
+#define LEC_PCS_GPS_PRM_FRACT_CHIPS (49) /* -0.49 chips */
+
+#elif (defined STEALTHV) /* Stealth */
+#define LEC_CELL_GPS_GROUP_DELAY (-9770) /* 1 Chip */
+#define LEC_CELL_GPS_AA_CODE_PHASE (9) /* +9 Chips */
+#define LEC_CELL_GPS_PRM_WHOLE_CHIPS (8) /* -8 Chips */
+#define LEC_CELL_GPS_PRM_FRACT_CHIPS (48) /* -0.48 chips */
+
+#define LEC_PCS_GPS_GROUP_DELAY (-9770) /* 1 Chip */
+#define LEC_PCS_GPS_AA_CODE_PHASE (9) /* +9 Chips */
+#define LEC_PCS_GPS_PRM_WHOLE_CHIPS (8) /* -8 Chips */
+#define LEC_PCS_GPS_PRM_FRACT_CHIPS (49) /* -0.49 chips */
+#define LEC_CELL_GPS_GROUP_DELAY (0) /* 1 Chip */
+#define LEC_CELL_GPS_AA_CODE_PHASE (0) /* +9 Chips */
+#define LEC_CELL_GPS_PRM_WHOLE_CHIPS (0) /* -8 Chips */
+#define LEC_CELL_GPS_PRM_FRACT_CHIPS (0) /* -0.56 chips */
+
+#define LEC_PCS_GPS_GROUP_DELAY (0) /* 1 Chip */
+#define LEC_PCS_GPS_AA_CODE_PHASE (0) /* +9 Chips */
+#define LEC_PCS_GPS_PRM_WHOLE_CHIPS (0) /* -8 Chips */
+#define LEC_PCS_GPS_PRM_FRACT_CHIPS (0) /* -0.57 chips */
+
+#else /* Make Default value until Calibrated */
+#define LEC_CELL_GPS_GROUP_DELAY (-9770) /* 1 Chip */
+#define LEC_CELL_GPS_AA_CODE_PHASE (9) /* +9 Chips */
+#define LEC_CELL_GPS_PRM_WHOLE_CHIPS (8) /* -8 Chips */
+#define LEC_CELL_GPS_PRM_FRACT_CHIPS (56) /* -0.56 chips */
+
+#define LEC_PCS_GPS_GROUP_DELAY (-9770) /* 1 Chip */
+#define LEC_PCS_GPS_AA_CODE_PHASE (9) /* +9 Chips */
+#define LEC_PCS_GPS_PRM_WHOLE_CHIPS (8) /* -8 Chips */
+#define LEC_PCS_GPS_PRM_FRACT_CHIPS (57) /* -0.57 chips */
+#endif
+
+/* To Calibrate, set the default value */
+#define LEC_CELL_GPS_GROUP_DELAY_CAL (0) /* 0 Chips */
+#define LEC_CELL_GPS_AA_CODE_PHASE_CAL (0) /* 0 Chips */
+#define LEC_CELL_GPS_PRM_WHOLE_CHIPS_CAL (0) /* 0 Chips */
+#define LEC_CELL_GPS_PRM_FRACT_CHIPS_CAL (0) /* 0 Chips */
+#define LEC_1X_DO_GPS_GROUP_DELAY_CAL (0) /* 0 Chips */
+
+
+#define LEC_AP_RF_DELAY_1X 0
+#define LEC_AP_RF_DELAY_DO 0
+
+#if (SYS_OPTION_GPS_HW ==SYS_GPS_LOCAL_INTERNAL)
+#define LEC_RFDELAY_1X (86364)
+#define LEC_RFDELAY_DO (87713)
+#define LEC_RFDELAY (87039)
+#endif
+
+
+
+/*----------------------------------------------------------------------------
+* LEC States : Kind of Virtual State
+*----------------------------------------------------------------------------*/
+typedef enum
+{
+ GPS_OFF,
+ GPS_POWER_UP,
+ GPS_SLEEP,
+ GPS_ABOUT_TO_RUNNING,
+ GPS_RUNNING
+} GpsStateT;
+
+typedef struct
+{
+ unsigned short PilotPN;
+ signed short SystemTimeOffset;
+} LecGpsEndGpsAckMsgT;
+
+typedef struct
+{
+ unsigned short Enable;
+} LecGpsHwEnableMsgT;
+
+typedef enum
+{
+ GPS_FIX_MODE_UNKNOWN, /* This is for Error */
+ GPS_FIX_MODE_MSA, /* This is for MS_Assisted mode in User Plane*/
+ GPS_FIX_MODE_MSB, /* This is for MS_Based mode in User Plane */
+ GPS_FIX_MODE_MSS, /* This is for MS_Standalone mode in User Plane */
+ GPS_FIX_MODE_CP = 8, /* This is for Control Plane mode and E911 *//*associated with struct GPS_FIX_MODE*/
+ GPS_FIX_MODE_SUPL_MSA, /* This is for MS_Assisted mode in SUPL */
+ GPS_FIX_MODE_SUPL_MSB, /* This is for MS_Based mode in SUPL */
+ GPS_FIX_MODE_COUNT
+} GpsFixModeT;
+
+/* Write Cntl data size */
+#define GN_GPS_GNB_CTRL_MAX_SIZE (EXE_SIZE_MSG_BUFF_4 - 12)
+#define GN_GPS_GNB_CTRL_MAX_MSGS 2
+
+/* Write NMEA to ETS size */
+//#define GN_GPS_NMEA_MAX_SIZE 180
+#define GN_GPS_NMEA_MAX_SIZE MON_MAX_SPY_SIZE
+#define GN_GPS_NMEA_MAX_MSGS 10
+
+/* Write EVENT to ETS size */
+//#define GN_GPS_EVENT_MAX_SIZE 180
+#define GN_GPS_EVENT_MAX_SIZE MON_MAX_SPY_SIZE
+#define GN_GPS_EVENT_MAX_MSGS 15
+
+/* Write NAV to ETS size */
+//#define GN_GPS_NAV_MAX_SIZE 180
+#define GN_GPS_NAV_MAX_SIZE MON_MAX_SPY_SIZE
+#define GN_GPS_NAV_MAX_MSGS 30
+
+/* Write GNB to ETS size */
+//#define GN_GPS_GNB_MAX_SIZE 180
+#define GN_GPS_GNB_MAX_SIZE MON_MAX_SPY_SIZE
+#define GN_GPS_GNB_MIN_SEND_SIZE 400
+#define GN_GPS_GNB_MAX_MSGS 15
+
+
+#define PS_NMEA_MAX_SIZE 760
+
+/* This structure is used in the PSW task */
+/*
+typedef struct
+{
+ kal_uint16 DataLen;
+ kal_uint8 Data[PS_NMEA_MAX_SIZE];
+} PswGpsNmeaStreamMsgT;
+*/
+/* This structure is used for Patch Uploading */
+#define IOP_GPS7560_PATCH_DATA_SIZE_MAX 256
+typedef struct
+{
+ kal_uint16 DataLen;
+ kal_uint8 Data[IOP_GPS7560_PATCH_DATA_SIZE_MAX];
+} IopGps7560PatchDataMsgT;
+
+/* This structure is used in the IOP task */
+/* LEC <- IOP, Rx data of LEC point of view */
+#define IOP_GPS7560_DATA_SIZE_MAX 186
+typedef struct
+{
+ kal_uint16 DataLen;
+ kal_uint8 Data[IOP_GPS7560_DATA_SIZE_MAX];
+} IopGps7560RxDataMsgT;
+
+/* These structure definitions are used between IOP and GPS Lib*/
+#define LEC_MAX_QUEUE_DEPTH (10240)
+extern kal_uint8 LecRxGpsBuffer[LEC_MAX_QUEUE_DEPTH];
+
+/* Static Data definitions local to this module */
+typedef struct
+{
+ kal_uint32 CTime_Set; /* 'C' Time when the RTC was last Set / Calibrated */
+ kal_int32 Offset_s; /* (UTC - RTC) calibration offset [s] */
+ kal_int32 Offset_ms; /* (UTC - RTC) calibration offset [ms] */
+ kal_uint32 Acc_Est_Set; /* Time Accuracy Estimate when RTC was Set / Calibrated [ms] */
+ kal_uint32 checksum; /* RTC Calibration File 32-bit checksum */
+} GpsRtcCalibT;
+
+/* This structure is used in the DMB for NV Data and RTC Cal data*/
+/* From GN_GPS_API.h and Lecgns7560.c file */
+#if !defined (GPS_NV_SIZE)
+#define GPS_NV_SIZE (5248) /* was 5120 for GPS Lib ver3 */
+#endif
+#define GPS_RTC_CAL_SIZE (sizeof(GpsRtcCalibT)) /* 20 Bytes */
+#define DBM_EXT_GPS_NV_SIZE (GPS_NV_SIZE + GPS_RTC_CAL_SIZE)
+
+typedef struct
+{
+ kal_bool ReadDbmFlag;
+ kal_bool WriteDbmFlag;
+ kal_uint16 Offset;
+ kal_uint8 Data[GPS_NV_SIZE];
+ GpsRtcCalibT RtcCal;
+} GpsSvNvDataT;
+
+typedef struct
+{
+ kal_uint16 Offset;
+ kal_uint8 Data[GPS_NV_SIZE];
+} GpsEngNvDataT;
+
+
+/* This structure is used in the DMB for Cell ID Information*/
+/* From cgpsHistoricalCell_Interface.h file */
+#define DBM_EXT_GPS_CELL_NV_SIZE (20 * NMAX) /* Actually, 16bytes * NMAX */
+/* This structure is used in the LEC and PSW*/
+/* Define for GpsDevicePowerOn */
+typedef struct
+{
+ kal_uint32 FixMode;
+ kal_uint32 FixRateNumFixes;
+ kal_uint32 FixRateTimeBeFixes;
+ kal_uint32 QoSHAccuracy;
+ kal_uint32 QoSVAccuracy;
+#ifdef MTK_CBP
+ kal_uint32 QoSPRAccuracy;
+#endif
+ kal_uint32 QoSPerformance;
+ kal_uint32 InstanceID;
+ kal_uint8 flag_gps;
+} GpsDevConfigDataT;
+
+/* This structure is used in the LEC */
+/* Define for GPS's Calibrated Parameters */
+typedef struct
+{
+ kal_int32 Lecl1xDoSystemTOffset; /* For Diff system Time between 1xRTT and EVDO.*/
+ kal_int32 LecGpsGroupDelay; /* For Group Delay */
+ kal_uint16 LecGpsAACodePhaseAdj; /* For Code Phase Adjust for AA msg */
+ kal_uint16 LecGpsWholeChipsAdj; /* For Whole Chip Adjust for PRM msg*/
+ kal_uint16 LecGpsFractChipsAdj; /* For Fract chip Adjust for PRM msg*/
+} LecGpsCalLocalT ;
+
+
+typedef struct
+{
+ kal_bool ValidRef;
+ kal_uint32 RefPosRMSMaj;
+ kal_uint32 RefPosRMSMin;
+ kal_int32 APRefLat;
+ kal_int32 APRefLon;
+} ApRefCellIdInforT;
+
+typedef struct
+{
+ kal_uint32 InstanceId;
+ kal_uint8 flag_gps;
+ kal_uint8 Status;
+} GpsEndMsgT;
+/*----------------------------------------------------------------------------
+* Message IDs for signals and commands sent to LEC
+*----------------------------------------------------------------------------*/
+
+
+/* Define GNS7560's propriatry Commands set */
+typedef enum
+{
+ GNS7560_VERSION,
+ GNS7560_RSET_HOT_START,
+ GNS7560_RSET_WARM_START,
+ GNS7560_RSET_COLD_START,
+ GNS7560_RSET_FACTORY_START,
+ GNS7560_SLEEP,
+ GNS7560_COMA,
+ GNS7560_WAKEUP,
+ GNS7560_SHUTDOWN,
+ GNS7560_DIAG_MODE0,
+ GNS7560_DIAG_MODE1,
+ GNS7560_DIAG_MODE2,
+ GNS7560_DIAG_MODE3,
+
+ GNS7560_MAX_COMMANDS
+} Gns7560CommandsT;
+
+/* LEC_GPS_FACTORY_GET_RF_CNO_MSG */
+typedef struct
+{
+ ExeRspMsgT RspInfo;
+ kal_uint8 Mode; /* TimerBased:0 and CounterBased:1 */
+ kal_uint8 Para1; /* TimerBased's Para1 Range [10..60]seconds and
+ CounterBased's Para1 Range [01..30] */
+} LecEtsGpsFacGetCNoMsgT;
+
+/* LEC_VAL_FACTORY_GET_RF_CNO_MSG */
+typedef struct
+{
+ kal_uint8 Mode; /* TimerBased:0 and CounterBased:1 */
+ kal_uint8 Para1; /* TimerBased's Para1 Range [10..60]seconds and
+ CounterBased's Para1 Range [01..30] */
+} LecGpsFacGetCNoMsgT;
+
+/* For ETS and VAL as MSG_ID_VAL_GPS_FACTORY_RF_CNO_MSG */
+typedef struct
+{
+ kal_uint16 CNo; /* Depend on GPS Signal Level */
+} LecFacReportCNoMsgT;
+
+/* LEC_GET_RF_BAND_MSG */
+typedef struct
+{
+ kal_uint8 Owner; /* SYS_MOD_1xRTT or SYS_MOD_EVDO */
+ kal_uint8 Band; /* Supported RF band */
+} LecGetRfBandMsgT;
+
+/* For PGPS on AP */
+typedef struct
+{
+ kal_uint32 SysTime; /* Seconds in GPS Time from AP */
+} LecPgpsSysTimeMsgT;
+
+typedef struct
+{
+ kal_uint32 Prn_Mask; /* This is bit map for each PRN's request */
+ kal_uint32 SysTime; /* Current GPS's time to get the correct EE data */
+} LecPgpsGetEeReqMsgT;
+
+#define MAX_PGPS_SV 32
+
+/**
+* A structure containing ephemeris data.
+* Please refer to the GPS-200D for more information.
+*/
+typedef struct sRXN_ephem
+{
+ kal_uint8 prn; /* range: 1-32 */
+ kal_uint8 ura; /* see ICD-200 */
+ kal_uint8 health; /* */
+ kal_int8 af2; /* 2^-55 sec/sec^2 */
+ kal_int8 ephem_fit; /* 0-4 hr */
+ kal_uint8 ure; /* User Range Error. Provides an indication of EE accuracy. Always a GPStream output. Units: meters.*/
+ kal_uint16 gps_week; /* cumulative GPS week number (eg. 1486) */
+ kal_uint16 iode; /* */
+ kal_uint16 toc; /* 2^4 */
+ kal_uint16 toe; /* 2^4 have him on 16 sec bdry */
+ kal_int16 af1; /* 2^-43 sec/sec */
+ kal_int16 i_dot; /* 2^-43 */
+ kal_int16 delta_n; /* 2^-43 */
+ kal_int16 cuc; /* 2^-29 */
+ kal_int16 cus; /* 2^-29 */
+ kal_int16 cic; /* 2^-29 */
+ kal_int16 cis; /* 2^-29 */
+ kal_int16 crc; /* 2^-5 */
+ kal_int16 crs; /* 2^-5 */
+ kal_int32 af0; /* 2^-31 sec */
+ kal_int32 m0; /* 2^-31/PI */
+ kal_uint32 e; /* 2^-33 */
+ kal_uint32 sqrt_a; /* 2^-19 */
+ kal_int32 omega0; /* 2^-31/PI */
+ kal_int32 i0; /* 2^-31/PI */
+ kal_int32 w; /* 2^-31/PI */
+ kal_int32 omega_dot; /* 2^-43 */
+} sRXN_ephem_t;
+
+typedef struct LecPgpsRxnEEph /* RxN's EE data set */
+{
+ kal_uint8 Num_Prn; /* Number of EEphs data [range 0 .. 32] */
+ sRXN_ephem_t EE[MAX_PGPS_SV]; /* RxN's Ephemeris Elements array */
+} sLecPgpsRxnEEph;
+
+/*------------------------------------------------------------------------
+* Timer Interfaces - Declaration for PRM and AA Message
+*------------------------------------------------------------------------*/
+
+/* Define NA messages for Psedorange and Acquisition Assistance */
+#define LEC_PRM_MAX_SIZE 3
+#define LEC_MAX_ASSIST_SIZE 250
+#define LEC_PRM_MAX_RSP_SIZE 256
+
+typedef struct
+{
+ unsigned char IdleOrTraffic; /* KAL_TRUE = Idle, KAL_FALSE = Traffic */
+ unsigned char SystemTimeOffsetIncl;
+ unsigned short ReqMsmtRecLen; /* Request PRM Rec Length */
+ unsigned char ReqPseudorangesRec[LEC_PRM_MAX_SIZE]; /* Req PRM Buffer */
+ unsigned short ProvAcqAssistRecLen; /* Prov GPS Acquisition Assist Rec Length */
+ unsigned char ProvAcqAssistRec[LEC_MAX_ASSIST_SIZE]; /* Prov GPS Acquisition Assist Buffer */
+} LecPseudorangeMsmtReqMsgT;
+
+
+#define MAX_SV 16
+
+/* This structure mirrors the structure that is used in the */
+/* External GPS DB to hold AA information. */
+typedef struct
+{
+ unsigned char TOA; /* Time of applicability*/
+ unsigned char NumSV; /* Number of satellites for which data is available*/
+ unsigned char DoppIncl; /* Doppler0 is included ? KAL_TRUE/KAL_FALSE */
+ unsigned char AddDoppIncl; /* Doppler1 and DopplerWin is included? KAL_TRUE/KAL_FALSE */
+ unsigned char CodePhParIncl; /* Code Phase Information is included? KAL_TRUE/KAL_FALSE */
+ unsigned char AzElIncl; /* Azimuth and elevation angle included? KAL_TRUE/KAL_FALSE*/
+ unsigned char SV[MAX_SV]; /* SV PRN number (0 means no data available)*/
+ signed short Dopp[MAX_SV]; /* Doppler value. Units Hz*/
+ char DoppRate[MAX_SV]; /* Doppler rate of change. Units (1/64) Hz/s*/
+ unsigned char DoppSR[MAX_SV]; /* Doppler search range. Units Hz.*/
+ signed short Code[MAX_SV]; /* Code phase [range 0..1022]. Units C/A chips*/
+ unsigned char CodePhInt[MAX_SV]; /* Integer C/A Code Msec into the GPS Data Bit */
+ /* Range[0..19]msec (-1 if not known) */
+ unsigned char GpsBitNum[MAX_SV]; /* GPS Data Bit Number, module 80 msec */
+ /* Range[0..3] (-1 if not known) */
+ unsigned char CodeSR[MAX_SV]; /* Code search range. Units C/A chips [range 0..512]*/
+ unsigned char Azim[MAX_SV]; /* Azimuth. Units 11.25 degrees*/
+ unsigned char Elev[MAX_SV]; /* Elevation. Units 11.25 degrees*/
+} LecNAAcqAss;
+
+
+/* LEC_SESSION_END_REQ_MSG:
+ * Sent by PSW to end a GPS Session. PSW passes on if it reset
+ * the MS to System Determination (KAL_TRUE) or not (KAL_FALSE). PDE
+ * responds with a PSW_LEC_SESSION_END_RSP_MSG.
+ */
+typedef struct
+{
+ unsigned char SystemDeter; /* KAL_TRUE=MS reset to SYS DETER */
+} LecSessionEndReqMsgT;
+
+typedef struct
+{
+ unsigned char RecLen;
+ unsigned char ProvPseudorangeRec[LEC_PRM_MAX_RSP_SIZE];
+} LecPseudorangeMsmtRspMsgT;
+
+typedef struct
+{
+ kal_uint32 Time_Ref; /* Time of Validity [ms] % 14400000 */
+ kal_uint8 TimeRefSrc; /* Time reference source [see IS801 std] */
+} LecPRMeasTimeRef;
+
+/* This is the structure that mirrors the PRM response */
+typedef struct
+{
+ unsigned char PRN_num; /* Satellite PRN number */
+ unsigned char CNO; /* Satellite C/No [dB-Hz] (range 0 to 63 dB-Hz) */
+ signed short Dopp; /* Measured Doppler frequency [0.2 Hz] (range +/-6553.6) */
+ unsigned short Code_whole; /* Satellite Code phase measurement - whole chips */
+ /* [C/A chips] (range 0..1022) */
+ unsigned short Code_fract; /* Satellite Code phase measurement - fractional chips */
+ /* [2^-10 C/A chips] (range 0..1023) */
+ unsigned char Mul_Path_Ind; /* Multipath indicator (range 0..3) */
+ /* (see TIA/EIA/IS-801 Table 3.2.4.2-7) */
+ unsigned char Range_RMS_Err; /* Pseudorange RMS error: Mantissa (range 0..63) consisting of */
+ /* (see TIA/EIA/IS-801 Table 3.2.4.2-8) */
+ /* 3 bit Mantissa 'x' & 3 bit Exponsent 'y' where: */
+ /* RMS Error = 0.5 * (1 + x/8) * 2^y metres */
+} LecIS801SVData;
+
+typedef struct
+{
+ kal_uint32 Time_Ref; /* Time of Validity [ms] % 14400000 */
+ unsigned char TimeRefSrc; /* Time reference source [see IS801 std] */
+ unsigned char NumValidMeas; /* Number of Valid Meas avail [0..15] */
+ LecIS801SVData SV_Data[MAX_SV]; /* SV PRM data NUM_CH*/
+} LecPRMeas;
+
+#if (defined SYS_OPTION_GPS_EXTERNAL_SUPPORT_SA)
+/* Define NA message for Sensitivity Assistance */
+#define LEC_MAX_NUM_SA_NAV_BYTES 128
+#define LEC_MAX_NUM_SA_SV 16
+#define LEC_MAX_NUM_SA_DATA_RECS 3
+typedef struct
+{
+ unsigned char NavMsgBits[LEC_MAX_NUM_SA_NAV_BYTES];
+ unsigned char NumSvDr;
+ unsigned char SvNumArray[LEC_MAX_NUM_SA_SV];
+} LecSensAssistDataRecT;
+
+typedef struct
+{
+ unsigned short RefBitNum;
+ unsigned char NumDataRecs; /* num of data recs */
+ unsigned short DataRecSizeInBits; /* size of each data rec in bits; range 0 to 1020 */
+ LecSensAssistDataRecT SADataRecArray[LEC_MAX_NUM_SA_DATA_RECS];
+} LecSensAssistMsgT;
+#endif
+
+/* LEC_GPS_REF_FREQ_ADJ_MSG */
+#define SET_FREQ_PPB_CMD 0
+#define ADJ_FREQ_PPB_CMD 1
+typedef struct
+{
+ kal_uint16 Command;
+ kal_uint32 RxPllKHz;
+ kal_int16 FreqAdj;
+} LecGpsRefAdjMsgT;
+
+/*#ifdef MS_BASED_DEBUG*/
+/*MS-Based ETS*/
+typedef enum{
+ EPH = 1,
+ ALM,
+ LOC,
+ EPHALM,
+ All
+}InjectModeT;
+
+
+typedef struct
+{
+ExeRspMsgT RspInfo;
+kal_uint32 UserModeTime;
+} GPSUserModeTimeT;
+
+typedef struct
+{
+kal_uint32 UserModeTime;
+} GPSUserModeTimeRspT;
+
+/*MS-Based ETS*/
+typedef struct
+{
+ kal_uint32 FixMode;
+ kal_uint32 QoSAccuracy;
+ kal_uint32 QoSPerformance;
+} GpsMSBasedT;
+
+
+typedef struct
+{
+ kal_uint8 MsgNum;
+ kal_uint16 IS801Length;
+ kal_uint8 MsgID; /* Should be change to TotalNumMsgs */
+ kal_uint8 Data[MAX_801_SIZE];
+} AGpsMSBased801T;
+
+typedef enum{
+ HotReStart = 1,
+ WarmReStart,
+ ColdReStart
+}ReStartModeT;
+
+typedef struct
+{
+ kal_uint8 StartMode;
+} GpsReStartT;
+
+typedef struct
+{
+ kal_uint8 SatID;
+ kal_uint8 CodeOnL2;
+ kal_uint8 URA;
+ kal_uint8 SVHealth;
+ kal_uint8 FitIntFlag;
+ kal_uint8 AODA;
+ kal_int8 L2Pflag;
+ kal_int8 TGD;
+ kal_int8 af2;
+ kal_uint16 Week;
+ kal_uint16 toc;
+ kal_uint16 toe;
+ kal_uint16 IODC;
+ kal_int16 af1;
+ kal_int16 dn;
+ kal_int16 IDot;
+ kal_int16 Crs;
+ kal_int16 Crc;
+ kal_int16 Cus;
+ kal_int16 Cuc;
+ kal_int16 Cis;
+ kal_int16 Cic;
+ kal_int32 af0;
+ kal_int32 M0;
+ kal_uint32 e;
+ kal_uint32 APowerHalf;
+ kal_int32 Omega0;
+ kal_int32 i0;
+ kal_int32 w;
+ kal_int32 OmegaDot;
+
+} s_AGPS_Eph_El;
+
+typedef struct
+{
+ kal_uint8 WNa;
+ kal_uint8 SatID;
+ kal_uint8 SVHealth;
+ kal_uint8 toa;
+ kal_int16 af0;
+ kal_int16 af1;
+ kal_uint16 e;
+ kal_int16 delta_I;
+ kal_int16 OmegaDot;
+ kal_uint32 APowerHalf;
+ kal_int32 Omega0;
+ kal_int32 w;
+ kal_int32 M0;
+} s_AGPS_Alm_El;
+
+typedef struct
+{
+ kal_uint32 ZCount;
+ kal_int8 al0;
+ kal_int8 al1;
+ kal_int8 al2;
+ kal_int8 al3;
+ kal_int8 be0;
+ kal_int8 be1;
+ kal_int8 be2;
+ kal_int8 be3;
+} s_AGPS_Ion;
+
+typedef struct
+{
+ kal_int32 Latitude;
+ kal_int32 Longitude;
+ kal_int32 RMS_SMaj;
+ kal_int32 RMS_SMin;
+ kal_int16 RMS_SMajBrg;
+ kal_bool Height_OK;
+ kal_int32 Height;
+ kal_int32 RMS_Height;
+
+} s_AGPS_Ref_Pos;
+
+typedef struct {
+ kal_uint32 Interval;
+ kal_bool bGPGGA;
+ kal_bool bGPGSV;
+ kal_bool bGPGSA;
+ kal_bool bGPRMC;
+ kal_bool bGPGST;
+ kal_bool bGPGLL;
+ kal_bool bGPVTG;
+} LecNMEACfgSetMsgT;
+
+typedef struct {
+ ExeRspMsgT rspInfo;
+} LecNmeaCfgGetReqMsgT;
+
+typedef struct {
+ kal_uint32 Interval;
+ kal_bool bGPGGA;
+ kal_bool bGPGSV;
+ kal_bool bGPGSA;
+ kal_bool bGPRMC;
+ kal_bool bGPGST;
+ kal_bool bGPGLL;
+ kal_bool bGPVTG;
+} LecNmeaCfgGetRspMsgT;
+
+
+typedef struct
+{
+ kal_uint8 Ref_Pos_Req;
+ kal_uint8 Ion_Req;
+ kal_uint8 Alm_Req;
+ kal_uint8 Eph_Req;
+
+} LecGpsAssistReqT;
+
+
+typedef struct
+{
+ kal_uint8 GpsState;
+ kal_uint8 Eph;
+ kal_uint8 Alm;
+ kal_uint8 Loc;
+ kal_uint8 Ion;
+} GpsStateAssistT;
+
+
+typedef enum
+{
+ LecGpsEng_FIX_NOT_VALID,
+ LecGpsEng_FIX_ESTIMATED,
+ LecGpsEng_FIX_2D,
+ LecGpsEng_FIX_3D,
+ LecGpsEng_FIX_DGPS_2D,
+ LecGpsEng_FIX_DGPS_3D
+} LecGpsEngFixTypeT;
+
+typedef struct
+{
+ kal_bool Used;
+ kal_uint8 Id;
+ kal_uint8 Cn0;
+ kal_int8 Elev;
+ kal_uint16 Azimuth;
+} LecGpsEngSvInViewT;
+
+typedef struct {
+ LecGpsEngFixTypeT FixType;
+ kal_uint32 OsTime;
+ kal_uint32 LocalTimeTag;
+ kal_uint16 UtcYear;
+ kal_uint16 UtcMonth;
+ kal_uint16 UtcDay;
+ kal_uint16 UtcHour;
+ kal_uint16 UtcMin;
+ kal_uint16 UtcSec;
+ kal_uint16 UtcMilliSec; /* UTC Millisec into Sec */
+ kal_uint16 WeekNo;
+ kal_uint32 Tow; /* milliseconds */
+ kal_uint8 UtcDifference; /* (GPS-UTC) seconds */
+ double Lat;
+ double Long;
+ double AltitudeMSL; /* Mean Sea level */
+ double AltitudeElli; /* ? */
+ double X;
+ double Y;
+ double Z;
+ float SpeedGround;
+ float CourseGround;
+ float VerticalVelocity; /* Vertical velocity */
+ float LocUncAng; /* Location uncertainty angle */
+ float LocUncA; /* ? */
+ float LocUncP;
+ float LocUncV;
+ float VelHUnc; /* Horizontal Velocity RMS 1-sigma (67%) Accuracy estimate */
+ float VelVUnc; /* Vertical Velocity RMS 1-sigma (67%) Accuracy estimate */
+ float Pdop;
+ float Hdop;
+ float Vdop;
+ kal_uint8 SvInViewNum;
+ kal_uint8 SvUsed;
+ LecGpsEngSvInViewT SvInView[MAX_GPS_SV_NUM_INVIEW];
+} LecGpsEngWholeNavDataT;
+
+typedef struct
+{
+ kal_uint32 OsTime; /* Ticks */
+ kal_uint32 LocalTimeTag;
+ kal_uint16 UtcYear;
+ kal_uint16 UtcMonth;
+ kal_uint16 UtcDay;
+ kal_uint16 UtcHour;
+ kal_uint16 UtcMin;
+ kal_uint16 UtcSec;
+ kal_uint16 UtcMilliSec; /* UTC Millisec into Sec */
+ kal_uint16 WeekNo;
+ kal_uint32 Tow; /* Milliseconds */
+} LecGpsEngTimeMsgT;
+
+typedef struct
+{
+ kal_uint8 CustomerId;
+}LecCustomerIdSettingMsgT;
+
+
+typedef enum{
+ LEC_OFFSETSTART,
+ LEC_OFFSETEND
+}LecOffsetModeT;
+
+typedef struct
+{
+ kal_uint32 OffsetMode;
+} LecGpsOffsetT;
+
+
+typedef struct {
+
+ kal_int32 delay1X;
+ kal_int32 delayDO;
+} LecGpsRfDelayStruct;
+
+
+typedef struct
+{
+ LecGpsRfDelayStruct RfDelay[5];
+
+} LecGpsRfDelayT;
+
+#ifdef MTK_GPS_SYNC_DEV
+typedef struct
+{
+ ExeRspMsgT rspInfo;
+ kal_uint8 Switch;
+ kal_uint8 IntervalReqEE;/*in seconds*/
+
+} LecPgpsOnOffMsgT;
+typedef struct
+{
+ kal_uint8 Switch;
+ kal_uint8 IntervalReqEE;/*in seconds*/
+} LecPgpsOnOffMsgRspT;
+#endif
+/*****************************************************************************************/
+/*----------------------------------------------------------------------------
+ Global Data
+----------------------------------------------------------------------------*/
+#ifdef MTK_GPS_SYNC_DEV
+extern kal_bool bAssistDataRecvd;
+extern kal_uint8 LeapSecond;
+#endif
+
+extern ValGpsEphPrnMsgT ApGpsEphPrnData; /* Parsed Ephemeris Global Variable for LEC and VAL */
+extern ValGpsAlmPrnMsgT ApGpsAlmPrnData; /* Parsed Almanac Global Variable for LEC and VAL */
+
+extern void LecGpsTickLisr (void);
+#ifdef MTK_CBP
+#if (SYS_OPTION_EXTERNAL_GPS_HW == SYS_EXT_GPS_ON_AP)
+extern void LecAdjustLecTimer(float NewTime);
+#endif
+#endif
+
+#endif
+
+
+/*****************************************************************************
+* $Log: lecapi.h $
+* Revision 1.0 2009/02/09 schun
+*****************************************************************************/
+/**Log information: \main\Trophy\Trophy_ylxiao_href22001\1 2013-03-08 01:52:59 GMT ylxiao
+** HREF#22001 ÕûÀíGPS³õʼ»¯´úÂ룬ÐÞ¸ÄGPIO¶¨Òåµ½lecapi.h**/
+/**Log information: \main\Trophy\1 2013-03-08 03:47:15 GMT hzhang
+** HREF#22001 to modify GPS macro definition**/
+/**Log information: \main\Trophy\Trophy_ylxiao_href22033\1 2013-03-18 14:15:39 GMT ylxiao
+** HREF#22033, merge 4.6.0**/
+/**Log information: \main\Trophy\2 2013-03-19 05:20:02 GMT hzhang
+** HREF#22033 to merge 0.4.6 code from SD.**/
+/**Log information: \main\Trophy\Trophy_wzhou_href22240_fix2\1 2013-07-19 06:14:33 GMT wzhou
+** HREF#22240: fix for AP gps.**/
+/**Log information: \main\Trophy\3 2013-07-19 06:03:03 GMT jzwang
+** href#22240_fix2**/
+/**Log information: \main\Trophy\Trophy_wzhou_href22254_fix1\1 2013-08-27 09:14:35 GMT wzhou
+** HREF#22254 : Fix AA too big crash issue.**/
+/**Log information: \main\Trophy\4 2013-08-27 09:16:33 GMT jzwang
+** href#22254_fix1**/
+
diff --git a/mcu/interface/protocol/agps/lecerrs.h b/mcu/interface/protocol/agps/lecerrs.h
new file mode 100644
index 0000000..e077a8b
--- /dev/null
+++ b/mcu/interface/protocol/agps/lecerrs.h
@@ -0,0 +1,93 @@
+/*****************************************************************************
+* 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) 2016
+*
+* 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).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
+*
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+*
+* Copyright (c) 2002-2010 VIA Telecom, Inc. All rights reserved.
+*
+*************************************************************/
+#ifndef LECERRS_H
+#define LECERRS_H
+/*****************************************************************************
+
+ FILE NAME: lecerrs.h
+
+ DESCRIPTION:
+
+ This file contains the fault ids for the LEC software unit.
+
+*****************************************************************************/
+
+/*------------------------------------------------------------------------
+* The following definitions are fault ids for MonFault.
+*-----------------------------------------------------------------------*/
+
+typedef enum
+{
+ LEC_GPS_RESET_ERR = 0x00,
+ LEC_ERR_MBOX_SHOULD_NOT_BE_EMPTY = 0x01,
+ LEC_VERSION_MISMATCH = 0x02,
+ LEC_ERR_ALLOCATING_MEM = 0x03,
+ LEC_ERR_WRONG_GPS_STATE_MSG = 0x04,
+ LEC_ERR_QUEUE_FULL_MSG = 0x05,
+ LEC_ERR_QUEUE_UNDERFLOW_MSG = 0x06,
+ LEC_ERR_GPS_NV_READ_ERR_MSG = 0x07,
+ LEC_ERR_GPS_NV_WRITE_ERR_MSG = 0x08,
+ LEC_ERR_UNDEFINED_TIMER_ID_MSG = 0x09,
+ LEC_ERR_IOP_MSG_ERR_MSG = 0x0A,
+ LEC_ERR_GPS_RESET_ERR_MSG = 0x0B,
+ LEC_ERR_WRITE_GNB_GET_BUFF_ERR_MSG = 0x0C,
+ LEC_ERR_MBOX_UNKNOWN_MSG_ID_ERR = 0x0D,
+ LEC_ERR_UNKNOWN_API_COMMAND_MSG_ID = 0x0E,
+ LEC_ERR_NOT_SUPPORT_RF_BAND = 0x0F,
+ LEC_ERR_NOT_1XRTT_MODE = 0x10,
+ LEC_ERR_INVALID_GPS_CALIB_NV_DATA_MSG = 0x11,
+ LEC_ERR_PGPS_GET_EE_WRONG_PRN = 0x12,
+ LEC_ERR_PGPS_SET_EE_WRONG_PRN = 0x13,
+ LEC_ERR_PGPS_BAD_RXN_EE_DATA = 0x14,
+ LEC_ERR_PGPS_BAD_EE_MORE_10SEC = 0x15,
+ LEC_ERR_GPS_DATA_WRONG
+
+} LecErrsT;
+
+/*****************************************************************************
+* Initial revision
+*****************************************************************************/
+
+#endif
+