1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-11-09 19:53:04 +00:00

Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next_fpga

This commit is contained in:
mmajoral
2017-06-08 16:18:16 +02:00
28 changed files with 186 additions and 117 deletions

View File

@@ -194,7 +194,8 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
int num_bands = 0; int num_bands = 0;
if ((gps_1C_count > 0) || (gal_1B_count > 0)) num_bands = 1; if ((gps_1C_count > 0) || (gal_1B_count > 0)) num_bands = 1;
if (((gps_1C_count > 0) || (gal_1B_count > 0)) && (gps_2S_count > 0) ) num_bands = 2; if (((gps_1C_count > 0) || (gal_1B_count > 0)) && (gps_2S_count > 0) ) num_bands = 2;
if (((gps_1C_count > 0) || (gal_1B_count > 0)) && (gps_2S_count > 0) && ((gal_E5a_count > 0) || (gal_E5a_count > 0))) num_bands = 3; if (((gps_1C_count > 0) || (gal_1B_count > 0)) && ((gal_E5a_count > 0) || (gal_E5b_count > 0)) ) num_bands = 2;
if (((gps_1C_count > 0) || (gal_1B_count > 0)) && (gps_2S_count > 0) && ((gal_E5a_count > 0) || (gal_E5b_count > 0))) num_bands = 3;
int number_of_frequencies = configuration->property(role + ".num_bands", num_bands); /* (1:L1, 2:L1+L2, 3:L1+L2+L5) */ int number_of_frequencies = configuration->property(role + ".num_bands", num_bands); /* (1:L1, 2:L1+L2, 3:L1+L2+L5) */
if( (number_of_frequencies < 1) || (number_of_frequencies > 3) ) if( (number_of_frequencies < 1) || (number_of_frequencies > 3) )
{ {
@@ -382,7 +383,7 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
iono_model, /* ionosphere option (IONOOPT_XXX) */ iono_model, /* ionosphere option (IONOOPT_XXX) */
trop_model, /* troposphere option (TROPOPT_XXX) */ trop_model, /* troposphere option (TROPOPT_XXX) */
dynamics_model, /* dynamics model (0:none, 1:velocity, 2:accel) */ dynamics_model, /* dynamics model (0:none, 1:velocity, 2:accel) */
earth_tide, /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */ earth_tide, /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */
number_filter_iter, /* number of filter iteration */ number_filter_iter, /* number of filter iteration */
0, /* code smoothing window size (0:none) */ 0, /* code smoothing window size (0:none) */
0, /* interpolate reference obs (for post mission) */ 0, /* interpolate reference obs (for post mission) */

View File

@@ -144,4 +144,3 @@ gr::basic_block_sptr PulseBlankingFilter::get_right_block()
LOG(ERROR) << " Unknown input filter input/output item type conversion"; LOG(ERROR) << " Unknown input filter input/output item type conversion";
} }
} }

View File

@@ -76,8 +76,6 @@ private:
std::string input_item_type_; std::string input_item_type_;
size_t input_size_; size_t input_size_;
std::string output_item_type_; std::string output_item_type_;
double intermediate_freq_;
double sampling_freq_;
std::string role_; std::string role_;
unsigned int in_streams_; unsigned int in_streams_;
unsigned int out_streams_; unsigned int out_streams_;

View File

@@ -92,7 +92,7 @@ double var_uraeph(int ura)
2.4, 3.4, 4.85, 6.85, 9.65, 13.65, 24.0, 48.0, 96.0, 192.0, 384.0, 768.0, 1536.0, 2.4, 3.4, 4.85, 6.85, 9.65, 13.65, 24.0, 48.0, 96.0, 192.0, 384.0, 768.0, 1536.0,
3072.0, 6144.0 3072.0, 6144.0
}; };
return ura < 0 || 15 < ura ? std::pow(6144.0, 2.0) : std::pow(ura_value[ura], 2.0); return ura < 0 || 14 < ura ? std::pow(6144.0, 2.0) : std::pow(ura_value[ura], 2.0);
} }

View File

@@ -394,15 +394,18 @@ void readtec(const char *file, nav_t *nav, int opt)
trace(2, "ionex file open error %s\n", efiles[i]); trace(2, "ionex file open error %s\n", efiles[i]);
continue; continue;
} }
/* read ionex header */ else
if (readionexh(fp, lats, lons, hgts, &rb, &nexp, dcb, rms) <= 0.0)
{ {
trace(2, "ionex file format error %s\n", efiles[i]); /* read ionex header */
continue; if (readionexh(fp, lats, lons, hgts, &rb, &nexp, dcb, rms) <= 0.0)
{
trace(2, "ionex file format error %s\n", efiles[i]);
fclose(fp);
continue;
}
/* read ionex body */
readionexb(fp, lats, lons, hgts, rb, nexp, nav);
} }
/* read ionex body */
readionexb(fp, lats, lons, hgts, rb, nexp, nav);
fclose(fp); fclose(fp);
} }
for (i = 0; i < MAXEXFILE; i++) free(efiles[i]); for (i = 0; i < MAXEXFILE; i++) free(efiles[i]);

View File

