mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-08-16 23:28:53 +00:00
Add work on OSNMA receiver
This commit is contained in:
@@ -105,6 +105,7 @@ galileo_telemetry_decoder_gs::galileo_telemetry_decoder_gs(
|
||||
d_enable_reed_solomon_inav(false),
|
||||
d_valid_timetag(false),
|
||||
d_E6_TOW_set(false),
|
||||
d_there_are_e1_channels(conf.there_are_e1_channels),
|
||||
d_there_are_e6_channels(conf.there_are_e6_channels)
|
||||
{
|
||||
// prevent telemetry symbols accumulation in output buffers
|
||||
@@ -114,12 +115,19 @@ galileo_telemetry_decoder_gs::galileo_telemetry_decoder_gs(
|
||||
// Control messages to tracking block
|
||||
this->message_port_register_out(pmt::mp("telemetry_to_trk"));
|
||||
|
||||
if (d_there_are_e1_channels)
|
||||
{
|
||||
// register OSM out
|
||||
this->message_port_register_out(pmt::mp("OSNMA_from_TLM"));
|
||||
}
|
||||
|
||||
if (d_there_are_e6_channels)
|
||||
{
|
||||
// register Gal E6 messages HAS out
|
||||
this->message_port_register_out(pmt::mp("E6_HAS_from_TLM"));
|
||||
// register TOW from map out
|
||||
this->message_port_register_out(pmt::mp("TOW_from_TLM"));
|
||||
|
||||
// register TOW to TLM input
|
||||
this->message_port_register_in(pmt::mp("TOW_to_TLM"));
|
||||
// handler for input port
|
||||
@@ -503,8 +511,26 @@ void galileo_telemetry_decoder_gs::decode_INAV_word(float *page_part_symbols, in
|
||||
if (d_band == '1' && d_inav_nav.have_new_nma() == true)
|
||||
{
|
||||
const std::shared_ptr<OSNMA_msg> tmp_obj = std::make_shared<OSNMA_msg>(d_inav_nav.get_osnma_msg());
|
||||
// this->message_port_pub(pmt::mp("whatever"), pmt::make_any(tmp_obj));
|
||||
std::cout << "Galileo OSNMA message received in channel " << d_channel << " from satellite " << d_satellite << std::endl;
|
||||
this->message_port_pub(pmt::mp("OSNMA_from_TLM"), pmt::make_any(tmp_obj));
|
||||
uint8_t nma_status = (tmp_obj->hkroot[0] & 0b11000000) << 6;
|
||||
std::string nma_status_string;
|
||||
if (nma_status == 0)
|
||||
{
|
||||
nma_status_string = std::string("(Reserved mode)");
|
||||
}
|
||||
else if (nma_status == 1)
|
||||
{
|
||||
nma_status_string = std::string("(Test mode)");
|
||||
}
|
||||
else if (nma_status == 2)
|
||||
{
|
||||
nma_status_string = std::string("(Operational mode)");
|
||||
}
|
||||
else if (nma_status == 3)
|
||||
{
|
||||
nma_status_string = std::string("(Do not use mode)");
|
||||
}
|
||||
std::cout << "Galileo OSNMA message " << nma_status_string << " received in channel " << d_channel << " from satellite " << d_satellite << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -151,6 +151,7 @@ private:
|
||||
bool d_enable_reed_solomon_inav;
|
||||
bool d_valid_timetag;
|
||||
bool d_E6_TOW_set;
|
||||
bool d_there_are_e1_channels;
|
||||
bool d_there_are_e6_channels;
|
||||
};
|
||||
|
||||
|
||||
@@ -30,6 +30,11 @@ void Tlm_Conf::SetFromConfiguration(const ConfigurationInterface *configuration,
|
||||
const std::string default_crc_stats_dumpname("telemetry_crc_stats");
|
||||
dump_crc_stats_filename = configuration->property(role + ".dump_crc_stats_filename", default_crc_stats_dumpname);
|
||||
enable_navdata_monitor = configuration->property("NavDataMonitor.enable_monitor", false);
|
||||
if (configuration->property("Channels_1B.count", 0) > 0)
|
||||
{
|
||||
there_are_e1_channels = true;
|
||||
}
|
||||
|
||||
if (configuration->property("Channels_E6.count", 0) > 0)
|
||||
{
|
||||
there_are_e6_channels = true;
|
||||
|
||||
@@ -42,6 +42,7 @@ public:
|
||||
bool enable_reed_solomon{false}; // for INAV message in Galileo E1B
|
||||
bool dump_crc_stats{false}; // telemetry CRC statistics
|
||||
bool enable_navdata_monitor{false};
|
||||
bool there_are_e1_channels{false};
|
||||
bool there_are_e6_channels{false};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user