| /***************************************************************************** |
| * 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**/ |
| |