[hamradio-commits] [gnss-sdr] 112/126: adding message types 1006 and 1008
Carles Fernandez
carles_fernandez-guest at moszumanska.debian.org
Sat Dec 26 18:38:07 UTC 2015
This is an automated email from the git hooks/post-receive script.
carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.
commit 0f6bc1054e727140cad04447a4a3dc73a4b7e0b9
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date: Wed Dec 23 14:05:00 2015 +0100
adding message types 1006 and 1008
---
src/core/system_parameters/rtcm.cc | 119 ++++++++++++++++++++++++++++++++++++-
src/core/system_parameters/rtcm.h | 20 +++++++
2 files changed, 138 insertions(+), 1 deletion(-)
diff --git a/src/core/system_parameters/rtcm.cc b/src/core/system_parameters/rtcm.cc
index 0aaf8a1..d8109fb 100644
--- a/src/core/system_parameters/rtcm.cc
+++ b/src/core/system_parameters/rtcm.cc
@@ -914,6 +914,109 @@ std::string Rtcm::print_MT1005_test()
return Rtcm::build_message(mt1005.to_string());
}
+// ********************************************************
+//
+// MESSAGE TYPE 1006 (STATION DESCRIPTION PLUS HEIGHT INFORMATION)
+//
+// ********************************************************
+
+std::string Rtcm::print_MT1006( unsigned int ref_id, double ecef_x, double ecef_y, double ecef_z, bool gps, bool glonass, bool galileo, bool non_physical, bool single_oscillator, unsigned int quarter_cycle_indicator, double height)
+{
+ unsigned int msg_number = 1006;
+ std::bitset<1> DF001_;
+
+ Rtcm::set_DF002(msg_number);
+ Rtcm::set_DF003(ref_id);
+ Rtcm::set_DF021();
+ Rtcm::set_DF022(gps);
+ Rtcm::set_DF023(glonass);
+ Rtcm::set_DF024(galileo);
+ DF141 = std::bitset<1>(non_physical);
+ DF001_ = std::bitset<1>("0");
+ Rtcm::set_DF025(ecef_x);
+ DF142 = std::bitset<1>(single_oscillator);
+ Rtcm::set_DF026(ecef_y);
+ DF364 = std::bitset<2>(quarter_cycle_indicator);
+ Rtcm::set_DF027(ecef_z);
+ Rtcm::set_DF028(height);
+
+ std::string data = DF002.to_string() +
+ DF003.to_string() +
+ DF021.to_string() +
+ DF022.to_string() +
+ DF023.to_string() +
+ DF024.to_string() +
+ DF141.to_string() +
+ DF025.to_string() +
+ DF142.to_string() +
+ DF001_.to_string() +
+ DF026.to_string() +
+ DF364.to_string() +
+ DF027.to_string() +
+ DF028.to_string();
+
+ std::string message = build_message(data);
+ return message;
+}
+
+
+// ********************************************************
+//
+// MESSAGE TYPE 1008 (ANTENNA DESCRIPTOR & SERIAL NUMBER)
+//
+// ********************************************************
+std::string Rtcm::print_MT1008(unsigned int ref_id, const std::string & antenna_descriptor, unsigned int antenna_setup_id, const std::string & antenna_serial_number)
+{
+ unsigned int msg_number = 1008;
+ std::bitset<12> DF002_ = std::bitset<12>(msg_number);
+ Rtcm::set_DF003(ref_id);
+ std::string ant_descriptor = antenna_descriptor;
+ unsigned int len = ant_descriptor.length();
+ if (len > 31)
+ {
+ ant_descriptor = ant_descriptor.substr(0, 31);
+ len = 31;
+ }
+ DF029 = std::bitset<8>(len);
+
+ std::string DF030_str_;
+ for(auto it = ant_descriptor.begin(); it != ant_descriptor.end(); it++)
+ {
+ char c = *it;
+ std::bitset<8> character = std::bitset<8>(c);
+ DF030_str_ += character.to_string();
+ }
+
+ Rtcm::set_DF031(antenna_setup_id);
+
+ std::string ant_sn(antenna_serial_number);
+ unsigned int len2 = ant_sn.length();
+ if (len2 > 31)
+ {
+ ant_sn = ant_sn.substr(0, 31);
+ len2 = 31;
+ }
+ DF032 = std::bitset<8>(len2);
+
+ std::string DF033_str_;
+ for(auto it = ant_sn.begin(); it != ant_sn.end(); it++)
+ {
+ char c = *it;
+ std::bitset<8> character = std::bitset<8>(c);
+ DF033_str_ += character.to_string();
+ }
+
+ std::string data = DF002_.to_string() +
+ DF003.to_string() +
+ DF029.to_string() +
+ DF030_str_ +
+ DF031.to_string() +
+ DF032.to_string() +
+ DF033_str_;
+
+ std::string message = build_message(data);
+ return message;
+}
// ********************************************************
@@ -2899,7 +3002,7 @@ int Rtcm::set_DF026(double antenna_ECEF_Y_m)
}
-int Rtcm::set_DF027(double antenna_ECEF_Z_m)
+int Rtcm::set_DF027(double antenna_ECEF_Z_m)
{
long long int ant_ref_z = static_cast<long long int>(std::round( antenna_ECEF_Z_m * 10000));
DF027 = std::bitset<38>(ant_ref_z);
@@ -2907,6 +3010,20 @@ int Rtcm::set_DF027(double antenna_ECEF_Z_m)
}
+int Rtcm::set_DF028(double height)
+{
+ unsigned int h_ = static_cast<unsigned int>(std::round( height * 10000));
+ DF028 = std::bitset<16>(h_);
+ return 0;
+}
+
+
+int Rtcm::set_DF031(unsigned int antenna_setup_id)
+{
+ DF031 = std::bitset<8>(antenna_setup_id);
+ return 0;
+}
+
int Rtcm::set_DF071(const Gps_Ephemeris & gps_eph)
{
unsigned int iode = static_cast<unsigned int>(gps_eph.d_IODE_SF2);
diff --git a/src/core/system_parameters/rtcm.h b/src/core/system_parameters/rtcm.h
index 203a9c2..304b49b 100644
--- a/src/core/system_parameters/rtcm.h
+++ b/src/core/system_parameters/rtcm.h
@@ -118,6 +118,16 @@ public:
int read_MT1005(const std::string & message, unsigned int & ref_id, double & ecef_x, double & ecef_y, double & ecef_z, bool & gps, bool & glonass, bool & galileo);
/*!
+ * \brief Prints message type 1006 (Stationary Antenna Reference Point, with Height Information)
+ */
+ std::string print_MT1006(unsigned int ref_id, double ecef_x, double ecef_y, double ecef_z, bool gps, bool glonass, bool galileo, bool non_physical, bool single_oscillator, unsigned int quarter_cycle_indicator, double height);
+
+ /*!
+ * \brief Prints message type 1008 (Antenna Descriptor & Serial Number)
+ */
+ std::string print_MT1008(unsigned int ref_id, const std::string & antenna_descriptor, unsigned int antenna_setup_id, const std::string & antenna_serial_number);
+
+ /*!
* \brief Prints message type 1019 (GPS Ephemeris), should be broadcast in the event that
* the IODC does not match the IODE, and every 2 minutes.
*/
@@ -914,6 +924,16 @@ private:
std::bitset<38> DF027;
int set_DF027(double antenna_ECEF_Z_m);
+ std::bitset<16> DF028;
+ int set_DF028(double height);
+
+ std::bitset<8> DF029;
+
+ std::bitset<8> DF031;
+ int set_DF031(unsigned int antenna_setup_id);
+
+ std::bitset<8> DF032;
+
// Contents of GPS Satellite Ephemeris Data, Message Type 1019
std::bitset<8> DF071;
int set_DF071(const Gps_Ephemeris & gps_eph);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git
More information about the pkg-hamradio-commits
mailing list