[AFV] Using the aliased frequencies can be enabled/disabled

* flag
* "dot command"
* register audio "dot commands" for audio
This commit is contained in:
Klaus Basan
2019-11-16 03:31:19 +01:00
committed by Mat Sutcliffe
parent 84cfec81e7
commit efee7968dc
4 changed files with 42 additions and 7 deletions

View File

@@ -1030,6 +1030,9 @@ namespace BlackCore
// void rounding issues from float/double // void rounding issues from float/double
quint32 roundedFrequencyHz = static_cast<quint32>(qRound(frequencyHz / 1000.0)) * 1000; quint32 roundedFrequencyHz = static_cast<quint32>(qRound(frequencyHz / 1000.0)) * 1000;
// disabled?
if (!m_enableAliased) { return roundedFrequencyHz; }
// change to aliased frequency if needed // change to aliased frequency if needed
{ {
QMutexLocker lock(&m_mutex); QMutexLocker lock(&m_mutex);

View File

@@ -164,6 +164,13 @@ namespace BlackCore
QSet<quint16> getEnabledTransceivers() const; QSet<quint16> getEnabledTransceivers() const;
//! @} //! @}
//! Aliased stations enabled?
//! \threadsafe
//! @{
bool isAliasedStationsEnabled() const { return m_enableAliased; }
void enableAliasedStations(bool enabled) { m_enableAliased = enabled; }
//! @}
//! Update frequency //! Update frequency
//! \threadsafe //! \threadsafe
//! @{ //! @{
@@ -345,10 +352,11 @@ namespace BlackCore
static const QVector<quint16> &allTransceiverIds() { static const QVector<quint16> transceiverIds{0, 1}; return transceiverIds; } static const QVector<quint16> &allTransceiverIds() { static const QVector<quint16> transceiverIds{0, 1}; return transceiverIds; }
std::atomic_int m_connectMismatches { 0 }; std::atomic_int m_connectMismatches { 0 };
std::atomic_bool m_isStarted { false }; std::atomic_bool m_isStarted { false };
std::atomic_bool m_loopbackOn { false }; std::atomic_bool m_loopbackOn { false };
std::atomic_bool m_winCoInitialized { false }; //!< Windows only CoInitializeEx std::atomic_bool m_enableAliased { true };
std::atomic_bool m_integratedComUnit { false }; //!< is COM unit sychronized, integrated std::atomic_bool m_winCoInitialized { false }; //!< Windows only CoInitializeEx
std::atomic_bool m_integratedComUnit { false }; //!< is COM unit sychronized, integrated?
QDateTime m_startDateTimeUtc; QDateTime m_startDateTimeUtc;

View File

@@ -17,6 +17,7 @@
#include "blackcore/context/contextaudioproxy.h" #include "blackcore/context/contextaudioproxy.h"
#include "blackmisc/simplecommandparser.h" #include "blackmisc/simplecommandparser.h"
#include "blackmisc/dbusserver.h" #include "blackmisc/dbusserver.h"
#include "blackmisc/stringutils.h"
#include "blackmisc/verify.h" #include "blackmisc/verify.h"
#include "blackmisc/icons.h" #include "blackmisc/icons.h"
#include "blackconfig/buildconfig.h" #include "blackconfig/buildconfig.h"
@@ -90,7 +91,8 @@ namespace BlackCore
{ {
".vol", ".volume", // output volume ".vol", ".volume", // output volume
".mute", // mute ".mute", // mute
".unmute" // unmute ".unmute", // unmute
".aliased"
}); });
parser.parse(commandLine); parser.parse(commandLine);
if (!parser.isKnownCommand()) { return false; } if (!parser.isKnownCommand()) { return false; }
@@ -107,8 +109,17 @@ namespace BlackCore
} }
else if (parser.commandStartsWith("vol") && parser.countParts() > 1) else if (parser.commandStartsWith("vol") && parser.countParts() > 1)
{ {
int v = parser.toInt(1); const int v = parser.toInt(1);
this->setVoiceOutputVolume(v); this->setVoiceOutputVolume(v);
return true;
}
else if (afvClient() && parser.matchesCommand(".aliased") && parser.countParts() > 1)
{
const bool enable = parser.toBool(1, true);
afvClient()->enableAliasedStations(enable);
CLogMessage(this).info(u"Aliased stations are: %1") << boolToOnOff(enable);
return true;
} }
return false; return false;
} }
@@ -117,6 +128,8 @@ namespace BlackCore
IContextAudio(mode, runtime), IContextAudio(mode, runtime),
CIdentifiable(this) CIdentifiable(this)
{ {
CContextAudioBase::registerHelp();
if (CContextAudioBase::isNoAudioSet()) if (CContextAudioBase::isNoAudioSet())
{ {
CLogMessage(this).info(u"Voice client disabled"); CLogMessage(this).info(u"Voice client disabled");

View File

@@ -33,6 +33,7 @@
#include "blackmisc/network/userlist.h" #include "blackmisc/network/userlist.h"
#include "blackmisc/input/actionhotkeydefs.h" #include "blackmisc/input/actionhotkeydefs.h"
#include "blackmisc/genericdbusinterface.h" #include "blackmisc/genericdbusinterface.h"
#include "blackmisc/simplecommandparser.h"
#include "blackmisc/identifiable.h" #include "blackmisc/identifiable.h"
#include "blackmisc/identifier.h" #include "blackmisc/identifier.h"
@@ -226,6 +227,16 @@ namespace BlackCore
//! No audio? //! No audio?
static bool isNoAudioSet(); static bool isNoAudioSet();
//! Register the commands
static void registerHelp()
{
if (BlackMisc::CSimpleCommandParser::registered("BlackCore::Context::CContextAudioBase")) { return; }
BlackMisc::CSimpleCommandParser::registerCommand({".mute", "mute audio"});
BlackMisc::CSimpleCommandParser::registerCommand({".unmute", "unmute audio"});
BlackMisc::CSimpleCommandParser::registerCommand({".vol volume", "volume 0..100"});
BlackMisc::CSimpleCommandParser::registerCommand({".aliased on|off", "aliased HF frequencies"});
}
// -------- parts which can run in core and GUI, referring to local voice client ------------ // -------- parts which can run in core and GUI, referring to local voice client ------------
public slots: public slots:
@@ -238,13 +249,13 @@ namespace BlackCore
//! .mute mute BlackCore::Context::CContextAudioBase //! .mute mute BlackCore::Context::CContextAudioBase
//! .unmute unmute BlackCore::Context::CContextAudioBase //! .unmute unmute BlackCore::Context::CContextAudioBase
//! .vol .volume volume 0..100 set volume BlackCore::Context::CContextAudioBase //! .vol .volume volume 0..100 set volume BlackCore::Context::CContextAudioBase
//! .aliased on|off aliased stations BlackCore::Context::CContextAudioBase
//! </pre> //! </pre>
virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override; virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override;
//! \endcond //! \endcond
// ------------- DBus --------------- // ------------- DBus ---------------
// ------------ local signals ------- // ------------ local signals -------
signals: signals:
//! Audio volume changed //! Audio volume changed