Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,351 @@
|
||||
/*
|
||||
* asr_agps_api.h
|
||||
*
|
||||
* Created on: 2021
|
||||
* Author: huizhang
|
||||
*/
|
||||
|
||||
#ifndef INCLUDE_ASR_AGPS_API_H_
|
||||
#define INCLUDE_ASR_AGPS_API_H_
|
||||
#include "RXN_MSL_Ephemeris.h"
|
||||
#if defined(__CYGWIN__) || defined(LINUX) || defined(__linux__)
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#include "utlTime.h"
|
||||
#include "sockets.h"
|
||||
#ifndef NEZHA_MCU_DONGLE
|
||||
#include "pmic_rtc.h"
|
||||
#endif
|
||||
#endif
|
||||
#define SUPL_RRLP_ASSIST_REFTIME (1)
|
||||
#define SUPL_RRLP_ASSIST_REFLOC (2)
|
||||
#define SUPL_RRLP_ASSIST_IONO (4)
|
||||
#define SUPL_RRLP_ASSIST_EPHEMERIS (8)
|
||||
#define SUPL_RRLP_ASSIST_UTC (16)
|
||||
#define SUPL_RRLP_BDS_UTC (32)
|
||||
|
||||
struct supl_ephemeris_s {
|
||||
unsigned char prn;
|
||||
unsigned char fill1;
|
||||
short delta_n;
|
||||
int M0;
|
||||
unsigned int e;
|
||||
unsigned int A_sqrt;
|
||||
int OMEGA_0;
|
||||
int i0;
|
||||
int w;
|
||||
int OMEGA_dot;
|
||||
short i_dot;
|
||||
short Cuc;
|
||||
short Cus;
|
||||
short Crc;
|
||||
short Crs;
|
||||
short Cic;
|
||||
short Cis;
|
||||
unsigned short toe;
|
||||
unsigned short IODC;
|
||||
unsigned int toc;
|
||||
int AF0;
|
||||
short AF1;
|
||||
char AF2;
|
||||
unsigned char nav_model;
|
||||
|
||||
/* nav model */
|
||||
unsigned char bits;
|
||||
unsigned char ura;
|
||||
unsigned char health;
|
||||
char reserved[11];
|
||||
char tgd;
|
||||
unsigned char AODA;
|
||||
unsigned short IODE;
|
||||
};
|
||||
|
||||
struct supl_almanac_s {
|
||||
unsigned char prn;
|
||||
unsigned short e;
|
||||
unsigned char toa;
|
||||
short Ksii;
|
||||
short OMEGA_dot;
|
||||
unsigned char health;
|
||||
// unsigned char :8;
|
||||
|
||||
unsigned int A_sqrt;
|
||||
int OMEGA_0;
|
||||
int w;
|
||||
int M0;
|
||||
short AF0;
|
||||
short AF1;
|
||||
};
|
||||
|
||||
struct supl_ephemeris_glo_s
|
||||
{
|
||||
unsigned char prn;
|
||||
unsigned char fill[3];
|
||||
|
||||
/* Navigation Model */
|
||||
unsigned char health;
|
||||
unsigned char Ft;
|
||||
unsigned int tb;
|
||||
|
||||
/* orbit */
|
||||
unsigned int En;
|
||||
unsigned int P1;
|
||||
unsigned int P2;
|
||||
unsigned int M;
|
||||
int X;
|
||||
int Xdot;
|
||||
int Xdotdot;
|
||||
int Y;
|
||||
int Ydot;
|
||||
int Ydotdot;
|
||||
int Z;
|
||||
int Zdot;
|
||||
int Zdotdot;
|
||||
|
||||
/* Clock */
|
||||
int Tau;
|
||||
int Gamma;
|
||||
int DeltaTau;
|
||||
int NT;
|
||||
|
||||
/* from Aux in RT*/
|
||||
unsigned char FCN; //Frequency Channel Number
|
||||
};
|
||||
struct supl_almanac_qzs_s {
|
||||
unsigned char prn;
|
||||
unsigned short e;
|
||||
short Deltal;
|
||||
short OmegaDot;
|
||||
unsigned char health;
|
||||
unsigned int SqrtA;
|
||||
int Omeag0;
|
||||
int w;
|
||||
int M0;
|
||||
short AF0;
|
||||
short AF1;
|
||||
};
|
||||
struct supl_almanac_glo_s {
|
||||
unsigned short NA;
|
||||
unsigned char nA;
|
||||
unsigned char HA;
|
||||
int LambdaA;
|
||||
unsigned int tlambdaA;
|
||||
int DeltaIa;
|
||||
int DeltaTA;
|
||||
char DeltaTdotA;
|
||||
unsigned short EpsilonA;
|
||||
short OmegaA;
|
||||
short TauA;
|
||||
char CA;
|
||||
char MA;
|
||||
};
|
||||
struct supl_ephemeris_bds_s {
|
||||
unsigned char prn;
|
||||
unsigned char fill[3];
|
||||
|
||||
/* Orbit Model */
|
||||
unsigned int AODE;
|
||||
unsigned short ura;
|
||||
unsigned char fill1[2];
|
||||
unsigned int toe;
|
||||
unsigned int A_sqrt;
|
||||
unsigned int e;
|
||||
int w;
|
||||
short delta_n;
|
||||
unsigned char fill2[2];
|
||||
int M0;
|
||||
int OMEGA_0;
|
||||
int OMEGA_dot;
|
||||
int i0;
|
||||
short i_dot;
|
||||
unsigned char rsv[2];
|
||||
|
||||
int Cuc;
|
||||
int Cus;
|
||||
int Crc;
|
||||
int Crs;
|
||||
int Cic;
|
||||
int Cis;
|
||||
|
||||
/* Clock Model */
|
||||
unsigned char rsv1[2];
|
||||
int toc;
|
||||
int AF0;
|
||||
int AF1;
|
||||
int AF2;
|
||||
short tgd;
|
||||
|
||||
/* nav model */
|
||||
unsigned short IODC;
|
||||
unsigned char health;
|
||||
};
|
||||
|
||||
struct supl_ephemeris_qzs_s {
|
||||
unsigned char prn;
|
||||
unsigned int Tot;
|
||||
unsigned char CodeOnL2;
|
||||
unsigned char ura;
|
||||
unsigned char health;
|
||||
unsigned short Iodc;
|
||||
unsigned short Iode;
|
||||
unsigned char L2pFlag;
|
||||
unsigned int Resv[4];
|
||||
char tgd;
|
||||
unsigned int toc;
|
||||
char AF2;
|
||||
short AF1;
|
||||
int AF0;
|
||||
short Crs;
|
||||
short delta_n;
|
||||
int M0;
|
||||
short Cuc;
|
||||
unsigned int e;
|
||||
short Cus;
|
||||
unsigned int A_sqrt;
|
||||
unsigned int toe;
|
||||
char fitflag;
|
||||
char AODO;
|
||||
short Cic;
|
||||
int OMEGA_0;
|
||||
short Cis;
|
||||
int i0;
|
||||
short Crc;
|
||||
int w;
|
||||
int OMEGA_dot;
|
||||
short i_dot;
|
||||
};
|
||||
struct supl_almanac_bds_s {
|
||||
int prn;
|
||||
int toa;
|
||||
int A_sqrt;
|
||||
int e;
|
||||
int w;
|
||||
int M0;
|
||||
int OMEGA_0;
|
||||
int OMEGA_dot;
|
||||
int DeltaI;
|
||||
short a0;
|
||||
short a1;
|
||||
int Health;
|
||||
};
|
||||
struct agps_utc{
|
||||
int tm_sec; //seconds [0,59]
|
||||
int tm_min; //minutes [0,59]
|
||||
int tm_hour; //hour [0,23]
|
||||
int tm_mday; //day of month [1,31]
|
||||
int tm_mon; //month of year [1,12]
|
||||
int tm_year; // since 1970
|
||||
int tm_wday; // sunday = 0
|
||||
};
|
||||
struct supl_ionospheric_s {
|
||||
char a0, a1, a2, a3, b0, b1, b2, b3;
|
||||
//belows for beidou
|
||||
int toe;
|
||||
char svid;
|
||||
};
|
||||
struct supl_utc_s {
|
||||
int a0;
|
||||
int a1;
|
||||
char delta_tls;
|
||||
unsigned char tot;
|
||||
unsigned char wnt;
|
||||
unsigned char wnlsf;
|
||||
unsigned char dn;
|
||||
unsigned char delta_tlsf;
|
||||
unsigned char bValid;
|
||||
unsigned char fill[1];
|
||||
};
|
||||
struct reftime{
|
||||
long gps_tow;
|
||||
long gps_week;
|
||||
struct agps_utc stamp;
|
||||
char gps_week_cycle;
|
||||
};
|
||||
|
||||
typedef struct supl_rrlp_ctx_s {
|
||||
int predmode;// 0 means realtime mode , 1 means predmode
|
||||
int set;
|
||||
long smlc_code;
|
||||
long transactionId;
|
||||
|
||||
long waitFix;
|
||||
|
||||
struct reftime time;
|
||||
|
||||
int cnt_eph;
|
||||
struct supl_ephemeris_s *eph;
|
||||
|
||||
int cnt_alm;
|
||||
int alm_week;
|
||||
struct supl_almanac_s *alm;
|
||||
struct supl_ionospheric_s iono;
|
||||
struct supl_utc_s utc;
|
||||
/* Glonass */
|
||||
int cnt_eph_glo;
|
||||
struct supl_ephemeris_glo_s *eph_glo;
|
||||
|
||||
int cnt_alm_glo;
|
||||
int alm_wn_glo; // week number for glonass
|
||||
int wn_glo; // week number for glonass
|
||||
struct supl_almanac_glo_s *alm_glo;
|
||||
|
||||
/* BDS */
|
||||
int cnt_eph_bds;
|
||||
unsigned short wn_bds; // Week Number for BDS
|
||||
struct supl_ephemeris_bds_s *eph_bds;
|
||||
|
||||
int cnt_alm_bds;
|
||||
int alm_wn_bds; // Week Number for BDS
|
||||
struct supl_almanac_bds_s *alm_bds;
|
||||
int bds_iono_cnt;
|
||||
struct supl_ionospheric_s *bds_iono;
|
||||
|
||||
struct supl_ionospheric_s *glo_iono;
|
||||
//struct supl_utc_s utc_bds;
|
||||
//struct SUPLGANSSAddUTCModel utc_add_bds;
|
||||
/* QZS */
|
||||
int cnt_eph_qzs;
|
||||
struct supl_ephemeris_qzs_s *eph_qzs;
|
||||
|
||||
unsigned char cnt_alm_qzs;
|
||||
unsigned char alm_wn_qzs; // alm Week Number for QZS
|
||||
unsigned short wn_qzs; // Week Number for QZS
|
||||
unsigned char toa_qzs;
|
||||
struct supl_almanac_qzs_s *alm_qzs;
|
||||
struct supl_ionospheric_s *qzs_iono;
|
||||
|
||||
} supl_assist_t;
|
||||
|
||||
int GetGPSEphInfo(RXN_MSL_GPS_Ephem_t *gpsEphemeris,int size);
|
||||
int GetBDSEphInfo(RXN_MSL_Beidou_Ephem_t *bdsEphemeris,int size);
|
||||
int tp_agps_init(void);
|
||||
int tp_get_rt_assist(supl_assist_t *assist,int alm,int lat,int lon,int accuracy);
|
||||
int tp_get_pred_assist(int day,supl_assist_t *assist);
|
||||
/*
|
||||
* -1xx: init error
|
||||
* -2xx: invalid parameters
|
||||
* -30x: get eph file error
|
||||
* -31x: decode eph file error
|
||||
* -4xx: decode pred eph file error
|
||||
* -5xx: get utc error
|
||||
* -601: build filename error
|
||||
* */
|
||||
int tp_get_assist(supl_assist_t *assist,int alm);
|
||||
int tp_get_assist_bycondition(supl_assist_t *assist,int alm,int lat,int lon,int accuracy);
|
||||
int tp_consume_1(supl_assist_t *ctx) ;
|
||||
void tp_free_assist(supl_assist_t *ctx) ;
|
||||
int tp_set_server(char *srvname);
|
||||
int tp_set_mode(int day,int flag);
|
||||
int getTime( struct reftime *ref);
|
||||
int getRefTime(supl_assist_t *assist);
|
||||
int convertUtcToRefTime(unsigned int utc,supl_assist_t *assist);
|
||||
int getGPSTime(unsigned int *GPSTime);
|
||||
int getUTCTime(unsigned int *utc);
|
||||
int tp_decode_data(int mode,char *data,int len,supl_assist_t *assist);
|
||||
void tp_decode_status_set(int state);
|
||||
int tp_decode_status_get(void);
|
||||
int tp_set_condition(int lat, int lon, int accuracy);
|
||||
int encodeAccessKey(unsigned int utc,char passwd[10],char output[64]);
|
||||
#endif /* INCLUDE_ASR_AGPS_API_H_ */
|
||||
Reference in New Issue
Block a user