mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-07-05 11:32:56 +00:00
Fix OpenCL test if the OpenCL Platform is not ready
This commit is contained in:
parent
9318fe540d
commit
de79147def
@ -144,6 +144,12 @@ public:
|
|||||||
|
|
||||||
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{};
|
||||||
|
|
||||||
|
inline bool opencl_ready() const
|
||||||
|
{
|
||||||
|
bool ready = this->acquisition_cc_->opencl_ready();
|
||||||
|
return ready;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ConfigurationInterface* configuration_;
|
ConfigurationInterface* configuration_;
|
||||||
pcps_opencl_acquisition_cc_sptr acquisition_cc_;
|
pcps_opencl_acquisition_cc_sptr acquisition_cc_;
|
||||||
|
@ -222,7 +222,6 @@ public:
|
|||||||
d_channel = channel;
|
d_channel = channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set channel fsm associated to this acquisition instance
|
* \brief Set channel fsm associated to this acquisition instance
|
||||||
*/
|
*/
|
||||||
@ -258,6 +257,16 @@ public:
|
|||||||
d_doppler_step = doppler_step;
|
d_doppler_step = doppler_step;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool opencl_ready() const
|
||||||
|
{
|
||||||
|
bool ready = false;
|
||||||
|
if (d_opencl == 0)
|
||||||
|
{
|
||||||
|
ready = true;
|
||||||
|
}
|
||||||
|
return ready;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Parallel Code Phase Search Acquisition signal processing.
|
* \brief Parallel Code Phase Search Acquisition signal processing.
|
||||||
*/
|
*/
|
||||||
|
@ -494,50 +494,57 @@ TEST_F(GpsL1CaPcpsOpenClAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
|
|
||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
if (!acquisition->opencl_ready())
|
||||||
boost::shared_ptr<GenSignalSource> signal_source;
|
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
|
||||||
}) << "Failure connecting the blocks of acquisition test.";
|
|
||||||
|
|
||||||
// i = 0 --> satellite in acquisition is visible
|
|
||||||
// i = 1 --> satellite in acquisition is not visible
|
|
||||||
for (unsigned int i = 0; i < 2; i++)
|
|
||||||
{
|
{
|
||||||
init();
|
std::cout << "OpenCL Platform is not ready." << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ASSERT_NO_THROW({
|
||||||
|
boost::shared_ptr<GenSignalSource> signal_source;
|
||||||
|
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
||||||
|
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
||||||
|
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
||||||
|
signal_source->connect(top_block);
|
||||||
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
}) << "Failure connecting the blocks of acquisition test.";
|
||||||
|
|
||||||
if (i == 0)
|
// i = 0 --> satellite in acquisition is visible
|
||||||
|
// i = 1 --> satellite in acquisition is not visible
|
||||||
|
for (unsigned int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
gnss_synchro.PRN = 10; // This satellite is visible
|
init();
|
||||||
}
|
|
||||||
else if (i == 1)
|
|
||||||
{
|
|
||||||
gnss_synchro.PRN = 20; // This satellite is not visible
|
|
||||||
}
|
|
||||||
|
|
||||||
acquisition->set_local_code();
|
if (i == 0)
|
||||||
|
|
||||||
start_queue();
|
|
||||||
|
|
||||||
EXPECT_NO_THROW({
|
|
||||||
top_block->run(); // Start threads and wait
|
|
||||||
}) << "Failure running the top_block.";
|
|
||||||
|
|
||||||
if (i == 0)
|
|
||||||
{
|
|
||||||
EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
|
|
||||||
if (message == 1)
|
|
||||||
{
|
{
|
||||||
EXPECT_EQ(static_cast<unsigned int>(1), correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
|
gnss_synchro.PRN = 10; // This satellite is visible
|
||||||
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
gnss_synchro.PRN = 20; // This satellite is not visible
|
||||||
|
}
|
||||||
|
|
||||||
|
acquisition->set_local_code();
|
||||||
|
|
||||||
|
start_queue();
|
||||||
|
|
||||||
|
EXPECT_NO_THROW({
|
||||||
|
top_block->run(); // Start threads and wait
|
||||||
|
}) << "Failure running the top_block.";
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
EXPECT_EQ(1, message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS.";
|
||||||
|
if (message == 1)
|
||||||
|
{
|
||||||
|
EXPECT_EQ(static_cast<unsigned int>(1), correct_estimation_counter) << "Acquisition failure. Incorrect parameters estimation.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (i == 1)
|
|
||||||
{
|
|
||||||
EXPECT_EQ(2, message) << "Acquisition failure. Expected message: 2=ACQ FAIL.";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -575,52 +582,58 @@ TEST_F(GpsL1CaPcpsOpenClAcquisitionGSoC2013Test, ValidationOfResultsProbabilitie
|
|||||||
}) << "Failure connecting acquisition to the top_block.";
|
}) << "Failure connecting acquisition to the top_block.";
|
||||||
|
|
||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
if (!acquisition->opencl_ready())
|
||||||
ASSERT_NO_THROW({
|
|
||||||
boost::shared_ptr<GenSignalSource> signal_source;
|
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
|
||||||
}) << "Failure connecting the blocks of acquisition test.";
|
|
||||||
|
|
||||||
std::cout << "Probability of false alarm (target) = " << 0.1 << std::endl;
|
|
||||||
|
|
||||||
// i = 0 --> satellite in acquisition is visible (prob of detection and prob of detection with wrong estimation)
|
|
||||||
// i = 1 --> satellite in acquisition is not visible (prob of false detection)
|
|
||||||
for (unsigned int i = 0; i < 2; i++)
|
|
||||||
{
|
{
|
||||||
init();
|
std::cout << "OpenCL Platform is not ready." << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ASSERT_NO_THROW({
|
||||||
|
boost::shared_ptr<GenSignalSource> signal_source;
|
||||||
|
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
||||||
|
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
||||||
|
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
||||||
|
signal_source->connect(top_block);
|
||||||
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
}) << "Failure connecting the blocks of acquisition test.";
|
||||||
|
|
||||||
if (i == 0)
|
std::cout << "Probability of false alarm (target) = " << 0.1 << std::endl;
|
||||||
|
|
||||||
|
// i = 0 --> satellite in acquisition is visible (prob of detection and prob of detection with wrong estimation)
|
||||||
|
// i = 1 --> satellite in acquisition is not visible (prob of false detection)
|
||||||
|
for (unsigned int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
gnss_synchro.PRN = 10; // This satellite is visible
|
init();
|
||||||
}
|
|
||||||
else if (i == 1)
|
|
||||||
{
|
|
||||||
gnss_synchro.PRN = 20; // This satellite is not visible
|
|
||||||
}
|
|
||||||
|
|
||||||
acquisition->set_local_code();
|
if (i == 0)
|
||||||
|
{
|
||||||
|
gnss_synchro.PRN = 10; // This satellite is visible
|
||||||
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
gnss_synchro.PRN = 20; // This satellite is not visible
|
||||||
|
}
|
||||||
|
|
||||||
start_queue();
|
acquisition->set_local_code();
|
||||||
|
|
||||||
EXPECT_NO_THROW({
|
start_queue();
|
||||||
top_block->run(); // Start threads and wait
|
|
||||||
}) << "Failure running the top_block.";
|
|
||||||
|
|
||||||
if (i == 0)
|
EXPECT_NO_THROW({
|
||||||
{
|
top_block->run(); // Start threads and wait
|
||||||
std::cout << "Estimated probability of detection = " << Pd << std::endl;
|
}) << "Failure running the top_block.";
|
||||||
std::cout << "Estimated probability of false alarm (satellite present) = " << Pfa_p << std::endl;
|
|
||||||
std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
|
if (i == 0)
|
||||||
}
|
{
|
||||||
else if (i == 1)
|
std::cout << "Estimated probability of detection = " << Pd << std::endl;
|
||||||
{
|
std::cout << "Estimated probability of false alarm (satellite present) = " << Pfa_p << std::endl;
|
||||||
std::cout << "Estimated probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
|
std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
|
||||||
std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
std::cout << "Estimated probability of false alarm (satellite absent) = " << Pfa_a << std::endl;
|
||||||
|
std::cout << "Mean acq time = " << mean_acq_time_us << " microseconds." << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user