mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +08:00
fixes #123 by displaying the Audio test in the GUI
* added methods to get results in context * added signal to indicate audio test completed * updated GUI to display results * changed test run methods to non-const to be consistent with voice lib * Logic in GUI to avoid parallel / interfering tests * Fixed wrong Q_ASSERT message and QTimer::singleShot in voice_vatlib.cpp
This commit is contained in:
@@ -22,8 +22,12 @@ namespace BlackCore
|
||||
{
|
||||
Q_ASSERT(runtime);
|
||||
|
||||
// 1. Init by "network driver"
|
||||
// 1. Init by "voice driver"
|
||||
this->m_voice = new CVoiceVatlib(this);
|
||||
|
||||
// 2. Signal / slots
|
||||
connect(this->m_voice, &CVoiceVatlib::micTestFinished, this, &CContextVoice::audioTestCompleted);
|
||||
connect(this->m_voice, &CVoiceVatlib::squelchTestFinished, this, &CContextVoice::audioTestCompleted);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -229,7 +233,7 @@ namespace BlackCore
|
||||
/*
|
||||
* Mic test.
|
||||
*/
|
||||
void CContextVoice::runMicrophoneTest() const
|
||||
void CContextVoice::runMicrophoneTest()
|
||||
{
|
||||
Q_ASSERT(this->m_voice);
|
||||
this->m_voice->runMicrophoneTest();
|
||||
@@ -238,11 +242,29 @@ namespace BlackCore
|
||||
/*
|
||||
* Squelch test.
|
||||
*/
|
||||
void CContextVoice::runSquelchTest() const
|
||||
void CContextVoice::runSquelchTest()
|
||||
{
|
||||
Q_ASSERT(this->m_voice);
|
||||
this->m_voice->runSquelchTest();
|
||||
}
|
||||
|
||||
/*
|
||||
* Microphone test
|
||||
*/
|
||||
QString CContextVoice::getMicrophoneTestResult() const
|
||||
{
|
||||
Q_ASSERT(this->m_voice);
|
||||
return this->m_voice->micTestResultAsString();
|
||||
}
|
||||
|
||||
/*
|
||||
* Squelch value
|
||||
*/
|
||||
double CContextVoice::getSquelchValue() const
|
||||
{
|
||||
Q_ASSERT(this->m_voice);
|
||||
return static_cast<double>(this->m_voice->inputSquelch());
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -159,12 +159,22 @@ namespace BlackCore
|
||||
/*!
|
||||
* \copydoc IContextVoice::runMicrophoneTest()
|
||||
*/
|
||||
virtual void runMicrophoneTest() const;
|
||||
virtual void runMicrophoneTest();
|
||||
|
||||
/*!
|
||||
* \copydoc IContextVoice::runSquelchTest()
|
||||
*/
|
||||
virtual void runSquelchTest() const;
|
||||
virtual void runSquelchTest();
|
||||
|
||||
/*!
|
||||
* \copydoc IContextVoice::getMicrophoneTestResult()
|
||||
*/
|
||||
virtual QString getMicrophoneTestResult() const;
|
||||
|
||||
/*!
|
||||
* \copydoc IContextVoice::getSquelchValue()
|
||||
*/
|
||||
virtual double getSquelchValue() const;
|
||||
|
||||
private:
|
||||
CVoiceVatlib *m_voice; //!< underlying voice lib
|
||||
|
||||
@@ -26,9 +26,10 @@ namespace BlackCore
|
||||
/*
|
||||
* Workaround for signals, not working without, but why?
|
||||
*/
|
||||
void IContextVoice::relaySignals(const QString & /** serviceName **/, QDBusConnection & /** connection **/)
|
||||
void IContextVoice::relaySignals(const QString &serviceName, QDBusConnection &connection)
|
||||
{
|
||||
// void
|
||||
connection.connect(serviceName, IContextVoice::ServicePath(), IContextVoice::InterfaceName(),
|
||||
"audioTestCompleted", this, SIGNAL(audioTestCompleted()));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -154,19 +155,35 @@ namespace BlackCore
|
||||
/*
|
||||
* MIC test
|
||||
*/
|
||||
void IContextVoice::runMicrophoneTest() const
|
||||
void IContextVoice::runMicrophoneTest()
|
||||
{
|
||||
this->m_dBusInterface->callDBus(QLatin1Literal("runMicrophoneTest"));
|
||||
}
|
||||
|
||||
/*
|
||||
* MIC test
|
||||
* Mic test
|
||||
*/
|
||||
void IContextVoice::runSquelchTest() const
|
||||
void IContextVoice::runSquelchTest()
|
||||
{
|
||||
this->m_dBusInterface->callDBus(QLatin1Literal("runSquelchTest"));
|
||||
}
|
||||
|
||||
/*
|
||||
* Test result
|
||||
*/
|
||||
QString IContextVoice::getMicrophoneTestResult() const
|
||||
{
|
||||
return this->m_dBusInterface->callDBusRet<QString>(QLatin1Literal("getMicrophoneTestResult"));
|
||||
}
|
||||
|
||||
/*
|
||||
* Squelch value
|
||||
*/
|
||||
double IContextVoice::getSquelchValue() const
|
||||
{
|
||||
return this->m_dBusInterface->callDBusRet<double>(QLatin1Literal("getSquelchValue"));
|
||||
}
|
||||
|
||||
/*
|
||||
* Volumes, by COM systems
|
||||
*/
|
||||
|
||||
@@ -201,13 +201,28 @@ namespace BlackCore
|
||||
/*!
|
||||
* \brief Microphone test
|
||||
*/
|
||||
virtual void runMicrophoneTest() const;
|
||||
virtual void runMicrophoneTest();
|
||||
|
||||
/*!
|
||||
* \brief Microphone test
|
||||
*/
|
||||
virtual void runSquelchTest() const;
|
||||
virtual void runSquelchTest();
|
||||
|
||||
/*!
|
||||
* \brief Get the microphone test result
|
||||
*/
|
||||
virtual QString getMicrophoneTestResult() const;
|
||||
|
||||
/*!
|
||||
* \brief Get the squelch value
|
||||
*/
|
||||
virtual double getSquelchValue() const;
|
||||
|
||||
signals:
|
||||
/*!
|
||||
* \brief Audio test has been completed
|
||||
*/
|
||||
void audioTestCompleted();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::setInputDevice(const BlackMisc::Voice::CAudioDevice &device)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
if (!device.isValid())
|
||||
{
|
||||
qWarning() << "Cannot set invalid input device!";
|
||||
@@ -142,7 +142,7 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::setOutputDevice(const BlackMisc::Voice::CAudioDevice &device)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
if (!device.isValid())
|
||||
{
|
||||
qWarning() << "Cannot set invalid output device!";
|
||||
@@ -170,7 +170,7 @@ namespace BlackCore
|
||||
*/
|
||||
BlackMisc::Voice::CVoiceRoomList CVoiceVatlib::getComVoiceRoomsWithAudioStatus() const
|
||||
{
|
||||
Q_ASSERT_X(m_voiceRooms.size() == 2, "CVoiceClientVatlib", "Wrong numer of COM voice rooms");
|
||||
Q_ASSERT_X(m_voiceRooms.size() == 2, "CVoiceVatlib", "Wrong numer of COM voice rooms");
|
||||
CVoiceRoomList voiceRooms;
|
||||
if (m_voice->IsValid() && m_voice->IsSetup())
|
||||
{
|
||||
@@ -208,8 +208,8 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::switchAudioOutput(const ComUnit comUnit, bool enable)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceClientVatlib", "Room index out of bounds!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceVatlib", "Room index out of bounds!");
|
||||
try
|
||||
{
|
||||
m_voice->SetOutoutState(static_cast<qint32>(comUnit), 0, enable);
|
||||
@@ -226,7 +226,7 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::runSquelchTest()
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -246,19 +246,18 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::runMicrophoneTest()
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
|
||||
try
|
||||
{
|
||||
m_voice->BeginMicTest();
|
||||
// Start the timer only if no exception was thrown before
|
||||
QTimer::singleShot(5000, this, SLOT(onEndMicTest()));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
this->exceptionDispatcher(Q_FUNC_INFO);
|
||||
}
|
||||
|
||||
// Start the timer only if no exception was thrown before
|
||||
QTimer::singleShot(5000, this, SLOT(onEndMicTest()));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -321,8 +320,8 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::joinVoiceRoom(const ComUnit comUnit, const BlackMisc::Voice::CVoiceRoom &voiceRoom)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceClientVatlib", "Room index out of bounds!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceVatlib", "Room index out of bounds!");
|
||||
|
||||
if (!voiceRoom.isValid())
|
||||
{
|
||||
@@ -354,8 +353,8 @@ namespace BlackCore
|
||||
CVoiceRoom vr = this->voiceRoomForUnit(comUnit);
|
||||
if (!vr.isConnected()) return;
|
||||
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceClientVatlib", "Room index out of bounds!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceVatlib", "Room index out of bounds!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -383,8 +382,8 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::setRoomOutputVolume(const ComUnit comUnit, const qint32 volume)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceClientVatlib", "Room index out of bounds!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceVatlib", "Room index out of bounds!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -401,8 +400,8 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::startTransmitting(const ComUnit comUnit)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceClientVatlib", "Room index out of bounds!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceVatlib", "Room index out of bounds!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -419,8 +418,8 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::stopTransmitting(const ComUnit comUnit)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceClientVatlib", "Room index out of bounds!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsRoomValid(static_cast<qint32>(comUnit)), "CVoiceVatlib", "Room index out of bounds!");
|
||||
try
|
||||
{
|
||||
m_voice->SetMicState(static_cast<qint32>(comUnit), false);
|
||||
@@ -486,7 +485,7 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::timerEvent(QTimerEvent *)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -504,7 +503,7 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::onEndFindSquelch()
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -520,7 +519,7 @@ namespace BlackCore
|
||||
|
||||
void CVoiceVatlib::onEndMicTest()
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -538,7 +537,7 @@ namespace BlackCore
|
||||
*/
|
||||
void CVoiceVatlib::onUserJoinedLeft(const ComUnit comUnit)
|
||||
{
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceClientVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_voice->IsValid() && m_voice->IsSetup(), "CVoiceVatlib", "Cvatlib_Voice_Simple invalid or not setup!");
|
||||
Q_ASSERT_X(m_temporaryUserRoomIndex == CVoiceVatlib::InvalidRoomIndex, "CVoiceClientVatlib::onUserJoinedLeft", "Cannot list users for two rooms in parallel!");
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user