Skip to content

Commit

Permalink
- Update version to b34f
Browse files Browse the repository at this point in the history
- Port in changes from "Google Decimeter Challenge" release
- Make "rcvstds" a receiver option for adding observation accuracy estimates to rinex files when converting raw u-blox to rinex files, previously it always occurred
- Add Visual Studio build files for rnx2rtkp
- Add receiver option to invert phaserangerate for RTCM3 to rinex conversions
- Change default time tolerance in RTKCONV and CONVBIN from 0.005 to 1.0 to avoid unintended loss of samples when setting interval
- Updates to manual.doc
- Minor bug fixes and debug trace updates
  • Loading branch information
rtklibexplorer committed Mar 26, 2022
1 parent ce99498 commit 72d50e6
Show file tree
Hide file tree
Showing 18 changed files with 459 additions and 39 deletions.
239 changes: 238 additions & 1 deletion app/consapp/convbin/bcc/_convbin.cbproj

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion app/consapp/convbin/convbin.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ static const char *help[]={
" -te y/m/d h:m:s end time [all]",
" -tr y/m/d h:m:s approximated time for RTCM",
" -ti tint observation data interval (s) [all]",
" -tt ttol observation data epoch tolerance (s) [0.005]",
" -tt ttol observation data epoch tolerance (s) [1.0]",
" -span span time span (h) [all]",
" -r format log format type",
" rtcm2= RTCM 2",
Expand Down
26 changes: 26 additions & 0 deletions app/consapp/rnx2rtkp/msc/msc.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26430.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msc", "msc.vcxproj", "{830901EE-9359-489F-BA7E-04289F28D5E0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{830901EE-9359-489F-BA7E-04289F28D5E0}.Debug|Win32.ActiveCfg = Debug|Win32
{830901EE-9359-489F-BA7E-04289F28D5E0}.Debug|Win32.Build.0 = Debug|Win32
{830901EE-9359-489F-BA7E-04289F28D5E0}.Debug|x64.ActiveCfg = Debug|Win32
{830901EE-9359-489F-BA7E-04289F28D5E0}.Release|Win32.ActiveCfg = Release|Win32
{830901EE-9359-489F-BA7E-04289F28D5E0}.Release|Win32.Build.0 = Release|Win32
{830901EE-9359-489F-BA7E-04289F28D5E0}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Binary file added app/consapp/rnx2rtkp/msc/msc.suo
Binary file not shown.
133 changes: 133 additions & 0 deletions app/consapp/rnx2rtkp/msc/msc.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{830901EE-9359-489F-BA7E-04289F28D5E0}</ProjectGuid>
<RootNamespace>msc</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>NotSet</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">rnx2rtkp</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">rnx2rtkp</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\..\src;%(AdditionalIncludeDirectories);..\</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;TRACE;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;ENAIRN;NFREQ=3;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>$(OutDir)rnx2rtkp.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
<ProjectReference>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\..\..\..\src;%(AdditionalIncludeDirectories);..\</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;TRACE;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;ENAIRN;NFREQ=3;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)rnx2rtkp.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\src\datum.c" />
<ClCompile Include="..\..\..\..\src\ephemeris.c" />
<ClCompile Include="..\..\..\..\src\geoid.c" />
<ClCompile Include="..\..\..\..\src\ionex.c" >
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;TRACE;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;ENAIRN;NFREQ=3;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\..\..\..\src\lambda.c" />
<ClCompile Include="..\..\..\..\src\options.c" />
<ClCompile Include="..\..\..\..\src\pntpos.c" />
<ClCompile Include="..\..\..\..\src\postpos.c" />
<ClCompile Include="..\..\..\..\src\ppp.c" />
<ClCompile Include="..\..\..\..\src\ppp_ar.c" />
<ClCompile Include="..\..\..\..\src\preceph.c" />
<ClCompile Include="..\..\..\..\src\rinex.c" />
<ClCompile Include="..\..\..\..\src\tides.c" />
<ClCompile Include="..\..\..\..\src\rtcm.c" />
<ClCompile Include="..\..\..\..\src\rtcm2.c" />
<ClCompile Include="..\..\..\..\src\rtcm3.c" />
<ClCompile Include="..\..\..\..\src\rtcm3e.c" />
<ClCompile Include="..\..\..\..\src\rtkcmn.c" />
<ClCompile Include="..\..\..\..\src\rtkpos.c" />
<ClCompile Include="..\..\..\..\src\sbas.c" />
<ClCompile Include="..\..\..\..\src\solution.c" />
<ClCompile Include="..\rnx2rtkp.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
27 changes: 14 additions & 13 deletions app/winapp/rtkconv/convmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -293,17 +293,18 @@ void __fastcall TMainWindow::BtnPlotClick(TObject *Sender)
AnsiString file6=OutFile6->Text;
AnsiString file7=OutFile7->Text;
AnsiString file8=OutFile8->Text;
AnsiString file[]={file1,file2,file3,file4,file5,file6,file7,file8};
AnsiString file9=OutFile9->Text;
AnsiString file[]={file1,file2,file3,file4,file5,file6,file7,file8,file9};
AnsiString cmd1="rtkplot",cmd2="..\\..\\..\\bin\\rtkplot",opts=" -r";
TCheckBox *cb[]={
OutFileEna1,OutFileEna2,OutFileEna3,OutFileEna4,OutFileEna5,OutFileEna6,
OutFileEna7,OutFileEna8
OutFileEna7,OutFileEna8,OutFileEna9
};
int i,ena[8];
int i,ena[9];

for (i=0;i<8;i++) ena[i]=cb[i]->Enabled&&cb[i]->Checked;
for (i=0;i<9;i++) ena[i]=cb[i]->Enabled&&cb[i]->Checked;

for (i=0;i<8;i++) {
for (i=0;i<9;i++) {
if (ena[i]) opts=opts+" \""+RepPath(file[i])+"\"";
}
if (opts==" -r") return;
Expand Down Expand Up @@ -1081,7 +1082,7 @@ void __fastcall TMainWindow::LoadOpt(void)
OutTime =ini->ReadInteger("opt","outtime", 0);
OutLeaps =ini->ReadInteger("opt","outleaps", 0);
SepNav =ini->ReadInteger("opt","sepnav", 0);
TimeTol =ini->ReadFloat ("opt","timetol", 0.005);
TimeTol =ini->ReadFloat ("opt","timetol", 1.0);
EnaGloFcn =ini->ReadInteger("opt","glofcnena", 0);
for (int i=0;i<27;i++) {
opt.sprintf("glofcn%02d",i+1);
Expand Down Expand Up @@ -1111,13 +1112,13 @@ void __fastcall TMainWindow::LoadOpt(void)
OutDirEna ->Checked=ini->ReadInteger("set","outdirena", 0);
OutFileEna1->Checked=ini->ReadInteger("set","outfileena1", 1);
OutFileEna2->Checked=ini->ReadInteger("set","outfileena2", 1);
OutFileEna3->Checked=ini->ReadInteger("set","outfileena3", 1);
OutFileEna4->Checked=ini->ReadInteger("set","outfileena4", 1);
OutFileEna5->Checked=ini->ReadInteger("set","outfileena5", 1);
OutFileEna6->Checked=ini->ReadInteger("set","outfileena6", 1);
OutFileEna7->Checked=ini->ReadInteger("set","outfileena7", 1);
OutFileEna8->Checked=ini->ReadInteger("set","outfileena8", 1);
OutFileEna9->Checked=ini->ReadInteger("set","outfileena9", 1);
OutFileEna3->Checked=ini->ReadInteger("set","outfileena3", 0);
OutFileEna4->Checked=ini->ReadInteger("set","outfileena4", 0);
OutFileEna5->Checked=ini->ReadInteger("set","outfileena5", 0);
OutFileEna6->Checked=ini->ReadInteger("set","outfileena6", 0);
OutFileEna7->Checked=ini->ReadInteger("set","outfileena7", 0);
OutFileEna8->Checked=ini->ReadInteger("set","outfileena8", 0);
OutFileEna9->Checked=ini->ReadInteger("set","outfileena9", 0);
Format ->ItemIndex=ini->ReadInteger("set","format", 0);

InFile->Items=ReadList(ini,"hist","inputfile");
Expand Down
Binary file modified app/winapp/rtkconv/convmain.dfm
Binary file not shown.
2 changes: 1 addition & 1 deletion app/winapp/rtkconv/convopt.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ object ConvOptDialog: TConvOptDialog
Width = 45
Height = 21
TabOrder = 14
Text = '0.005'
Text = '1.0'
end
object BtnFcn: TButton
Left = 372
Expand Down
Binary file modified doc/doc/manual.docx
Binary file not shown.
Binary file modified doc/manual_demo5.pdf
Binary file not shown.
3 changes: 3 additions & 0 deletions src/convrnx.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,9 @@ static void setopt_file(int format, char **paths, int n, const int *mask,
if (!mask[j]) continue;
sprintf(opt->comment[i++],"log: %.58s",paths[j]);
}
if (*opt->rcvopt) {
sprintf(opt->comment[i++], "options: %.54s", opt->rcvopt);
}
}
/* unset RINEX options comments ----------------------------------------------*/
static void unsetopt_file(rnxopt_t *opt)
Expand Down
9 changes: 8 additions & 1 deletion src/ephemeris.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,9 @@ extern double eph2clk(gtime_t time, const eph_t *eph)
for (i=0;i<2;i++) {
t=ts-(eph->f0+eph->f1*t+eph->f2*t*t);
}
trace(4,"ephclk: t=%.12f ts=%.12f dts=%.12f f0=%.12f f1=%.9f f2=%.9f\n",t,ts,
eph->f0+eph->f1*t+eph->f2*t*t,eph->f0,eph->f1,eph->f2);

return eph->f0+eph->f1*t+eph->f2*t*t;
}
/* broadcast ephemeris to satellite position and clock bias --------------------
Expand Down Expand Up @@ -793,7 +796,7 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
continue;
}
time[i]=timeadd(time[i],-dt);

/* satellite position and clock at transmission time */
if (!satpos(time[i],teph,obs[i].sat,ephopt,nav,rs+i*6,dts+i*2,var+i,
svh+i)) {
Expand All @@ -806,6 +809,10 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
dts[1+i*2]=0.0;
*var=SQR(STD_BRDCCLK);
}
trace(4,"satposs: %d,time=%.9f dt=%.9f pr=%.3f rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f\n",
obs[i].sat,time[i].sec,dt,pr,rs[i*6],rs[1+i*6],rs[2+i*6],dts[i*2]*1E9,
var[i]);

}
for (i=0;i<n&&i<2*MAXOBS;i++) {
trace(4,"%s sat=%2d rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f svh=%02X\n",
Expand Down
29 changes: 17 additions & 12 deletions src/rcv/ublox.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,10 @@ typedef enum { false, true } bool;

#define P2_10 0.0009765625 /* 2^-10 */

/* max std-dev for valid carrier-phases, current code is unable to correctly
distinguish between Gen8 and Gen9 modules,so use Gen8 values for both */
/* max std-dev for valid carrier-phases */
#define MAX_CPSTD_VALID_GEN8 5 /* optimal value for Gen8 modules */
#define MAX_CPSTD_VALID_GEN9 5 /* temp value for Gen9 modules */
/* #define MAX_CPSTD_VALID_GEN9 8 */ /* optimal value for Gen9 modules */
#define CPSTD_SLIP 15 /* std-dev threshold for slip */
#define MAX_CPSTD_VALID_GEN9 8 /* optimal value for Gen9 modules */
#define CPSTD_SLIP 15 /* std-dev threshold for slip */

#define ROUND(x) (int)floor((x)+0.5)

Expand Down Expand Up @@ -360,8 +358,8 @@ static int decode_rxmrawx(raw_t *raw)
char *q,tstr[64];
double tow,P,L,D,tn,tadj=0.0,toff=0.0;
int i,j,k,idx,sys,prn,sat,code,slip,halfv,halfc,LLI,n=0,cpstd_valid,cpstd_slip;
int week,nmeas,ver,gnss,svid,sigid,frqid,lockt,cn0,cpstd,prstd,tstat;
int multicode=0;
int week,nmeas,ver,gnss,svid,sigid,frqid,lockt,cn0,cpstd=0,prstd=0,tstat;
int multicode=0, rcvstds=0;

trace(4,"decode_rxmrawx: len=%d\n",raw->len);

Expand Down Expand Up @@ -396,8 +394,8 @@ static int decode_rxmrawx(raw_t *raw)
/* max valid std-dev of carrier-phase (-MAX_STD_CP) */
if ((q=strstr(raw->opt,"-MAX_STD_CP="))) {
sscanf(q,"-MAX_STD_CP=%d",&cpstd_valid);
}
else if (ver>=1) cpstd_valid=MAX_CPSTD_VALID_GEN9; /* F9P */
}
else if (raw->rcvtype==1) cpstd_valid=MAX_CPSTD_VALID_GEN9; /* F9P */
else cpstd_valid=MAX_CPSTD_VALID_GEN8; /* M8T, M8P */

/* slip threshold of std-dev of carrier-phase (-STD_SLIP) */
Expand All @@ -406,6 +404,8 @@ static int decode_rxmrawx(raw_t *raw)
} else cpstd_slip=CPSTD_SLIP;
/* use multiple codes for each freq (-MULTICODE) */
if ((q=strstr(raw->opt,"-MULTICODE"))) multicode=1;
/* write rcvr stdevs to unused rinex fields */
if ((q=strstr(raw->opt,"-RCVSTDS"))) rcvstds=1;

