summaryrefslogtreecommitdiffstats
path: root/app/mixer.h
diff options
context:
space:
mode:
authorLoïc Collignon <loic.collignon@iot.bzh>2018-03-13 08:56:37 +0100
committerLoïc Collignon <loic.collignon@iot.bzh>2018-06-14 11:36:47 +0200
commit6bf2ccbd72176a8cbdfb3cdb2c15ee1c2db594b8 (patch)
tree52d9432e8f74507e4aaf477ca5605de6812bdecf /app/mixer.h
parent47695d79a938eb52c116062c218147049b994246 (diff)
make use of alsacore and hal bindings to control audio volume
Change-Id: Ib7e90a7d2a148a067566bc04929fda445b46ab45 Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
Diffstat (limited to 'app/mixer.h')
-rw-r--r--app/mixer.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/app/mixer.h b/app/mixer.h
new file mode 100644
index 0000000..2c25562
--- /dev/null
+++ b/app/mixer.h
@@ -0,0 +1,74 @@
+#ifndef MIXER_H
+#define MIXER_H
+
+#include <QObject>
+#include <QSharedPointer>
+#include <QVariantList>
+#include "qafbwsclient.h"
+#include "qafbwsmsg.h"
+
+class Mixer
+ : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QVariantList hals READ hals NOTIFY halsChanged)
+ Q_PROPERTY(QString activeHal READ activeHal WRITE setActiveHal NOTIFY activeHalChanged)
+
+ Q_PROPERTY(int masterVolume READ masterVolume WRITE setMasterVolume NOTIFY masterVolumeChanged)
+ Q_PROPERTY(int pcmVolume READ pcmVolume WRITE setPcmVolume NOTIFY pcmVolumeChanged)
+ Q_PROPERTY(int microphoneVolume READ microphoneVolume WRITE setMicrophoneVolume NOTIFY microphoneVolumeChanged)
+
+public:
+ explicit Mixer(QObject* parent = nullptr);
+ Mixer(const Mixer&) = delete;
+
+ Q_INVOKABLE void open(const QUrl& url);
+ Q_INVOKABLE QVariantList hals() const;
+ Q_INVOKABLE QString activeHal() const;
+ Q_INVOKABLE void setActiveHal(QString h);
+
+ Q_INVOKABLE int masterVolume() const;
+ Q_INVOKABLE int pcmVolume() const;
+ Q_INVOKABLE int microphoneVolume() const;
+
+ Q_INVOKABLE void setMasterVolume(int v);
+ Q_INVOKABLE void setPcmVolume(int v);
+ Q_INVOKABLE void setMicrophoneVolume(int v);
+
+signals:
+ void halsChanged();
+ void activeHalChanged();
+ void masterVolumeChanged();
+ void pcmVolumeChanged();
+ void microphoneVolumeChanged();
+
+private slots:
+ void onClientConnected();
+ void onHalListClosed();
+ void onGetMasterVolume();
+ void onGetPcmVolume();
+ void onGetMicrophoneVolume();
+ void onSetMasterVolume();
+ void onSetPcmVolume();
+ void onSetMicrophoneVolume();
+
+private:
+ int m_masterVolume;
+ int m_pcmVolume;
+ int m_microphoneVolume;
+ int m_masterVolumePending;
+ int m_pcmVolumePending;
+ int m_microphoneVolumePending;
+ QAfbWsClient m_client;
+ QVariantList m_hallist;
+ QString m_activeHal;
+ QSharedPointer<QAfbWsMsg> m_alsacoreHallist;
+ QSharedPointer<QAfbWsMsg> m_getMasterVolume;
+ QSharedPointer<QAfbWsMsg> m_getPcmVolume;
+ QSharedPointer<QAfbWsMsg> m_getMicrophoneVolume;
+ QSharedPointer<QAfbWsMsg> m_setMasterVolume;
+ QSharedPointer<QAfbWsMsg> m_setPcmVolume;
+ QSharedPointer<QAfbWsMsg> m_setMicrophoneVolume;
+};
+
+#endif // MIXER_H