#pragma once #include #include #include #include namespace AudioVideoManagement { struct SVCCNRHELPER_EXPORT RadioCircuit { RadioCircuit() = default; virtual ~RadioCircuit() = default; QString name; FrequencyBand freqBand {FrequencyBand_def::VHF}; int radioStationId {0}; virtual bool isValid() const = 0; virtual QJsonObject toJson() const = 0; virtual QString toString() const = 0; virtual int frequencySetDataId() const = 0; }; struct SVCCNRHELPER_EXPORT RadioCircuitHF : public RadioCircuit { ModulationType modulationType {ModulationType::AM}; ChannelSpacingHF channelSpacing {ChannelSpacingHF::CS_100_Hz}; int frequency {0}; // Valid: 20.000-30.0000 [Hz] int squelch {0}; // Valid: 0..9 static const int FREQ_MIN = 2000000; static const int FREQ_MAX = 29975000; static const int SQUELCH_MIN = 1; static const int SQUELCH_MAX = 9; RadioCircuitHF() : RadioCircuit() {} bool isValid() const; QJsonObject toJson() const; static RadioCircuitHF* fromJson(const QJsonObject &obj); QString toString() const; int frequencySetDataId() const { return 0; } }; struct SVCCNRHELPER_EXPORT RadioCircuitUHF: public RadioCircuit { ModulationType modulationType {ModulationType::AM}; ChannelSpacing channelSpacing {ChannelSpacing::CS_25_00_kHz}; int frequency {0}; // Valid: 225.000.000 - 399.975.000 [Hz] int squelchDB {0}; // Valid: 0 (off), 6-20 [dB] bool clipper {false}; bool agc {false}; static const int FREQ_MIN = 225000000; static const int FREQ_MAX = 399975000; static const int SQUELCH_MIN = 6; static const int SQUELCH_MAX = 20; RadioCircuitUHF() : RadioCircuit() {} bool isValid() const; QJsonObject toJson() const; static RadioCircuitUHF* fromJson(const QJsonObject &obj); QString toString() const; int frequencySetDataId() const { return 0; } }; struct SVCCNRHELPER_EXPORT RadioCircuitVHF: public RadioCircuit { RcOperatingMode operatingMode {RcOperatingMode_def::FixedFreqEncNone}; int freqSetDataId {0}; bool pilotTone {false}; RadioCircuitVHF(RcOperatingMode _operatingMode, int _frequencySetDataId, bool _pilotTone) : RadioCircuit() , operatingMode(_operatingMode) , freqSetDataId(_frequencySetDataId) , pilotTone(_pilotTone) {} RadioCircuitVHF() = default; int frequencySetDataId() const { return freqSetDataId; } bool isValid() const {return freqSetDataId > 0; } QJsonObject toJson() const; static RadioCircuitVHF* fromJson(const QJsonObject &obj); QString toString() const; }; bool SVCCNRHELPER_EXPORT isReadOnly(const std::string& json); QVector SVCCNRHELPER_EXPORT fromJson(const std::string& json); QSet SVCCNRHELPER_EXPORT frequencySetDataIds(const std::string &frequencyPlanDataProperties); QJsonObject SVCCNRHELPER_EXPORT frequencyPlanningJson(QJsonObject obj, const QString &name, FrequencyBand freqBand, int radioStationId); bool SVCCNRHELPER_EXPORT isAkwMode(RcOperatingMode mode); } // namespace AudioVideoManagement