@@ -181,7 +181,6 @@ static void update_eph(rtksvr_t *svr, nav_t *nav, int ephsat, int ephset,
181181 int index )
182182{
183183 eph_t * eph1 ,* eph2 ,* eph3 ;
184- geph_t * geph1 ,* geph2 ,* geph3 ;
185184 int prn ;
186185
187186 if (satsys (ephsat ,& prn )!= SYS_GLO ) {
@@ -202,8 +201,9 @@ static void update_eph(rtksvr_t *svr, nav_t *nav, int ephsat, int ephset,
202201 }
203202 svr -> nmsg [index ][1 ]++ ;
204203 }
205- else {
204+ else {
206205 if (!svr -> navsel || svr -> navsel == index + 1 ) {
206+ geph_t * geph1 ,* geph2 ,* geph3 ;
207207 geph1 = nav -> geph + prn - 1 ;
208208 geph2 = svr -> nav .geph + prn - 1 ;
209209 geph3 = svr -> nav .geph + prn - 1 + MAXPRNGLO ;
@@ -215,8 +215,8 @@ static void update_eph(rtksvr_t *svr, nav_t *nav, int ephsat, int ephset,
215215 }
216216 }
217217 svr -> nmsg [index ][6 ]++ ;
218- }
219218 }
219+ }
220220/* update sbas message -------------------------------------------------------*/
221221static void update_sbs (rtksvr_t * svr , sbsmsg_t * sbsmsg , int index )
222222{
@@ -767,7 +767,6 @@ extern int rtksvrinit(rtksvr_t *svr)
767767 gtime_t time0 = {0 };
768768 sol_t sol0 = {{0 }};
769769 eph_t eph0 = {0 ,-1 ,-1 };
770- geph_t geph0 = {0 ,-1 };
771770 seph_t seph0 = {0 };
772771 int i ,j ;
773772
@@ -799,19 +798,28 @@ extern int rtksvrinit(rtksvr_t *svr)
799798 memset (& svr -> nav ,0 ,sizeof (nav_t ));
800799 memset (& svr -> obs ,0 ,sizeof (svr -> obs ));
801800 if (!(svr -> nav .eph = (eph_t * )malloc (sizeof (eph_t )* MAXSAT * 4 ))||
802- !(svr -> nav .geph = (geph_t * )malloc (sizeof (geph_t )* NSATGLO * 2 ))||
803801 !(svr -> nav .seph = (seph_t * )malloc (sizeof (seph_t )* NSATSBS * 2 ))) {
804802 tracet (1 ,"rtksvrinit: malloc error\n" );
805803 rtksvrfree (svr );
806804 return 0 ;
807805 }
808806 for (i = 0 ;i < MAXSAT * 4 ;i ++ ) svr -> nav .eph [i ]= eph0 ;
809- for (i = 0 ;i < NSATGLO * 2 ;i ++ ) svr -> nav .geph [i ]= geph0 ;
810807 for (i = 0 ;i < NSATSBS * 2 ;i ++ ) svr -> nav .seph [i ]= seph0 ;
811808 svr -> nav .n = svr -> nav .nmax = MAXSAT * 4 ;
812- svr -> nav .ng = svr -> nav .ngmax = NSATGLO * 2 ;
813809 svr -> nav .ns = svr -> nav .nsmax = NSATSBS * 2 ;
814-
810+
811+ if (MAXPRNGLO > 0 ) {
812+ svr -> nav .geph = (geph_t * )malloc (sizeof (geph_t ) * MAXPRNGLO * 2 );
813+ if (svr -> nav .geph == NULL ) {
814+ tracet (1 ,"rtksvrinit: malloc error\n" );
815+ rtksvrfree (svr );
816+ return 0 ;
817+ }
818+ geph_t geph0 = {0 ,-1 };
819+ for (i = 0 ; i < MAXPRNGLO * 2 ; i ++ ) svr -> nav .geph [i ] = geph0 ;
820+ }
821+ svr -> nav .ng = svr -> nav .ngmax = MAXPRNGLO * 2 ;
822+
815823 for (i = 0 ;i < 3 ;i ++ ) for (j = 0 ;j < MAXOBSBUF ;j ++ ) {
816824 if (!(svr -> obs [i ][j ].data = (obsd_t * )malloc (sizeof (obsd_t )* MAXOBS ))) {
817825 tracet (1 ,"rtksvrinit: malloc error\n" );
@@ -978,7 +986,7 @@ extern int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs,
978986 }
979987 /* update navigation data */
980988 for (i = 0 ;i < MAXSAT * 4 ;i ++ ) svr -> nav .eph [i ].ttr = time0 ;
981- for (i = 0 ;i < NSATGLO * 2 ;i ++ ) svr -> nav .geph [i ].tof = time0 ;
989+ for (i = 0 ;i < MAXPRNGLO * 2 ;i ++ ) svr -> nav .geph [i ].tof = time0 ;
982990 for (i = 0 ;i < NSATSBS * 2 ;i ++ ) svr -> nav .seph [i ].tof = time0 ;
983991
984992 /* set monitor stream */
0 commit comments