/*! * \file gnss_block_factory.h * \brief Interface of a factory that returns smart pointers to GNSS blocks. * \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com * Luis Esteve, 2011. luis(at)epsilon-formacion.com * Javier Arribas, 2011. jarribas(at)cttc.es * Carles Fernandez-Prades, 2014. cfernandez(at)cttc.es * * This class encapsulates the complexity behind the instantiation * of GNSS blocks. * * ------------------------------------------------------------------------- * * Copyright (C) 2010-2019 (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. * * SPDX-License-Identifier: GPL-3.0-or-later * * ------------------------------------------------------------------------- */ #ifndef GNSS_SDR_BLOCK_FACTORY_H_ #define GNSS_SDR_BLOCK_FACTORY_H_ #include "concurrent_queue.h" #include #include // for unique_ptr, shared_ptr #include // for string #include // for vector class ConfigurationInterface; class GNSSBlockInterface; class AcquisitionInterface; class TrackingInterface; class TelemetryDecoderInterface; /*! * \brief Class that produces all kinds of GNSS blocks */ class GNSSBlockFactory { public: GNSSBlockFactory() = default; ~GNSSBlockFactory() = default; std::unique_ptr GetSignalSource(const std::shared_ptr& configuration, const std::shared_ptr> queue, int ID = -1); // NOLINT(performance-unnecessary-value-param) std::unique_ptr GetSignalConditioner(const std::shared_ptr& configuration, int ID = -1); std::unique_ptr>> GetChannels(const std::shared_ptr& configuration, const std::shared_ptr> queue); // NOLINT(performance-unnecessary-value-param) std::unique_ptr GetObservables(const std::shared_ptr& configuration); std::unique_ptr GetPVT(const std::shared_ptr& configuration); /*! * \brief Returns the block with the required configuration and implementation */ std::unique_ptr GetBlock(const std::shared_ptr& configuration, const std::string& role, const std::string& implementation, unsigned int in_streams, unsigned int out_streams, const std::shared_ptr> queue = nullptr); // NOLINT(performance-unnecessary-value-param) private: std::unique_ptr GetChannel_1C(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_2S(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_1B(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_5X(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_L5(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_1G(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_2G(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_B1(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetChannel_B3(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, const std::shared_ptr>& queue); std::unique_ptr GetAcqBlock( const std::shared_ptr& configuration, const std::string& role, const std::string& implementation, unsigned int in_streams, unsigned int out_streams); std::unique_ptr GetTrkBlock( const std::shared_ptr& configuration, const std::string& role, const std::string& implementation, unsigned int in_streams, unsigned int out_streams); std::unique_ptr GetTlmBlock( const std::shared_ptr& configuration, const std::string& role, const std::string& implementation, unsigned int in_streams, unsigned int out_streams); }; #endif // GNSS_SDR_BLOCK_FACTORY_H_