Completed enumeration of audio devices

refs #36
- Cvatlib_Voice_Simple object is created and setup
- enumerates automatically a list of in and output devices.
- both device lists are accessable immediately
- added a sample demonstrating the interface so far

refs #81
This commit is contained in:
Roland Winklmeier
2013-11-29 21:47:49 +01:00
committed by Mathew Sutcliffe
parent 158de31c0b
commit b511f2ffaa
6 changed files with 97 additions and 14 deletions

View File

@@ -60,8 +60,8 @@ namespace BlackCore
// and signals emitted in case of a change. This way other objects can listen to this signals and call the getter
// again.
virtual void roomUserList(const uint32_t comUnit) = 0;
virtual void audioInputDevices(const uint32_t comUnit) = 0;
virtual void audioOutputDevices(const uint32_t comUnit) = 0;
virtual const QList<BlackMisc::Voice::CInputAudioDevice> & audioInputDevices(const uint32_t comUnit) const = 0;
virtual const QList<BlackMisc::Voice::COutputAudioDevice> & audioOutputDevices(const uint32_t comUnit) const = 0;
virtual void setInputDevice(const uint32_t comUnit, BlackMisc::Voice::CInputAudioDevice &device) = 0;
virtual void setOutputDevice(const uint32_t comUnit, BlackMisc::Voice::COutputAudioDevice &device) = 0;

View File

@@ -5,13 +5,22 @@
#include "voiceclient_vatlib.h"
#include <QDebug>
namespace BlackCore
{
CVoiceClientVatlib::CVoiceClientVatlib(QObject *parent) :
IVoiceClient(parent),
m_voice(Create_Cvatlib_Voice_Simple())
{
m_voice->Setup(true, 3290, 2, 1, onRoomStatusUpdate, this);
m_voice->GetInputDevices(onInputHardwareDeviceReceived, this);
m_voice->GetOutputDevices(onOutputHardwareDeviceReceived, this);
}
CVoiceClientVatlib::~CVoiceClientVatlib()
{
}
void CVoiceClientVatlib::setCallsign(const BlackMisc::Aviation::CCallsign &callsign)
@@ -59,14 +68,14 @@ namespace BlackCore
}
void CVoiceClientVatlib::audioInputDevices(const uint32_t comIndex)
const QList<BlackMisc::Voice::CInputAudioDevice> &CVoiceClientVatlib::audioInputDevices(const uint32_t comIndex) const
{
return m_inputDevices;
}
void CVoiceClientVatlib::audioOutputDevices(const uint32_t comIndex)
const QList<BlackMisc::Voice::COutputAudioDevice> &CVoiceClientVatlib::audioOutputDevices(const uint32_t comIndex) const
{
return m_outputDevices;
}
void CVoiceClientVatlib::setInputDevice(const uint32_t comUnit, BlackMisc::Voice::CInputAudioDevice &device)
@@ -84,6 +93,15 @@ namespace BlackCore
}
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
/********************************** shimlib callbacks ************************************/
/********************************** * * * * * * * * * * * * * * * * * * * ************************************/
CVoiceClientVatlib *cbvar_cast(void *cbvar)
{
return static_cast<CVoiceClientVatlib *>(cbvar);
}
void CVoiceClientVatlib::onRoomStatusUpdate(Cvatlib_Voice_Simple *obj, Cvatlib_Voice_Simple::roomStatusUpdate upd, int32_t roomIndex, void *cbVar)
{
@@ -94,9 +112,16 @@ namespace BlackCore
}
void CVoiceClientVatlib::onHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
void CVoiceClientVatlib::onInputHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
{
BlackMisc::Voice::CInputAudioDevice inputDevice(cbvar_cast(cbVar)->m_inputDevices.size(), QString(name));
cbvar_cast(cbVar)->m_inputDevices.append(inputDevice);
}
void CVoiceClientVatlib::onOutputHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
{
BlackMisc::Voice::COutputAudioDevice outputDevice(cbvar_cast(cbVar)->m_outputDevices.size(), QString(name));
cbvar_cast(cbVar)->m_outputDevices.append(outputDevice);
}
} // namespace BlackCore

View File

@@ -32,8 +32,8 @@ namespace BlackCore
virtual bool isConnected(const uint32_t comUnit);
virtual void roomUserList(const uint32_t comUnit);
virtual void audioInputDevices(const uint32_t comUnit);
virtual void audioOutputDevices(const uint32_t comUnit);
virtual const QList<BlackMisc::Voice::CInputAudioDevice> &audioInputDevices(const uint32_t comUnit) const ;
virtual const QList<BlackMisc::Voice::COutputAudioDevice> & audioOutputDevices(const uint32_t comUnit) const;
virtual void setInputDevice(const uint32_t comUnit, BlackMisc::Voice::CInputAudioDevice &device);
virtual void setOutputDevice(const uint32_t comUnit, BlackMisc::Voice::COutputAudioDevice &device);
@@ -47,14 +47,16 @@ namespace BlackCore
private:
// shimlib callbacks
void onRoomStatusUpdate(Cvatlib_Voice_Simple* obj, Cvatlib_Voice_Simple::roomStatusUpdate upd, INT roomIndex, void* cbVar);
void onRoomUserReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
void onHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
static void onRoomStatusUpdate(Cvatlib_Voice_Simple* obj, Cvatlib_Voice_Simple::roomStatusUpdate upd, INT roomIndex, void* cbVar);
static void onRoomUserReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
static void onInputHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
static void onOutputHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
QScopedPointer<Cvatlib_Voice_Simple> m_voice;
BlackMisc::Aviation::CCallsign m_callsign;
QMap<uint32_t, BlackMisc::Voice::CVoiceRoom> m_voiceRoomMap;
QList<BlackMisc::Voice::CInputAudioDevice> m_inputDevices;
QList<BlackMisc::Voice::COutputAudioDevice> m_outputDevices;
};
} // namespace BlackCore