/* time tag adjustment */
if (tadj>0.0) {
Expand All @@ -423,12 +423,15 @@ static int decode_rxmrawx(raw_t *raw)
frqid=U1(p+23); /* freqId (fcn + 7) */
lockt=U2(p+24); /* locktime (ms) */
cn0 =U1(p+26); /* cn0 (dBHz) */
prstd=U1(p+27)&15; /* pseudorange std-dev */
cpstd=U1(p+28)&15; /* cpStdev (m) */
prstd=1<<(prstd>=5?prstd-5:0); /* prstd=2^(x-5) */
if (rcvstds) {
prstd=U1(p+27)&15; /* pseudorange std-dev */
cpstd=U1(p+28)&15; /* cpStdev (m) */
prstd=1<<(prstd>=5?prstd-5:0); /* prstd=2^(x-5) */
}
tstat=U1(p+30); /* trkStat */
if (!(tstat&1)) P=0.0;
if (!(tstat&2)||L==-0.5||cpstd>cpstd_valid) L=0.0; /* invalid phase */
if (sigid>1) raw->rcvtype=1; /* flag as Gen9 receiver */

if (!(sys=ubx_sys(gnss))) {
trace(2,"ubx rxmrawx: system error gnss=%d\n", gnss);
Expand Down Expand Up @@ -1308,6 +1311,8 @@ static int sync_ubx(uint8_t *buff, uint8_t data)
* -TADJ=tint : adjust time tags to multiples of tint (sec)
* -STD_SLIP=std: slip by std-dev of carrier phase under std
* -MAX_CP_STD=std: max std-dev of carrier phase
* -MULTICODE : preserve multiple signal codes for single freq
* -RCVSTDS : save receiver stdevs to unused rinex fields
*
* The supported messages are as follows.
Expand Down
1 change: 1 addition & 0 deletions src/rcvraw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1327,6 +1327,7 @@ extern int init_raw(raw_t *raw, int format)
for (i=0;i<MAXRAWLEN;i++) raw->buff[i]=0;
raw->opt[0]='\0';
raw->format=-1;
raw->rcvtype=0;

raw->obs.data =NULL;
raw->obuf.data=NULL;
Expand Down
2 changes: 1 addition & 1 deletion src/rinex.c
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ static void decode_obsh(FILE *fp, char *buff, double ver, int *tsys,
nav->utc_gps[6]=str2num(buff,18,6);
}
}
else if (strstr(label,"# OF SALTELLITES" )) { /* opt */
else if (strstr(label,"# OF SATELLITES" )) { /* opt */
/* skip */ ;
}
else if (strstr(label,"PRN / # OF OBS" )) { /* opt */
Expand Down
10 changes: 8 additions & 2 deletions src/rtcm3.c
Original file line number Diff line number Diff line change
Expand Up @@ -2394,7 +2394,10 @@ static int decode_msm7(rtcm_t *rtcm, int sys)
}
for (j=0;j<h.nsat;j++) { /* phaserangerate */
rate =getbits(rtcm->buff,i,14); i+=14;
if (rate!=-8192) rr[j]=rate*1.0;
if (rate!=-8192) {
rr[j]=rate*1.0;
if (strstr(rtcm->opt,"-INVPRR")) rr[j] = -rr[j];
}
}
/* decode signal data */
for (j=0;j<ncell;j++) { /* pseudorange */
Expand All @@ -2416,7 +2419,10 @@ static int decode_msm7(rtcm_t *rtcm, int sys)
}
for (j=0;j<ncell;j++) { /* phaserangerate */
rrv=getbits(rtcm->buff,i,15); i+=15;
if (rrv!=-16384) rrf[j]=rrv*0.0001;
if (rrv!=-16384) {
rrf[j]=rrv*0.0001;
if (strstr(rtcm->opt,"-INVPRR")) rrf[j] = -rrf[j];
}
}
/* save obs data in msm message */
save_msm_obs(rtcm,sys,&h,r,pr,cp,rr,rrf,cnr,lock,ex,half);
Expand Down
Loading

0 comments on commit 72d50e6

Please sign in to comment.