*/
#include "mastervolume.h"
+#include <QTimer>
+#include <QtDebug>
-void MasterVolume::setVolume(pa_volume_t volume)
+MasterVolume::MasterVolume(QObject* parent) :
+ QObject(parent),
+ m_volume(50)
{
- int volume_delta = volume - m_volume;
- m_volume = volume;
- emit sliderVolumeChanged(volume_delta);
+ VehicleSignalsConfig vsConfig("homescreen");
+ m_vs = new VehicleSignals(vsConfig);
+
+ if (m_vs) {
+ QObject::connect(m_vs, &VehicleSignals::connected, this, &MasterVolume::onConnected);
+
+ m_vs->connect();
+ }
+}
+
+MasterVolume::~MasterVolume()
+{
+ delete m_vs;
+}
+qint32 MasterVolume::getVolume() const
+{
+ return m_volume;
}
-void MasterVolume::changeExternalVolume(int volume)
+void MasterVolume::setVolume(quint32 volume)
{
+ if (m_volume == volume)
+ return;
+
m_volume = volume;
- emit volumeChanged();
+
+ if (m_vs)
+ m_vs->set("Vehicle.Cabin.Infotainment.Media.Volume", volume, true);
+}
+
+void MasterVolume::updateVolume(QString value)
+{
+ bool ok;
+ quint32 volume = value.toUInt(&ok);
+ if (ok) {
+ volume = qBound(0U, volume, 100U);
+ if (m_volume != volume) {
+ m_volume = volume;
+ emit VolumeChanged();
+ }
+ }
+}
+
+void MasterVolume::onConnected()
+{
+ if (!m_vs)
+ return;
+
+ QObject::connect(m_vs, &VehicleSignals::getSuccessResponse, this, &MasterVolume::onGetSuccessResponse);
+ QObject::connect(m_vs, &VehicleSignals::signalNotification, this, &MasterVolume::onSignalNotification);
+
+ m_vs->subscribe("Vehicle.Cabin.Infotainment.Media.Volume");
+ m_vs->get("Vehicle.Cabin.Infotainment.Media.Volume");
+}
+
+void MasterVolume::onGetSuccessResponse(QString path, QString value, QString timestamp)
+{
+ if (path == "Vehicle.Cabin.Infotainment.Media.Volume") {
+ updateVolume(value);
+ emit VolumeChanged();
+ }
+}
+
+void MasterVolume::onSignalNotification(QString path, QString value, QString timestamp)
+{
+ if (path == "Vehicle.Cabin.Infotainment.Media.Volume")
+ updateVolume(value);
}