1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-26 23:13:15 +00:00
gnss-sdr/src/algorithms/channel/libs/gps_l1_ca_channel_fsm.h
Carles Fernandez ca960b96e9 Now the software recognizes the satellite block to which the SV belongs.
Experimental storage of ephemeris in RINEX NAV file.

Some double variables are now int.

The nav message header and data Rinex printer handles both versions 2.11 and 3.01.

Change of filename: rinex_2_1_printer is now rinex_printer.

Class rinex_printer is now Rinex_Printer.

git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@117 64b25241-fba3-4117-9849-534c7e92360d
2012-01-10 08:43:58 +00:00

94 lines
2.9 KiB
C++

/*!
* \file gps_l1_ca_channel_fsm.h
* \brief Interface of the State Machine for channel using boost::statechart
* \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
*
*
* -------------------------------------------------------------------------
*
* Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors)
*
* 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
* at your option) any later version.
*
* 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_GPS_L1_CA_CHANNEL_FSM_H
#define GNSS_SDR_GPS_L1_CA_CHANNEL_FSM_H
#include <boost/statechart/state_machine.hpp>
#include <boost/statechart/simple_state.hpp>
#include <boost/statechart/state.hpp>
#include <boost/statechart/transition.hpp>
#include <boost/statechart/custom_reaction.hpp>
#include <boost/mpl/list.hpp>
#include <queue>
#include <boost/thread/mutex.hpp>
#include <boost/thread/thread.hpp>
#include "acquisition_interface.h"
#include "tracking_interface.h"
#include "telemetry_decoder_interface.h"
#include <gnuradio/gr_msg_queue.h>
#include <iostream>
#include <cstring>
namespace sc = boost::statechart;
namespace mpl = boost::mpl;
struct gps_channel_idle_fsm_S0;
struct gps_channel_acquiring_fsm_S1;
struct gps_channel_tracking_fsm_S2;
struct gps_channel_waiting_fsm_S3;
/*!
* \brief This class implements a State Machine for channel using boost::statechart
*/
class GpsL1CaChannelFsm: public sc::state_machine<GpsL1CaChannelFsm,gps_channel_idle_fsm_S0>
{
public:
GpsL1CaChannelFsm();
GpsL1CaChannelFsm(AcquisitionInterface *acquisition);
void set_acquisition(AcquisitionInterface *acquisition);
void set_tracking(TrackingInterface *tracking);
void set_queue(gr_msg_queue_sptr queue);
void set_channel(unsigned int channel);
void start_acquisition();
void start_tracking();
void request_satellite();
//FSM EVENTS
void Event_gps_start_acquisition();
void Event_gps_valid_acquisition();
void Event_gps_failed_acquisition_repeat();
void Event_gps_failed_acquisition_no_repeat();
void Event_gps_failed_tracking();
private:
AcquisitionInterface *acq_;
TrackingInterface *trk_;
TelemetryDecoderInterface *nav_;
gr_msg_queue_sptr queue_;
unsigned int channel_;
};
#endif /*GNSS_SDR_GPS_L1_CA_CHANNEL_FSM_H*/