swift
receiversampleprovider.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_CORE_AFV_AUDIO_RECEIVERSAMPLEPROVIDER_H
7 #define SWIFT_CORE_AFV_AUDIO_RECEIVERSAMPLEPROVIDER_H
8 
9 #include <QtGlobal>
10 
18 
19 namespace swift::core::afv::audio
20 {
23  {
24  quint16 transceiverID {};
25  QStringList receivingCallsigns;
26  };
27 
30  {
31  Q_OBJECT
32 
33  public:
35  static const QStringList &getLogCategories();
36 
38  CReceiverSampleProvider(const QAudioFormat &audioFormat, quint16 id, int voiceInputNumber,
39  QObject *parent = nullptr);
40 
42  void setBypassEffects(bool value);
43 
45  void setFrequency(const uint &frequencyHz);
46 
48  int activeCallsigns() const;
49 
51  double volume() const { return 1.0; }
52 
55  bool getMute() const { return m_mute; }
56  void setMute(bool value);
58 
60  int readSamples(QVector<float> &samples, qint64 count) override;
61 
64  void addOpusSamples(const IAudioDto &audioDto, uint frequency, float distanceRatio);
65  void addSilentSamples(const IAudioDto &audioDto, uint frequency, float distanceRatio);
67 
69  quint16 getId() const { return m_id; }
70 
73  const QString &getReceivingCallsignsString() const { return m_receivingCallsignsString; }
74 
77  const swift::misc::aviation::CCallsignSet &getReceivingCallsigns() { return m_receivingCallsigns; }
78 
80  uint getFrequencyHz() const;
81 
83  bool setGainRatio(double gainRatio) { return m_volume->setGainRatio(gainRatio); }
84 
87  void logVoiceInputs(const QString &prefix = {}, qint64 timeCheckOffsetMs = -1);
88 
89  signals:
92 
93  private:
94  uint m_frequencyHz = 122800000;
95  bool m_mute = false;
96  const double m_clickGain = 1.0;
97  const double m_blockToneGain = 0.10;
98 
99  quint16 m_id;
101 
104  swift::sound::sample_provider::CSinusGenerator *m_blockTone = nullptr;
105  QVector<CCallsignSampleProvider *> m_voiceInputs;
106  qint64 m_lastLogMessage = -1;
107 
108  QString m_receivingCallsignsString;
109  swift::misc::aviation::CCallsignSet m_receivingCallsigns;
110 
111  bool m_doClickWhenAppropriate = false;
112  bool m_doBlockWhenAppropriate = false;
113  int m_lastNumberOfInUseInputs = 0;
114  };
115 } // namespace swift::core::afv::audio
116 
118 
119 #endif // SWIFT_CORE_AFV_AUDIO_RECEIVERSAMPLEPROVIDER_H
void addSilentSamples(const IAudioDto &audioDto, uint frequency, float distanceRatio)
Add samples.
void setFrequency(const uint &frequencyHz)
Frequency.
bool setGainRatio(double gainRatio)
Set gain ratio.
void receivingCallsignsChanged(const TransceiverReceivingCallsignsChangedArgs &args)
Receving callsigns have changed.
const QString & getReceivingCallsignsString() const
Receiving callsigns as string.
int activeCallsigns() const
Number of active callsign.
int readSamples(QVector< float > &samples, qint64 count)
Read samples.
CReceiverSampleProvider(const QAudioFormat &audioFormat, quint16 id, int voiceInputNumber, QObject *parent=nullptr)
Ctor.
static const QStringList & getLogCategories()
Log.categories.
void addOpusSamples(const IAudioDto &audioDto, uint frequency, float distanceRatio)
Add samples.
const swift::misc::aviation::CCallsignSet & getReceivingCallsigns()
Receiving callsigns.
Value object for a set of callsigns.
Definition: callsignset.h:26
bool setGainRatio(double gainRatio)
Gain ratio, value a amplitude need to be multiplied with.