mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-02-05 21:50:09 +00:00
Activate compilation of RTCM decoding functions
This commit is contained in:
parent
495813c969
commit
1b4cfad57d
@ -33,6 +33,9 @@ set(RTKLIB_LIB_SOURCES
|
|||||||
rtklib_stream.cc
|
rtklib_stream.cc
|
||||||
rtklib_rtksvr.cc
|
rtklib_rtksvr.cc
|
||||||
rtklib_solution.cc
|
rtklib_solution.cc
|
||||||
|
rtklib_rtcm.cc
|
||||||
|
rtklib_rtcm2.cc
|
||||||
|
rtklib_rtcm3.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
|
@ -61,35 +61,35 @@
|
|||||||
/* adjust hourly rollover of rtcm 2 time -------------------------------------*/
|
/* adjust hourly rollover of rtcm 2 time -------------------------------------*/
|
||||||
void adjhour(rtcm_t *rtcm, double zcnt)
|
void adjhour(rtcm_t *rtcm, double zcnt)
|
||||||
{
|
{
|
||||||
double tow,hour,sec;
|
double tow, hour, sec;
|
||||||
int week;
|
int week;
|
||||||
|
|
||||||
/* if no time, get cpu time */
|
/* if no time, get cpu time */
|
||||||
if (rtcm->time.time == 0) rtcm->time = utc2gpst(timeget());
|
if (rtcm->time.time == 0) rtcm->time = utc2gpst(timeget());
|
||||||
tow = time2gpst(rtcm->time,&week);
|
tow = time2gpst(rtcm->time, &week);
|
||||||
hour = floor(tow/3600.0);
|
hour = floor(tow/3600.0);
|
||||||
sec = tow-hour*3600.0;
|
sec = tow-hour*3600.0;
|
||||||
if (zcnt<sec-1800.0) zcnt += 3600.0;
|
if (zcnt<sec-1800.0) zcnt += 3600.0;
|
||||||
else if (zcnt>sec+1800.0) zcnt-=3600.0;
|
else if (zcnt>sec+1800.0) zcnt-=3600.0;
|
||||||
rtcm->time = gpst2time(week,hour*3600+zcnt);
|
rtcm->time = gpst2time(week, hour*3600+zcnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* get observation data index ------------------------------------------------*/
|
/* get observation data index ------------------------------------------------*/
|
||||||
int obsindex(obs_t *obs, gtime_t time, int sat)
|
int obsindex(obs_t *obs, gtime_t time, int sat)
|
||||||
{
|
{
|
||||||
int i,j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0;i<obs->n;i++)
|
for (i = 0; i<obs->n; i++)
|
||||||
{
|
{
|
||||||
if (obs->data[i].sat == sat) return i; /* field already exists */
|
if (obs->data[i].sat == sat) return i; /* field already exists */
|
||||||
}
|
}
|
||||||
if (i>=MAXOBS) return -1; /* overflow */
|
if (i >= MAXOBS) return -1; /* overflow */
|
||||||
|
|
||||||
/* add new field */
|
/* add new field */
|
||||||
obs->data[i].time = time;
|
obs->data[i].time = time;
|
||||||
obs->data[i].sat = sat;
|
obs->data[i].sat = sat;
|
||||||
for (j = 0;j<NFREQ;j++)
|
for (j = 0; j<NFREQ; j++)
|
||||||
{
|
{
|
||||||
obs->data[i].L[j] = obs->data[i].P[j] = 0.0;
|
obs->data[i].L[j] = obs->data[i].P[j] = 0.0;
|
||||||
obs->data[i].D[j] = 0.0;
|
obs->data[i].D[j] = 0.0;
|
||||||
@ -103,28 +103,28 @@ int obsindex(obs_t *obs, gtime_t time, int sat)
|
|||||||
/* decode type 1/9: differential gps correction/partial correction set -------*/
|
/* decode type 1/9: differential gps correction/partial correction set -------*/
|
||||||
int decode_type1(rtcm_t *rtcm)
|
int decode_type1(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
int i = 48,fact,udre,prn,sat,iod;
|
int i = 48, fact, udre, prn, sat, iod;
|
||||||
double prc,rrc;
|
double prc, rrc;
|
||||||
|
|
||||||
trace(4,"decode_type1: len=%d\n",rtcm->len);
|
trace(4, "decode_type1: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
while (i+40<=rtcm->len*8)
|
while (i+40 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
fact = getbitu(rtcm->buff,i, 1); i += 1;
|
fact = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
udre = getbitu(rtcm->buff,i, 2); i += 2;
|
udre = getbitu(rtcm->buff, i, 2); i += 2;
|
||||||
prn = getbitu(rtcm->buff,i, 5); i += 5;
|
prn = getbitu(rtcm->buff, i, 5); i += 5;
|
||||||
prc = getbits(rtcm->buff,i,16); i += 16;
|
prc = getbits(rtcm->buff, i, 16); i += 16;
|
||||||
rrc = getbits(rtcm->buff,i, 8); i += 8;
|
rrc = getbits(rtcm->buff, i, 8); i += 8;
|
||||||
iod = getbits(rtcm->buff,i, 8); i += 8;
|
iod = getbits(rtcm->buff, i, 8); i += 8;
|
||||||
if (prn == 0) prn = 32;
|
if (prn == 0) prn = 32;
|
||||||
if (prc == 0x80000000||rrc == 0xFFFF8000)
|
if (prc == 0x80000000||rrc == 0xFFFF8000)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 1 prc/rrc indicates satellite problem: prn=%d\n",prn);
|
trace(2, "rtcm2 1 prc/rrc indicates satellite problem: prn=%d\n", prn);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (rtcm->dgps)
|
if (rtcm->dgps)
|
||||||
{
|
{
|
||||||
sat = satno(SYS_GPS,prn);
|
sat = satno(SYS_GPS, prn);
|
||||||
rtcm->dgps[sat-1].t0 = rtcm->time;
|
rtcm->dgps[sat-1].t0 = rtcm->time;
|
||||||
rtcm->dgps[sat-1].prc = prc*(fact?0.32:0.02);
|
rtcm->dgps[sat-1].prc = prc*(fact?0.32:0.02);
|
||||||
rtcm->dgps[sat-1].rrc = rrc*(fact?0.032:0.002);
|
rtcm->dgps[sat-1].rrc = rrc*(fact?0.032:0.002);
|
||||||
@ -141,17 +141,17 @@ int decode_type3(rtcm_t *rtcm)
|
|||||||
{
|
{
|
||||||
int i = 48;
|
int i = 48;
|
||||||
|
|
||||||
trace(4,"decode_type3: len=%d\n",rtcm->len);
|
trace(4, "decode_type3: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
if (i+96<=rtcm->len*8)
|
if (i+96 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
rtcm->sta.pos[0] = getbits(rtcm->buff,i,32)*0.01; i += 32;
|
rtcm->sta.pos[0] = getbits(rtcm->buff, i, 32)*0.01; i += 32;
|
||||||
rtcm->sta.pos[1] = getbits(rtcm->buff,i,32)*0.01; i += 32;
|
rtcm->sta.pos[1] = getbits(rtcm->buff, i, 32)*0.01; i += 32;
|
||||||
rtcm->sta.pos[2] = getbits(rtcm->buff,i,32)*0.01;
|
rtcm->sta.pos[2] = getbits(rtcm->buff, i, 32)*0.01;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 3 length error: len=%d\n",rtcm->len);
|
trace(2, "rtcm2 3 length error: len=%d\n", rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 5;
|
return 5;
|
||||||
@ -162,24 +162,24 @@ int decode_type3(rtcm_t *rtcm)
|
|||||||
int decode_type14(rtcm_t *rtcm)
|
int decode_type14(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
double zcnt;
|
double zcnt;
|
||||||
int i = 48,week,hour,leaps;
|
int i = 48, week, hour, leaps;
|
||||||
|
|
||||||
trace(4,"decode_type14: len=%d\n",rtcm->len);
|
trace(4, "decode_type14: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
zcnt = getbitu(rtcm->buff,24,13);
|
zcnt = getbitu(rtcm->buff, 24, 13);
|
||||||
if (i+24<=rtcm->len*8)
|
if (i+24 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
week = getbitu(rtcm->buff,i,10); i += 10;
|
week = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
hour = getbitu(rtcm->buff,i, 8); i += 8;
|
hour = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
leaps = getbitu(rtcm->buff,i, 6);
|
leaps = getbitu(rtcm->buff, i, 6);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 14 length error: len=%d\n",rtcm->len);
|
trace(2, "rtcm2 14 length error: len=%d\n", rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
week = adjgpsweek(week);
|
week = adjgpsweek(week);
|
||||||
rtcm->time = gpst2time(week,hour*3600.0+zcnt*0.6);
|
rtcm->time = gpst2time(week, hour*3600.0+zcnt*0.6);
|
||||||
rtcm->nav.leaps = leaps;
|
rtcm->nav.leaps = leaps;
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
@ -188,17 +188,17 @@ int decode_type14(rtcm_t *rtcm)
|
|||||||
/* decode type 16: gps special message ---------------------------------------*/
|
/* decode type 16: gps special message ---------------------------------------*/
|
||||||
int decode_type16(rtcm_t *rtcm)
|
int decode_type16(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
int i = 48,n = 0;
|
int i = 48, n = 0;
|
||||||
|
|
||||||
trace(4,"decode_type16: len=%d\n",rtcm->len);
|
trace(4, "decode_type16: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
while (i+8<=rtcm->len*8&&n<90)
|
while (i+8 <= rtcm->len*8 && n<90)
|
||||||
{
|
{
|
||||||
rtcm->msg[n++] = getbitu(rtcm->buff,i,8); i += 8;
|
rtcm->msg[n++] = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
rtcm->msg[n] = '\0';
|
rtcm->msg[n] = '\0';
|
||||||
|
|
||||||
trace(3,"rtcm2 16 message: %s\n",rtcm->msg);
|
trace(3, "rtcm2 16 message: %s\n", rtcm->msg);
|
||||||
return 9;
|
return 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,54 +207,54 @@ int decode_type16(rtcm_t *rtcm)
|
|||||||
int decode_type17(rtcm_t *rtcm)
|
int decode_type17(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
eph_t eph = {0};
|
eph_t eph = {0};
|
||||||
double toc,sqrtA;
|
double toc, sqrtA;
|
||||||
int i = 48,week,prn,sat;
|
int i = 48, week, prn, sat;
|
||||||
|
|
||||||
trace(4,"decode_type17: len=%d\n",rtcm->len);
|
trace(4, "decode_type17: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
if (i+480<=rtcm->len*8)
|
if (i+480 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
week = getbitu(rtcm->buff,i,10); i += 10;
|
week = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
eph.idot = getbits(rtcm->buff,i,14)*TWO_N43*SC2RAD; i += 14;
|
eph.idot = getbits(rtcm->buff, i, 14)*TWO_N43*SC2RAD; i += 14;
|
||||||
eph.iode = getbitu(rtcm->buff,i, 8); i += 8;
|
eph.iode = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
toc = getbitu(rtcm->buff,i,16)*16.0; i += 16;
|
toc = getbitu(rtcm->buff, i, 16)*16.0; i += 16;
|
||||||
eph.f1 = getbits(rtcm->buff,i,16)*TWO_N43; i += 16;
|
eph.f1 = getbits(rtcm->buff, i, 16)*TWO_N43; i += 16;
|
||||||
eph.f2 = getbits(rtcm->buff,i, 8)*TWO_N55; i += 8;
|
eph.f2 = getbits(rtcm->buff, i, 8)*TWO_N55; i += 8;
|
||||||
eph.crs = getbits(rtcm->buff,i,16)*TWO_N5; i += 16;
|
eph.crs = getbits(rtcm->buff, i, 16)*TWO_N5; i += 16;
|
||||||
eph.deln = getbits(rtcm->buff,i,16)*TWO_N43*SC2RAD; i += 16;
|
eph.deln = getbits(rtcm->buff, i, 16)*TWO_N43*SC2RAD; i += 16;
|
||||||
eph.cuc = getbits(rtcm->buff,i,16)*TWO_N29; i += 16;
|
eph.cuc = getbits(rtcm->buff, i, 16)*TWO_N29; i += 16;
|
||||||
eph.e = getbitu(rtcm->buff,i,32)*TWO_N33; i += 32;
|
eph.e = getbitu(rtcm->buff, i, 32)*TWO_N33; i += 32;
|
||||||
eph.cus = getbits(rtcm->buff,i,16); i += 16;
|
eph.cus = getbits(rtcm->buff, i, 16); i += 16;
|
||||||
sqrtA = getbitu(rtcm->buff,i,32)*TWO_N19; i += 32;
|
sqrtA = getbitu(rtcm->buff, i, 32)*TWO_N19; i += 32;
|
||||||
eph.toes = getbitu(rtcm->buff,i,16); i += 16;
|
eph.toes = getbitu(rtcm->buff, i, 16); i += 16;
|
||||||
eph.OMG0 = getbits(rtcm->buff,i,32)*TWO_N31*SC2RAD; i += 32;
|
eph.OMG0 = getbits(rtcm->buff, i, 32)*TWO_N31*SC2RAD; i += 32;
|
||||||
eph.cic = getbits(rtcm->buff,i,16)*TWO_N29; i += 16;
|
eph.cic = getbits(rtcm->buff, i, 16)*TWO_N29; i += 16;
|
||||||
eph.i0 = getbits(rtcm->buff,i,32)*TWO_N31*SC2RAD; i += 32;
|
eph.i0 = getbits(rtcm->buff, i, 32)*TWO_N31*SC2RAD; i += 32;
|
||||||
eph.cis = getbits(rtcm->buff,i,16)*TWO_N29; i += 16;
|
eph.cis = getbits(rtcm->buff, i, 16)*TWO_N29; i += 16;
|
||||||
eph.omg = getbits(rtcm->buff,i,32)*TWO_N31*SC2RAD; i += 32;
|
eph.omg = getbits(rtcm->buff, i, 32)*TWO_N31*SC2RAD; i += 32;
|
||||||
eph.crc = getbits(rtcm->buff,i,16)*TWO_N5; i += 16;
|
eph.crc = getbits(rtcm->buff, i, 16)*TWO_N5; i += 16;
|
||||||
eph.OMGd = getbits(rtcm->buff,i,24)*TWO_N43*SC2RAD; i += 24;
|
eph.OMGd = getbits(rtcm->buff, i, 24)*TWO_N43*SC2RAD; i += 24;
|
||||||
eph.M0 = getbits(rtcm->buff,i,32)*TWO_N31*SC2RAD; i += 32;
|
eph.M0 = getbits(rtcm->buff, i, 32)*TWO_N31*SC2RAD; i += 32;
|
||||||
eph.iodc = getbitu(rtcm->buff,i,10); i += 10;
|
eph.iodc = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
eph.f0 = getbits(rtcm->buff,i,22)*TWO_N31; i += 22;
|
eph.f0 = getbits(rtcm->buff, i, 22)*TWO_N31; i += 22;
|
||||||
prn = getbitu(rtcm->buff,i, 5); i += 5+3;
|
prn = getbitu(rtcm->buff, i, 5); i += 5+3;
|
||||||
eph.tgd[0] = getbits(rtcm->buff,i, 8)*TWO_N31; i += 8;
|
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
||||||
eph.code = getbitu(rtcm->buff,i, 2); i += 2;
|
eph.code = getbitu(rtcm->buff, i, 2); i += 2;
|
||||||
eph.sva = getbitu(rtcm->buff,i, 4); i += 4;
|
eph.sva = getbitu(rtcm->buff, i, 4); i += 4;
|
||||||
eph.svh = getbitu(rtcm->buff,i, 6); i += 6;
|
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
eph.flag = getbitu(rtcm->buff,i, 1);
|
eph.flag = getbitu(rtcm->buff, i, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 17 length error: len=%d\n",rtcm->len);
|
trace(2, "rtcm2 17 length error: len=%d\n", rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (prn == 0) prn = 32;
|
if (prn == 0) prn = 32;
|
||||||
sat = satno(SYS_GPS,prn);
|
sat = satno(SYS_GPS, prn);
|
||||||
eph.sat = sat;
|
eph.sat = sat;
|
||||||
eph.week = adjgpsweek(week);
|
eph.week = adjgpsweek(week);
|
||||||
eph.toe = gpst2time(eph.week,eph.toes);
|
eph.toe = gpst2time(eph.week, eph.toes);
|
||||||
eph.toc = gpst2time(eph.week,toc);
|
eph.toc = gpst2time(eph.week, toc);
|
||||||
eph.ttr = rtcm->time;
|
eph.ttr = rtcm->time;
|
||||||
eph.A = sqrtA*sqrtA;
|
eph.A = sqrtA*sqrtA;
|
||||||
rtcm->nav.eph[sat-1] = eph;
|
rtcm->nav.eph[sat-1] = eph;
|
||||||
@ -267,54 +267,54 @@ int decode_type17(rtcm_t *rtcm)
|
|||||||
int decode_type18(rtcm_t *rtcm)
|
int decode_type18(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
gtime_t time;
|
gtime_t time;
|
||||||
double usec,cp,tt;
|
double usec, cp, tt;
|
||||||
int i = 48,index,freq,sync = 1,code,sys,prn,sat,loss;
|
int i = 48, index, freq, sync = 1, code, sys, prn, sat, loss;
|
||||||
|
|
||||||
trace(4,"decode_type18: len=%d\n",rtcm->len);
|
trace(4, "decode_type18: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
if (i+24<=rtcm->len*8)
|
if (i+24 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
freq = getbitu(rtcm->buff,i, 2); i += 2+2;
|
freq = getbitu(rtcm->buff, i, 2); i += 2+2;
|
||||||
usec = getbitu(rtcm->buff,i,20); i += 20;
|
usec = getbitu(rtcm->buff, i, 20); i += 20;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 18 length error: len=%d\n",rtcm->len);
|
trace(2, "rtcm2 18 length error: len=%d\n", rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (freq&0x1)
|
if (freq&0x1)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 18 not supported frequency: freq=%d\n",freq);
|
trace(2, "rtcm2 18 not supported frequency: freq=%d\n", freq);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
freq>>=1;
|
freq>>= 1;
|
||||||
|
|
||||||
while (i+48<=rtcm->len*8&&rtcm->obs.n<MAXOBS)
|
while (i+48 <= rtcm->len*8 && rtcm->obs.n<MAXOBS)
|
||||||
{
|
{
|
||||||
sync = getbitu(rtcm->buff,i, 1); i += 1;
|
sync = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
code = getbitu(rtcm->buff,i, 1); i += 1;
|
code = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
sys = getbitu(rtcm->buff,i, 1); i += 1;
|
sys = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
prn = getbitu(rtcm->buff,i, 5); i += 5+3;
|
prn = getbitu(rtcm->buff, i, 5); i += 5+3;
|
||||||
loss = getbitu(rtcm->buff,i, 5); i += 5;
|
loss = getbitu(rtcm->buff, i, 5); i += 5;
|
||||||
cp = getbits(rtcm->buff,i,32); i += 32;
|
cp = getbits(rtcm->buff, i, 32); i += 32;
|
||||||
if (prn == 0) prn = 32;
|
if (prn == 0) prn = 32;
|
||||||
if (!(sat = satno(sys?SYS_GLO:SYS_GPS,prn)))
|
if (!(sat = satno(sys?SYS_GLO:SYS_GPS, prn)))
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 18 satellite number error: sys=%d prn=%d\n",sys,prn);
|
trace(2, "rtcm2 18 satellite number error: sys=%d prn=%d\n", sys, prn);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
time = timeadd(rtcm->time,usec*1E-6);
|
time = timeadd(rtcm->time, usec*1E-6);
|
||||||
if (sys) time = utc2gpst(time); /* convert glonass time to gpst */
|
if (sys) time = utc2gpst(time); /* convert glonass time to gpst */
|
||||||
|
|
||||||
tt = timediff(rtcm->obs.data[0].time,time);
|
tt = timediff(rtcm->obs.data[0].time, time);
|
||||||
if (rtcm->obsflag||fabs(tt)>1E-9)
|
if (rtcm->obsflag||fabs(tt)>1E-9)
|
||||||
{
|
{
|
||||||
rtcm->obs.n = rtcm->obsflag = 0;
|
rtcm->obs.n = rtcm->obsflag = 0;
|
||||||
}
|
}
|
||||||
if ((index = obsindex(&rtcm->obs,time,sat)) >= 0)
|
if ((index = obsindex(&rtcm->obs, time, sat)) >= 0)
|
||||||
{
|
{
|
||||||
rtcm->obs.data[index].L[freq] = -cp/256.0;
|
rtcm->obs.data[index].L[freq] = -cp/256.0;
|
||||||
rtcm->obs.data[index].LLI[freq] = rtcm->loss[sat-1][freq]!=loss;
|
rtcm->obs.data[index].LLI[freq] = rtcm->loss[sat-1][freq] != loss;
|
||||||
rtcm->obs.data[index].code[freq] =
|
rtcm->obs.data[index].code[freq] =
|
||||||
!freq?(code?CODE_L1P:CODE_L1C):(code?CODE_L2P:CODE_L2C);
|
!freq?(code?CODE_L1P:CODE_L1C):(code?CODE_L2P:CODE_L2C);
|
||||||
rtcm->loss[sat-1][freq] = loss;
|
rtcm->loss[sat-1][freq] = loss;
|
||||||
@ -329,50 +329,50 @@ int decode_type18(rtcm_t *rtcm)
|
|||||||
int decode_type19(rtcm_t *rtcm)
|
int decode_type19(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
gtime_t time;
|
gtime_t time;
|
||||||
double usec,pr,tt;
|
double usec, pr, tt;
|
||||||
int i = 48,index,freq,sync = 1,code,sys,prn,sat;
|
int i = 48, index, freq, sync = 1, code, sys, prn, sat;
|
||||||
|
|
||||||
trace(4,"decode_type19: len=%d\n",rtcm->len);
|
trace(4, "decode_type19: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
if (i+24<=rtcm->len*8)
|
if (i+24 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
freq = getbitu(rtcm->buff,i, 2); i += 2+2;
|
freq = getbitu(rtcm->buff, i, 2); i += 2+2;
|
||||||
usec = getbitu(rtcm->buff,i,20); i += 20;
|
usec = getbitu(rtcm->buff, i, 20); i += 20;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 19 length error: len=%d\n",rtcm->len);
|
trace(2, "rtcm2 19 length error: len=%d\n", rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (freq&0x1)
|
if (freq&0x1)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 19 not supported frequency: freq=%d\n",freq);
|
trace(2, "rtcm2 19 not supported frequency: freq=%d\n", freq);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
freq>>=1;
|
freq>>=1;
|
||||||
|
|
||||||
while (i+48<=rtcm->len*8&&rtcm->obs.n<MAXOBS)
|
while (i+48 <= rtcm->len*8 && rtcm->obs.n<MAXOBS)
|
||||||
{
|
{
|
||||||
sync = getbitu(rtcm->buff,i, 1); i += 1;
|
sync = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
code = getbitu(rtcm->buff,i, 1); i += 1;
|
code = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
sys = getbitu(rtcm->buff,i, 1); i += 1;
|
sys = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
prn = getbitu(rtcm->buff,i, 5); i += 5+8;
|
prn = getbitu(rtcm->buff, i, 5); i += 5+8;
|
||||||
pr = getbitu(rtcm->buff,i,32); i += 32;
|
pr = getbitu(rtcm->buff, i, 32); i += 32;
|
||||||
if (prn == 0) prn = 32;
|
if (prn == 0) prn = 32;
|
||||||
if (!(sat = satno(sys?SYS_GLO:SYS_GPS,prn)))
|
if (!(sat = satno(sys?SYS_GLO:SYS_GPS, prn)))
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 19 satellite number error: sys=%d prn=%d\n",sys,prn);
|
trace(2, "rtcm2 19 satellite number error: sys=%d prn=%d\n", sys, prn);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
time = timeadd(rtcm->time,usec*1E-6);
|
time = timeadd(rtcm->time, usec*1E-6);
|
||||||
if (sys) time = utc2gpst(time); /* convert glonass time to gpst */
|
if (sys) time = utc2gpst(time); /* convert glonass time to gpst */
|
||||||
|
|
||||||
tt = timediff(rtcm->obs.data[0].time,time);
|
tt = timediff(rtcm->obs.data[0].time, time);
|
||||||
if (rtcm->obsflag||fabs(tt)>1E-9)
|
if (rtcm->obsflag||fabs(tt)>1E-9)
|
||||||
{
|
{
|
||||||
rtcm->obs.n = rtcm->obsflag = 0;
|
rtcm->obs.n = rtcm->obsflag = 0;
|
||||||
}
|
}
|
||||||
if ((index = obsindex(&rtcm->obs,time,sat))>=0)
|
if ((index = obsindex(&rtcm->obs, time, sat)) >= 0)
|
||||||
{
|
{
|
||||||
rtcm->obs.data[index].P[freq] = pr*0.02;
|
rtcm->obs.data[index].P[freq] = pr*0.02;
|
||||||
rtcm->obs.data[index].code[freq] =
|
rtcm->obs.data[index].code[freq] =
|
||||||
@ -387,36 +387,36 @@ int decode_type19(rtcm_t *rtcm)
|
|||||||
/* decode type 22: extended reference station parameter ----------------------*/
|
/* decode type 22: extended reference station parameter ----------------------*/
|
||||||
int decode_type22(rtcm_t *rtcm)
|
int decode_type22(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
double del[2][3] = {{0}},hgt = 0.0;
|
double del[2][3] = {{0}}, hgt = 0.0;
|
||||||
int i = 48,j,noh;
|
int i = 48, j, noh;
|
||||||
|
|
||||||
trace(4,"decode_type22: len=%d\n",rtcm->len);
|
trace(4, "decode_type22: len=%d\n", rtcm->len);
|
||||||
|
|
||||||
if (i+24<=rtcm->len*8)
|
if (i+24 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
del[0][0] = getbits(rtcm->buff,i,8)/25600.0; i += 8;
|
del[0][0] = getbits(rtcm->buff, i, 8)/25600.0; i += 8;
|
||||||
del[0][1] = getbits(rtcm->buff,i,8)/25600.0; i += 8;
|
del[0][1] = getbits(rtcm->buff, i, 8)/25600.0; i += 8;
|
||||||
del[0][2] = getbits(rtcm->buff,i,8)/25600.0; i += 8;
|
del[0][2] = getbits(rtcm->buff, i, 8)/25600.0; i += 8;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 22 length error: len=%d\n",rtcm->len);
|
trace(2, "rtcm2 22 length error: len=%d\n", rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (i+24<=rtcm->len*8)
|
if (i+24 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
i += 5; noh = getbits(rtcm->buff,i,1); i += 1;
|
i += 5; noh = getbits(rtcm->buff, i, 1); i += 1;
|
||||||
hgt = noh?0.0:getbitu(rtcm->buff,i,18)/25600.0;
|
hgt = noh?0.0:getbitu(rtcm->buff, i, 18)/25600.0;
|
||||||
i += 18;
|
i += 18;
|
||||||
}
|
}
|
||||||
if (i+24<=rtcm->len*8)
|
if (i+24 <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
del[1][0] = getbits(rtcm->buff,i,8)/1600.0; i += 8;
|
del[1][0] = getbits(rtcm->buff, i, 8)/1600.0; i += 8;
|
||||||
del[1][1] = getbits(rtcm->buff,i,8)/1600.0; i += 8;
|
del[1][1] = getbits(rtcm->buff, i, 8)/1600.0; i += 8;
|
||||||
del[1][2] = getbits(rtcm->buff,i,8)/1600.0;
|
del[1][2] = getbits(rtcm->buff, i, 8)/1600.0;
|
||||||
}
|
}
|
||||||
rtcm->sta.deltype = 1; /* xyz */
|
rtcm->sta.deltype = 1; /* xyz */
|
||||||
for (j = 0;j<3;j++) rtcm->sta.del[j] = del[0][j];
|
for (j = 0; j<3; j++) rtcm->sta.del[j] = del[0][j];
|
||||||
rtcm->sta.hgt = hgt;
|
rtcm->sta.hgt = hgt;
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
@ -482,42 +482,42 @@ int decode_type59(rtcm_t *rtcm)
|
|||||||
int decode_rtcm2(rtcm_t *rtcm)
|
int decode_rtcm2(rtcm_t *rtcm)
|
||||||
{
|
{
|
||||||
double zcnt;
|
double zcnt;
|
||||||
int staid,seqno,stah,ret = 0,type = getbitu(rtcm->buff,8,6);
|
int staid, seqno, stah, ret = 0, type = getbitu(rtcm->buff, 8, 6);
|
||||||
|
|
||||||
trace(3,"decode_rtcm2: type=%2d len=%3d\n",type,rtcm->len);
|
trace(3, "decode_rtcm2: type=%2d len=%3d\n", type, rtcm->len);
|
||||||
|
|
||||||
if ((zcnt = getbitu(rtcm->buff,24,13)*0.6)>=3600.0)
|
if ((zcnt = getbitu(rtcm->buff, 24, 13)*0.6) >= 3600.0)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 modified z-count error: zcnt=%.1f\n",zcnt);
|
trace(2, "rtcm2 modified z-count error: zcnt=%.1f\n", zcnt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
adjhour(rtcm,zcnt);
|
adjhour(rtcm, zcnt);
|
||||||
staid = getbitu(rtcm->buff,14,10);
|
staid = getbitu(rtcm->buff, 14, 10);
|
||||||
seqno = getbitu(rtcm->buff,37, 3);
|
seqno = getbitu(rtcm->buff, 37, 3);
|
||||||
stah = getbitu(rtcm->buff,45, 3);
|
stah = getbitu(rtcm->buff, 45, 3);
|
||||||
if (seqno-rtcm->seqno!=1&&seqno-rtcm->seqno!=-7)
|
if (seqno-rtcm->seqno != 1 && seqno-rtcm->seqno != -7)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 message outage: seqno=%d->%d\n",rtcm->seqno,seqno);
|
trace(2, "rtcm2 message outage: seqno=%d->%d\n", rtcm->seqno, seqno);
|
||||||
}
|
}
|
||||||
rtcm->seqno = seqno;
|
rtcm->seqno = seqno;
|
||||||
rtcm->stah = stah;
|
rtcm->stah = stah;
|
||||||
|
|
||||||
if (rtcm->outtype)
|
if (rtcm->outtype)
|
||||||
{
|
{
|
||||||
sprintf(rtcm->msgtype,"RTCM %2d (%4d) zcnt=%7.1f staid=%3d seqno=%d",
|
sprintf(rtcm->msgtype, "RTCM %2d (%4d) zcnt=%7.1f staid=%3d seqno=%d",
|
||||||
type,rtcm->len,zcnt,staid,seqno);
|
type, rtcm->len, zcnt, staid, seqno);
|
||||||
}
|
}
|
||||||
if (type == 3||type == 22||type == 23||type == 24)
|
if (type == 3||type == 22||type == 23||type == 24)
|
||||||
{
|
{
|
||||||
if (rtcm->staid!=0&&staid!=rtcm->staid)
|
if (rtcm->staid != 0 && staid != rtcm->staid)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 station id changed: %d->%d\n",rtcm->staid,staid);
|
trace(2, "rtcm2 station id changed: %d->%d\n", rtcm->staid, staid);
|
||||||
}
|
}
|
||||||
rtcm->staid = staid;
|
rtcm->staid = staid;
|
||||||
}
|
}
|
||||||
if (rtcm->staid!=0&&staid!=rtcm->staid)
|
if (rtcm->staid != 0 && staid != rtcm->staid)
|
||||||
{
|
{
|
||||||
trace(2,"rtcm2 station id invalid: %d %d\n",staid,rtcm->staid);
|
trace(2, "rtcm2 station id invalid: %d %d\n", staid, rtcm->staid);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
switch (type)
|
switch (type)
|
||||||
@ -540,9 +540,9 @@ int decode_rtcm2(rtcm_t *rtcm)
|
|||||||
case 37: ret = decode_type37(rtcm); break; /* not supported */
|
case 37: ret = decode_type37(rtcm); break; /* not supported */
|
||||||
case 59: ret = decode_type59(rtcm); break; /* not supported */
|
case 59: ret = decode_type59(rtcm); break; /* not supported */
|
||||||
}
|
}
|
||||||
if (ret>=0)
|
if (ret >= 0)
|
||||||
{
|
{
|
||||||
if (1<=type&&type<=99) rtcm->nmsg2[type]++; else rtcm->nmsg2[0]++;
|
if (1 <= type && type <= 99) rtcm->nmsg2[type]++; else rtcm->nmsg2[0]++;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ int lossoflock(rtcm_t *rtcm, int sat, int freq, int lock)
|
|||||||
/* s/n ratio -----------------------------------------------------------------*/
|
/* s/n ratio -----------------------------------------------------------------*/
|
||||||
unsigned char snratio(double snr)
|
unsigned char snratio(double snr)
|
||||||
{
|
{
|
||||||
return (unsigned char)(snr <= 0.0 || 255.5 <= snr?0.0:snr*4.0+0.5);
|
return (unsigned char)(snr <= 0.0 || 255.5 <= snr ? 0.0:snr*4.0+0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ int obsindex(obs_t *obs, gtime_t time, int sat)
|
|||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0;i < obs->n;i++)
|
for (i = 0; i < obs->n; i++)
|
||||||
{
|
{
|
||||||
if (obs->data[i].sat == sat) return i; /* field already exists */
|
if (obs->data[i].sat == sat) return i; /* field already exists */
|
||||||
}
|
}
|
||||||
@ -150,7 +150,7 @@ int obsindex(obs_t *obs, gtime_t time, int sat)
|
|||||||
/* add new field */
|
/* add new field */
|
||||||
obs->data[i].time = time;
|
obs->data[i].time = time;
|
||||||
obs->data[i].sat = sat;
|
obs->data[i].sat = sat;
|
||||||
for (j = 0;j < NFREQ+NEXOBS;j++)
|
for (j = 0; j < NFREQ+NEXOBS; j++)
|
||||||
{
|
{
|
||||||
obs->data[i].L[j] = obs->data[i].P[j] = 0.0;
|
obs->data[i].L[j] = obs->data[i].P[j] = 0.0;
|
||||||
obs->data[i].D[j] = 0.0;
|
obs->data[i].D[j] = 0.0;
|
||||||
@ -235,7 +235,7 @@ int decode_type1001(rtcm_t *rtcm)
|
|||||||
int sync;
|
int sync;
|
||||||
if (decode_head1001(rtcm, &sync) < 0) return -1;
|
if (decode_head1001(rtcm, &sync) < 0) return -1;
|
||||||
rtcm->obsflag=!sync;
|
rtcm->obsflag=!sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -247,7 +247,7 @@ int decode_type1002(rtcm_t *rtcm)
|
|||||||
|
|
||||||
if ((nsat = decode_head1001(rtcm, &sync)) < 0) return -1;
|
if ((nsat = decode_head1001(rtcm, &sync)) < 0) return -1;
|
||||||
|
|
||||||
for (j = 0;j < nsat && rtcm->obs.n < MAXOBS && i+74 <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && rtcm->obs.n < MAXOBS && i+74 <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
code = getbitu(rtcm->buff, i, 1); i += 1;
|
code = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
@ -284,9 +284,9 @@ int decode_type1002(rtcm_t *rtcm)
|
|||||||
}
|
}
|
||||||
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
||||||
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
||||||
rtcm->obs.data[index].code[0] = code?CODE_L1P:CODE_L1C;
|
rtcm->obs.data[index].code[0] = code ? CODE_L1P:CODE_L1C;
|
||||||
}
|
}
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ int decode_type1003(rtcm_t *rtcm)
|
|||||||
int sync;
|
int sync;
|
||||||
if (decode_head1001(rtcm, &sync) < 0) return -1;
|
if (decode_head1001(rtcm, &sync) < 0) return -1;
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ int decode_type1004(rtcm_t *rtcm)
|
|||||||
|
|
||||||
if ((nsat = decode_head1001(rtcm, &sync)) < 0) return -1;
|
if ((nsat = decode_head1001(rtcm, &sync)) < 0) return -1;
|
||||||
|
|
||||||
for (j = 0;j < nsat && rtcm->obs.n < MAXOBS && i+125 <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && rtcm->obs.n < MAXOBS && i+125 <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
code1 = getbitu(rtcm->buff, i, 1); i += 1;
|
code1 = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
@ -352,7 +352,7 @@ int decode_type1004(rtcm_t *rtcm)
|
|||||||
}
|
}
|
||||||
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
||||||
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
||||||
rtcm->obs.data[index].code[0] = code1?CODE_L1P:CODE_L1C;
|
rtcm->obs.data[index].code[0] = code1 ? CODE_L1P:CODE_L1C;
|
||||||
|
|
||||||
if (pr21 != (int)0xFFFFE000)
|
if (pr21 != (int)0xFFFFE000)
|
||||||
{
|
{
|
||||||
@ -368,7 +368,7 @@ int decode_type1004(rtcm_t *rtcm)
|
|||||||
rtcm->obs.data[index].code[1] = L2codes[code2];
|
rtcm->obs.data[index].code[1] = L2codes[code2];
|
||||||
}
|
}
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -402,7 +402,7 @@ int decode_type1005(rtcm_t *rtcm)
|
|||||||
if (rtcm->outtype)
|
if (rtcm->outtype)
|
||||||
{
|
{
|
||||||
msg = rtcm->msgtype+strlen(rtcm->msgtype);
|
msg = rtcm->msgtype+strlen(rtcm->msgtype);
|
||||||
for (j = 0;j < 3;j++) re[j] = rr[j]*0.0001;
|
for (j = 0; j < 3; j++) re[j] = rr[j]*0.0001;
|
||||||
ecef2pos(re, pos);
|
ecef2pos(re, pos);
|
||||||
sprintf(msg, " staid=%4d pos=%.8f %.8f %.3f", staid, pos[0]*R2D, pos[1]*R2D,
|
sprintf(msg, " staid=%4d pos=%.8f %.8f %.3f", staid, pos[0]*R2D, pos[1]*R2D,
|
||||||
pos[2]);
|
pos[2]);
|
||||||
@ -411,7 +411,7 @@ int decode_type1005(rtcm_t *rtcm)
|
|||||||
if (!test_staid(rtcm, staid)) return -1;
|
if (!test_staid(rtcm, staid)) return -1;
|
||||||
|
|
||||||
rtcm->sta.deltype = 0; /* xyz */
|
rtcm->sta.deltype = 0; /* xyz */
|
||||||
for (j = 0;j < 3;j++)
|
for (j = 0; j < 3; j++)
|
||||||
{
|
{
|
||||||
rtcm->sta.pos[j] = rr[j]*0.0001;
|
rtcm->sta.pos[j] = rr[j]*0.0001;
|
||||||
rtcm->sta.del[j] = 0.0;
|
rtcm->sta.del[j] = 0.0;
|
||||||
@ -446,7 +446,7 @@ int decode_type1006(rtcm_t *rtcm)
|
|||||||
if (rtcm->outtype)
|
if (rtcm->outtype)
|
||||||
{
|
{
|
||||||
msg = rtcm->msgtype+strlen(rtcm->msgtype);
|
msg = rtcm->msgtype+strlen(rtcm->msgtype);
|
||||||
for (j = 0;j < 3;j++) re[j] = rr[j]*0.0001;
|
for (j = 0; j < 3; j++) re[j] = rr[j]*0.0001;
|
||||||
ecef2pos(re, pos);
|
ecef2pos(re, pos);
|
||||||
sprintf(msg, " staid=%4d pos=%.8f %.8f %.3f anth=%.3f", staid, pos[0]*R2D,
|
sprintf(msg, " staid=%4d pos=%.8f %.8f %.3f anth=%.3f", staid, pos[0]*R2D,
|
||||||
pos[1]*R2D, pos[2], anth);
|
pos[1]*R2D, pos[2], anth);
|
||||||
@ -455,7 +455,7 @@ int decode_type1006(rtcm_t *rtcm)
|
|||||||
if (!test_staid(rtcm, staid)) return -1;
|
if (!test_staid(rtcm, staid)) return -1;
|
||||||
|
|
||||||
rtcm->sta.deltype = 1; /* xyz */
|
rtcm->sta.deltype = 1; /* xyz */
|
||||||
for (j = 0;j < 3;j++)
|
for (j = 0; j < 3; j++)
|
||||||
{
|
{
|
||||||
rtcm->sta.pos[j] = rr[j]*0.0001;
|
rtcm->sta.pos[j] = rr[j]*0.0001;
|
||||||
rtcm->sta.del[j] = 0.0;
|
rtcm->sta.del[j] = 0.0;
|
||||||
@ -478,7 +478,7 @@ int decode_type1007(rtcm_t *rtcm)
|
|||||||
if (i+28+8*n <= rtcm->len*8)
|
if (i+28+8*n <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
staid = getbitu(rtcm->buff, i, 12); i += 12+8;
|
staid = getbitu(rtcm->buff, i, 12); i += 12+8;
|
||||||
for (j = 0;j < n && j < 31;j++)
|
for (j = 0; j < n && j < 31; j++)
|
||||||
{
|
{
|
||||||
des[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
des[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
@ -517,12 +517,12 @@ int decode_type1008(rtcm_t *rtcm)
|
|||||||
if (i+36+8*(n+m) <= rtcm->len*8)
|
if (i+36+8*(n+m) <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
staid = getbitu(rtcm->buff, i, 12); i += 12+8;
|
staid = getbitu(rtcm->buff, i, 12); i += 12+8;
|
||||||
for (j = 0;j < n && j < 31;j++)
|
for (j = 0; j < n && j < 31; j++)
|
||||||
{
|
{
|
||||||
des[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
des[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
setup = getbitu(rtcm->buff, i, 8); i += 8+8;
|
setup = getbitu(rtcm->buff, i, 8); i += 8+8;
|
||||||
for (j = 0;j < m && j < 31;j++)
|
for (j = 0; j < m && j < 31; j++)
|
||||||
{
|
{
|
||||||
sno[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
sno[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
@ -592,7 +592,7 @@ int decode_type1009(rtcm_t *rtcm)
|
|||||||
int sync;
|
int sync;
|
||||||
if (decode_head1009(rtcm, &sync) < 0) return -1;
|
if (decode_head1009(rtcm, &sync) < 0) return -1;
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -604,7 +604,7 @@ int decode_type1010(rtcm_t *rtcm)
|
|||||||
|
|
||||||
if ((nsat = decode_head1009(rtcm, &sync)) < 0) return -1;
|
if ((nsat = decode_head1009(rtcm, &sync)) < 0) return -1;
|
||||||
|
|
||||||
for (j = 0;j < nsat && rtcm->obs.n < MAXOBS && i+79 <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && rtcm->obs.n < MAXOBS && i+79 <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
code = getbitu(rtcm->buff, i, 1); i += 1;
|
code = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
@ -635,9 +635,9 @@ int decode_type1010(rtcm_t *rtcm)
|
|||||||
}
|
}
|
||||||
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
||||||
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
||||||
rtcm->obs.data[index].code[0] = code?CODE_L1P:CODE_L1C;
|
rtcm->obs.data[index].code[0] = code ? CODE_L1P:CODE_L1C;
|
||||||
}
|
}
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -647,7 +647,7 @@ int decode_type1011(rtcm_t *rtcm)
|
|||||||
int sync;
|
int sync;
|
||||||
if (decode_head1009(rtcm, &sync) < 0) return -1;
|
if (decode_head1009(rtcm, &sync) < 0) return -1;
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -660,7 +660,7 @@ int decode_type1012(rtcm_t *rtcm)
|
|||||||
|
|
||||||
if ((nsat = decode_head1009(rtcm, &sync)) < 0) return -1;
|
if ((nsat = decode_head1009(rtcm, &sync)) < 0) return -1;
|
||||||
|
|
||||||
for (j = 0;j < nsat && rtcm->obs.n < MAXOBS && i+130 <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && rtcm->obs.n < MAXOBS && i+130 <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
prn = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
code1 = getbitu(rtcm->buff, i, 1); i += 1;
|
code1 = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
@ -696,7 +696,7 @@ int decode_type1012(rtcm_t *rtcm)
|
|||||||
}
|
}
|
||||||
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
rtcm->obs.data[index].LLI[0] = lossoflock(rtcm, sat, 0, lock1);
|
||||||
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
rtcm->obs.data[index].SNR[0] = snratio(cnr1*0.25);
|
||||||
rtcm->obs.data[index].code[0] = code1?CODE_L1P:CODE_L1C;
|
rtcm->obs.data[index].code[0] = code1 ? CODE_L1P:CODE_L1C;
|
||||||
|
|
||||||
if (pr21 != (int)0xFFFFE000)
|
if (pr21 != (int)0xFFFFE000)
|
||||||
{
|
{
|
||||||
@ -710,10 +710,10 @@ int decode_type1012(rtcm_t *rtcm)
|
|||||||
}
|
}
|
||||||
rtcm->obs.data[index].LLI[1] = lossoflock(rtcm, sat, 1, lock2);
|
rtcm->obs.data[index].LLI[1] = lossoflock(rtcm, sat, 1, lock2);
|
||||||
rtcm->obs.data[index].SNR[1] = snratio(cnr2*0.25);
|
rtcm->obs.data[index].SNR[1] = snratio(cnr2*0.25);
|
||||||
rtcm->obs.data[index].code[1] = code2?CODE_L2P:CODE_L2C;
|
rtcm->obs.data[index].code[1] = code2 ? CODE_L2P:CODE_L2C;
|
||||||
}
|
}
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -763,7 +763,7 @@ int decode_type1019(rtcm_t *rtcm)
|
|||||||
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
||||||
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
eph.flag = getbitu(rtcm->buff, i, 1); i += 1;
|
eph.flag = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
eph.fit = getbitu(rtcm->buff, i, 1)?0.0:4.0; /* 0:4hr, 1:>4hr */
|
eph.fit = getbitu(rtcm->buff, i, 1) ? 0.0:4.0; /* 0:4hr, 1:>4hr */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -956,7 +956,7 @@ int decode_type1029(rtcm_t *rtcm)
|
|||||||
trace(2, "rtcm3 1029 length error: len=%d nchar=%d\n", rtcm->len, nchar);
|
trace(2, "rtcm3 1029 length error: len=%d nchar=%d\n", rtcm->len, nchar);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nchar && j < 126;j++)
|
for (j = 0; j < nchar && j < 126; j++)
|
||||||
{
|
{
|
||||||
rtcm->msg[j] = getbitu(rtcm->buff, i, 8); i += 8;
|
rtcm->msg[j] = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
@ -1011,27 +1011,27 @@ int decode_type1033(rtcm_t *rtcm)
|
|||||||
if (i+60+8*(n+m+n1+n2+n3) <= rtcm->len*8)
|
if (i+60+8*(n+m+n1+n2+n3) <= rtcm->len*8)
|
||||||
{
|
{
|
||||||
staid = getbitu(rtcm->buff, i, 12); i += 12+8;
|
staid = getbitu(rtcm->buff, i, 12); i += 12+8;
|
||||||
for (j = 0;j < n && j < 31;j++)
|
for (j = 0; j < n && j < 31; j++)
|
||||||
{
|
{
|
||||||
des[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
des[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
setup = getbitu(rtcm->buff, i, 8); i += 8+8;
|
setup = getbitu(rtcm->buff, i, 8); i += 8+8;
|
||||||
for (j = 0;j < m && j < 31;j++)
|
for (j = 0; j < m && j < 31; j++)
|
||||||
{
|
{
|
||||||
sno[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
sno[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
i += 8;
|
i += 8;
|
||||||
for (j = 0;j < n1 && j < 31;j++)
|
for (j = 0; j < n1 && j < 31; j++)
|
||||||
{
|
{
|
||||||
rec[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
rec[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
i += 8;
|
i += 8;
|
||||||
for (j = 0;j < n2 && j < 31;j++)
|
for (j = 0; j < n2 && j < 31; j++)
|
||||||
{
|
{
|
||||||
ver[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
ver[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
i += 8;
|
i += 8;
|
||||||
for (j = 0;j < n3 && j < 31;j++)
|
for (j = 0; j < n3 && j < 31; j++)
|
||||||
{
|
{
|
||||||
rsn[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
rsn[j] = (char)getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
}
|
}
|
||||||
@ -1139,7 +1139,7 @@ int decode_type1044(rtcm_t *rtcm)
|
|||||||
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
||||||
eph.iodc = getbitu(rtcm->buff, i, 10); i += 10;
|
eph.iodc = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
eph.fit = getbitu(rtcm->buff, i, 1)?0.0:2.0; /* 0:2hr, 1:>2hr */
|
eph.fit = getbitu(rtcm->buff, i, 1) ? 0.0:2.0; /* 0:2hr, 1:>2hr */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1365,7 +1365,7 @@ int decode_type1047(rtcm_t *rtcm)
|
|||||||
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
eph.tgd[0] = getbits(rtcm->buff, i, 8)*TWO_N31; i += 8;
|
||||||
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
eph.svh = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
eph.flag = getbitu(rtcm->buff, i, 1); i += 1;
|
eph.flag = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
eph.fit = getbitu(rtcm->buff, i, 1)?0.0:4.0; /* 0:4hr, 1:>4hr */
|
eph.fit = getbitu(rtcm->buff, i, 1) ? 0.0:4.0; /* 0:4hr, 1:>4hr */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1488,9 +1488,9 @@ int decode_ssr1_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
|||||||
int i = 24+12, nsat, udi, provid = 0, solid = 0, ns = 6;
|
int i = 24+12, nsat, udi, provid = 0, solid = 0, ns = 6;
|
||||||
|
|
||||||
#ifndef SSR_QZSS_DRAFT_V05
|
#ifndef SSR_QZSS_DRAFT_V05
|
||||||
ns = sys == SYS_QZS?4:6;
|
ns = sys == SYS_QZS ? 4:6;
|
||||||
#endif
|
#endif
|
||||||
if (i+(sys == SYS_GLO?53:50+ns)>rtcm->len*8) return -1;
|
if (i+(sys == SYS_GLO ? 53:50+ns)>rtcm->len*8) return -1;
|
||||||
|
|
||||||
if (sys == SYS_GLO)
|
if (sys == SYS_GLO)
|
||||||
{
|
{
|
||||||
@ -1534,9 +1534,9 @@ int decode_ssr2_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
|||||||
int i = 24+12, nsat, udi, provid = 0, solid = 0, ns = 6;
|
int i = 24+12, nsat, udi, provid = 0, solid = 0, ns = 6;
|
||||||
|
|
||||||
#ifndef SSR_QZSS_DRAFT_V05
|
#ifndef SSR_QZSS_DRAFT_V05
|
||||||
ns = sys == SYS_QZS?4:6;
|
ns = sys == SYS_QZS ? 4:6;
|
||||||
#endif
|
#endif
|
||||||
if (i+(sys == SYS_GLO?52:49+ns)>rtcm->len*8) return -1;
|
if (i+(sys == SYS_GLO ? 52:49+ns)>rtcm->len*8) return -1;
|
||||||
|
|
||||||
if (sys == SYS_GLO)
|
if (sys == SYS_GLO)
|
||||||
{
|
{
|
||||||
@ -1579,9 +1579,9 @@ int decode_ssr7_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
|||||||
int i = 24+12, nsat, udi, provid = 0, solid = 0, ns = 6;
|
int i = 24+12, nsat, udi, provid = 0, solid = 0, ns = 6;
|
||||||
|
|
||||||
#ifndef SSR_QZSS_DRAFT_V05
|
#ifndef SSR_QZSS_DRAFT_V05
|
||||||
ns = sys == SYS_QZS?4:6;
|
ns = sys == SYS_QZS ? 4:6;
|
||||||
#endif
|
#endif
|
||||||
if (i+(sys == SYS_GLO?54:51+ns)>rtcm->len*8) return -1;
|
if (i+(sys == SYS_GLO ? 54:51+ns)>rtcm->len*8) return -1;
|
||||||
|
|
||||||
if (sys == SYS_GLO)
|
if (sys == SYS_GLO)
|
||||||
{
|
{
|
||||||
@ -1640,9 +1640,9 @@ int decode_ssr1(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_QZS: np = 4; ni = 8; nj = 0; offp = 192; break;
|
case SYS_QZS: np = 4; ni = 8; nj = 0; offp = 192; break;
|
||||||
case SYS_BDS: np = 6; ni = 10; nj = 24; offp = 1; break;
|
case SYS_BDS: np = 6; ni = 10; nj = 24; offp = 1; break;
|
||||||
case SYS_SBS: np = 6; ni = 9; nj = 24; offp = 120; break;
|
case SYS_SBS: np = 6; ni = 9; nj = 24; offp = 120; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+121+np+ni+nj <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+121+np+ni+nj <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
iode = getbitu(rtcm->buff, i, ni); i += ni;
|
iode = getbitu(rtcm->buff, i, ni); i += ni;
|
||||||
@ -1673,7 +1673,7 @@ int decode_ssr1(rtcm_t *rtcm, int sys)
|
|||||||
}
|
}
|
||||||
rtcm->ssr[sat-1].update = 1;
|
rtcm->ssr[sat-1].update = 1;
|
||||||
}
|
}
|
||||||
return sync?0:10;
|
return sync ? 0:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1698,9 +1698,9 @@ int decode_ssr2(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_QZS: np = 4; offp = 192; break;
|
case SYS_QZS: np = 4; offp = 192; break;
|
||||||
case SYS_BDS: np = 6; offp = 1; break;
|
case SYS_BDS: np = 6; offp = 1; break;
|
||||||
case SYS_SBS: np = 6; offp = 120; break;
|
case SYS_SBS: np = 6; offp = 120; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+70+np <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+70+np <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
dclk[0] = getbits(rtcm->buff, i, 22)*1E-4; i += 22;
|
dclk[0] = getbits(rtcm->buff, i, 22)*1E-4; i += 22;
|
||||||
@ -1722,7 +1722,7 @@ int decode_ssr2(rtcm_t *rtcm, int sys)
|
|||||||
}
|
}
|
||||||
rtcm->ssr[sat-1].update = 1;
|
rtcm->ssr[sat-1].update = 1;
|
||||||
}
|
}
|
||||||
return sync?0:10;
|
return sync ? 0:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1748,9 +1748,9 @@ int decode_ssr3(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_QZS: np = 4; offp = 192; codes = codes_qzs; ncode = 13; break;
|
case SYS_QZS: np = 4; offp = 192; codes = codes_qzs; ncode = 13; break;
|
||||||
case SYS_BDS: np = 6; offp = 1; codes = codes_bds; ncode = 9; break;
|
case SYS_BDS: np = 6; offp = 1; codes = codes_bds; ncode = 9; break;
|
||||||
case SYS_SBS: np = 6; offp = 120; codes = codes_sbs; ncode = 4; break;
|
case SYS_SBS: np = 6; offp = 120; codes = codes_sbs; ncode = 4; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+5+np <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+5+np <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
nbias = getbitu(rtcm->buff, i, 5); i += 5;
|
nbias = getbitu(rtcm->buff, i, 5); i += 5;
|
||||||
@ -1784,7 +1784,7 @@ int decode_ssr3(rtcm_t *rtcm, int sys)
|
|||||||
}
|
}
|
||||||
rtcm->ssr[sat-1].update = 1;
|
rtcm->ssr[sat-1].update = 1;
|
||||||
}
|
}
|
||||||
return sync?0:10;
|
return sync ? 0:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1809,9 +1809,9 @@ int decode_ssr4(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_QZS: np = 4; ni = 8; nj = 0; offp = 192; break;
|
case SYS_QZS: np = 4; ni = 8; nj = 0; offp = 192; break;
|
||||||
case SYS_BDS: np = 6; ni = 10; nj = 24; offp = 1; break;
|
case SYS_BDS: np = 6; ni = 10; nj = 24; offp = 1; break;
|
||||||
case SYS_SBS: np = 6; ni = 9; nj = 24; offp = 120; break;
|
case SYS_SBS: np = 6; ni = 9; nj = 24; offp = 120; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+191+np+ni+nj <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+191+np+ni+nj <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
iode = getbitu(rtcm->buff, i, ni); i += ni;
|
iode = getbitu(rtcm->buff, i, ni); i += ni;
|
||||||
@ -1847,7 +1847,7 @@ int decode_ssr4(rtcm_t *rtcm, int sys)
|
|||||||
}
|
}
|
||||||
rtcm->ssr[sat-1].update = 1;
|
rtcm->ssr[sat-1].update = 1;
|
||||||
}
|
}
|
||||||
return sync?0:10;
|
return sync ? 0:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1872,9 +1872,9 @@ int decode_ssr5(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_QZS: np = 4; offp = 192; break;
|
case SYS_QZS: np = 4; offp = 192; break;
|
||||||
case SYS_BDS: np = 6; offp = 1; break;
|
case SYS_BDS: np = 6; offp = 1; break;
|
||||||
case SYS_SBS: np = 6; offp = 120; break;
|
case SYS_SBS: np = 6; offp = 120; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+6+np <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+6+np <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
ura = getbitu(rtcm->buff, i, 6); i += 6;
|
ura = getbitu(rtcm->buff, i, 6); i += 6;
|
||||||
@ -1890,7 +1890,7 @@ int decode_ssr5(rtcm_t *rtcm, int sys)
|
|||||||
rtcm->ssr[sat-1].ura = ura;
|
rtcm->ssr[sat-1].ura = ura;
|
||||||
rtcm->ssr[sat-1].update = 1;
|
rtcm->ssr[sat-1].update = 1;
|
||||||
}
|
}
|
||||||
return sync?0:10;
|
return sync ? 0:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1915,9 +1915,9 @@ int decode_ssr6(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_QZS: np = 4; offp = 192; break;
|
case SYS_QZS: np = 4; offp = 192; break;
|
||||||
case SYS_BDS: np = 6; offp = 1; break;
|
case SYS_BDS: np = 6; offp = 1; break;
|
||||||
case SYS_SBS: np = 6; offp = 120; break;
|
case SYS_SBS: np = 6; offp = 120; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+22+np <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+22+np <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
hrclk = getbits(rtcm->buff, i, 22)*1E-4; i += 22;
|
hrclk = getbits(rtcm->buff, i, 22)*1E-4; i += 22;
|
||||||
@ -1933,7 +1933,7 @@ int decode_ssr6(rtcm_t *rtcm, int sys)
|
|||||||
rtcm->ssr[sat-1].hrclk = hrclk;
|
rtcm->ssr[sat-1].hrclk = hrclk;
|
||||||
rtcm->ssr[sat-1].update = 1;
|
rtcm->ssr[sat-1].update = 1;
|
||||||
}
|
}
|
||||||
return sync?0:10;
|
return sync ? 0:10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1959,9 +1959,9 @@ int decode_ssr7(rtcm_t *rtcm, int sys)
|
|||||||
case SYS_GAL: np = 6; offp = 0; codes = codes_gal; ncode = 19; break;
|
case SYS_GAL: np = 6; offp = 0; codes = codes_gal; ncode = 19; break;
|
||||||
case SYS_QZS: np = 4; offp = 192; codes = codes_qzs; ncode = 13; break;
|
case SYS_QZS: np = 4; offp = 192; codes = codes_qzs; ncode = 13; break;
|
||||||
case SYS_BDS: np = 6; offp = 1; codes = codes_bds; ncode = 9; break;
|
case SYS_BDS: np = 6; offp = 1; codes = codes_bds; ncode = 9; break;
|
||||||
default: return sync?0:10;
|
default: return sync ? 0:10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < nsat && i+5+17+np <= rtcm->len*8;j++)
|
for (j = 0; j < nsat && i+5+17+np <= rtcm->len*8; j++)
|
||||||
{
|
{
|
||||||
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
prn = getbitu(rtcm->buff, i, np)+offp; i += np;
|
||||||
nbias = getbitu(rtcm->buff, i, 5); i += 5;
|
nbias = getbitu(rtcm->buff, i, 5); i += 5;
|
||||||
@ -2015,7 +2015,7 @@ void sigindex(int sys, const unsigned char *code, const int *freq, int n,
|
|||||||
int i, nex, pri, pri_h[8] = {0}, index[8] = {0}, ex[32] = {0};
|
int i, nex, pri, pri_h[8] = {0}, index[8] = {0}, ex[32] = {0};
|
||||||
|
|
||||||
/* test code priority */
|
/* test code priority */
|
||||||
for (i = 0;i < n;i++)
|
for (i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
if (!code[i]) continue;
|
if (!code[i]) continue;
|
||||||
|
|
||||||
@ -2037,7 +2037,7 @@ void sigindex(int sys, const unsigned char *code, const int *freq, int n,
|
|||||||
else ex[i] = 1;
|
else ex[i] = 1;
|
||||||
}
|
}
|
||||||
/* signal index in obs data */
|
/* signal index in obs data */
|
||||||
for (i = nex = 0;i < n;i++)
|
for (i = nex = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
if (ex[i] == 0) ind[i] = freq[i]-1;
|
if (ex[i] == 0) ind[i] = freq[i]-1;
|
||||||
else if (nex < NEXOBS) ind[i] = NFREQ+nex++;
|
else if (nex < NEXOBS) ind[i] = NFREQ+nex++;
|
||||||
@ -2077,7 +2077,7 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
|||||||
case SYS_BDS: msm_type = q = rtcm->msmtype[5]; break;
|
case SYS_BDS: msm_type = q = rtcm->msmtype[5]; break;
|
||||||
}
|
}
|
||||||
/* id to signal */
|
/* id to signal */
|
||||||
for (i = 0;i < h->nsig;i++)
|
for (i = 0; i < h->nsig; i++)
|
||||||
{
|
{
|
||||||
switch (sys)
|
switch (sys)
|
||||||
{
|
{
|
||||||
@ -2100,11 +2100,11 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
|||||||
}
|
}
|
||||||
if (code[i] != CODE_NONE)
|
if (code[i] != CODE_NONE)
|
||||||
{
|
{
|
||||||
if (q) q += sprintf(q, "L%s%s", sig[i], i < h->nsig-1?", ":"");
|
if (q) q += sprintf(q, "L%s%s", sig[i], i < h->nsig-1 ? ", ":"");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (q) q += sprintf(q, "(%d)%s", h->sigs[i], i < h->nsig-1?", ":"");
|
if (q) q += sprintf(q, "(%d)%s", h->sigs[i], i < h->nsig-1 ? ", ":"");
|
||||||
|
|
||||||
trace(2, "rtcm3 %d: unknown signal id=%2d\n", type, h->sigs[i]);
|
trace(2, "rtcm3 %d: unknown signal id=%2d\n", type, h->sigs[i]);
|
||||||
}
|
}
|
||||||
@ -2114,7 +2114,7 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
|||||||
/* get signal index */
|
/* get signal index */
|
||||||
sigindex(sys, code, freq, h->nsig, rtcm->opt, ind);
|
sigindex(sys, code, freq, h->nsig, rtcm->opt, ind);
|
||||||
|
|
||||||
for (i = j = 0;i < h->nsat;i++)
|
for (i = j = 0; i < h->nsat; i++)
|
||||||
{
|
{
|
||||||
prn = h->sats[i];
|
prn = h->sats[i];
|
||||||
if (sys == SYS_QZS) prn += MINPRNQZS-1;
|
if (sys == SYS_QZS) prn += MINPRNQZS-1;
|
||||||
@ -2146,8 +2146,8 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
|||||||
if (sys == SYS_GLO && ex && ex[i] <= 13)
|
if (sys == SYS_GLO && ex && ex[i] <= 13)
|
||||||
{
|
{
|
||||||
fn = ex[i]-7;
|
fn = ex[i]-7;
|
||||||
wl = SPEED_OF_LIGHT/((freq[k] == 2?FREQ2_GLO:FREQ1_GLO)+
|
wl = SPEED_OF_LIGHT/((freq[k] == 2 ? FREQ2_GLO : FREQ1_GLO)+
|
||||||
(freq[k] == 2?DFRQ2_GLO:DFRQ1_GLO)*fn);
|
(freq[k] == 2 ? DFRQ2_GLO:DFRQ1_GLO)*fn);
|
||||||
}
|
}
|
||||||
/* pseudorange (m) */
|
/* pseudorange (m) */
|
||||||
if (r[i] != 0.0 && pr[j]>-1E12)
|
if (r[i] != 0.0 && pr[j]>-1E12)
|
||||||
@ -2165,7 +2165,7 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
|||||||
rtcm->obs.data[index].D[ind[k]] = (float)(-(rr[i]+rrf[j])/wl);
|
rtcm->obs.data[index].D[ind[k]] = (float)(-(rr[i]+rrf[j])/wl);
|
||||||
}
|
}
|
||||||
rtcm->obs.data[index].LLI[ind[k]] =
|
rtcm->obs.data[index].LLI[ind[k]] =
|
||||||
lossoflock(rtcm, sat, ind[k], lock[j])+(half[j]?3:0);
|
lossoflock(rtcm, sat, ind[k], lock[j])+(half[j] ? 3 : 0);
|
||||||
rtcm->obs.data[index].SNR [ind[k]] = (unsigned char)(cnr[j]*4.0);
|
rtcm->obs.data[index].SNR [ind[k]] = (unsigned char)(cnr[j]*4.0);
|
||||||
rtcm->obs.data[index].code[ind[k]] = code[k];
|
rtcm->obs.data[index].code[ind[k]] = code[k];
|
||||||
}
|
}
|
||||||
@ -2216,12 +2216,12 @@ int decode_msm_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
|||||||
h->clk_ext = getbitu(rtcm->buff, i, 2); i += 2;
|
h->clk_ext = getbitu(rtcm->buff, i, 2); i += 2;
|
||||||
h->smooth = getbitu(rtcm->buff, i, 1); i += 1;
|
h->smooth = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
h->tint_s = getbitu(rtcm->buff, i, 3); i += 3;
|
h->tint_s = getbitu(rtcm->buff, i, 3); i += 3;
|
||||||
for (j = 1;j <= 64;j++)
|
for (j = 1; j <= 64; j++)
|
||||||
{
|
{
|
||||||
mask = getbitu(rtcm->buff, i, 1); i += 1;
|
mask = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
if (mask) h->sats[h->nsat++] = j;
|
if (mask) h->sats[h->nsat++] = j;
|
||||||
}
|
}
|
||||||
for (j = 1;j <= 32;j++)
|
for (j = 1; j <= 32; j++)
|
||||||
{
|
{
|
||||||
mask = getbitu(rtcm->buff, i, 1); i += 1;
|
mask = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
if (mask) h->sigs[h->nsig++] = j;
|
if (mask) h->sigs[h->nsig++] = j;
|
||||||
@ -2247,7 +2247,7 @@ int decode_msm_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
|||||||
rtcm->len, h->nsat, h->nsig);
|
rtcm->len, h->nsat, h->nsig);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h->nsat*h->nsig;j++)
|
for (j = 0; j < h->nsat*h->nsig; j++)
|
||||||
{
|
{
|
||||||
h->cellmask[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
h->cellmask[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
if (h->cellmask[j]) ncell++;
|
if (h->cellmask[j]) ncell++;
|
||||||
@ -2274,7 +2274,7 @@ int decode_msm0(rtcm_t *rtcm, int sys)
|
|||||||
int i, sync, iod;
|
int i, sync, iod;
|
||||||
if (decode_msm_head(rtcm, sys, &sync, &iod, &h, &i) < 0) return -1;
|
if (decode_msm_head(rtcm, sys, &sync, &iod, &h, &i) < 0) return -1;
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2296,40 +2296,40 @@ int decode_msm4(rtcm_t *rtcm, int sys)
|
|||||||
ncell, rtcm->len);
|
ncell, rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++) r[j] = 0.0;
|
for (j = 0; j < h.nsat; j++) r[j] = 0.0;
|
||||||
for (j = 0;j < ncell;j++) pr[j] = cp[j] = -1E16;
|
for (j = 0; j < ncell; j++) pr[j] = cp[j] = -1E16;
|
||||||
|
|
||||||
/* decode satellite data */
|
/* decode satellite data */
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* range */
|
{ /* range */
|
||||||
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
if (rng != 255) r[j] = rng*RANGE_MS;
|
if (rng != 255) r[j] = rng*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{
|
{
|
||||||
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
if (r[j] != 0.0) r[j] += rng_m*P2_10*RANGE_MS;
|
if (r[j] != 0.0) r[j] += rng_m*TWO_N10*RANGE_MS;
|
||||||
}
|
}
|
||||||
/* decode signal data */
|
/* decode signal data */
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* pseudorange */
|
{ /* pseudorange */
|
||||||
prv = getbits(rtcm->buff, i, 15); i += 15;
|
prv = getbits(rtcm->buff, i, 15); i += 15;
|
||||||
if (prv != -16384) pr[j] = prv*TWO_N24*RANGE_MS;
|
if (prv != -16384) pr[j] = prv*TWO_N24*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* phaserange */
|
{ /* phaserange */
|
||||||
cpv = getbits(rtcm->buff, i, 22); i += 22;
|
cpv = getbits(rtcm->buff, i, 22); i += 22;
|
||||||
if (cpv != -2097152) cp[j] = cpv*TWO_N29*RANGE_MS;
|
if (cpv != -2097152) cp[j] = cpv*TWO_N29*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* lock time */
|
{ /* lock time */
|
||||||
lock[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
lock[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* half-cycle ambiguity */
|
{ /* half-cycle ambiguity */
|
||||||
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* cnr */
|
{ /* cnr */
|
||||||
cnr[j] = getbitu(rtcm->buff, i, 6)*1.0; i += 6;
|
cnr[j] = getbitu(rtcm->buff, i, 6)*1.0; i += 6;
|
||||||
}
|
}
|
||||||
@ -2337,7 +2337,7 @@ int decode_msm4(rtcm_t *rtcm, int sys)
|
|||||||
save_msm_obs(rtcm, sys, &h, r, pr, cp, NULL, NULL, cnr, lock, NULL, half);
|
save_msm_obs(rtcm, sys, &h, r, pr, cp, NULL, NULL, cnr, lock, NULL, half);
|
||||||
|
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2360,56 +2360,56 @@ int decode_msm5(rtcm_t *rtcm, int sys)
|
|||||||
ncell, rtcm->len);
|
ncell, rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{
|
{
|
||||||
r[j] = rr[j] = 0.0; ex[j] = 15;
|
r[j] = rr[j] = 0.0; ex[j] = 15;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++) pr[j] = cp[j] = rrf[j] = -1E16;
|
for (j = 0; j < ncell; j++) pr[j] = cp[j] = rrf[j] = -1E16;
|
||||||
|
|
||||||
/* decode satellite data */
|
/* decode satellite data */
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* range */
|
{ /* range */
|
||||||
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
if (rng != 255) r[j] = rng*RANGE_MS;
|
if (rng != 255) r[j] = rng*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* extended info */
|
{ /* extended info */
|
||||||
ex[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
ex[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{
|
{
|
||||||
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
if (r[j] != 0.0) r[j] += rng_m*P2_10*RANGE_MS;
|
if (r[j] != 0.0) r[j] += rng_m*TWO_N10*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* phaserangerate */
|
{ /* phaserangerate */
|
||||||
rate = getbits(rtcm->buff, i, 14); i += 14;
|
rate = getbits(rtcm->buff, i, 14); i += 14;
|
||||||
if (rate != -8192) rr[j] = rate*1.0;
|
if (rate != -8192) rr[j] = rate*1.0;
|
||||||
}
|
}
|
||||||
/* decode signal data */
|
/* decode signal data */
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* pseudorange */
|
{ /* pseudorange */
|
||||||
prv = getbits(rtcm->buff, i, 15); i += 15;
|
prv = getbits(rtcm->buff, i, 15); i += 15;
|
||||||
if (prv != -16384) pr[j] = prv*TWO_N24*RANGE_MS;
|
if (prv != -16384) pr[j] = prv*TWO_N24*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* phaserange */
|
{ /* phaserange */
|
||||||
cpv = getbits(rtcm->buff, i, 22); i += 22;
|
cpv = getbits(rtcm->buff, i, 22); i += 22;
|
||||||
if (cpv != -2097152) cp[j] = cpv*TWO_N29*RANGE_MS;
|
if (cpv != -2097152) cp[j] = cpv*TWO_N29*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* lock time */
|
{ /* lock time */
|
||||||
lock[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
lock[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* half-cycle ambiguity */
|
{ /* half-cycle ambiguity */
|
||||||
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* cnr */
|
{ /* cnr */
|
||||||
cnr[j] = getbitu(rtcm->buff, i, 6)*1.0; i += 6;
|
cnr[j] = getbitu(rtcm->buff, i, 6)*1.0; i += 6;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* phaserangerate */
|
{ /* phaserangerate */
|
||||||
rrv = getbits(rtcm->buff, i, 15); i += 15;
|
rrv = getbits(rtcm->buff, i, 15); i += 15;
|
||||||
if (rrv != -16384) rrf[j] = rrv*0.0001;
|
if (rrv != -16384) rrf[j] = rrv*0.0001;
|
||||||
@ -2418,7 +2418,7 @@ int decode_msm5(rtcm_t *rtcm, int sys)
|
|||||||
save_msm_obs(rtcm, sys, &h, r, pr, cp, rr, rrf, cnr, lock, ex, half);
|
save_msm_obs(rtcm, sys, &h, r, pr, cp, rr, rrf, cnr, lock, ex, half);
|
||||||
|
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2440,40 +2440,40 @@ int decode_msm6(rtcm_t *rtcm, int sys)
|
|||||||
ncell, rtcm->len);
|
ncell, rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++) r[j] = 0.0;
|
for (j = 0; j < h.nsat; j++) r[j] = 0.0;
|
||||||
for (j = 0;j < ncell;j++) pr[j] = cp[j] = -1E16;
|
for (j = 0; j < ncell; j++) pr[j] = cp[j] = -1E16;
|
||||||
|
|
||||||
/* decode satellite data */
|
/* decode satellite data */
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* range */
|
{ /* range */
|
||||||
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
if (rng != 255) r[j] = rng*RANGE_MS;
|
if (rng != 255) r[j] = rng*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{
|
{
|
||||||
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
if (r[j] != 0.0) r[j] += rng_m*P2_10*RANGE_MS;
|
if (r[j] != 0.0) r[j] += rng_m*TWO_N10*RANGE_MS;
|
||||||
}
|
}
|
||||||
/* decode signal data */
|
/* decode signal data */
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* pseudorange */
|
{ /* pseudorange */
|
||||||
prv = getbits(rtcm->buff, i, 20); i += 20;
|
prv = getbits(rtcm->buff, i, 20); i += 20;
|
||||||
if (prv != -524288) pr[j] = prv*TWO_N29*RANGE_MS;
|
if (prv != -524288) pr[j] = prv*TWO_N29*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* phaserange */
|
{ /* phaserange */
|
||||||
cpv = getbits(rtcm->buff, i, 24); i += 24;
|
cpv = getbits(rtcm->buff, i, 24); i += 24;
|
||||||
if (cpv != -8388608) cp[j] = cpv*TWO_N31*RANGE_MS;
|
if (cpv != -8388608) cp[j] = cpv*TWO_N31*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* lock time */
|
{ /* lock time */
|
||||||
lock[j] = getbitu(rtcm->buff, i, 10); i += 10;
|
lock[j] = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* half-cycle ambiguity */
|
{ /* half-cycle ambiguity */
|
||||||
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* cnr */
|
{ /* cnr */
|
||||||
cnr[j] = getbitu(rtcm->buff, i, 10)*0.0625; i += 10;
|
cnr[j] = getbitu(rtcm->buff, i, 10)*0.0625; i += 10;
|
||||||
}
|
}
|
||||||
@ -2481,7 +2481,7 @@ int decode_msm6(rtcm_t *rtcm, int sys)
|
|||||||
save_msm_obs(rtcm, sys, &h, r, pr, cp, NULL, NULL, cnr, lock, NULL, half);
|
save_msm_obs(rtcm, sys, &h, r, pr, cp, NULL, NULL, cnr, lock, NULL, half);
|
||||||
|
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2504,56 +2504,56 @@ int decode_msm7(rtcm_t *rtcm, int sys)
|
|||||||
ncell, rtcm->len);
|
ncell, rtcm->len);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{
|
{
|
||||||
r[j] = rr[j] = 0.0; ex[j] = 15;
|
r[j] = rr[j] = 0.0; ex[j] = 15;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++) pr[j] = cp[j] = rrf[j] = -1E16;
|
for (j = 0; j < ncell; j++) pr[j] = cp[j] = rrf[j] = -1E16;
|
||||||
|
|
||||||
/* decode satellite data */
|
/* decode satellite data */
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* range */
|
{ /* range */
|
||||||
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
rng = getbitu(rtcm->buff, i, 8); i += 8;
|
||||||
if (rng != 255) r[j] = rng*RANGE_MS;
|
if (rng != 255) r[j] = rng*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* extended info */
|
{ /* extended info */
|
||||||
ex[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
ex[j] = getbitu(rtcm->buff, i, 4); i += 4;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{
|
{
|
||||||
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
rng_m = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
if (r[j] != 0.0) r[j] += rng_m*P2_10*RANGE_MS;
|
if (r[j] != 0.0) r[j] += rng_m*TWO_N10*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < h.nsat;j++)
|
for (j = 0; j < h.nsat; j++)
|
||||||
{ /* phaserangerate */
|
{ /* phaserangerate */
|
||||||
rate = getbits(rtcm->buff, i, 14); i += 14;
|
rate = getbits(rtcm->buff, i, 14); i += 14;
|
||||||
if (rate != -8192) rr[j] = rate*1.0;
|
if (rate != -8192) rr[j] = rate*1.0;
|
||||||
}
|
}
|
||||||
/* decode signal data */
|
/* decode signal data */
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* pseudorange */
|
{ /* pseudorange */
|
||||||
prv = getbits(rtcm->buff, i, 20); i += 20;
|
prv = getbits(rtcm->buff, i, 20); i += 20;
|
||||||
if (prv != -524288) pr[j] = prv*TWO_N29*RANGE_MS;
|
if (prv != -524288) pr[j] = prv*TWO_N29*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* phaserange */
|
{ /* phaserange */
|
||||||
cpv = getbits(rtcm->buff, i, 24); i += 24;
|
cpv = getbits(rtcm->buff, i, 24); i += 24;
|
||||||
if (cpv != -8388608) cp[j] = cpv*TWO_N31*RANGE_MS;
|
if (cpv != -8388608) cp[j] = cpv*TWO_N31*RANGE_MS;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* lock time */
|
{ /* lock time */
|
||||||
lock[j] = getbitu(rtcm->buff, i, 10); i += 10;
|
lock[j] = getbitu(rtcm->buff, i, 10); i += 10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* half-cycle amiguity */
|
{ /* half-cycle amiguity */
|
||||||
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
half[j] = getbitu(rtcm->buff, i, 1); i += 1;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* cnr */
|
{ /* cnr */
|
||||||
cnr[j] = getbitu(rtcm->buff, i, 10)*0.0625; i += 10;
|
cnr[j] = getbitu(rtcm->buff, i, 10)*0.0625; i += 10;
|
||||||
}
|
}
|
||||||
for (j = 0;j < ncell;j++)
|
for (j = 0; j < ncell; j++)
|
||||||
{ /* phaserangerate */
|
{ /* phaserangerate */
|
||||||
rrv = getbits(rtcm->buff, i, 15); i += 15;
|
rrv = getbits(rtcm->buff, i, 15); i += 15;
|
||||||
if (rrv != -16384) rrf[j] = rrv*0.0001;
|
if (rrv != -16384) rrf[j] = rrv*0.0001;
|
||||||
@ -2562,7 +2562,7 @@ int decode_msm7(rtcm_t *rtcm, int sys)
|
|||||||
save_msm_obs(rtcm, sys, &h, r, pr, cp, rr, rrf, cnr, lock, ex, half);
|
save_msm_obs(rtcm, sys, &h, r, pr, cp, rr, rrf, cnr, lock, ex, half);
|
||||||
|
|
||||||
rtcm->obsflag = !sync;
|
rtcm->obsflag = !sync;
|
||||||
return sync?0:1;
|
return sync ? 0:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,14 +59,14 @@
|
|||||||
/* constants -----------------------------------------------------------------*/
|
/* constants -----------------------------------------------------------------*/
|
||||||
|
|
||||||
const double PRUNIT_GPS = 299792.458; /* rtcm ver.3 unit of gps pseudorange (m) */
|
const double PRUNIT_GPS = 299792.458; /* rtcm ver.3 unit of gps pseudorange (m) */
|
||||||
const double PRUNIT_GLO = 599584.916; /* rtcm ver.3 unit of glonass pseudorange (m) */
|
const double PRUNIT_GLO = 599584.916; /* rtcm ver.3 unit of glonass pseudorange (m) */
|
||||||
const double RANGE_MS = SPEED_OF_LIGHT * 0.001; /* range in 1 ms */
|
const double RANGE_MS = SPEED_OF_LIGHT * 0.001; /* range in 1 ms */
|
||||||
|
|
||||||
#define P2_10 0.0009765625 /* 2^-10 */
|
//#define P2_10 0.0009765625 /* 2^-10 */
|
||||||
#define P2_34 5.820766091346740E-11 /* 2^-34 */
|
//#define P2_34 5.820766091346740E-11 /* 2^-34 */
|
||||||
#define P2_46 1.421085471520200E-14 /* 2^-46 */
|
//#define P2_46 1.421085471520200E-14 /* 2^-46 */
|
||||||
#define P2_59 1.734723475976810E-18 /* 2^-59 */
|
//#define P2_59 1.734723475976810E-18 /* 2^-59 */
|
||||||
#define P2_66 1.355252715606880E-20 /* 2^-66 */
|
//#define P2_66 1.355252715606880E-20 /* 2^-66 */
|
||||||
|
|
||||||
/* type definition -----------------------------------------------------------*/
|
/* type definition -----------------------------------------------------------*/
|
||||||
|
|
||||||
@ -84,176 +84,239 @@ typedef struct { /* multi-signal-message header type */
|
|||||||
} msm_h_t;
|
} msm_h_t;
|
||||||
|
|
||||||
/* msm signal id table -------------------------------------------------------*/
|
/* msm signal id table -------------------------------------------------------*/
|
||||||
const char *msm_sig_gps[32]={
|
const char *msm_sig_gps[32] = {
|
||||||
/* GPS: ref [13] table 3.5-87, ref [14][15] table 3.5-91 */
|
/* GPS: ref [13] table 3.5-87, ref [14][15] table 3.5-91 */
|
||||||
"" ,"1C","1P","1W","1Y","1M","" ,"2C","2P","2W","2Y","2M", /* 1-12 */
|
"" , "1C", "1P", "1W", "1Y", "1M", "" , "2C", "2P", "2W", "2Y", "2M", /* 1-12 */
|
||||||
"" ,"" ,"2S","2L","2X","" ,"" ,"" ,"" ,"5I","5Q","5X", /* 13-24 */
|
"" , "" , "2S", "2L", "2X", "" , "" , "" , "" , "5I", "5Q", "5X", /* 13-24 */
|
||||||
"" ,"" ,"" ,"" ,"" ,"1S","1L","1X" /* 25-32 */
|
"" , "" , "" , "" , "" , "1S", "1L", "1X" /* 25-32 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const char *msm_sig_glo[32]={
|
const char *msm_sig_glo[32] = {
|
||||||
/* GLONASS: ref [13] table 3.5-93, ref [14][15] table 3.5-97 */
|
/* GLONASS: ref [13] table 3.5-93, ref [14][15] table 3.5-97 */
|
||||||
"" ,"1C","1P","" ,"" ,"" ,"" ,"2C","2P","" ,"3I","3Q",
|
"" , "1C", "1P", "" , "" , "" , "" , "2C", "2P", "" , "3I", "3Q",
|
||||||
"3X","" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,
|
"3X", "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "" ,
|
||||||
"" ,"" ,"" ,"" ,"" ,"" ,"" ,""
|
"" , "" , "" , "" , "" , "" , "" , ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const char *msm_sig_gal[32]={
|
const char *msm_sig_gal[32] = {
|
||||||
/* Galileo: ref [15] table 3.5-100 */
|
/* Galileo: ref [15] table 3.5-100 */
|
||||||
"" ,"1C","1A","1B","1X","1Z","" ,"6C","6A","6B","6X","6Z",
|
"" , "1C", "1A", "1B", "1X", "1Z", "" , "6C", "6A", "6B", "6X", "6Z",
|
||||||
"" ,"7I","7Q","7X","" ,"8I","8Q","8X","" ,"5I","5Q","5X",
|
"" , "7I", "7Q", "7X", "" , "8I", "8Q", "8X", "" , "5I", "5Q", "5X",
|
||||||
"" ,"" ,"" ,"" ,"" ,"" ,"" ,""
|
"" , "" , "" , "" , "" , "" , "" , ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const char *msm_sig_qzs[32]={
|
const char *msm_sig_qzs[32] = {
|
||||||
/* QZSS: ref [15] table 3.5-103 */
|
/* QZSS: ref [15] table 3.5-103 */
|
||||||
"" ,"1C","" ,"" ,"" ,"" ,"" ,"" ,"6S","6L","6X","" ,
|
"" , "1C", "" , "" , "" , "" , "" , "" , "6S", "6L", "6X", "" ,
|
||||||
"" ,"" ,"2S","2L","2X","" ,"" ,"" ,"" ,"5I","5Q","5X",
|
"" , "" , "2S", "2L", "2X", "" , "" , "" , "" , "5I", "5Q", "5X",
|
||||||
"" ,"" ,"" ,"" ,"" ,"1S","1L","1X"
|
"" , "" , "" , "" , "" , "1S", "1L", "1X"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const char *msm_sig_sbs[32]={
|
const char *msm_sig_sbs[32] = {
|
||||||
/* SBAS: ref [13] table 3.5-T+005 */
|
/* SBAS: ref [13] table 3.5-T+005 */
|
||||||
"" ,"1C","" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,
|
"" , "1C", "" , "" , "" , "" , "" , "" , "" , "" , "" , "" ,
|
||||||
"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,"5I","5Q","5X",
|
"" , "" , "" , "" , "" , "" , "" , "" , "" , "5I", "5Q", "5X",
|
||||||
"" ,"" ,"" ,"" ,"" ,"" ,"" ,""
|
"" , "" , "" , "" , "" , "" , "" , ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const char *msm_sig_cmp[32]={
|
const char *msm_sig_cmp[32] = {
|
||||||
/* BeiDou: ref [15] table 3.5-106 */
|
/* BeiDou: ref [15] table 3.5-106 */
|
||||||
"" ,"1I","1Q","1X","" ,"" ,"" ,"6I","6Q","6X","" ,"" ,
|
"" , "1I", "1Q", "1X", "" , "" , "" , "6I", "6Q", "6X", "" , "" ,
|
||||||
"" ,"7I","7Q","7X","" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ,
|
"" , "7I", "7Q", "7X", "" , "" , "" , "" , "" , "" , "" , "" ,
|
||||||
"" ,"" ,"" ,"" ,"" ,"" ,"" ,""
|
"" , "" , "" , "" , "" , "" , "" , ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* ssr update intervals ------------------------------------------------------*/
|
/* ssr update intervals ------------------------------------------------------*/
|
||||||
const double ssrudint[16]={
|
const double ssrudint[16] = {
|
||||||
1,2,5,10,15,30,60,120,240,300,600,900,1800,3600,7200,10800
|
1, 2, 5, 10, 15, 30, 60, 120, 240, 300, 600, 900, 1800, 3600, 7200, 10800
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* ssr 3 and 7 signal and tracking mode ids ----------------------------------*/
|
/* ssr 3 and 7 signal and tracking mode ids ----------------------------------*/
|
||||||
const int codes_gps[]={
|
const int codes_gps[] = {
|
||||||
CODE_L1C,CODE_L1P,CODE_L1W,CODE_L1Y,CODE_L1M,CODE_L2C,CODE_L2D,CODE_L2S,
|
CODE_L1C, CODE_L1P, CODE_L1W, CODE_L1Y, CODE_L1M, CODE_L2C, CODE_L2D, CODE_L2S,
|
||||||
CODE_L2L,CODE_L2X,CODE_L2P,CODE_L2W,CODE_L2Y,CODE_L2M,CODE_L5I,CODE_L5Q,
|
CODE_L2L, CODE_L2X, CODE_L2P, CODE_L2W, CODE_L2Y, CODE_L2M, CODE_L5I, CODE_L5Q,
|
||||||
CODE_L5X
|
CODE_L5X
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const int codes_glo[]={
|
const int codes_glo[] = {
|
||||||
CODE_L1C,CODE_L1P,CODE_L2C,CODE_L2P
|
CODE_L1C, CODE_L1P, CODE_L2C, CODE_L2P
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const int codes_gal[]={
|
const int codes_gal[] = {
|
||||||
CODE_L1A,CODE_L1B,CODE_L1C,CODE_L1X,CODE_L1Z,CODE_L5I,CODE_L5Q,CODE_L5X,
|
CODE_L1A, CODE_L1B, CODE_L1C, CODE_L1X, CODE_L1Z, CODE_L5I, CODE_L5Q, CODE_L5X,
|
||||||
CODE_L7I,CODE_L7Q,CODE_L7X,CODE_L8I,CODE_L8Q,CODE_L8X,CODE_L6A,CODE_L6B,
|
CODE_L7I, CODE_L7Q, CODE_L7X, CODE_L8I, CODE_L8Q, CODE_L8X, CODE_L6A, CODE_L6B,
|
||||||
CODE_L6C,CODE_L6X,CODE_L6Z
|
CODE_L6C, CODE_L6X, CODE_L6Z
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const int codes_qzs[]={
|
const int codes_qzs[] = {
|
||||||
CODE_L1C,CODE_L1S,CODE_L1L,CODE_L2S,CODE_L2L,CODE_L2X,CODE_L5I,CODE_L5Q,
|
CODE_L1C, CODE_L1S, CODE_L1L, CODE_L2S, CODE_L2L, CODE_L2X, CODE_L5I, CODE_L5Q,
|
||||||
CODE_L5X,CODE_L6S,CODE_L6L,CODE_L6X,CODE_L1X
|
CODE_L5X, CODE_L6S, CODE_L6L, CODE_L6X, CODE_L1X
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const int codes_bds[]={
|
const int codes_bds[] = {
|
||||||
CODE_L1I,CODE_L1Q,CODE_L1X,CODE_L7I,CODE_L7Q,CODE_L7X,CODE_L6I,CODE_L6Q,
|
CODE_L1I, CODE_L1Q, CODE_L1X, CODE_L7I, CODE_L7Q, CODE_L7X, CODE_L6I, CODE_L6Q,
|
||||||
CODE_L6X
|
CODE_L6X
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const int codes_sbs[]={
|
const int codes_sbs[] = {
|
||||||
CODE_L1C,CODE_L5I,CODE_L5Q,CODE_L5X
|
CODE_L1C, CODE_L5I, CODE_L5Q, CODE_L5X
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
double getbitg(const unsigned char *buff, int pos, int len);
|
double getbitg(const unsigned char *buff, int pos, int len);
|
||||||
|
|
||||||
void adjweek(rtcm_t *rtcm, double tow);
|
void adjweek(rtcm_t *rtcm, double tow);
|
||||||
|
|
||||||
int adjbdtweek(int week);
|
int adjbdtweek(int week);
|
||||||
|
|
||||||
void adjday_glot(rtcm_t *rtcm, double tod);
|
void adjday_glot(rtcm_t *rtcm, double tod);
|
||||||
|
|
||||||
double adjcp(rtcm_t *rtcm, int sat, int freq, double cp);
|
double adjcp(rtcm_t *rtcm, int sat, int freq, double cp);
|
||||||
|
|
||||||
int lossoflock(rtcm_t *rtcm, int sat, int freq, int lock);
|
int lossoflock(rtcm_t *rtcm, int sat, int freq, int lock);
|
||||||
|
|
||||||
unsigned char snratio(double snr);
|
unsigned char snratio(double snr);
|
||||||
|
|
||||||
int obsindex(obs_t *obs, gtime_t time, int sat);
|
int obsindex(obs_t *obs, gtime_t time, int sat);
|
||||||
|
|
||||||
int test_staid(rtcm_t *rtcm, int staid);
|
int test_staid(rtcm_t *rtcm, int staid);
|
||||||
|
|
||||||
int decode_head1001(rtcm_t *rtcm, int *sync);
|
int decode_head1001(rtcm_t *rtcm, int *sync);
|
||||||
|
|
||||||
int decode_type1001(rtcm_t *rtcm);
|
int decode_type1001(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1002(rtcm_t *rtcm);
|
int decode_type1002(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1003(rtcm_t *rtcm);
|
int decode_type1003(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1004(rtcm_t *rtcm);
|
int decode_type1004(rtcm_t *rtcm);
|
||||||
|
|
||||||
double getbits_38(const unsigned char *buff, int pos);
|
double getbits_38(const unsigned char *buff, int pos);
|
||||||
|
|
||||||
int decode_type1005(rtcm_t *rtcm);
|
int decode_type1005(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1006(rtcm_t *rtcm);
|
int decode_type1006(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1007(rtcm_t *rtcm);
|
int decode_type1007(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1008(rtcm_t *rtcm);
|
int decode_type1008(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_head1009(rtcm_t *rtcm, int *sync);
|
int decode_head1009(rtcm_t *rtcm, int *sync);
|
||||||
|
|
||||||
int decode_type1009(rtcm_t *rtcm);
|
int decode_type1009(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1010(rtcm_t *rtcm);
|
int decode_type1010(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1011(rtcm_t *rtcm);
|
int decode_type1011(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1012(rtcm_t *rtcm);
|
int decode_type1012(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1013(rtcm_t *rtcm);
|
int decode_type1013(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1019(rtcm_t *rtcm);
|
int decode_type1019(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1020(rtcm_t *rtcm);
|
int decode_type1020(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1021(rtcm_t *rtcm);
|
int decode_type1021(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1022(rtcm_t *rtcm);
|
int decode_type1022(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1023(rtcm_t *rtcm);
|
int decode_type1023(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1024(rtcm_t *rtcm);
|
int decode_type1024(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1025(rtcm_t *rtcm);
|
int decode_type1025(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1026(rtcm_t *rtcm);
|
int decode_type1026(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1027(rtcm_t *rtcm);
|
int decode_type1027(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1029(rtcm_t *rtcm);
|
int decode_type1029(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1030(rtcm_t *rtcm);
|
int decode_type1030(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1031(rtcm_t *rtcm);
|
int decode_type1031(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1032(rtcm_t *rtcm);
|
int decode_type1032(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1033(rtcm_t *rtcm);
|
int decode_type1033(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1034(rtcm_t *rtcm);
|
int decode_type1034(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1035(rtcm_t *rtcm);
|
int decode_type1035(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1037(rtcm_t *rtcm);
|
int decode_type1037(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1038(rtcm_t *rtcm);
|
int decode_type1038(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1039(rtcm_t *rtcm);
|
int decode_type1039(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1044(rtcm_t *rtcm);
|
int decode_type1044(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1045(rtcm_t *rtcm);
|
int decode_type1045(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1046(rtcm_t *rtcm);
|
int decode_type1046(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1047(rtcm_t *rtcm);
|
int decode_type1047(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_type1063(rtcm_t *rtcm);
|
int decode_type1063(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_ssr1_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
int decode_ssr1_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
||||||
double *udint, int *refd, int *hsize);
|
double *udint, int *refd, int *hsize);
|
||||||
|
|
||||||
int decode_ssr2_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
int decode_ssr2_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
||||||
double *udint, int *hsize);
|
double *udint, int *hsize);
|
||||||
|
|
||||||
int decode_ssr7_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
int decode_ssr7_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
||||||
double *udint, int *dispe, int *mw, int *hsize);
|
double *udint, int *dispe, int *mw, int *hsize);
|
||||||
|
|
||||||
int decode_ssr1(rtcm_t *rtcm, int sys);
|
int decode_ssr1(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_ssr2(rtcm_t *rtcm, int sys);
|
int decode_ssr2(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_ssr3(rtcm_t *rtcm, int sys);
|
int decode_ssr3(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_ssr4(rtcm_t *rtcm, int sys);
|
int decode_ssr4(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_ssr5(rtcm_t *rtcm, int sys);
|
int decode_ssr5(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_ssr6(rtcm_t *rtcm, int sys);
|
int decode_ssr6(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_ssr7(rtcm_t *rtcm, int sys);
|
int decode_ssr7(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
void sigindex(int sys, const unsigned char *code, const int *freq, int n,
|
void sigindex(int sys, const unsigned char *code, const int *freq, int n,
|
||||||
const char *opt, int *ind);
|
const char *opt, int *ind);
|
||||||
|
|
||||||
void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r,
|
||||||
const double *pr, const double *cp, const double *rr,
|
const double *pr, const double *cp, const double *rr,
|
||||||
const double *rrf, const double *cnr, const int *lock,
|
const double *rrf, const double *cnr, const int *lock,
|
||||||
const int *ex, const int *half);
|
const int *ex, const int *half);
|
||||||
|
|
||||||
int decode_msm_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
int decode_msm_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
|
||||||
msm_h_t *h, int *hsize);
|
msm_h_t *h, int *hsize);
|
||||||
|
|
||||||
int decode_msm0(rtcm_t *rtcm, int sys);
|
int decode_msm0(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_msm4(rtcm_t *rtcm, int sys);
|
int decode_msm4(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_msm5(rtcm_t *rtcm, int sys);
|
int decode_msm5(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_msm6(rtcm_t *rtcm, int sys);
|
int decode_msm6(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_msm7(rtcm_t *rtcm, int sys);
|
int decode_msm7(rtcm_t *rtcm, int sys);
|
||||||
|
|
||||||
int decode_type1230(rtcm_t *rtcm);
|
int decode_type1230(rtcm_t *rtcm);
|
||||||
|
|
||||||
int decode_rtcm3(rtcm_t *rtcm);
|
int decode_rtcm3(rtcm_t *rtcm);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user