Add local volume control for UDP connections.

merge-requests/2/head
Phil Taylor 2021-03-22 18:53:34 +00:00
rodzic 54daaccdfa
commit c2091e9c4e
9 zmienionych plików z 31 dodań i 8 usunięć

Wyświetl plik

@ -827,8 +827,9 @@ bool audioHandler::init(const quint8 bits, const quint8 channels, const quint16
return isInitialized; return isInitialized;
} }
void audioHandler::setVolume(quint8 volume) void audioHandler::setVolume(unsigned char volume)
{ {
qDebug(logAudio()) << (isInput ? "Input" : "Output") << " setVolume: " << volume;
if (audioOutput != Q_NULLPTR) { if (audioOutput != Q_NULLPTR) {
audioOutput->setVolume((qreal)(volume / 255.0)); audioOutput->setVolume((qreal)(volume / 255.0));
} }

Wyświetl plik

@ -46,7 +46,6 @@ public:
bool setDevice(QAudioDeviceInfo deviceInfo); bool setDevice(QAudioDeviceInfo deviceInfo);
void start(); void start();
void setVolume(quint8 volume);
void flush(); void flush();
void stop(); void stop();
@ -64,6 +63,7 @@ public slots:
private slots: private slots:
void notified(); void notified();
void stateChanged(QAudio::State state); void stateChanged(QAudio::State state);
void setVolume(unsigned char volume);
signals: signals:
void audioMessage(QString message); void audioMessage(QString message);

Wyświetl plik

@ -130,6 +130,7 @@ void rigCommander::commSetup(unsigned char rigCivAddr, udpPreferences prefs)
connect(ptty, SIGNAL(haveDataFromPort(QByteArray)), udp, SLOT(receiveDataFromUserToRig(QByteArray))); connect(ptty, SIGNAL(haveDataFromPort(QByteArray)), udp, SLOT(receiveDataFromUserToRig(QByteArray)));
connect(this, SIGNAL(haveChangeLatency(quint16)), udp, SLOT(changeLatency(quint16))); connect(this, SIGNAL(haveChangeLatency(quint16)), udp, SLOT(changeLatency(quint16)));
connect(this, SIGNAL(haveSetVolume(unsigned char)), udp, SLOT(setVolume(unsigned char)));
// Connect for errors/alerts // Connect for errors/alerts
connect(udp, SIGNAL(haveNetworkError(QString, QString)), this, SLOT(handleSerialPortError(QString, QString))); connect(udp, SIGNAL(haveNetworkError(QString, QString)), this, SLOT(handleSerialPortError(QString, QString)));
@ -1597,7 +1598,12 @@ void rigCommander::setRfGain(unsigned char level)
void rigCommander::setAfGain(unsigned char level) void rigCommander::setAfGain(unsigned char level)
{ {
sendLevelCmd(0x01, level); if (udp == Q_NULLPTR) {
sendLevelCmd(0x01, level);
}
else {
emit haveSetVolume(level);
}
} }
void rigCommander::setRefAdjustCourse(unsigned char level) void rigCommander::setRefAdjustCourse(unsigned char level)

Wyświetl plik

@ -216,6 +216,7 @@ signals:
void haveDataForServer(QByteArray outData); void haveDataForServer(QByteArray outData);
void haveAudioData(audioPacket data); void haveAudioData(audioPacket data);
void initUdpHandler(); void initUdpHandler();
void haveSetVolume(unsigned char level);
private: private:
void setup(); void setup();

Wyświetl plik

@ -119,6 +119,11 @@ void udpHandler::changeLatency(quint16 value)
emit haveChangeLatency(value); emit haveChangeLatency(value);
} }
void udpHandler::setVolume(unsigned char value)
{
emit haveSetVolume(value);
}
void udpHandler::receiveFromCivStream(QByteArray data) void udpHandler::receiveFromCivStream(QByteArray data)
{ {
emit haveDataFromPort(data); emit haveDataFromPort(data);
@ -312,7 +317,8 @@ void udpHandler::dataReceived()
QObject::connect(civ, SIGNAL(receive(QByteArray)), this, SLOT(receiveFromCivStream(QByteArray))); QObject::connect(civ, SIGNAL(receive(QByteArray)), this, SLOT(receiveFromCivStream(QByteArray)));
QObject::connect(audio, SIGNAL(haveAudioData(audioPacket)), this, SLOT(receiveAudioData(audioPacket))); QObject::connect(audio, SIGNAL(haveAudioData(audioPacket)), this, SLOT(receiveAudioData(audioPacket)));
QObject::connect(this, SIGNAL(haveChangeLatency(quint16)), audio, SLOT(changeLatency(quint16))); QObject::connect(this, SIGNAL(haveChangeLatency(quint16)), audio, SLOT(changeLatency(quint16)));
QObject::connect(this, SIGNAL(haveSetVolume(unsigned char)), audio, SLOT(setVolume(unsigned char)));
streamOpened = true; streamOpened = true;
@ -695,6 +701,7 @@ udpAudio::udpAudio(QHostAddress local, QHostAddress ip, quint16 audioPort, quint
qRegisterMetaType<audioPacket>(); qRegisterMetaType<audioPacket>();
connect(this, SIGNAL(haveAudioData(audioPacket)), rxaudio, SLOT(incomingAudio(audioPacket))); connect(this, SIGNAL(haveAudioData(audioPacket)), rxaudio, SLOT(incomingAudio(audioPacket)));
connect(this, SIGNAL(haveChangeLatency(quint16)), rxaudio, SLOT(changeLatency(quint16))); connect(this, SIGNAL(haveChangeLatency(quint16)), rxaudio, SLOT(changeLatency(quint16)));
connect(this, SIGNAL(haveSetVolume(unsigned char)), rxaudio, SLOT(setVolume(unsigned char)));
connect(rxAudioThread, SIGNAL(finished()), rxaudio, SLOT(deleteLater())); connect(rxAudioThread, SIGNAL(finished()), rxaudio, SLOT(deleteLater()));
if (txCodec == 0x01) if (txCodec == 0x01)
@ -815,7 +822,10 @@ void udpAudio::changeLatency(quint16 value)
emit haveChangeLatency(value); emit haveChangeLatency(value);
} }
void udpAudio::setVolume(unsigned char value)
{
emit haveSetVolume(value);
}
void udpAudio::dataReceived() void udpAudio::dataReceived()
{ {

Wyświetl plik

@ -179,9 +179,11 @@ signals:
void setupRxAudio(const quint8 samples, const quint8 channels, const quint16 samplerate, const quint16 latency, const bool isUlaw, const bool isInput, QString port, quint8 resampleQuality); void setupRxAudio(const quint8 samples, const quint8 channels, const quint16 samplerate, const quint16 latency, const bool isUlaw, const bool isInput, QString port, quint8 resampleQuality);
void haveChangeLatency(quint16 value); void haveChangeLatency(quint16 value);
void haveSetVolume(unsigned char value);
public slots: public slots:
void changeLatency(quint16 value); void changeLatency(quint16 value);
void setVolume(unsigned char value);
private: private:
@ -238,14 +240,16 @@ public slots:
void receiveFromCivStream(QByteArray); void receiveFromCivStream(QByteArray);
void receiveAudioData(const audioPacket &data); void receiveAudioData(const audioPacket &data);
void changeLatency(quint16 value); void changeLatency(quint16 value);
void setVolume(unsigned char value);
void init(); void init();
signals: signals:
void haveDataFromPort(QByteArray data); // emit this when we have data, connect to rigcommander void haveDataFromPort(QByteArray data); // emit this when we have data, connect to rigcommander
void haveAudioData(audioPacket data); // emit this when we have data, connect to rigcommander void haveAudioData(audioPacket data); // emit this when we have data, connect to rigcommander
void haveNetworkError(QString, QString); void haveNetworkError(QString, QString);
void haveNetworkStatus(QString);
void haveChangeLatency(quint16 value); void haveChangeLatency(quint16 value);
void haveSetVolume(unsigned char value);
void haveNetworkStatus(QString);
private: private:

Wyświetl plik

@ -2860,7 +2860,7 @@ void wfmain::on_rfGainSlider_valueChanged(int value)
void wfmain::on_afGainSlider_valueChanged(int value) void wfmain::on_afGainSlider_valueChanged(int value)
{ {
// qDebug(logSystem()) << "Setting AF gain to " << value; // qDebug(logSystem()) << "Setting AF gain to " << value;
emit setAfGain((unsigned char) value); emit setAfGain((unsigned char)value);
} }
void wfmain::receiveRfGain(unsigned char level) void wfmain::receiveRfGain(unsigned char level)

Wyświetl plik

@ -69,7 +69,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<QtInstall>msvc2019_64_5</QtInstall> <QtInstall>msvc2019_64_5</QtInstall>
<QtModules>core;opengl;network;gui;multimedia;widgets;serialport;printsupport</QtModules> <QtModules>core;network;gui;multimedia;widgets;serialport;printsupport</QtModules>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<QtInstall>msvc2019_64_5</QtInstall> <QtInstall>msvc2019_64_5</QtInstall>

Wyświetl plik

@ -330,6 +330,7 @@
<None Include="resources\wfview.png" /> <None Include="resources\wfview.png" />
<None Include="resources\wfview.png" /> <None Include="resources\wfview.png" />
<None Include="resources\wfview.png" /> <None Include="resources\wfview.png" />
<None Include="resources\wfview.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="resources\install.sh"> <None Include="resources\install.sh">