@@ -364,7 +364,8 @@ int valsol(const double *azel, const int *vsat, int n,
const prcopt_t *opt, const double *v, int nv, int nx, const prcopt_t *opt, const double *v, int nv, int nx,
char *msg) char *msg)
{ {
double azels[MAXOBS*2], dop[4], vv; double azels[MAXOBS*2] = {0};
double dop[4], vv;
int i, ns; int i, ns;
trace(3, "valsol : n=%d nv=%d\n", n, nv); trace(3, "valsol : n=%d nv=%d\n", n, nv);

View File

@@ -461,7 +461,11 @@ int fix_amb_ILS(rtk_t *rtk, int *sat1, int *sat2, int *NW, int n)
sat2[m] = sat2[i]; sat2[m] = sat2[i];
NW[m++] = NW[i]; NW[m++] = NW[i];
} }
if (m<3) return 0; if (m<3)
{
free(B1); free(N1); free(D); free(E); free(Q); free(NC);
return 0;
}
/* covariance of narrow-lane ambiguities */ /* covariance of narrow-lane ambiguities */
matmul("TN", m, rtk->nx, rtk->nx, 1.0, D, rtk->P, 0.0, E); matmul("TN", m, rtk->nx, rtk->nx, 1.0, D, rtk->P, 0.0, E);
@@ -471,9 +475,14 @@ int fix_amb_ILS(rtk_t *rtk, int *sat1, int *sat2, int *NW, int n)
if ((info = lambda(m, 2, B1, Q, N1, s))) if ((info = lambda(m, 2, B1, Q, N1, s)))
{ {
trace(2, "lambda error: info=%d\n", info); trace(2, "lambda error: info=%d\n", info);
free(B1); free(N1); free(D); free(E); free(Q); free(NC);
return 0;
}
if (s[0] <= 0.0)
{
free(B1); free(N1); free(D); free(E); free(Q); free(NC);
return 0; return 0;
} }
if (s[0] <= 0.0) return 0;
rtk->sol.ratio = (float)(MIN_PPP(s[1]/s[0], 999.9)); rtk->sol.ratio = (float)(MIN_PPP(s[1]/s[0], 999.9));
@@ -481,6 +490,7 @@ int fix_amb_ILS(rtk_t *rtk, int *sat1, int *sat2, int *NW, int n)
if (rtk->opt.thresar[0]>0.0 && rtk->sol.ratio<rtk->opt.thresar[0]) if (rtk->opt.thresar[0]>0.0 && rtk->sol.ratio<rtk->opt.thresar[0])
{ {
trace(2, "varidation error: n=%2d ratio=%8.3f\n", m, rtk->sol.ratio); trace(2, "varidation error: n=%2d ratio=%8.3f\n", m, rtk->sol.ratio);
free(B1); free(N1); free(D); free(E); free(Q); free(NC);
return 0; return 0;
} }
trace(2, "varidation ok: %s n=%2d ratio=%8.3f\n", time_str(rtk->sol.time, 0), m, trace(2, "varidation ok: %s n=%2d ratio=%8.3f\n", time_str(rtk->sol.time, 0), m,
@@ -889,7 +899,7 @@ void testeclipse(const obsd_t *obs, int n, const nav_t *nav, double *rs)
/* unit vector of sun direction (ecef) */ /* unit vector of sun direction (ecef) */
sunmoonpos(gpst2utc(obs[0].time), erpv, rsun, NULL, NULL); sunmoonpos(gpst2utc(obs[0].time), erpv, rsun, NULL, NULL);
normv3(rsun, esun); if(normv3(rsun, esun) == 0) trace(1, "Error computing the norm");
for (i = 0;i<n;i++) for (i = 0;i<n;i++)
{ {

View File

@@ -355,8 +355,7 @@ void readsp3(const char *file, nav_t *nav, int opt)
*-----------------------------------------------------------------------------*/ *-----------------------------------------------------------------------------*/
int readsap(const char *file, gtime_t time, nav_t *nav) int readsap(const char *file, gtime_t time, nav_t *nav)
{ {
pcv_t aux = { 0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} }; pcvs_t pcvs = {0, 0, (pcv_t*){ 0 } };
pcvs_t pcvs = {0, 0, &aux };
pcv_t pcv0 = { 0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} }, *pcv; pcv_t pcv0 = { 0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} }, *pcv;
int i; int i;
@@ -369,7 +368,7 @@ int readsap(const char *file, gtime_t time, nav_t *nav)
pcv = searchpcv(i + 1, "", time, &pcvs); pcv = searchpcv(i + 1, "", time, &pcvs);
nav->pcvs[i] = pcv ? *pcv : pcv0; nav->pcvs[i] = pcv ? *pcv : pcv0;
} }
free(pcvs.pcv); free(pcv);
return 1; return 1;
} }
@@ -530,7 +529,11 @@ int readfcbf(const char *file, nav_t *nav)
if (!(sat = satid2no(str))) continue; if (!(sat = satid2no(str))) continue;
ts = epoch2time(ep1); ts = epoch2time(ep1);
te = epoch2time(ep2); te = epoch2time(ep2);
if (!addfcb(nav, ts, te, sat, bias, std)) return 0; if (!addfcb(nav, ts, te, sat, bias, std))
{
fclose(fp);
return 0;
}
} }
fclose(fp); fclose(fp);
return 1; return 1;

View File

