Initial structure IVoiceClient and implementation

refs #36
- Added initial structure for IVoiceClient interface
- Added initial structure for the vatlib voice implementation

refs #81
This commit is contained in:
Roland Winklmeier
2014-01-03 23:59:53 +00:00
committed by Mathew Sutcliffe
parent f24d16019f
commit 62e1b411c5
3 changed files with 226 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
/* Copyright (C) 2013 VATSIM Community / authors
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*!
\file
*/
#ifndef BLACKCORE_VOICE_H
#define BLACKCORE_VOICE_H
#include "../blackmisc/context.h"
#include "../blackmisc/avcallsign.h"
#include <vatlib/vatlib.h>
#include <QObject>
namespace BlackCore
{
class IVoiceClient : public QObject
{
/* TODOS:
* - Find a replacement for comUnit. Maybe map it to the ComUnit in the aircraft as a class
* - Object: class encapsulating a hardware device (vatlib uses integer index, which is necessarily persistent)
* - Settings: Settings classes to store hardware settings (squelch, background noise, hardware device)
*/
Q_OBJECT
protected:
/*!
* \brief Default constructor with parent
* \param parent
*/
IVoiceClient(QObject *parent = 0) : QObject(parent) {}
public:
BLACK_INTERFACE(BlackCore::IVoice)
virtual ~IVoiceClient() {}
virtual void setCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0;
virtual void joinVoiceServer(const uint32_t comUnit, const QString &serverSpec) = 0;
virtual void leaveVoiceServer(const uint32_t comUnit) = 0;
virtual void setVolume(const uint32_t comUnit, const uint32_t volumne) = 0;
virtual void startTransmitting(const uint32_t comUnit) = 0;
virtual void stopTransmitting(const uint32_t comUnit) = 0;
virtual bool isReceiving(const uint32_t comUnit) = 0;
virtual bool isConnected(const uint32_t comUnit) = 0;
virtual void getUserList(const uint32_t comUnit) = 0;
virtual void getInputDevices(const uint32_t comUnit) = 0;
virtual void getOutputDevices(const uint32_t comUnit) = 0;
signals:
void notConnected(const uint32_t comUnit);
void connecting(const uint32_t comUnit);
void connected(const uint32_t comUnit);
void connectionFailed(const uint32_t comUnit);
void kicked(const uint32_t comUnit);
void disconnecting(const uint32_t comUnit);
void disconnected(const uint32_t comUnit);
void userJoined(const uint32_t comUnit, const BlackMisc::Aviation::CCallsign &callsign);
void userLeft(const uint32_t comUnit, const BlackMisc::Aviation::CCallsign &callsign);
void audioStarted(const uint32_t comUnit);
void audioStopped(const uint32_t comUnit);
void userList(const uint32_t comIndex);
void outputDeviceList();
void inputDeviceList();
public slots:
};
} // namespace BlackCore
#endif // BLACKCORE_VOICE_H

View File

@@ -0,0 +1,87 @@
/* Copyright (C) 2013 VATSIM Community / authors
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "voiceclient_vatlib.h"
namespace BlackCore
{
CVoiceClientVatlib::CVoiceClientVatlib(QObject *parent) :
IVoiceClient(parent),
m_voice(Create_Cvatlib_Voice_Simple())
{
}
void CVoiceClientVatlib::setCallsign(const BlackMisc::Aviation::CCallsign &callsign)
{
m_callsign = callsign;
}
void CVoiceClientVatlib::joinVoiceServer(const uint32_t comIndex, const QString &serverSpec)
{
}
void CVoiceClientVatlib::leaveVoiceServer(const uint32_t comIndex)
{
}
void CVoiceClientVatlib::setVolume(const uint32_t comIndex, const uint32_t volumne)
{
}
void CVoiceClientVatlib::startTransmitting(const uint32_t comIndex)
{
}
void CVoiceClientVatlib::stopTransmitting(const uint32_t comIndex)
{
}
bool CVoiceClientVatlib::isReceiving(const uint32_t comIndex)
{
}
bool CVoiceClientVatlib::isConnected(const uint32_t comIndex)
{
}
void CVoiceClientVatlib::getUserList(const uint32_t comIndex)
{
}
void CVoiceClientVatlib::getInputDevices(const uint32_t comIndex)
{
}
void CVoiceClientVatlib::getOutputDevices(const uint32_t comIndex)
{
}
void CVoiceClientVatlib::onRoomStatusUpdate(Cvatlib_Voice_Simple *obj, roomStatusUpdate upd, int32_t roomIndex, void *cbVar)
{
}
void CVoiceClientVatlib::onRoomUserReceived(vatlib_Voice_Simple *obj, const char *name, void *cbVar)
{
}
void CVoiceClientVatlib::onHardwareDeviceReceived(Cvatlib_Voice_Simple *obj, const char *name, void *cbVar)
{
}
} // namespace BlackCore

View File

@@ -0,0 +1,55 @@
/* Copyright (C) 2013 VATSIM Community / authors
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef VOICECLIENT_VATLIB_H
#define VOICECLIENT_VATLIB_H
#include "voiceclient.h"
#include <QScopedPointer>
namespace BlackCore
{
class CVoiceClientVatlib : public IVoiceClient
{
Q_OBJECT
public:
CVoiceClientVatlib(QObject *parent = 0);
virtual ~CVoiceClientVatlib();
virtual void setCallsign(const BlackMisc::Aviation::CCallsign &callsign);
virtual void joinVoiceServer(const uint32_t comUnit, const QString &serverSpec);
virtual void leaveVoiceServer(const uint32_t comUnit) = 0;
virtual void setVolume(const uint32_t comUnit, const uint32_t volumne);
virtual void startTransmitting(const uint32_t comUnit);
virtual void stopTransmitting(const uint32_t comUnit);
virtual bool isReceiving(const uint32_t comUnit);
virtual bool isConnected(const uint32_t comUnit);
virtual void getUserList(const uint32_t comUnit);
virtual void getInputDevices(const uint32_t comUnit);
virtual void getOutputDevices(const uint32_t comUnit);
signals:
public slots:
private:
// shimlib callbacks
void onRoomStatusUpdate(Cvatlib_Voice_Simple* obj, roomStatusUpdate upd, INT roomIndex, void* cbVar);
void onRoomUserReceived(vatlib_Voice_Simple* obj, const char* name, void* cbVar);
void onHardwareDeviceReceived(Cvatlib_Voice_Simple* obj, const char* name, void* cbVar);
QScopedPointer<Cvatlib_Voice_Simple> m_voice;
BlackMisc::Aviation::CCallsign m_callsign;
};
} // namespace BlackCore
#endif // VOICECLIENT_VATLIB_H