From 52841786a94570e89dcf86b4d2a5bb6b0cc39d85 Mon Sep 17 00:00:00 2001 From: jfmartel Date: Tue, 20 Dec 2022 12:58:37 -0500 Subject: [PATCH] Nouvel ampli --- Sources/AvReceiver/AvReceiver.cpp | 23 ++++ Sources/AvReceiver/AvReceiver.h | 3 + Sources/AvReceiver/AvReceiverData.h | 10 ++ Sources/AvReceiver/AvReceiverGui.cpp | 62 ++++++++++ Sources/AvReceiver/AvReceiverGui.h | 8 ++ Sources/AvReceiver/AvReceiverGui.ui | 109 +++++++++++++++++- .../AvReceiverNetworkCtrlInterface.cpp | 11 ++ Sources/ProtocolDefs.h | 6 + ui_AvReceiverGui.h | 48 +++++++- 9 files changed, 274 insertions(+), 6 deletions(-) diff --git a/Sources/AvReceiver/AvReceiver.cpp b/Sources/AvReceiver/AvReceiver.cpp index c67fcbb..8582294 100644 --- a/Sources/AvReceiver/AvReceiver.cpp +++ b/Sources/AvReceiver/AvReceiver.cpp @@ -79,3 +79,26 @@ int CAvReceiver::ReceiverGeneralStatusReceived(QByteArray StatusData) mReceiverGui->UpdateReceiverStatus(mReceiverStatus, mZone2Status); return RET_OK; } +int CAvReceiver::SelectScenePressed(char Zone, char Scene) +{ + QByteArray SceneData; + SceneData.append(Zone).append(Scene); + + return mNetworkInterface->SendMasterCtrlCommand(AV_RECEIVER_INTERFACE_SELECT_SCENE_REQUEST,SceneData); +} + +int CAvReceiver::MainZoneVolumeChanged(float Value) +{ + QByteArray VolumeData; + QDataStream Strm(&VolumeData,QIODevice::WriteOnly); + Strm << Value; + return mNetworkInterface->SendMasterCtrlCommand(AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST,VolumeData); +} + +int CAvReceiver::Zone2VolumeChanged(float Value) +{ + QByteArray VolumeData; + QDataStream Strm(&VolumeData,QIODevice::WriteOnly); + Strm << Value; + return mNetworkInterface->SendMasterCtrlCommand(AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST,VolumeData); +} diff --git a/Sources/AvReceiver/AvReceiver.h b/Sources/AvReceiver/AvReceiver.h index ebfb8d7..4e8b327 100644 --- a/Sources/AvReceiver/AvReceiver.h +++ b/Sources/AvReceiver/AvReceiver.h @@ -20,6 +20,9 @@ public: int Zone2ToggleSwitchPressed(bool state); int MainUnitToggleSwitchPressed(bool state); int ReceiverGeneralStatusReceived(QByteArray StatusData); + int SelectScenePressed(char Zone, char Scene); + int MainZoneVolumeChanged(float Value); + int Zone2VolumeChanged(float Value); CAvReceiverNetworkCtrlInterface *mNetworkInterface; CAvReceiverGui *mReceiverGui; diff --git a/Sources/AvReceiver/AvReceiverData.h b/Sources/AvReceiver/AvReceiverData.h index ff6924e..5ae9015 100644 --- a/Sources/AvReceiver/AvReceiverData.h +++ b/Sources/AvReceiver/AvReceiverData.h @@ -3,6 +3,16 @@ #include #include "GlobalDefine.h" +#define MAIN_ZONE_MIN_VOLUME (float)-80.5 +#define MAIN_ZONE_MAX_VOLUME (float)16.5 + +enum eAVReceiverZones +{ + AV_RECEIVER_MAIN_ZONE = 1, + AV_RECEIVER_ZONE_2, + + AV_RECEIVER_MAX_ZONE +}; class CAvReceiverMainStatus { diff --git a/Sources/AvReceiver/AvReceiverGui.cpp b/Sources/AvReceiver/AvReceiverGui.cpp index ea423b6..f1a2d96 100644 --- a/Sources/AvReceiver/AvReceiverGui.cpp +++ b/Sources/AvReceiver/AvReceiverGui.cpp @@ -11,6 +11,12 @@ CAvReceiverGui::CAvReceiverGui(QWidget *parent) : connect(ui->mSpkBCheckBox,SIGNAL(clicked(bool)),this,SLOT(SpeakerBRadioClicked(bool))); connect(ui->mSpkACheckBox,SIGNAL(clicked(bool)),this,SLOT(SpeakerARadioClicked(bool))); + connect(ui->MainZoneScene1Btn,SIGNAL(clicked(bool)),this,SLOT(MainZoneScene1BtnClicked(bool))); + connect(ui->MainZoneScene2Btn,SIGNAL(clicked(bool)),this,SLOT(MainZoneScene2BtnClicked(bool))); + connect(ui->MainZoneScene3Btn,SIGNAL(clicked(bool)),this,SLOT(MainZoneScene3BtnClicked(bool))); + connect(ui->MainZoneScene4Btn,SIGNAL(clicked(bool)),this,SLOT(MainZoneScene4BtnClicked(bool))); + connect(ui->mMainZoneVolumeSldBar,SIGNAL(sliderMoved(int)),this,SLOT(MainZoneVolumeSetChanged())); + connect(ui->mZone2VolumeSldBar,SIGNAL(sliderMoved(int)),this,SLOT(Zone2VolumeSetChanged())); } CAvReceiverGui::~CAvReceiverGui() @@ -79,6 +85,8 @@ int CAvReceiverGui::UpdateReceiverStatus(CAvReceiverMainStatus Status, CAvReceiv ui->mRcvrStatusLabel->setText(StatusText); + if(ui->mMainZoneVolumeSldBar->isSliderDown() == false) + ui->mMainZoneVolumeSldBar->setValue(ConvertVolumeToBarPosition(Status.mMainVolume)); @@ -131,5 +139,59 @@ int CAvReceiverGui::UpdateReceiverStatus(CAvReceiverMainStatus Status, CAvReceiv ui->mZone2StatusLabel->setText(StatusText); + if(ui->mZone2VolumeSldBar->isSliderDown() == false) + ui->mZone2VolumeSldBar->setValue(ConvertVolumeToBarPosition(Zone2Status.mMainVolume)); + return RET_OK; } + +void CAvReceiverGui::MainZoneScene1BtnClicked(bool) +{ + mProgramHandle->SelectScenePressed(AV_RECEIVER_MAIN_ZONE,1); +} + +void CAvReceiverGui::MainZoneScene2BtnClicked(bool) +{ + mProgramHandle->SelectScenePressed(AV_RECEIVER_MAIN_ZONE,2); +} +void CAvReceiverGui::MainZoneScene3BtnClicked(bool) +{ + mProgramHandle->SelectScenePressed(AV_RECEIVER_MAIN_ZONE,3); +} +void CAvReceiverGui::MainZoneScene4BtnClicked(bool) +{ + mProgramHandle->SelectScenePressed(AV_RECEIVER_MAIN_ZONE,4); +} + +int CAvReceiverGui::ConvertVolumeToBarPosition(float Volume) +{ + int Pos; + Pos = (int)((Volume + 80.5) *2); + return Pos; +} + +float CAvReceiverGui::ConvertBarPositionToVolume(int position) +{ + float Volume; + Volume = (float)position; + Volume = ((Volume/2) - 80.5); + + return Volume; +} + +void CAvReceiverGui::MainZoneVolumeSetChanged() +{ + int BarPosition = ui->mMainZoneVolumeSldBar->value(); + float Volume = ConvertBarPositionToVolume(BarPosition); + + mProgramHandle->MainZoneVolumeChanged(Volume); +} + +void CAvReceiverGui::Zone2VolumeSetChanged() +{ + int BarPosition = ui->mZone2VolumeSldBar->value(); + float Volume = ConvertBarPositionToVolume(BarPosition); + + + mProgramHandle->Zone2VolumeChanged(Volume); +} diff --git a/Sources/AvReceiver/AvReceiverGui.h b/Sources/AvReceiver/AvReceiverGui.h index 30ac5bf..3729679 100644 --- a/Sources/AvReceiver/AvReceiverGui.h +++ b/Sources/AvReceiver/AvReceiverGui.h @@ -20,6 +20,8 @@ public: CAvReceiver *mProgramHandle; int UpdateReceiverStatus(CAvReceiverMainStatus Status, CAvReceiverMainStatus Zone2Status); + int ConvertVolumeToBarPosition(float Volume); + float ConvertBarPositionToVolume(int position); private: Ui::CAvReceiverGui *ui; @@ -27,6 +29,12 @@ private: public slots: void SpeakerBRadioClicked(bool checked); void SpeakerARadioClicked(bool checked); + void MainZoneScene1BtnClicked(bool); + void MainZoneScene2BtnClicked(bool); + void MainZoneScene3BtnClicked(bool); + void MainZoneScene4BtnClicked(bool); + void MainZoneVolumeSetChanged(); + void Zone2VolumeSetChanged(); }; #endif // AVRECEIVERGUI_H diff --git a/Sources/AvReceiver/AvReceiverGui.ui b/Sources/AvReceiver/AvReceiverGui.ui index 624d0f5..551b9b8 100644 --- a/Sources/AvReceiver/AvReceiverGui.ui +++ b/Sources/AvReceiver/AvReceiverGui.ui @@ -32,7 +32,7 @@ 50 130 181 - 231 + 181 @@ -42,7 +42,7 @@ - 280 + 350 110 70 17 @@ -68,7 +68,7 @@ - 300 + 370 140 171 191 @@ -78,6 +78,109 @@ TextLabel + + + + 40 + 320 + 101 + 81 + + + + Scene + + + + + 10 + 20 + 31 + 22 + + + + 1 + + + + + + 50 + 20 + 31 + 22 + + + + 2 + + + + + + 10 + 50 + 31 + 22 + + + + 3 + + + + + + 50 + 50 + 31 + 22 + + + + 4 + + + + + + + 190 + 120 + 21 + 160 + + + + 0 + + + 194 + + + 1 + + + Qt::Vertical + + + + + + 500 + 110 + 16 + 160 + + + + 182 + + + Qt::Vertical + + diff --git a/Sources/AvReceiver/AvReceiverNetworkCtrlInterface.cpp b/Sources/AvReceiver/AvReceiverNetworkCtrlInterface.cpp index a9e3d70..cee070d 100644 --- a/Sources/AvReceiver/AvReceiverNetworkCtrlInterface.cpp +++ b/Sources/AvReceiver/AvReceiverNetworkCtrlInterface.cpp @@ -48,10 +48,21 @@ int CAvReceiverNetworkCtrlInterface::DeviceFrameReceived(int TargetDeviceID, int { break; } + case AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_RESPONSE: + { + break; + } + case AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_RESPONSE: + { + break; + } + case AV_RECEIVER_INTERFACE_GENERAL_STATUS_REQUEST: case AV_RECEIVER_INTERFACE_SET_MAIN_POWER_REQUEST: case AV_RECEIVER_INTERFACE_SET_ZONE2_REQUEST: case AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_REQUEST: + case AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST: + case AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST: default: { qDebug("AV Receiver: Invalid Ethernet Msg received: %d",MessageID); diff --git a/Sources/ProtocolDefs.h b/Sources/ProtocolDefs.h index 61c9ada..32109b5 100644 --- a/Sources/ProtocolDefs.h +++ b/Sources/ProtocolDefs.h @@ -243,6 +243,12 @@ enum AV_RECEIVER_INTERFACE_CMDS AV_RECEIVER_INTERFACE_SET_SPEAKERS_RESPONSE, AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_REQUEST, AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_RESPONSE, + AV_RECEIVER_INTERFACE_SELECT_SCENE_REQUEST, + AV_RECEIVER_INTERFACE_SELECT_SCENE_RESPONSE, + AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST, + AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_RESPONSE, + AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST, + AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_RESPONSE, MAX_AV_RECEIVER_INTERFACE_CMD diff --git a/ui_AvReceiverGui.h b/ui_AvReceiverGui.h index 5de9bed..00fbcb9 100644 --- a/ui_AvReceiverGui.h +++ b/ui_AvReceiverGui.h @@ -12,7 +12,10 @@ #include #include #include +#include #include +#include +#include #include QT_BEGIN_NAMESPACE @@ -25,6 +28,13 @@ public: QCheckBox *mSpkBCheckBox; QCheckBox *mSpkACheckBox; QLabel *mZone2StatusLabel; + QGroupBox *MainZoneSceneBox; + QPushButton *MainZoneScene1Btn; + QPushButton *MainZoneScene2Btn; + QPushButton *MainZoneScene3Btn; + QPushButton *MainZoneScene4Btn; + QSlider *mMainZoneVolumeSldBar; + QSlider *mZone2VolumeSldBar; void setupUi(QWidget *CAvReceiverGui) { @@ -36,16 +46,43 @@ public: label->setGeometry(QRect(230, 30, 201, 16)); mRcvrStatusLabel = new QLabel(CAvReceiverGui); mRcvrStatusLabel->setObjectName(QString::fromUtf8("mRcvrStatusLabel")); - mRcvrStatusLabel->setGeometry(QRect(50, 130, 181, 231)); + mRcvrStatusLabel->setGeometry(QRect(50, 130, 181, 181)); mSpkBCheckBox = new QCheckBox(CAvReceiverGui); mSpkBCheckBox->setObjectName(QString::fromUtf8("mSpkBCheckBox")); - mSpkBCheckBox->setGeometry(QRect(280, 110, 70, 17)); + mSpkBCheckBox->setGeometry(QRect(350, 110, 70, 17)); mSpkACheckBox = new QCheckBox(CAvReceiverGui); mSpkACheckBox->setObjectName(QString::fromUtf8("mSpkACheckBox")); mSpkACheckBox->setGeometry(QRect(50, 110, 70, 17)); mZone2StatusLabel = new QLabel(CAvReceiverGui); mZone2StatusLabel->setObjectName(QString::fromUtf8("mZone2StatusLabel")); - mZone2StatusLabel->setGeometry(QRect(300, 140, 171, 191)); + mZone2StatusLabel->setGeometry(QRect(370, 140, 171, 191)); + MainZoneSceneBox = new QGroupBox(CAvReceiverGui); + MainZoneSceneBox->setObjectName(QString::fromUtf8("MainZoneSceneBox")); + MainZoneSceneBox->setGeometry(QRect(40, 320, 101, 81)); + MainZoneScene1Btn = new QPushButton(MainZoneSceneBox); + MainZoneScene1Btn->setObjectName(QString::fromUtf8("MainZoneScene1Btn")); + MainZoneScene1Btn->setGeometry(QRect(10, 20, 31, 22)); + MainZoneScene2Btn = new QPushButton(MainZoneSceneBox); + MainZoneScene2Btn->setObjectName(QString::fromUtf8("MainZoneScene2Btn")); + MainZoneScene2Btn->setGeometry(QRect(50, 20, 31, 22)); + MainZoneScene3Btn = new QPushButton(MainZoneSceneBox); + MainZoneScene3Btn->setObjectName(QString::fromUtf8("MainZoneScene3Btn")); + MainZoneScene3Btn->setGeometry(QRect(10, 50, 31, 22)); + MainZoneScene4Btn = new QPushButton(MainZoneSceneBox); + MainZoneScene4Btn->setObjectName(QString::fromUtf8("MainZoneScene4Btn")); + MainZoneScene4Btn->setGeometry(QRect(50, 50, 31, 22)); + mMainZoneVolumeSldBar = new QSlider(CAvReceiverGui); + mMainZoneVolumeSldBar->setObjectName(QString::fromUtf8("mMainZoneVolumeSldBar")); + mMainZoneVolumeSldBar->setGeometry(QRect(190, 120, 21, 160)); + mMainZoneVolumeSldBar->setMinimum(0); + mMainZoneVolumeSldBar->setMaximum(194); + mMainZoneVolumeSldBar->setSingleStep(1); + mMainZoneVolumeSldBar->setOrientation(Qt::Vertical); + mZone2VolumeSldBar = new QSlider(CAvReceiverGui); + mZone2VolumeSldBar->setObjectName(QString::fromUtf8("mZone2VolumeSldBar")); + mZone2VolumeSldBar->setGeometry(QRect(500, 110, 16, 160)); + mZone2VolumeSldBar->setMaximum(182); + mZone2VolumeSldBar->setOrientation(Qt::Vertical); retranslateUi(CAvReceiverGui); @@ -60,6 +97,11 @@ public: mSpkBCheckBox->setText(QCoreApplication::translate("CAvReceiverGui", "Zone 2", nullptr)); mSpkACheckBox->setText(QCoreApplication::translate("CAvReceiverGui", "Main Zone", nullptr)); mZone2StatusLabel->setText(QCoreApplication::translate("CAvReceiverGui", "TextLabel", nullptr)); + MainZoneSceneBox->setTitle(QCoreApplication::translate("CAvReceiverGui", "Scene", nullptr)); + MainZoneScene1Btn->setText(QCoreApplication::translate("CAvReceiverGui", "1", nullptr)); + MainZoneScene2Btn->setText(QCoreApplication::translate("CAvReceiverGui", "2", nullptr)); + MainZoneScene3Btn->setText(QCoreApplication::translate("CAvReceiverGui", "3", nullptr)); + MainZoneScene4Btn->setText(QCoreApplication::translate("CAvReceiverGui", "4", nullptr)); } // retranslateUi };