@@ -567,13 +567,20 @@ void setcodepri(int sys, int freq, const char *pri)
trace(3, "setcodepri : sys=%d freq=%d pri=%s\n", sys, freq, pri); trace(3, "setcodepri : sys=%d freq=%d pri=%s\n", sys, freq, pri);
if (freq <= 0 || MAXFREQ<freq) return; if (freq <= 0 || MAXFREQ<freq) return;
if (sys&SYS_GPS) strcpy(codepris[0][freq-1], pri); if(strlen(pri) < 17)
if (sys&SYS_GLO) strcpy(codepris[1][freq-1], pri); {
if (sys&SYS_GAL) strcpy(codepris[2][freq-1], pri); if (sys&SYS_GPS) strcpy(codepris[0][freq-1], pri);
if (sys&SYS_QZS) strcpy(codepris[3][freq-1], pri); if (sys&SYS_GLO) strcpy(codepris[1][freq-1], pri);
if (sys&SYS_SBS) strcpy(codepris[4][freq-1], pri); if (sys&SYS_GAL) strcpy(codepris[2][freq-1], pri);
if (sys&SYS_BDS) strcpy(codepris[5][freq-1], pri); if (sys&SYS_QZS) strcpy(codepris[3][freq-1], pri);
if (sys&SYS_IRN) strcpy(codepris[6][freq-1], pri); if (sys&SYS_SBS) strcpy(codepris[4][freq-1], pri);
if (sys&SYS_BDS) strcpy(codepris[5][freq-1], pri);
if (sys&SYS_IRN) strcpy(codepris[6][freq-1], pri);
}
else
{
trace(1, "pri array is too long");
}
} }
@@ -2133,7 +2140,7 @@ int readngspcv(const char *file, pcvs_t *pcvs)
{ {
FILE *fp; FILE *fp;
static const pcv_t pcv0 = {0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} }; static const pcv_t pcv0 = {0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} };
pcv_t pcv; pcv_t pcv = {0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} };
double neu[3]; double neu[3];
int n = 0; int n = 0;
char buff[256]; char buff[256];
@@ -2187,7 +2194,7 @@ int readantex(const char *file, pcvs_t *pcvs)
{ {
FILE *fp; FILE *fp;
static const pcv_t pcv0 = {0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} }; static const pcv_t pcv0 = {0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} };
pcv_t pcv; pcv_t pcv = {0, {}, {}, {0,0}, {0,0}, {{},{}}, {{},{}} };
double neu[3]; double neu[3];
int i, f, freq = 0, state = 0, freqs[] = {1, 2, 5, 6, 7, 8, 0}; int i, f, freq = 0, state = 0, freqs[] = {1, 2, 5, 6, 7, 8, 0};
char buff[256]; char buff[256];
@@ -2317,12 +2324,13 @@ pcv_t *searchpcv(int sat, const char *type, gtime_t time,
const pcvs_t *pcvs) const pcvs_t *pcvs)
{ {
pcv_t *pcv; pcv_t *pcv;
char buff[MAXANT], *types[2], *p; char buff[MAXANT] = "", *types[2], *p;
int i, j, n = 0; int i, j, n = 0;
trace(3, "searchpcv: sat=%2d type=%s\n", sat, type); trace(3, "searchpcv: sat=%2d type=%s\n", sat, type);
if (sat) { /* search satellite antenna */ if (sat)
{ /* search satellite antenna */
for (i = 0; i<pcvs->n; i++) for (i = 0; i<pcvs->n; i++)
{ {
pcv = pcvs->pcv+i; pcv = pcvs->pcv+i;
@@ -2331,10 +2339,14 @@ pcv_t *searchpcv(int sat, const char *type, gtime_t time,
if (pcv->te.time != 0 && timediff(pcv->te, time)<0.0) continue; if (pcv->te.time != 0 && timediff(pcv->te, time)<0.0) continue;
return pcv; return pcv;
} }
} }
else else
{ {
strcpy(buff, type); if(strlen(type) < MAXANT +1 ) strcpy(buff, type);
else
{
trace(1, "type array is too long");
}
for (p = strtok(buff, " "); p && n<2; p = strtok(NULL, " ")) types[n++] = p; for (p = strtok(buff, " "); p && n<2; p = strtok(NULL, " ")) types[n++] = p;
if (n <= 0) return NULL; if (n <= 0) return NULL;
@@ -3013,7 +3025,8 @@ void traceopen(const char *file)
reppath(file, path, time, "", ""); reppath(file, path, time, "", "");
if (!*path || !(fp_trace = fopen(path, "w"))) fp_trace = stderr; if (!*path || !(fp_trace = fopen(path, "w"))) fp_trace = stderr;
strcpy(file_trace, file); if (strlen(file) < 1025) strcpy(file_trace, file);
else trace(1, "file array is too long");
tick_trace = tickget(); tick_trace = tickget();
time_trace = time; time_trace = time;
initlock(&lock_trace); initlock(&lock_trace);
@@ -3224,11 +3237,12 @@ void createdir(const char *path)
char buff[1024], *p; char buff[1024], *p;
//tracet(3, "createdir: path=%s\n", path); //tracet(3, "createdir: path=%s\n", path);
strcpy(buff, path); if(strlen(path) < 1025) strcpy(buff, path);
else trace(1, "path is too long");
if (!(p = strrchr(buff, FILEPATHSEP))) return; if (!(p = strrchr(buff, FILEPATHSEP))) return;
*p = '\0'; *p = '\0';
mkdir(buff, 0777); if(mkdir(buff, 0777) != 0) trace(1, "Error creating folder");
} }
@@ -3246,7 +3260,9 @@ int repstr(char *str, const char *pat, const char *rep)
r += sprintf(r, "%s", rep); r += sprintf(r, "%s", rep);
} }
if (p <= str) return 0; if (p <= str) return 0;
strcpy(r, p);
if(strlen(p) < 1025 ) strcpy(r, p);
else trace(1, "pat array is too long");
strcpy(str, buff); strcpy(str, buff);
return 1; return 1;
} }
@@ -3934,7 +3950,8 @@ int rtk_uncompress(const char *file, char *uncfile)
trace(3, "rtk_uncompress: file=%s\n", file); trace(3, "rtk_uncompress: file=%s\n", file);
strcpy(tmpfile, file); if(strlen(file) < 1025) strcpy(tmpfile, file);
else trace(1, "file array is too long");
if (!(p = strrchr(tmpfile, '.'))) return 0; if (!(p = strrchr(tmpfile, '.'))) return 0;
/* uncompress by gzip */ /* uncompress by gzip */
@@ -3947,10 +3964,10 @@ int rtk_uncompress(const char *file, char *uncfile)
if (execcmd(cmd)) if (execcmd(cmd))
{ {
remove(uncfile); if(remove(uncfile) != 0) trace(1, "Error removing file");
return -1; return -1;
} }
strcpy(tmpfile, uncfile); if(strlen(uncfile) < 1025) strcpy(tmpfile, uncfile);
stat = 1; stat = 1;
} }
/* extract tar file */ /* extract tar file */
@@ -3966,10 +3983,10 @@ int rtk_uncompress(const char *file, char *uncfile)
sprintf(cmd, "tar -C \"%s\" -xf \"%s\"", dir, tmpfile); sprintf(cmd, "tar -C \"%s\" -xf \"%s\"", dir, tmpfile);
if (execcmd(cmd)) if (execcmd(cmd))
{ {
if (stat) remove(tmpfile); if (stat) if(remove(tmpfile) != 0) trace(1, "Error removing file");
return -1; return -1;
} }
if (stat) remove(tmpfile); if (stat) if(remove(tmpfile) != 0) trace(1, "Error removing file");
stat = 1; stat = 1;
} }
/* extract hatanaka-compressed file by cnx2rnx */ /* extract hatanaka-compressed file by cnx2rnx */
@@ -3982,11 +3999,11 @@ int rtk_uncompress(const char *file, char *uncfile)
if (execcmd(cmd)) if (execcmd(cmd))
{ {
remove(uncfile); if(remove(uncfile) != 0) trace(1, "Error removing file");
if (stat) remove(tmpfile); if (stat) if(remove(tmpfile) != 0) trace(1, "Error removing file");
return -1; return -1;
} }
if (stat) remove(tmpfile); if (stat) if(remove(tmpfile) != 0) trace(1, "Error removing file");
stat = 1; stat = 1;
} }
trace(3, "rtk_uncompress: stat=%d\n", stat); trace(3, "rtk_uncompress: stat=%d\n", stat);
@@ -4005,7 +4022,7 @@ int rtk_uncompress(const char *file, char *uncfile)
int expath(const char *path, char *paths[], int nmax) int expath(const char *path, char *paths[], int nmax)
{ {
int i, j, n = 0; int i, j, n = 0;
char tmp[1024]; char tmp[1024] = "";
struct dirent *d; struct dirent *d;
DIR *dp; DIR *dp;
const char *file = path; const char *file = path;
@@ -4040,7 +4057,11 @@ int expath(const char *path, char *paths[], int nmax)
{ {
if (strcmp(paths[i], paths[j])>0) if (strcmp(paths[i], paths[j])>0)
{ {
strcpy(tmp, paths[i]); if(strlen(paths[i]) < 1025) strcpy(tmp, paths[i]);
else
{
trace(1, "Path is too long");
}
strcpy(paths[i], paths[j]); strcpy(paths[i], paths[j]);
strcpy(paths[j], tmp); strcpy(paths[j], tmp);
} }

View File

@@ -156,7 +156,8 @@ int rtkopenstat(const char *file, int level)
trace(1, "rtkopenstat: file open error path=%s\n", path); trace(1, "rtkopenstat: file open error path=%s\n", path);
return 0; return 0;
} }
strcpy(file_stat, file); if(strlen(file) < 1025) strcpy(file_stat, file);
else trace(1, "File name is too long");
time_stat = time; time_stat = time;
statlevel = level; statlevel = level;
return 1; return 1;

View File

@@ -752,8 +752,8 @@ int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs,
init_rtcm(svr->rtcm+i); init_rtcm(svr->rtcm+i);
/* set receiver and rtcm option */ /* set receiver and rtcm option */
strcpy(svr->raw [i].opt, rcvopts[i]); if(strlen(rcvopts[i]) < 256 ) strcpy(svr->raw [i].opt, rcvopts[i]);
strcpy(svr->rtcm[i].opt, rcvopts[i]); if(strlen(rcvopts[i]) < 256 ) strcpy(svr->rtcm[i].opt, rcvopts[i]);
/* connect dgps corrections */ /* connect dgps corrections */
svr->rtcm[i].dgps = svr->nav.dgps; svr->rtcm[i].dgps = svr->nav.dgps;

View File

@@ -185,9 +185,9 @@ int decode_sbstype6(const sbsmsg_t *msg, sbssat_t *sbssat)
{ {
iodf[i] = getbitu(msg->msg, 14+i*2, 2); iodf[i] = getbitu(msg->msg, 14+i*2, 2);
} }
for (i = 0;i<sbssat->nsat && i<MAXSAT;i++) for (i = 0; i < sbssat->nsat && i < MAXSAT; i++)
{ {
if (sbssat->sat[i].fcorr.iodf != iodf[i/13]) continue; if (sbssat->sat[i].fcorr.iodf != iodf[i/22]) continue;
udre = getbitu(msg->msg, 22+i*4, 4); udre = getbitu(msg->msg, 22+i*4, 4);
sbssat->sat[i].fcorr.udre = udre+1; sbssat->sat[i].fcorr.udre = udre+1;
} }
@@ -536,7 +536,7 @@ void readmsgs(const char *file, int sel, gtime_t ts, gtime_t te,
if (!(sbs_msgs = (sbsmsg_t *)realloc(sbs->msgs, sbs->nmax * sizeof(sbsmsg_t)))) if (!(sbs_msgs = (sbsmsg_t *)realloc(sbs->msgs, sbs->nmax * sizeof(sbsmsg_t))))
{ {
trace(1, "readsbsmsg malloc error: nmax=%d\n", sbs->nmax); trace(1, "readsbsmsg malloc error: nmax=%d\n", sbs->nmax);
free(sbs->msgs); sbs->msgs = NULL; sbs->n = sbs->nmax = 0; free(sbs->msgs); sbs->msgs = NULL; sbs->n = sbs->nmax = 0; fclose(fp);
return; return;
} }
sbs->msgs = sbs_msgs; sbs->msgs = sbs_msgs;

View File

@@ -271,7 +271,7 @@ int decode_nmeagga(char **val, int n, sol_t *sol)
/* decode nmea ---------------------------------------------------------------*/ /* decode nmea ---------------------------------------------------------------*/
int decode_nmea(char *buff, sol_t *sol) int decode_nmea(char *buff, sol_t *sol)
{ {
char *p,*q,*val[MAXFIELD]; char *p, *q, *val[MAXFIELD] = {0};
int n = 0; int n = 0;
trace(4,"decode_nmea: buff=%s\n",buff); trace(4,"decode_nmea: buff=%s\n",buff);

View File

@@ -104,10 +104,10 @@ serial_t *openserial(const char *path, int mode, char *msg)
strncpy(port, path, p-path); port[p-path] = '\0'; strncpy(port, path, p-path); port[p-path] = '\0';
sscanf(p, ":%d:%d:%c:%d:%s", &brate, &bsize, &parity, &stopb, fctr); sscanf(p, ":%d:%d:%c:%d:%s", &brate, &bsize, &parity, &stopb, fctr);
} }
else strcpy(port, path); else if(strlen(path) < 128) strcpy(port, path);
for (i = 0;i < 11;i++) if (br[i] == brate) break; for (i = 0;i < 10; i++) if (br[i] == brate) break;
if (i >= 12) if (i >= 11)
{ {
sprintf(msg, "bitrate error (%d)", brate); sprintf(msg, "bitrate error (%d)", brate);
tracet(1, "openserial: %s path=%s\n", msg, path); tracet(1, "openserial: %s path=%s\n", msg, path);
@@ -150,8 +150,8 @@ serial_t *openserial(const char *path, int mode, char *msg)
/* close serial --------------------------------------------------------------*/ /* close serial --------------------------------------------------------------*/
void closeserial(serial_t *serial) void closeserial(serial_t *serial)
{ {
tracet(3, "closeserial: dev=%d\n", serial->dev);
if (!serial) return; if (!serial) return;
tracet(3, "closeserial: dev=%d\n", serial->dev);
close(serial->dev); close(serial->dev);
free(serial); free(serial);
} }
@@ -161,8 +161,8 @@ void closeserial(serial_t *serial)
int readserial(serial_t *serial, unsigned char *buff, int n, char *msg __attribute__((unused))) int readserial(serial_t *serial, unsigned char *buff, int n, char *msg __attribute__((unused)))
{ {
int nr; int nr;
tracet(4, "readserial: dev=%d n=%d\n", serial->dev, n);
if (!serial) return 0; if (!serial) return 0;
tracet(4, "readserial: dev=%d n=%d\n", serial->dev, n);
if ((nr = read(serial->dev, buff, n)) < 0) return 0; if ((nr = read(serial->dev, buff, n)) < 0) return 0;
tracet(5, "readserial: exit dev=%d nr=%d\n", serial->dev, nr); tracet(5, "readserial: exit dev=%d nr=%d\n", serial->dev, nr);
return nr; return nr;
@@ -173,8 +173,8 @@ int readserial(serial_t *serial, unsigned char *buff, int n, char *msg __attribu
int writeserial(serial_t *serial, unsigned char *buff, int n, char *msg __attribute__((unused))) int writeserial(serial_t *serial, unsigned char *buff, int n, char *msg __attribute__((unused)))
{ {
int ns; int ns;
tracet(3, "writeserial: dev=%d n=%d\n", serial->dev, n);
if (!serial) return 0; if (!serial) return 0;
tracet(3, "writeserial: dev=%d n=%d\n", serial->dev, n);
if ((ns = write(serial->dev, buff, n)) < 0) return 0; if ((ns = write(serial->dev, buff, n)) < 0) return 0;
tracet(5, "writeserial: exit dev=%d ns=%d\n", serial->dev, ns); tracet(5, "writeserial: exit dev=%d ns=%d\n", serial->dev, ns);
return ns; return ns;
@@ -269,7 +269,7 @@ int openfile_(file_t *file, gtime_t time, char *msg)
if ((fp = fopen(tagpath, "rb"))) if ((fp = fopen(tagpath, "rb")))
{ {
fclose(fp); fclose(fp);
remove(tagpath); if (remove(tagpath) != 0) trace(1, "Error removing file");
} }
} }
return 1; return 1;
@@ -315,7 +315,7 @@ file_t *openfile(const char *path, int mode, char *msg)
if (!(file = (file_t *)malloc(sizeof(file_t)))) return NULL; if (!(file = (file_t *)malloc(sizeof(file_t)))) return NULL;
file->fp = file->fp_tag = file->fp_tmp = file->fp_tag_tmp = NULL; file->fp = file->fp_tag = file->fp_tmp = file->fp_tag_tmp = NULL;
strcpy(file->path, path); if(strlen(path) < MAXSTRPATH) strcpy(file->path, path);
if ((p = strstr(file->path, "::"))) *p = '\0'; if ((p = strstr(file->path, "::"))) *p = '\0';
file->openpath[0] = '\0'; file->openpath[0] = '\0';
file->mode = mode; file->mode = mode;
@@ -344,8 +344,8 @@ file_t *openfile(const char *path, int mode, char *msg)
/* close file ----------------------------------------------------------------*/ /* close file ----------------------------------------------------------------*/
void closefile(file_t *file) void closefile(file_t *file)
{ {
tracet(3, "closefile: fp=%d\n", file->fp);
if (!file) return; if (!file) return;
tracet(3, "closefile: fp=%d\n", file->fp);
closefile_(file); closefile_(file);
free(file); free(file);
} }
@@ -404,9 +404,8 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg)
int nr = 0; int nr = 0;
size_t fpos; size_t fpos;
tracet(4, "readfile: fp=%d nmax=%d\n", file->fp, nmax);
if (!file) return 0; if (!file) return 0;
tracet(4, "readfile: fp=%d nmax=%d\n", file->fp, nmax);
if (file->fp == stdin) if (file->fp == stdin)
{ {
@@ -431,7 +430,7 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg)
if (fread(&tick, sizeof(tick), 1, file->fp_tag) < 1 || if (fread(&tick, sizeof(tick), 1, file->fp_tag) < 1 ||
fread(&fpos, sizeof(fpos), 1, file->fp_tag) < 1) fread(&fpos, sizeof(fpos), 1, file->fp_tag) < 1)
{ {
fseek(file->fp, 0, SEEK_END); if(fseek(file->fp, 0, SEEK_END) != 0) trace(1, "fseek error");
sprintf(msg, "end"); sprintf(msg, "end");
break; break;
} }
@@ -445,7 +444,7 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg)
if ((int)(fpos-file->fpos) >= nmax) if ((int)(fpos-file->fpos) >= nmax)
{ {
fseek(file->fp, fpos, SEEK_SET); if(fseek(file->fp, fpos, SEEK_SET) != 0) trace(1, "Error fseek");
file->fpos = fpos; file->fpos = fpos;
return 0; return 0;
} }
@@ -453,7 +452,7 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg)
if (file->repmode || file->speed>0.0) if (file->repmode || file->speed>0.0)
{ {
fseek(file->fp_tag, -(long)(sizeof(tick)+sizeof(fpos)), SEEK_CUR); if(fseek(file->fp_tag, -(long)(sizeof(tick)+sizeof(fpos)), SEEK_CUR) !=0) trace(1, "Error fseek");
} }
break; break;
} }
@@ -478,9 +477,8 @@ int writefile(file_t *file, unsigned char *buff, int n, char *msg)
double tow1, tow2, intv; double tow1, tow2, intv;
size_t fpos, fpos_tmp; size_t fpos, fpos_tmp;
tracet(3, "writefile: fp=%d n=%d\n", file->fp, n);
if (!file) return 0; if (!file) return 0;
tracet(3, "writefile: fp=%d n=%d\n", file->fp, n);
wtime = utc2gpst(timeget()); /* write time in gpst */ wtime = utc2gpst(timeget()); /* write time in gpst */
@@ -560,7 +558,7 @@ void decodetcppath(const char *path, char *addr, char *port, char *user,
if (mntpnt) *mntpnt = '\0'; if (mntpnt) *mntpnt = '\0';
if (str) *str = '\0'; if (str) *str = '\0';
strcpy(buff, path); if(strlen(path) < MAXSTRPATH) strcpy(buff, path);
if (!(p = strrchr(buff, '@'))) p = buff; if (!(p = strrchr(buff, '@'))) p = buff;
@@ -645,7 +643,7 @@ int connect_nb(socket_t sock, struct sockaddr *addr, socklen_t len)
int err, flag; int err, flag;
flag = fcntl(sock, F_GETFL, 0); flag = fcntl(sock, F_GETFL, 0);
fcntl(sock, F_SETFL, flag|O_NONBLOCK); if(fcntl(sock, F_SETFL, flag|O_NONBLOCK) == -1) trace(1, "fcntl error");
if (connect(sock, addr, len) == -1) if (connect(sock, addr, len) == -1)
{ {
err = errsock(); err = errsock();
@@ -761,7 +759,7 @@ tcpsvr_t *opentcpsvr(const char *path, char *msg)
{ {
tcpsvr_t *tcpsvr, tcpsvr0; // = {{0}}; tcpsvr_t *tcpsvr, tcpsvr0; // = {{0}};
char port[256] = ""; char port[256] = "";
tcpsvr0 = { {0, {0}, 0, {0,0,0,{0}},0,0,0,0}, { 0, {0}, 0,{0,0,0,{0}},0,0,0,0} };
tracet(3, "opentcpsvr: path=%s\n", path); tracet(3, "opentcpsvr: path=%s\n", path);
if (!(tcpsvr = (tcpsvr_t *)malloc(sizeof(tcpsvr_t)))) return NULL; if (!(tcpsvr = (tcpsvr_t *)malloc(sizeof(tcpsvr_t)))) return NULL;
@@ -863,7 +861,7 @@ int accsock(tcpsvr_t *tcpsvr, char *msg)
tcpsvr->cli[i].sock = sock; tcpsvr->cli[i].sock = sock;
if (!setsock(tcpsvr->cli[i].sock, msg)) return 0; if (!setsock(tcpsvr->cli[i].sock, msg)) return 0;
memcpy(&tcpsvr->cli[i].addr, &addr, sizeof(addr)); memcpy(&tcpsvr->cli[i].addr, &addr, sizeof(addr));
strcpy(tcpsvr->cli[i].saddr, inet_ntoa(addr.sin_addr)); if(strlen(inet_ntoa(addr.sin_addr)) < 256) strcpy(tcpsvr->cli[i].saddr, inet_ntoa(addr.sin_addr));
sprintf(msg, "%s", tcpsvr->cli[i].saddr); sprintf(msg, "%s", tcpsvr->cli[i].saddr);
tracet(2, "accsock: connected sock=%d addr=%s\n", tcpsvr->cli[i].sock, tcpsvr->cli[i].saddr); tracet(2, "accsock: connected sock=%d addr=%s\n", tcpsvr->cli[i].sock, tcpsvr->cli[i].saddr);
tcpsvr->cli[i].state = 2; tcpsvr->cli[i].state = 2;
@@ -985,6 +983,7 @@ tcpcli_t *opentcpcli(const char *path, char *msg)
{ {
tcpcli_t *tcpcli, tcpcli0; // = {{0}}; tcpcli_t *tcpcli, tcpcli0; // = {{0}};
char port[256] = ""; char port[256] = "";
tcpcli0 = {{0, {0}, 0, {0,0,0,{0}},0,0,0,0}, 0, 0};
tracet(3, "opentcpcli: path=%s\n", path); tracet(3, "opentcpcli: path=%s\n", path);
@@ -1425,7 +1424,7 @@ void decodeftppath(const char *path, char *addr, char *file, char *user,
topts[2] = 0; /* download time offset (s) */ topts[2] = 0; /* download time offset (s) */
topts[3] = 0; /* retry interval (s) (0: no retry) */ topts[3] = 0; /* retry interval (s) (0: no retry) */
} }
strcpy(buff, path); if(strlen(path) < MAXSTRPATH) strcpy(buff, path);
if ((p = strchr(buff, '/'))) if ((p = strchr(buff, '/')))
{ {
@@ -1550,13 +1549,13 @@ void *ftpthread(void *arg)
/* execute download command */ /* execute download command */
if ((ret = execcmd(cmd))) if ((ret = execcmd(cmd)))
{ {
remove(local); if(remove(local) != 0) trace(1, "Error removing file");
tracet(1, "execcmd error: cmd=%s ret=%d\n", cmd, ret); tracet(1, "execcmd error: cmd=%s ret=%d\n", cmd, ret);
ftp->error = ret; ftp->error = ret;
ftp->state = 3; ftp->state = 3;
return 0; return 0;
} }
remove(errfile); if(remove(errfile) != 0) trace(1, "Error removing file");
/* uncompress downloaded file */ /* uncompress downloaded file */
if ((p = strrchr(local, '.')) && if ((p = strrchr(local, '.')) &&
@@ -1565,8 +1564,8 @@ void *ftpthread(void *arg)
{ {
if (rtk_uncompress(local, tmpfile)) if (rtk_uncompress(local, tmpfile))
{ {
remove(local); if(remove(local) != 0) trace(1, "Error removing file");
strcpy(local, tmpfile); if(strlen(tmpfile) < 1024) strcpy(local, tmpfile);
} }
else else
{ {
@@ -1576,7 +1575,7 @@ void *ftpthread(void *arg)
return 0; return 0;
} }
} }
strcpy(ftp->local, local); if(strlen(local) < 1024 ) strcpy(ftp->local, local);
ftp->state = 2; /* ftp completed */ ftp->state = 2; /* ftp completed */
tracet(3, "ftpthread: complete cmd=%s\n", cmd); tracet(3, "ftpthread: complete cmd=%s\n", cmd);
@@ -1754,7 +1753,7 @@ int stropen(stream_t *stream, int type, int mode, const char *path)
stream->type = type; stream->type = type;
stream->mode = mode; stream->mode = mode;
strcpy(stream->path, path); if(strlen(path) < MAXSTRPATH ) strcpy(stream->path, path);
stream->inb = stream->inr = stream->outb = stream->outr = 0; stream->inb = stream->inr = stream->outb = stream->outr = 0;
stream->tick = tickget(); stream->tick = tickget();
stream->inbt = stream->outbt = 0; stream->inbt = stream->outbt = 0;
@@ -2060,7 +2059,7 @@ void strsettimeout(stream_t *stream, int toinact, int tirecon)
void strsetdir(const char *dir) void strsetdir(const char *dir)
{ {
tracet(3, "strsetdir: dir=%s\n", dir); tracet(3, "strsetdir: dir=%s\n", dir);
strcpy(localdir, dir); if (strlen(dir) < 1024) strcpy(localdir, dir);
} }
@@ -2072,7 +2071,7 @@ void strsetdir(const char *dir)
void strsetproxy(const char *addr) void strsetproxy(const char *addr)
{ {
tracet(3, "strsetproxy: addr=%s\n", addr); tracet(3, "strsetproxy: addr=%s\n", addr);
strcpy(proxyaddr, addr); if(strlen(addr) < 256) strcpy(proxyaddr, addr);
} }

View File

@@ -204,7 +204,7 @@ class kernel_class:
######################################################################## ########################################################################
__file__ = os.path.abspath(__file__) __file__ = os.path.abspath(__file__)
srcdir = os.path.dirname(os.path.dirname(__file__)) srcdir = os.path.dirname(os.path.dirname(__file__))
kernel_files = glob.glob(os.path.join(srcdir, "kernels", "volk_gnsssdr", "*.h")) kernel_files = sorted(glob.glob(os.path.join(srcdir, "kernels", "volk_gnsssdr", "*.h")))
kernels = list(map(kernel_class, kernel_files)) kernels = list(map(kernel_class, kernel_files))
if __name__ == '__main__': if __name__ == '__main__':

View File

@@ -32,14 +32,20 @@
#include <ctime> #include <ctime>
#include <cmath> #include <cmath>
#include <limits> #include <limits>
#include <random>
#include <volk_gnsssdr/volk_gnsssdr.h> #include <volk_gnsssdr/volk_gnsssdr.h>
#include <volk_gnsssdr/volk_gnsssdr_cpu.h> #include <volk_gnsssdr/volk_gnsssdr_cpu.h>
#include <volk_gnsssdr/volk_gnsssdr_common.h> #include <volk_gnsssdr/volk_gnsssdr_common.h>
#include <volk_gnsssdr/volk_gnsssdr_malloc.h> #include <volk_gnsssdr/volk_gnsssdr_malloc.h>
float uniform() { float uniform()
return 2.0f * ((float) rand() / RAND_MAX - 0.5f); // uniformly (-1, 1) {
// Seed with a real random value, if available
std::random_device r;
std::default_random_engine e1(r());
std::uniform_real_distribution<> uniform_dist(-1, 1);
return static_cast<float>(uniform_dist(e1));
} }
template <class t> template <class t>
@@ -51,6 +57,9 @@ void random_floats (t *buf, unsigned n)
void load_random_data(void *data, volk_gnsssdr_type_t type, unsigned int n) void load_random_data(void *data, volk_gnsssdr_type_t type, unsigned int n)
{ {
std::random_device r;
std::default_random_engine e1(r());
std::uniform_real_distribution<float> uniform_dist(-1, 1);
if(type.is_complex) n *= 2; if(type.is_complex) n *= 2;
if(type.is_float) if(type.is_float)
{ {
@@ -63,7 +72,7 @@ void load_random_data(void *data, volk_gnsssdr_type_t type, unsigned int n)
if(type.is_signed) int_max /= 2.0; if(type.is_signed) int_max /= 2.0;
for(unsigned int i = 0; i < n; i++) for(unsigned int i = 0; i < n; i++)
{ {
float scaled_rand = (((float) (rand() - (RAND_MAX/2))) / static_cast<float>((RAND_MAX/2))) * int_max; float scaled_rand = static_cast<float>(uniform_dist(e1)) * int_max;
//man i really don't know how to do this in a more clever way, you have to cast down at some point //man i really don't know how to do this in a more clever way, you have to cast down at some point
switch(type.size) switch(type.size)
{ {

View File

@@ -58,10 +58,10 @@ class volk_gnsssdr_modtool:
else: else:
name = self.get_basename(base); name = self.get_basename(base);
if name == '': if name == '':
hdr_files = glob.glob(os.path.join(base, "kernels/volk_gnsssdr/*.h")); hdr_files = sorted(glob.glob(os.path.join(base, "kernels/volk_gnsssdr/*.h")));
begins = re.compile("(?<=volk_gnsssdr_).*") begins = re.compile("(?<=volk_gnsssdr_).*")
else: else:
hdr_files = glob.glob(os.path.join(base, "kernels/volk_gnsssdr_" + name + "/*.h")); hdr_files = sorted(glob.glob(os.path.join(base, "kernels/volk_gnsssdr_" + name + "/*.h")));
begins = re.compile("(?<=volk_gnsssdr_" + name + "_).*") begins = re.compile("(?<=volk_gnsssdr_" + name + "_).*")
datatypes = []; datatypes = [];
@@ -166,7 +166,7 @@ class volk_gnsssdr_modtool:
open(dest, 'w+').write(outstring); open(dest, 'w+').write(outstring);
# copy orc proto-kernels if they exist # copy orc proto-kernels if they exist
for orcfile in glob.glob(inpath + '/orc/' + top + name + '*.orc'): for orcfile in sorted(glob.glob(inpath + '/kernels/volk_gnsssdr/asm/orc/' + top + name + '*.orc')):
if os.path.isfile(orcfile): if os.path.isfile(orcfile):
instring = open(orcfile, 'r').read(); instring = open(orcfile, 'r').read();
outstring = re.sub(oldvolk_gnsssdr, 'volk_gnsssdr_' + self.my_dict['name'], instring); outstring = re.sub(oldvolk_gnsssdr, 'volk_gnsssdr_' + self.my_dict['name'], instring);
@@ -333,8 +333,3 @@ class volk_gnsssdr_modtool:
write_okay = False write_okay = False
if write_okay: if write_okay:
open(dest, 'a').write(otherline); open(dest, 'a').write(otherline);

View File

@@ -15,7 +15,7 @@
* GNSS-SDR is free software: you can redistribute it and/or modify * GNSS-SDR is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* GNSS-SDR is distributed in the hope that it will be useful, * GNSS-SDR is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -33,7 +33,6 @@
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <gnuradio/io_signature.h> #include <gnuradio/io_signature.h>
//#include <volk/volk.h>
#include <volk_gnsssdr/volk_gnsssdr.h> #include <volk_gnsssdr/volk_gnsssdr.h>
#include "gps_sdr_signal_processing.h" #include "gps_sdr_signal_processing.h"
#include "galileo_e1_signal_processing.h" #include "galileo_e1_signal_processing.h"
@@ -131,6 +130,8 @@ void signal_generator_c::init()
} }
} }
random_ = new gr::random(); random_ = new gr::random();
std::default_random_engine e1(r());
std::uniform_int_distribution<int> uniform_dist(0, RAND_MAX);
} }
@@ -295,7 +296,7 @@ int signal_generator_c::general_work (int noutput_items __attribute__((unused)),
if (ms_counter_[sat] == 0 && data_flag_) if (ms_counter_[sat] == 0 && data_flag_)
{ {
// New random data bit // New random data bit
current_data_bits_[sat] = gr_complex((rand() % 2) == 0 ? 1 : -1, 0); current_data_bits_[sat] = gr_complex((uniform_dist(e1) % 2) == 0 ? 1 : -1, 0);
} }
for (k = delay_samples; k < samples_per_code_[sat]; k++) for (k = delay_samples; k < samples_per_code_[sat]; k++)
@@ -330,7 +331,7 @@ int signal_generator_c::general_work (int noutput_items __attribute__((unused)),
if (ms_counter_[sat]%data_bit_duration_ms_[sat] == 0 && data_flag_) if (ms_counter_[sat]%data_bit_duration_ms_[sat] == 0 && data_flag_)
{ {
// New random data bit // New random data bit
current_data_bit_int_[sat] = (rand()%2) == 0 ? 1 : -1; current_data_bit_int_[sat] = (uniform_dist(e1)%2) == 0 ? 1 : -1;
} }
data_modulation_[sat] = current_data_bit_int_[sat] * (Galileo_E5a_I_SECONDARY_CODE.at((ms_counter_[sat]+delay_sec_[sat]) % 20) == '0' ? 1 : -1); data_modulation_[sat] = current_data_bit_int_[sat] * (Galileo_E5a_I_SECONDARY_CODE.at((ms_counter_[sat]+delay_sec_[sat]) % 20) == '0' ? 1 : -1);
pilot_modulation_[sat] = (Galileo_E5a_Q_SECONDARY_CODE[PRN_[sat] - 1].at((ms_counter_[sat] + delay_sec_[sat]) % 100) == '0' ? 1 : -1); pilot_modulation_[sat] = (Galileo_E5a_Q_SECONDARY_CODE[PRN_[sat] - 1].at((ms_counter_[sat] + delay_sec_[sat]) % 100) == '0' ? 1 : -1);
@@ -362,7 +363,7 @@ int signal_generator_c::general_work (int noutput_items __attribute__((unused)),
if (ms_counter_[sat] == 0 && data_flag_) if (ms_counter_[sat] == 0 && data_flag_)
{ {
// New random data bit // New random data bit
current_data_bits_[sat] = gr_complex((rand() % 2) == 0 ? 1 : -1, 0); current_data_bits_[sat] = gr_complex((uniform_dist(e1) % 2) == 0 ? 1 : -1, 0);
} }
for (k = delay_samples; k < samples_per_code_[sat]; k++) for (k = delay_samples; k < samples_per_code_[sat]; k++)

View File

@@ -33,6 +33,8 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <cstdlib>
#include <random>
#include <boost/scoped_array.hpp> #include <boost/scoped_array.hpp>
#include <gnuradio/random.h> #include <gnuradio/random.h>
#include <gnuradio/block.h> #include <gnuradio/block.h>
@@ -122,6 +124,9 @@ private:
gr_complex* complex_phase_; gr_complex* complex_phase_;
unsigned int work_counter_; unsigned int work_counter_;
std::random_device r;
std::default_random_engine e1;
std::uniform_int_distribution<int> uniform_dist;
public: public:
~signal_generator_c(); // public destructor ~signal_generator_c(); // public destructor
@@ -135,4 +140,3 @@ public:
}; };
#endif /* GNSS_SDR_SIGNAL_GENERATOR_C_H */ #endif /* GNSS_SDR_SIGNAL_GENERATOR_C_H */

View File

@@ -62,7 +62,12 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
{ {
dev_addr["addr"] = device_address_; dev_addr["addr"] = device_address_;
} }
//filter the device by serial number if required (useful for USB devices)
std::string device_serial = configuration->property(role + ".device_serial", empty);
if (empty.compare(device_serial) != 0) // if not empty
{
dev_addr["serial"] = device_serial;
}
subdevice_ = configuration->property(role + ".subdevice", empty); subdevice_ = configuration->property(role + ".subdevice", empty);
clock_source_ = configuration->property(role + ".clock_source", std::string("internal")); clock_source_ = configuration->property(role + ".clock_source", std::string("internal"));
RF_channels_ = configuration->property(role + ".RF_channels", 1); RF_channels_ = configuration->property(role + ".RF_channels", 1);

View File

@@ -103,7 +103,7 @@ gps_l1_ca_telemetry_decoder_cc::gps_l1_ca_telemetry_decoder_cc(
d_decimation_output_factor = 1; d_decimation_output_factor = 1;
d_channel = 0; d_channel = 0;
flag_PLL_180_deg_phase_locked = false; flag_PLL_180_deg_phase_locked = false;
d_preamble_time_samples = 0;
} }

View File

@@ -98,7 +98,7 @@ int sbas_l1_telemetry_decoder_cc::general_work (int noutput_items __attribute__(
d_sample_buf.push_back(current_symbol.Prompt_I); //add new symbol to the symbol queue d_sample_buf.push_back(current_symbol.Prompt_I); //add new symbol to the symbol queue
// store the time stamp of the first sample in the processed sample block // store the time stamp of the first sample in the processed sample block
double sample_stamp = in[0].Tracking_sample_counter/in[0].fs; double sample_stamp = static_cast<double>(in[0].Tracking_sample_counter) / static_cast<double>(in[0].fs);
// decode only if enough samples in buffer // decode only if enough samples in buffer
if(d_sample_buf.size() >= d_block_size) if(d_sample_buf.size() >= d_block_size)
@@ -498,4 +498,3 @@ void sbas_l1_telemetry_decoder_cc::crc_verifier::zerropad_front_and_convert_to_b
<< std::setfill('0') << std::hex << (unsigned int)byte << std::setfill('0') << std::hex << (unsigned int)byte
<< std::setfill(' ') << std::resetiosflags(std::ios::hex); << std::setfill(' ') << std::resetiosflags(std::ios::hex);
} }

View File

@@ -68,6 +68,7 @@ Gps_CNAV_Navigation_Message::Gps_CNAV_Navigation_Message()
satelliteBlock[prn_] = gnss_satellite_.what_block("GPS", prn_); satelliteBlock[prn_] = gnss_satellite_.what_block("GPS", prn_);
} }
b_flag_iono_valid = false; b_flag_iono_valid = false;
b_flag_utc_valid = false;
} }

View File

@@ -64,7 +64,11 @@ DECLARE_string(log_dir);
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
google::ParseCommandLineFlags(&argc, &argv, true); google::ParseCommandLineFlags(&argc, &argv, true);
testing::InitGoogleTest(&argc, argv); try
{
testing::InitGoogleTest(&argc, argv);
}
catch(...) {} // catch the "testing::internal::<unnamed>::ClassUniqueToAlwaysTrue" from gtest
google::InitGoogleLogging(argv[0]); google::InitGoogleLogging(argv[0]);
int res = 0; int res = 0;
try try

View File

@@ -37,6 +37,7 @@
#include <ctime> #include <ctime>
#include <limits> #include <limits>
#include <numeric> #include <numeric>
#include <random>
#include <string> #include <string>
#include <sys/types.h> #include <sys/types.h>
#include <sys/ipc.h> #include <sys/ipc.h>
@@ -515,9 +516,10 @@ TEST_F(TTFF_GPS_L1_CA_Test, ColdStart)
std::cout << "Just finished measurement " << num_measurements << ", which took " << ttff << " seconds." << std::endl; std::cout << "Just finished measurement " << num_measurements << ", which took " << ttff << " seconds." << std::endl;
if(n < FLAGS_num_measurements - 1) if(n < FLAGS_num_measurements - 1)
{ {
std::srand(std::time(0)); // use current time as seed for random generator std::random_device r;
int random_variable = std::rand(); std::default_random_engine e1(r());
float random_variable_0_1 = static_cast<float>(random_variable) / static_cast<float>( RAND_MAX ); std::uniform_real_distribution<float> uniform_dist(0, 1);
float random_variable_0_1 = uniform_dist(e1);
int random_delay_s = static_cast<int>(random_variable_0_1 * 25.0); int random_delay_s = static_cast<int>(random_variable_0_1 * 25.0);
std::cout << "Waiting a random amount of time (from 5 to 30 s) to start a new measurement... " << std::endl; std::cout << "Waiting a random amount of time (from 5 to 30 s) to start a new measurement... " << std::endl;
std::cout << "This time will wait " << random_delay_s + 5 << " s." << std::endl << std::endl; std::cout << "This time will wait " << random_delay_s + 5 << " s." << std::endl << std::endl;
@@ -599,9 +601,10 @@ TEST_F(TTFF_GPS_L1_CA_Test, HotStart)
std::cout << "Just finished measurement " << num_measurements << ", which took " << ttff << " seconds." << std::endl; std::cout << "Just finished measurement " << num_measurements << ", which took " << ttff << " seconds." << std::endl;
if(n < FLAGS_num_measurements - 1) if(n < FLAGS_num_measurements - 1)
{ {
std::srand(std::time(0)); // use current time as seed for random generator std::random_device r;
int random_variable = std::rand(); std::default_random_engine e1(r());
float random_variable_0_1 = static_cast<float>(random_variable) / static_cast<float>( RAND_MAX ); std::uniform_real_distribution<float> uniform_dist(0, 1);
float random_variable_0_1 = uniform_dist(e1);
int random_delay_s = static_cast<int>(random_variable_0_1 * 25.0); int random_delay_s = static_cast<int>(random_variable_0_1 * 25.0);
std::cout << "Waiting a random amount of time (from 5 to 30 s) to start new measurement... " << std::endl; std::cout << "Waiting a random amount of time (from 5 to 30 s) to start new measurement... " << std::endl;
std::cout << "This time will wait " << random_delay_s + 5 << " s." << std::endl << std::endl; std::cout << "This time will wait " << random_delay_s + 5 << " s." << std::endl << std::endl;

View File

@@ -16,7 +16,7 @@
* GNSS-SDR is free software: you can redistribute it and/or modify * GNSS-SDR is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* GNSS-SDR is distributed in the hope that it will be useful, * GNSS-SDR is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -31,6 +31,7 @@
#include <ctime> #include <ctime>
#include <complex> #include <complex>
#include <random>
#include <thread> #include <thread>
#include <volk_gnsssdr/volk_gnsssdr.h> #include <volk_gnsssdr/volk_gnsssdr.h>
#include "cpu_multicorrelator.h" #include "cpu_multicorrelator.h"
@@ -100,9 +101,12 @@ TEST(CPU_multicorrelator_test, MeasureExecutionTime)
// generate local reference (1 sample per chip) // generate local reference (1 sample per chip)
gps_l1_ca_code_gen_complex(d_ca_code, 1, 0); gps_l1_ca_code_gen_complex(d_ca_code, 1, 0);
// generate inut signal // generate inut signal
std::random_device r;
std::default_random_engine e1(r());
std::uniform_real_distribution<float> uniform_dist(0, 1);
for (int n=0;n<2*d_vector_length;n++) for (int n=0;n<2*d_vector_length;n++)
{ {
in_cpu[n]=std::complex<float>(static_cast <float> (rand())/static_cast<float>(RAND_MAX),static_cast <float> (rand())/static_cast<float>(RAND_MAX)); in_cpu[n]=std::complex<float>(uniform_dist(e1), uniform_dist(e1));
} }
for (int n=0;n<max_threads;n++) for (int n=0;n<max_threads;n++)

View File

@@ -32,6 +32,7 @@
#define FRONT_END_CAL_VERSION "0.0.1" #define FRONT_END_CAL_VERSION "0.0.1"
#endif #endif
#include <stdlib.h>
#include <ctime> #include <ctime>
#include <exception> #include <exception>
#include <memory> #include <memory>
@@ -372,8 +373,15 @@ int main(int argc, char** argv)
gr::block_sptr source; gr::block_sptr source;
source = gr::blocks::file_source::make(sizeof(gr_complex), "tmp_capture.dat"); source = gr::blocks::file_source::make(sizeof(gr_complex), "tmp_capture.dat");
boost::shared_ptr<FrontEndCal_msg_rx> msg_rx;
boost::shared_ptr<FrontEndCal_msg_rx> msg_rx = FrontEndCal_msg_rx_make(); try
{
msg_rx = FrontEndCal_msg_rx_make();
}
catch(const std::exception & e)
{
std::cout << "Failure connecting the message port system: " << e.what() << std::endl; exit(0);
}
//gr_basic_block_sptr head = gr_make_head(sizeof(gr_complex), nsamples); //gr_basic_block_sptr head = gr_make_head(sizeof(gr_complex), nsamples);
//gr_head_sptr head_sptr = boost::dynamic_pointer_cast<gr_head>(head); //gr_head_sptr head_sptr = boost::dynamic_pointer_cast<gr_head>(head);