From 4ab9a199ff46b1220fb4fe99b019c8df526e53e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu>
Date: Mon, 5 Oct 2020 18:56:49 +0200
Subject: [PATCH] more rigorous ephemeris computation in sbas2

---
 src/ephemeris.c | 8 +++++---
 src/pntpos.c    | 4 ++--
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/ephemeris.c b/src/ephemeris.c
index 75cdec5..58a12fc 100644
--- a/src/ephemeris.c
+++ b/src/ephemeris.c
@@ -770,6 +770,7 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
     int i,j;
 
     trace(3,"satposs : teph=%s n=%d ephopt=%d\n",time_str(teph,3),n,ephopt);
+    //printf("satposs : teph=%s n=%d ephopt=%d\n",time_str(teph,3),n,ephopt);
     /*if (ephopt==2)
     {
         printf("====satposs : teph=%s n=%d ephopt=%d\n",time_str(teph,3),n,ephopt);
@@ -805,8 +806,9 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
             // JV{
             if (ephopt == EPHOPT_SBAS2 /*&& svh[i] == -1*/) // complement SBAS with BRDC eph
             {
-                //printf("satposs: in EPHOPT_SBAS2 wrong satpos. svh: %d. rs=%f, %f, %f. Reseting svh to 0 (ok).\n",svh[i],rs[i*6],rs[i*6+1],rs[i*6+2]);
-                svh[i] = 0;
+                //printf("satposs: using EPHOPT_SBAS2 wrong satpos sat:%d, svh: %d, rs=%f, %f, %f. Trying without SBAS.\n",obs[i].sat,svh[i],rs[i*6],rs[i*6+1],rs[i*6+2]);
+                if (!satpos(time[i],teph,obs[i].sat,EPHOPT_BRDC,nav,rs+i*6,dts+i*2,var+i,svh+i))
+                    continue;
             }
             else
             //}JV
@@ -824,7 +826,7 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
         trace(4,"%s sat=%2d rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f svh=%02X\n",
               time_str(time[i],6),obs[i].sat,rs[i*6],rs[1+i*6],rs[2+i*6],
               dts[i*2]*1E9,var[i],svh[i]);
-        //printf("%s sat=%2d rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f svh=%02X\n",
+        //printf("%s sat=%2d rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f svh=%2d\n",
         //      time_str(time[i],6),obs[i].sat,rs[i*6],rs[1+i*6],rs[2+i*6],
         //      dts[i*2]*1E9,var[i],svh[i]);
     }
diff --git a/src/pntpos.c b/src/pntpos.c
index 3181d44..e67beef 100644
--- a/src/pntpos.c
+++ b/src/pntpos.c
@@ -315,7 +315,6 @@ static int rescode(int iter, const obsd_t *obs, int n, const double *rs,
         }
         //printf(" OK\n");
 
-        //printf(" OK!\n");
         /* pseudorange residual */
         v[nv]=P-(r+dtr-CLIGHT*dts[i*2]+dion+dtrp);
         
@@ -441,7 +440,8 @@ static int estpos(const obsd_t *obs, int n, const double *rs, const double *dts,
         /* pseudorange residuals */
         nv=rescode(i,obs,n,rs,dts,vare,svh,nav,x,opt,ssat,v,H,var,azel,vsat,resp,
                    &ns);
-        
+        //printf("estpos: iteration %d, nv = %d\n", i, nv);
+
         if (nv<NX) {
             //sprintf(msg,"lack of valid sats ns=%d",nv);
             sprintf(msg,"lack of valid sats ns=%d, nv=%2d",ns, nv);//JV
-- 
GitLab