1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-10-21 18:47:41 +00:00

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

This commit is contained in:
Marc Majoral
2019-03-27 12:38:43 +01:00
16 changed files with 547 additions and 98 deletions

View File

@@ -892,6 +892,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
if ((valid_obs + glo_valid_obs) > 3)
{
int result = 0;
int sat = 0;
nav_t nav_data;
nav_data.eph = eph_data;
nav_data.geph = geph_data;
@@ -903,6 +904,15 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
i[0] = SPEED_OF_LIGHT / FREQ1; // L1/E1
i[1] = SPEED_OF_LIGHT / FREQ2; // L2
i[2] = SPEED_OF_LIGHT / FREQ5; // L5/E5
// Keep update on sat number
sat++;
if (sat > NSYSGPS + NSYSGLO + NSYSGAL + NSYSQZS and sat < NSYSGPS + NSYSGLO + NSYSGAL + NSYSQZS + NSYSBDS)
{
i[0] = SPEED_OF_LIGHT / FREQ1_BDS; // B1I
i[1] = SPEED_OF_LIGHT / FREQ3_BDS; // B3I
i[2] = SPEED_OF_LIGHT / FREQ5; // L5/E5
}
}
result = rtkpos(&rtk_, obs_data, valid_obs + glo_valid_obs, &nav_data);

View File

@@ -26,7 +26,7 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
* along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
*
* -------------------------------------------------------------------------
*/
@@ -57,7 +57,6 @@ BeidouB1iPcpsAcquisition::BeidouB1iPcpsAcquisition(
DLOG(INFO) << "role " << role;
item_type_ = configuration_->property(role + ".item_type", default_item_type);
int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000);
fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
acq_parameters.fs_in = fs_in_;

View File

@@ -43,12 +43,17 @@
#include "rtklib_rtkcmn.h"
#include <cmath>
#include <cstdint>
#include <string>
obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro, int week, int band)
{
// Get signal type info to adjust code type based on constellation
std::string sig_ = gnss_synchro.Signal;
rtklib_obs.D[band] = gnss_synchro.Carrier_Doppler_hz;
rtklib_obs.P[band] = gnss_synchro.Pseudorange_m;
rtklib_obs.L[band] = gnss_synchro.Carrier_phase_rads / PI_2;
switch (band)
{
case 0:
@@ -86,6 +91,16 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro
break;
case 'C':
rtklib_obs.sat = gnss_synchro.PRN + NSATGPS + NSATGLO + NSATGAL + NSATQZS;
// Update signal code
if (sig_ == "B1")
{
rtklib_obs.code[band] = static_cast<unsigned char>(CODE_L2I);
}
else if (sig_ == "B3")
{
rtklib_obs.code[band] = static_cast<unsigned char>(CODE_L6I);
}
break;
default:

View File

@@ -210,7 +210,7 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
}
}
/* fL1^2 / fL2(orL5)^2 . See IS-GPS-200, p. 103 and Galileo ICD p. 48 */
if (sys == SYS_GPS or sys == SYS_GAL or sys == SYS_GLO)
if (sys == SYS_GPS or sys == SYS_GAL or sys == SYS_GLO or sys == SYS_BDS)
{
gamma_ = std::pow(lam[j], 2.0) / std::pow(lam[i], 2.0);
}
@@ -282,7 +282,7 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
PC = P2 + P1_P2 - ISCl5i;
}
}
else if (sys == SYS_GAL or sys == SYS_GLO) // Gal. E5a single freq.
else if (sys == SYS_GAL or sys == SYS_GLO or sys == SYS_BDS) // Gal. E5a single freq.
{
P2 += P2_C2; /* C2->P2 */
PC = P2 - gamma_ * P1_P2 / (1.0 - gamma_);
@@ -306,7 +306,7 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
PC = P1 + P1_P2;
}
}
else if (sys == SYS_GAL or sys == SYS_GLO) /* E1 + E5a */
else if (sys == SYS_GAL or sys == SYS_GLO or sys == SYS_BDS) /* E1 + E5a */
{
P1 += P1_C1;
P2 += P2_C2;

View File

@@ -48,7 +48,7 @@ class BeidouB3iTelemetryDecoder : public TelemetryDecoderInterface
{
public:
BeidouB3iTelemetryDecoder(ConfigurationInterface *configuration,
const std::string& role, unsigned int in_streams,
const std::string &role, unsigned int in_streams,
unsigned int out_streams);
virtual ~BeidouB3iTelemetryDecoder();
@@ -72,7 +72,11 @@ public:
telemetry_decoder_->set_channel(channel);
}
inline void reset() override { return; }
inline void reset() override
{
telemetry_decoder_->reset();
return;
}
inline size_t item_size() override { return 0; }

View File

@@ -56,6 +56,7 @@ beidou_b3i_make_telemetry_decoder_gs(const Gnss_Satellite &satellite,
new beidou_b3i_telemetry_decoder_gs(satellite, dump));
}
beidou_b3i_telemetry_decoder_gs::beidou_b3i_telemetry_decoder_gs(
const Gnss_Satellite &satellite, bool dump)
: gr::block("beidou_b3i_telemetry_decoder_gs",
@@ -64,6 +65,9 @@ beidou_b3i_telemetry_decoder_gs::beidou_b3i_telemetry_decoder_gs(
{
// Ephemeris data port out
this->message_port_register_out(pmt::mp("telemetry"));
// Control messages to tracking block
this->message_port_register_out(pmt::mp("telemetry_to_trk"));
// initialize internal vars
d_dump = dump;
d_satellite = Gnss_Satellite(satellite.get_system(), satellite.get_PRN());
@@ -396,6 +400,7 @@ void beidou_b3i_telemetry_decoder_gs::set_satellite(
}
}
void beidou_b3i_telemetry_decoder_gs::set_channel(int32_t channel)
{
d_channel = channel;

View File

@@ -60,7 +60,10 @@ public:
~beidou_b3i_telemetry_decoder_gs(); //!< Class destructor
void set_satellite(const Gnss_Satellite &satellite); //!< Set satellite PRN
void set_channel(int channel); //!< Set receiver's channel
inline void reset()
{
return;
}
/*!
* \brief This is where all signal processing takes place
*/