101 lines
3.5 KiB
C++
Executable File
101 lines
3.5 KiB
C++
Executable File
#pragma once
|
|
#include <QJsonDocument>
|
|
#include <AudioVideoManagement/avm_enums.hpp>
|
|
#include <CombatNetRadio/svccnrhelper_export.h>
|
|
#include <CombatNetRadio/Helper/cnr_frequency_planning_helper.h>
|
|
|
|
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<RadioCircuit*> SVCCNRHELPER_EXPORT fromJson(const std::string& json);
|
|
QSet<int> 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
|