123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874 |
- /******************************************************************************
- ** File Name: greeneye2_common.h *
- ** Author: *
- ** DATE: *
- ** Copyright: 2002 Spreatrum, Incoporated. All Rights Reserved. *
- ** Description: *
- ******************************************************************************
- ******************************************************************************
- ** Edit History *
- ** ------------------------------------------------------------------------- *
- ** DATE NAME DESCRIPTION *
- ** * *
- ******************************************************************************/
- #ifndef GREENEYE2_COMMON_H
- #define GREENEYE2_COMMON_H
- /**---------------------------------------------------------------------------*
- ** Dependencies *
- **---------------------------------------------------------------------------*/
- #include "greeneye2.h"
- #include "greeneye2_type.h"
- #include "greeneye2_gnss_libgps_api.h"
- #include "sci_types.h"
- //#include "nv_item_id.h"
- #include "nvitem.h"
- //#include "caliparam.h"
- //#include "msensor_drv.h"
- #include "greeneye2_nmeaenc.h"
- //#include "task_monitor.h"
- #include "gnss_driver_api.h"
- #include "pam_config.h"
- #include <stdio.h>
- #include <limits.h>
- /**---------------------------------------------------------------------------*
- ** Compiler Flag *
- **---------------------------------------------------------------------------*/
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**---------------------------------------------------------------------------*
- ** Constant Variables *
- **---------------------------------------------------------------------------*/
- /**---------------------------------------------------------------------------*
- ** Data Structures *
- **---------------------------------------------------------------------------*/
- extern osiThread_t *pamGetTaskID(void);
- #ifdef CONFIG_PAM_LTE_GNSS_WIFISCAN_SUPPORT
- #define Re_TaskID pamGetTaskID()
- #else
- #define Re_TaskID NULL
- #endif
- #define GPS_DEBUG 0
- #define GPS_LTE 0
- #define AGPS_PARAM_CONFIG
- #define AGPS_LTE 1
- #define GNSS_REG_WR
- #define UPDATE_BIN 0
- #define GNSS_DOWNLOAD_OPT 1
- #ifdef LOG_TAG
- #undef LOG_TAG
- #endif
- #define GE2_TIMER_SLEEP_INTERVAL 30000
- #define LOG_TAG "LIBGPS"
- #define LIBGPS_VERSION_STR "LIBGPS_W20.34.5_MOCOR_V1.2.6"
- #define CTRL_MODE 1
- #define SUPL_MODE 0
- #define MAX_NMEA_TOKENS 32
- //#define NMEA_MAX_SIZE 1023
- #define TOKEN_LEN(tok) (tok.end > tok.p ? tok.end - tok.p : 0)
- #define GPS_RECV_MAX_LEN (4294967200UL)
- #define GPS_SEND_MAX_LEN (4294967200UL)
- #define POWER_ERROR_NUMBER_MAX (9)
- #define SEND_REPEAT_COUNT_MAX (3)
- //for boot add by zxw
- #define START_DOWNLOAD_FD1 0x01
- #define START_DOWNLOAD_GE2 0x02
- #define CLOSE_DEVICE 0x03
- #define DEVICE_EXCEPTION 0x04
- #define DOWNLOAD_FAIL 0x05
- #define GET_GNSS_STATUS 0x06
- #define GNSS_SOCKET_NAME "gnss_server"
- #define WCND_SOCKET_NAME "wcnd"
- #define GNSS_DOWNLOAD_TIMEOUT (12) // 6 seconds
- #define WCN_CMD_REBOOT_GNSS "rebootgnss"
- #define WCN_CMD_DUMP_GNSS "dumpgnss"
- #define WCN_CMD_START_GNSS "startgnss"
- #define WCN_CMD_STOP_GNSS "stopgnss"
- #define WCN_RESP_REBOOT_GNSS "rebootgnss-ok"
- #define WCN_RESP_DUMP_GNSS "dumpgnss-ok"
- #define WCN_RESP_START_GNSS "startgnss-ok"
- #define WCN_RESP_STOP_GNSS "stopgnss-ok"
- #define WCN_RESP_STATE_GNSS "gnssstate-ok"
- #define GET_XML 0x00
- #define SET_XML 0x01
- #define SUPL_XML_PATH "/data/gnss/supl/supl.xml"
- #define CONFIG_XML_PATH "/data/gnss/config/config.xml"
- #define RAWOBS_PATH "/data/gnss/lte/raw.obs"
- #define GE2_FDL_PATH "/data/gnss/bin/gnssfdl.bin"
- #define SUPL_ETC_PATH "/system/etc/supl.xml"
- #define CONFIG_ETC_PATH "/system/etc/config.xml"
- #define SPREADORBIT_ETC_PATH "/system/etc/jpleph.405"
- #define RAWOBS_ETC_PATH "/system/etc/raw.obs"
- #define GE2_FIRMWARE_ETC_PATH "/system/etc/gnssmodem.bin"
- #define GE2_FDL_ETC_PATH "/system/etc/gnssfdl.bin"
- #define AGNSS_CER_ETC_PATH "/system/etc/spirentroot.cer"
- #define FLASHCFG_PATH "/gnss/Flash_GNSS.cg"
- /*
- // pre defined in
- #ifndef GNSS_BASE_PATH
- #define GNSS_BASE_PATH L"d:\\others\\gnss"
- #endif
- */
- ///* for tsx */
- /*
- #ifndef GNSS_TSXDAT_PATH
- #define GNSS_TSXDAT_PATH L"d:\\others\\gnss\\tsx.dat"
- #endif
- #ifndef GNSS_TXTXT_PATH
- #define GNSS_TXTXT_PATH L"d:\\others\\gnss\\txdata.txt"
- #endif
- #ifndef FLASHCFG_GPS_PATH
- #define FLASHCFG_GPS_PATH L"d:\\others\\gnss\\FlashCfg_GPS.cg"
- #endif
- #ifndef FLASHCFG_GLO_PATH
- #define FLASHCFG_GLO_PATH L"d:\\others\\gnss\\FlashCfg_GLO.cg"
- #endif
- #ifndef FLASHCFG_BDS_PATH
- #define FLASHCFG_BDS_PATH L"d:\\others\\gnss\\FlashCfg_BDS.cg"
- #endif
- */
- #define SUPL_TYPE 0
- #define CONFIG_TYPE 1
- #define SPREADORBIT_TYPE 2
- #define FIRMWARE_TYPE 3
- #define FDL_TYPE 4
- #define RAWOBS_TYPE 5
- #define CER_TYPE 6
- #define PI 3.14159265358979323846
- #define WGS_AXIS_A 6378137.0
- #define WGS_E1_SQR 0.006694379990141317
- #define EARTH_R 6371.004
- #ifndef ABS
- #define ABS(x) (((x) > 0 ? (x) : -(x)))
- #endif
- //agps session protection macro and constaint define
- #define AGPS_SESSION_START (1)
- #define AGPS_SESSION_STOP (2)
- #define AGPS_SESSION_TIMEOUT (3)
- #define AGPS_GLONASS_EPH_MAX_COUNT (28) //28
- #define AGPS_SESSION_TIMEOU_SECONDS (3600) //one hour
- #define GPS_WEEK_NO_SECONDS (604800) //one hour
- #define TRACE_OFFSET 544 * 1024
- #define FORMAT_MAX_LENTH 8
- #define LINE_MAX_NUM 2000
- #define TSX_DATA_GROUP_NUM_EXT 4
- /* Bt mac addr: 6Byte, wifi MAC addr£º 6Byte*/
- #define TSX_DATA_CALI_OFFSET (6 + 6)
- // for GE2, sync with enum wcn_gnss_sub_sys in kernel
- #define GPS_GLONASS_IMG 16 // WCN_GNSS
- #define GPS_BDS_IMG 17 // WCN_GNSS_BD
- #define NV_STR_GPS_GLO_MODEM "GNSSMODEM"
- #define NV_STR_GPS_BDS_MODEM "GNSSBDMODEM"
- //gnss work mode constant define
- #define GNSS_GPS_WORKMODE (1)
- #define GNSS_BD_WORKMODE (2)
- #define GNSS_GPS_BD_WORKMODE (3)
- #define GNSS_GLONASS_WORKMODE (4)
- #define GNSS_GPS_GLONASS_WORKMODE (5)
- //for marlin3 default
- #define GNSS_GPS_BD2_GLONASS_WORKMODE (7)
- //for marlin3 lite default
- #define GNSS_GPS_BD2_GALILEO_WORKMODE (19)
- #ifdef CONFIG_SOC_8850
- //for marlin3 lite integ default
- #define GNSS_GPS_B1C_GLONASS_GALILEO_WORKMODE (29)
- #endif
- //Use RAM buffer to save ephemeris data to Flash
- #define USE_RAM_CACHE
- /* for tsx begin */
- typedef struct
- {
- float freq;
- float temprature;
- } TFTable;
- typedef struct
- {
- int freq;
- int temprature;
- int temprature_osc;
- } TSX_DATA_EXT_T; //ap tsx
- typedef struct
- {
- double temprature;
- double temprature_osc;
- } TSX_TEMP_EXT_T;
- typedef struct
- {
- /*TFTable tsxTable[200];*/
- int temprature_diff;
- double c0;
- double c1;
- double c2;
- double c3;
- double c1_Osc;
- double c2_Osc;
- double c3_Osc;
- double invP[49]; /* 7*7 */
- unsigned int validFlag_remain[8];
- unsigned int validFlag[4][21];
- } TsxData_EXT; //cp tsx
- typedef struct
- {
- int freq;
- int temprature;
- } TSX_DATA_T;
- #define TSX_DATA_GROUP_NUM 2
- typedef struct
- {
- double temprature;
- } TSX_TEMP_T;
- typedef struct
- {
- TFTable tsxTable[200];
- double c0;
- double c1;
- double c2;
- double c3;
- double invP[16];
- unsigned int validFlag_remain[8];
- unsigned int validFlag[4];
- } TsxData;
- /* for tsx end */
- typedef struct ttf
- {
- unsigned int weekno;
- unsigned int mscount;
- } gpstime;
- typedef struct
- {
- int prn;
- float snr;
- } RawSvData;
- typedef struct
- {
- int num_svs;
- RawSvData sv_list[50];
- } RawGpsSvInfo;
- //RawGpsSvInfo sv_rawinfo;
- #if defined(GPS_SUPPORT) && defined(GPS_CHIP_VER_GREENEYE2)
- #define NV_GPS_GE2_ITEM_NUM 50
- #else
- #define NV_GPS_GE2_ITEM_NUM 0
- #endif
- #define NV_GPS_GE2_BASE_ID (500)
- #define NV_GPS_GE2_MAX (NV_GPS_GE2_BASE_ID + NV_GPS_GE2_ITEM_NUM - 1)
- #define NV_GPS_GE2_BASE (NV_GPS_GE2_BASE_ID)
- typedef enum
- {
- NV_GPS_AGPS_PARAM = NV_GPS_GE2_BASE,
- NV_GPS_EPHEMERIS_PARAM,
- NV_GLO_EPHEMERIS_PARAM,
- NV_BD_EPHEMERIS_PARAM,
- #if 0
- NV_GPS_PVTMISC_PARAM,
- NV_GPS_GPSEPH1_PARAM,
- NV_GPS_GPSEPH2_PARAM,
- NV_GPS_GPSEPH3_PARAM,
- NV_GPS_GPSEPH4_PARAM,
- NV_GPS_GPSALM_PARAM,
- NV_GPS_GPSCPY1_PARAM,
- NV_GPS_GPSCPY2_PARAM,
- NV_GPS_GPSCPY3_PARAM,
- NV_GPS_GPSCPY4_PARAM,
- NV_GPS_GPSCPY5_PARAM,
- NV_GPS_GPSCPY6_PARAM,
- NV_GPS_QZSEPH_PARAM,
- NV_GPS_BDEPH1_PARAM,
- NV_GPS_BDEPH2_PARAM,
- NV_GPS_BDALM_PARAM,
- NV_GPS_GLOEPH1_PARAM,
- NV_GPS_GLOEPH2_PARAM,
- NV_GPS_GLOEPH3_PARAM,
- NV_GPS_GLOEPH4_PARAM,
- NV_GPS_GLOALM1_PARAM,
- NV_GPS_GLOALM2_PARAM,
- NV_GPS_IONO_PARAM,
- NV_GPS_ALMCPY_PARAM,
- NV_GPS_SEQLSQ_PARAM,
- NV_GPS_BLUNDER_PARAM,
- #endif
- NV_GPS_MAX_PARAM = NV_GPS_GE2_MAX //must be less than 50
- } GPS_FLASHPARAM_T;
- //end
- typedef enum DevicepowerState
- {
- DEVICE_DOWNLOADING = 1,
- DEVICE_DOWNLOADED,
- DEVICE_POWERONING,
- DEVICE_POWERONED,
- DEVICE_WORKING,
- DEVICE_WORKED,
- DEVICE_IDLING,
- DEVICE_IDLED,
- DEVICE_SLEEPING,
- DEVICE_SLEEP,
- DEVICE_WAKEUPING,
- DEVICE_RESET,
- DEVICE_POWEROFFING,
- DEVICE_POWEROFFED,
- DEVICE_ABNORMAL
- } TDevicepowerState;
- typedef struct
- {
- const char *p;
- const char *end;
- } Token;
- typedef struct
- {
- int count;
- Token tokens[MAX_NMEA_TOKENS];
- } NmeaTokenizer;
- #if 0
- struct timeout_actions_elem {
- int inuse;
- int id;
- time_t tout;
- void (*timeout_cb)(int, void *data);
- void *data;
- };
- #endif
- typedef struct
- {
- int pos;
- int overflow;
- int utc_year;
- int utc_mon;
- int utc_day;
- GpsLocation fix;
- GpsSvStatus svstatus;
- int svinfo_flags;
- gps_location_callback location_callback;
- gps_sv_status_callback sv_status_callback;
- char in[NMEA_MAX_SIZE + 1];
- } NmeaReader;
- typedef enum
- {
- LIBGPSTYPE,
- SUPLTYPE,
- CONTROLTYPE,
- ENGINETYPE
- } GPSTYPE;
- typedef enum
- {
- DUMP_RECV_START_UNKOWN,
- DUMP_RECV_CODE_START,
- DUMP_RECV_CODE_END, //it qual data start
- DUMP_RECV_DATA_END,
- DUMP_RECV_MAX,
- } DUMP_RecvState_e;
- #define SMD_REQ_FLAG_GOOD_SIGNAL 1
- #define SMD_REQ_FLAG_BAD_SIGNAL 2
- #define SMD_TIMEOUT_VALUE_OF_GOOD_SIGNAL 60
- #define SMD_TIMEOUT_VALUE_OF_BAD_SIGNAL 30
- #define SMD_RSP_TYPE_OPENED_FAILED 0
- #define SMD_RSP_TYPE_OPENED_SUCCESS 1
- #define SMD_RSP_TYPE_TIMER_EXPIRED 2
- #define SMD_RSP_TYPE_TIMER_NOT_EXPIRED 3
- typedef struct
- {
- char nmea[NMEA_MAX_SIZE + 1];
- } OneNmeaMsg_T;
- //one GSV sentence including 4 SVs
- #define MAX_GSV_SENTENCES (MAX_SV_IN_GSV / 4)
- typedef struct
- {
- OneNmeaMsg_T gga;
- OneNmeaMsg_T rmc;
- int gsv_count;
- OneNmeaMsg_T gsv[MAX_GSV_SENTENCES];
- } LastNmeaRecord_T;
- typedef struct
- {
- uint8 isSupportSMD;
- uint8 cpSMDReqFlag;
- uint8 isStopBySmdTimer;
- uint8 isSentOpenSmd;
- uint8 smdResponse;
- SCI_TIMER_PTR smd_timer;
- SCI_TIMER_PTR nmea_timer;
- LastNmeaRecord_T lastNmea;
- } LowPowerGnss_T;
- #define MAX_MINILOG_STR_LINES 1000
- #define MINILOG_OFFSET_IN_MODEM_BIN (544 * 1024)
- /* DO NOT enlarge this value, it will make GNSS CP crash */
- #define MINILOG_MAX_SIZE (48 * 1024)
- /* minilog base addr, which saves the minilog loaded from gnssmodem.bin */
- #define MINILOG_BASE_ADDR (0x140C00)
- #define MAX_LEN_OF_MINILOG_STR (512)
- typedef struct
- {
- char *fmt_str_begin; //format string start address
- int len; //format string length
- } MinilogStrItem_T;
- typedef struct
- {
- uint8 isLoaded; //is minilog format string loaded or not
- uint32 minilog_offset; //minilog format string offset in gnss modem bin
- uint32 max_size; //max minilog size
- int item_count;
- MinilogStrItem_T item_array[MAX_MINILOG_STR_LINES];
- } MinilogCtx_T;
- #define GNSS_CP_INFO_OFFSET_IN_MODEM_BIN (540 * 1024)
- /* before enlarge this value, you should check with GNSS CP side */
- #define GNSS_CP_INFO_MAX_SIZE (4 * 1024)
- #define GNSS_CP_INFO_KEY_IMG_MODE "GPS-IMG-MODE"
- #define GNSS_CP_INFO_KEY_CP_VERSION "GNSS-CP-VERSION"
- #define MAX_LEN_OF_GNSS_CP_INFO_VALUE 64
- typedef struct
- {
- uint8 isLoaded; //is loaded or not
- uint32 cpInfoOffset; //cp info offset in gnss modem bin
- uint32 max_size; //max cp info size
- char imgMode[MAX_LEN_OF_GNSS_CP_INFO_VALUE];
- char cpVersion[MAX_LEN_OF_GNSS_CP_INFO_VALUE];
- } GnssCpInfo_T;
- typedef struct
- {
- //global state value
- int init;
- int first;
- int first_idleoff;
- int fd;
- int powerctrlfd;
- int gnsslogfd;
- int slog_switch;
- int slogmodem_fd;
- int hardware_id;
- int getetcconfig;
- unsigned char sleepCount;
- unsigned char wakeupCount;
- char serialName[22]; //fd string name
- int uart_port;
- //char binPath[128];
- // int readBuffersize;
- SCI_MUTEX_PTR gnsslogmutex;
- SCI_MUTEX_PTR save2flashmutex;
- unsigned char readBuffer[SERIAL_READ_BUFFER_MAX];
- unsigned char writeBuffer[SERIAL_WRITE_BUFFER_MAX];
- unsigned char gnsslogBuffer[GNSS_LOG_BUFFER_MAX];
- SCI_SEMAPHORE_PTR gnss_log_sm;
- int writeoffsize;
- int sendLen;
- int sendFlag;
- // TCircular_buffer serialWrite;
- //pthread_mutex_t writeMutex;
- NmeaReader NmeaReader[1];
- int ref;
- //for set mode param
- GpsPositionRecurrence recurrence;
- int min_interval;
- int preferred_accuracy;
- int preferred_time;
- int fix_frequency;
- //for supl server and port
- char suplhost[80];
- int suplport;
- //for callback
- GpsCallbacks callbacks;
- //AGpsCallbacks agps_callbacks;
- //GpsNiCallbacks ni_callbacks;
- //AGpsRilCallbacks agps_ril_callbacks;
- //GpsXtraCallbacks xtra_callbacks;
- //GpsGeofenceCallbacks geofence_callbacks;
- //for data conn,zhouxw add
- int connected;
- int type;
- int avaiable;
- int wifi_ok;
- int m_capabilities;
- int gps_flag;
- int gps_open;
- int started;
- int fix_stat;
- int logswitch;
- int workmode;
- //control sock
- int control[2];
- int asock[2];
- //for print debug,can remove
- int cmd_flag;
- int cpmode;
- int outtype;
- int lte_open;
- int lte_running;
- int realeph;
- int cmcc;
- int IdlOnCount;
- int IdlOffCount;
- int HeartCount;
- int waitHeartRsp;
- int keepIdleTime;
- int postlog;
- int watchdog;
- int imgmode;
- int sleepFlag;
- int sleepTimer;
- int stoptimer;
- int happenAssert;
- //it don't send sleep command in 5 minuter when laster cold-start
- int hotTestFlag;
- //gnss tool test
- int gnsstoolflag;
- //these is for power value
- TDevicepowerState powerState; // the device power state
- int powerErrorNum;
- //sem_t powersync; //power state sync
- //FILE* fFlashCfg;
- int fFlashCfg;
- //int fFlashCfg;
- //GNSS_REG_WR
- unsigned int wRegAddr;
- unsigned int wRegValue;
- unsigned int rRegAddr;
- unsigned int rRegValue;
- int screen_off; // SCREENOFF
- int release;
- //AGPS Timeout protection
- int agps_session;
- uint32 lastreftime;
- uint32 lastrefeph;
- int tsx_enable;
- int tsxIsdeliver;
- int etuMode;
- double tsx_temp; // TSXTEMP
- int cw_enable; // HW_CW
- int rftool_enable;
- int float_cn_enable;
- int baseband_mode;
- int phoneplatform; //0x1:feature phone
- int requestephmode;
- SCI_MUTEX_PTR dmamutex;
- int watchdogAssert;
- SCI_TIMER_PTR ge2sleeptimer;
- SCI_TIMER_PTR watchdogtimer;
- // for tsx
- TSX_TEMP_EXT_T tsx_temp_ext_get;
- TSX_TEMP_T tsx_temp_get;
- TSX_DATA_EXT_T apTsxData[TSX_DATA_GROUP_NUM_EXT];
- TsxData_EXT cpTsxData;
- SCI_MUTEX_PTR sv_info_mutex;
- SCI_MUTEX_PTR loc_info_mutex;
- GPS_NV_INFO_T gpsNvInfo;
- int init_type; /* for init by which module, defined in GNSS_INIT_TYPE */
- LowPowerGnss_T lpGnss;
- GnssModemBinInfo_T modemBinInfo; //gnss modem bin info
- MinilogCtx_T minilog_ctx;
- GnssCpInfo_T gnssCpInfo;
- char fix_flag;
- char is_nmea_log_to_pc;
- } GpsState;
- typedef enum
- {
- GNSS_MODE_UNKOWN = 0,
- GNSS_MODE_COLD_START,
- GNSS_MODE_WARM_START,
- GNSS_MODE_HOT_START,
- } GNSS_StartMode_e;
- typedef struct
- {
- GNSS_StartMode_e startMode;
- uint8 useAgnss;
- } MN_GPS_STARTMODE_AGNSS_T;
- typedef struct
- {
- SIGNAL_VARS
- MN_GPS_STARTMODE_AGNSS_T gps_startmode;
- } MN_GPS_STARTMODE_AGNSS_IND_T;
- #define MSB_SI 0
- #define MSB_NI 1
- #define MSA_SI 2
- #define MSA_NI 3
- #define GEO_MSB_SI 4
- #define GEO_MSB_NI 5
- #define GEO_MSA_SI 6
- #define GEO_MSA_NI 7
- #define PEROID_SI 8
- #define PEROID_NI 9
- #define CP_SI 10
- #define CP_NI 11
- typedef struct LLC
- {
- unsigned int weekNo; /*< week number (from beginning of current week cycle) */
- unsigned int second; /*< seconds (from beginning of current week no) */
- unsigned int secondFrac; /*< seconds fraction (from beginning of current second) units: 1ns */
- double lat;
- double lon;
- double hae;
- } WLLH_TYPE;
- typedef struct __TAgpsMsrElement_t
- {
- unsigned char systemid; //0-gps,1-glonass,2-beidou
- unsigned char satelliteID; // range: 0-63
- int cNo; // carrier noise ratio, range:(0..63)
- float doppler; // doppler, range:(-32768/5..32767/5)
- int wholeChips; // whole value of the code phase measurement, range:(0..1022)
- int fracChips; // fractional value of the code phase measurement, range:(0..1023),
- int mpathInd; // multipath indicator
- int pseuRangeRMSErr; // index, range:(0..63)
- #ifndef WIN32
- unsigned long long flags;
- long long received_gps_tow_ns;
- long long received_gps_tow_uncertainty_ns;
- #else
- unsigned _int64 flags;
- _int64 received_gps_tow_ns;
- _int64 received_gps_tow_uncertainty_ns;
- #endif
- double pseudorange_m;
- double pseudorange_uncertainty_m;
- float carrier_frequency_hz; // default L1
- unsigned int carrier_count;
- double carrier_phase;
- int bit_number; //Total bit number since midnight
- short time_from_last_bit_ms; // how many ms in one bit
- double elevation_deg;
- double elevation_uncertainty_deg;
- double azimuth_deg;
- double azimuth_uncertainty_deg;
- int used_in_fix;
- } TAgpsMsrElement_t;
- typedef struct __TAgpsMsrSetList_t
- {
- int gpsTOW; // unit:ms
- unsigned char listNums; // range:0-16
- TAgpsMsrElement_t msrElement[14]; // modify 16 to 14
- } TAgpsMsrSetList_t;
- typedef struct __TAgpsMsrElement_rawt
- {
- unsigned char systemid; //0-gps,1-glonass,2-beidou
- unsigned char satelliteID; // range: 0-63
- int cNo; // carrier noise ratio, range:(0..63)
- float doppler; // doppler, range:(-32768/5..32767/5)
- int wholeChips; // whole value of the code phase measurement, range:(0..1022)
- int fracChips; // fractional value of the code phase measurement, range:(0..1023),
- int mpathInd; // multipath indicator
- int pseuRangeRMSErr; // index, range:(0..63)
- } TAgpsMsrElement_raw_t;
- typedef struct __TAgpsMsrSetList_rawt
- {
- int gpsTOW; // unit:ms
- unsigned char listNums; // range:0-16
- TAgpsMsrElement_raw_t msrElement[14]; // todo change 14
- } TAgpsMsrSetList_raw_t;
- typedef struct
- {
- int bdsURAI;
- int weekNum; // add WN
- int bdsToe; /* 2^3 sec*/
- unsigned int bdsAPowerHalf; /*2^-19 meters^1/2*/
- unsigned int bdsE; /*2^-33 */
- int bdsW; /*2^-31 semi-circles */
- int bdsDeltaN; /*2^-43 semi-circles/sec */
- int bdsM0; /*2^-31 semi-circles */
- int bdsOmega0; /*2^-31 semi-circles */
- int bdsOmegaDot; /*2^-43 semi-circles/sec */
- int bdsI0; /*2^-31 semi-circles */
- int bdsIDot; /*2^-43 semi-circles/sec */
- int bdsCuc; /*2^-31 radians*/
- int bdsCus; /*2^-31 radians*/
- int bdsCrc; /*2^-6 meters*/
- int bdsCrs; /*2^-6 meters*/
- int bdsCic; /*2^-31 radians*/
- int bdsCis; /*2^-31 radians*/
- } * PBDS_EPHEMERIS, BDS_EPHEMERIS;
- typedef struct
- {
- int bdsToc; /* 2^3 seconds */
- int bdsA0; /* 2^-33 sec/sec */
- int bdsA1; /* 2^-50 sec/sec^2 */
- int bdsA2; /* 2^-66 seconds */
- int bdsTgd1; /* 10^-10 seconds */
- } * PBDS_CLOCK_EPHEMERIS, BDS_CLOCK_EPHEMERIS;
- extern GpsState _gps_state[1];
- //extern AgpsData_t agpsdata[1];
- //extern int sid_agps;
- extern char data_exist_flag;
- extern int gWriteFlag;
- extern int gDropCount;
- extern uint32 nmea_output_mode;
- extern GpsSvStatus SvState;
- #ifdef CONFIG_SOC_8850
- #define WEEK_MS_COUNT (7 * 24 * 60 * 60 * 1000)
- extern gpstime gps_idleon_time; // for 8850
- #endif
- /**---------------------------------------------------------------------------*
- ** Function Prototypes *
- **---------------------------------------------------------------------------*/
- void test_gps_mode(GpsState *s);
- void gps_state_start(GpsState *s);
- int gps_power_Statusync(int value);
- int gps_writeSerialData(GpsState *s, int len);
- void gps_sendData(int flag, const char *pBuf);
- void gps_setPowerState(int state);
- const char *gps_PowerStateName(int state);
- int gps_SendNotify(GpsState *s, int flag);
- void gps_dispatch(TCmdData_t *pPacket);
- void nmea_reader_parse(NmeaReader *r);
- int OsTimeSystemGet(gpstime *aGpsTime);
- int gps_wakeupDevice(GpsState *s);
- void gps_notiySleepDevice(GpsState *s);
- int gps_adingData(TCmdData_t *pPak);
- int recoverDevice(GpsState *pState);
- void createDump(GpsState *pState);
- void parseNmea(unsigned char *buf, int len);
- void nmea_parse_cp(unsigned char *buff, unsigned short lenth);
- int s2int(char *p, char len);
- void nmea_reader_addc(NmeaReader *r, int c);
- void gps_uart_dmastart(int uart_port);
- void gps_uart_dmaclose();
- void gps_send_assist_ge2(GpsState *s);
- void gps_send_eph_ge2(GpsState *s);
- void gps_saveEphToFlash(void);
- void gps_entersleep(void);
- void gps_send_sleep(uint32 state);
- //for tsx
- void update_tsx_param(void);
- int gps_getPowerState(void);
- void gps_set_testmode(uint32 mode);
- GpsSvStatus *Greeneye2_GetSvInfo(void);
- GpsLocation *Greeneye2_GetGpsLoc(void);
- int engpc_read_tsxtemp(char *pTsxTemp, int length);
- double greeneye2_getTcxoValue(void);
- void get_tsx_temp(unsigned char *buf, unsigned short length);
- void gps_handleSMDRequest(unsigned char *buf, unsigned short length);
- void gps_clear_ephdata(GpsState *s);
- void gps_clear_almdata(GpsState *s);
- int gps_serialPortRead(GpsState *pGPSState);
- int parse_assert_subtype_data(uint8 *input, uint8 *output, uint32 src_len, TGNSS_DataProcessor_t *stream_data);
- const char *gps_get_cp_ver_info(void);
- void gps_set_nmea_log_to_pc(bool isOn);
- void gps_nmeaReportTimerCb(uint32 wParam);
- void gps_manual_assert(void);
- int gps_read_eph_from_file(const uint16 *file_path, uint8 *buf, uint32 size);
- int gps_write_eph_to_file(const uint16 *file_path, uint8 *buf, uint32 size);
- void gps_state_stop(GpsState *s);
- GPS_ERR_E GreenEye2_updateTimestampOfNmea(OneNmeaMsg_T *pNmea);
- extern int GPSavEphRam2Flash(void);
- extern int GPSavEphRam2FlashAnyTime(void);
- void GreenEye2_send_nmea_packet();
- /**---------------------------------------------------------------------------*
- ** Compiler Flag *
- **---------------------------------------------------------------------------*/
- #ifdef __cplusplus
- }
- #endif /* __cplusplus */
- #endif //GREENEYE2_COMMON_H
|