Program Listing for File gnss_receiver.h¶
↰ Return to documentation for file (include/lupnt/measurements/gnss_receiver.h
)
#pragma once
#include <string>
#include <tuple>
#include <vector>
#include "gnss_channel.h"
#include "gnss_measurement.h"
#include "lupnt/measurements/comm_device.h"
#include "lupnt/measurements/transmission.h"
namespace lupnt {
class GnssChannel;
class GnssReceiver : public Receiver {
public:
Antenna antenna_;
GnssReceiverParam gnssr_param_;
std::string receiver_name_; // Name of the receiver system
std::string attitude_mode_ = "NONE"; // Attitude mode of the receiver
GnssReceiver(std::string receiver_name) : receiver_name_(receiver_name) {
antenna_ = Antenna(receiver_name_);
InitializeReceiverParams();
};
// Receiver Gain Calculators
void SetReceiverAttitudeMode(std::string mode) { attitude_mode_ = mode; };
// Receiver Gain Calculators
std::vector<Vec3d> GetReceiverOrientation(double t, Vec3d& r_rx_gcrf, std::string mode);
double GetReceiverAntennaGain(double t, Vec3d r_tx_gcrf, Vec3d r_rx_gcrf) override;
void InitializeReceiverParams();
void SetCN0Threshold(double CN0threshold) { rx_param_.CN0threshold = CN0threshold; };
// Generate Measurement
GnssMeasurement GetMeasurement(double t);
// Getters and Setters
// Override channel getters and setters
inline Ptr<Agent> GetAgent() const override { return agent; };
inline void SetAgent(const Ptr<Agent>& agent) override { this->agent = agent; };
inline Ptr<GnssChannel> GetGnssChannel() { return gnss_channel_; };
inline void SetChannel(const Ptr<GnssChannel>& channel) { gnss_channel_ = channel; };
double GetAntennaGain(Vec3d direction) { return antenna_.GetAntennaGain(direction); };
double GetAntennaGain(double theta, double phi) { return antenna_.GetAntennaGain(theta, phi); };
private:
Ptr<Agent> agent; // Agent that owns the device
Ptr<GnssChannel> gnss_channel_;
};
} // namespace lupnt