2014-03-23 09:43:16 +00:00
/*!
* \ file rtcm_printer . h
* \ brief Interface of a RTCM 3.2 printer for GNSS - SDR
* This class provides a implementation of a subset of the RTCM Standard 10403.2
* for Differential GNSS Services
*
* \ author Carles Fernandez - Prades , 2014. cfernandez ( at ) cttc . es
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*
2015-01-08 18:49:59 +00:00
* Copyright ( C ) 2010 - 2015 ( see AUTHORS file for a list of contributors )
2014-03-23 09:43:16 +00:00
*
* GNSS - SDR is a software defined Global Navigation
* Satellite Systems receiver
*
* This file is part of GNSS - SDR .
*
* 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
* the Free Software Foundation , either version 3 of the License , or
2015-01-08 18:49:59 +00:00
* ( at your option ) any later version .
2014-03-23 09:43:16 +00:00
*
* GNSS - SDR is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* 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/>.
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
# ifndef GNSS_SDR_RTCM_PRINTER_H_
# define GNSS_SDR_RTCM_PRINTER_H_
# include <fstream> // std::ofstream
# include <iostream> // std::cout
2015-11-22 08:44:58 +00:00
# include <memory> // std::shared_ptr
2015-11-21 12:01:50 +00:00
# include "rtcm.h"
2014-03-23 09:43:16 +00:00
/*!
* \ brief This class provides a implementation of a subset of the RTCM Standard 10403.2 messages
*/
class Rtcm_Printer
{
public :
/*!
* \ brief Default constructor .
*/
Rtcm_Printer ( std : : string filename , bool flag_rtcm_tty_port , std : : string rtcm_dump_filename ) ;
/*!
* \ brief Default destructor .
*/
~ Rtcm_Printer ( ) ;
2015-11-21 12:01:50 +00:00
bool Print_Rtcm_M1001 ( const Gps_Ephemeris & gps_eph , double obs_time , const std : : map < int , Gnss_Synchro > & pseudoranges ) ;
bool Print_Rtcm_M1019 ( const Gps_Ephemeris & gps_eph ) ; //<! GPS Ephemeris, should be broadcast in the event that the IODC does not match the IODE, and every 2 minutes.
bool Print_Rtcm_M1045 ( const Galileo_Ephemeris & gal_eph ) ; //<! Galileo Ephemeris, should be broadcast every 2 minutes
std : : string print_M1005_test ( ) ; //<! For testing purposes
2014-03-23 09:43:16 +00:00
private :
std : : string rtcm_filename ; // String with the RTCM log filename
std : : ofstream rtcm_file_descriptor ; // Output file stream for RTCM log file
std : : string rtcm_devname ;
int rtcm_dev_descriptor ; // RTCM serial device descriptor (i.e. COM port)
int init_serial ( std : : string serial_device ) ; //serial port control
void close_serial ( ) ;
2015-11-21 12:01:50 +00:00
std : : shared_ptr < Rtcm > rtcm ;
bool Print_Message ( std : : string message ) ;
2014-03-23 09:43:16 +00:00
} ;
# endif