From 62e1b411c54e22e0646ee5f7aaa3dabcc25bd0a9 Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Fri, 3 Jan 2014 23:59:53 +0000 Subject: [PATCH] Initial structure IVoiceClient and implementation refs #36 - Added initial structure for IVoiceClient interface - Added initial structure for the vatlib voice implementation refs #81 --- src/blackcore/voiceclient.h | 84 +++++++++++++++++++++++++++ src/blackcore/voiceclient_vatlib.cpp | 87 ++++++++++++++++++++++++++++ src/blackcore/voiceclient_vatlib.h | 55 ++++++++++++++++++ 3 files changed, 226 insertions(+) create mode 100644 src/blackcore/voiceclient.h create mode 100644 src/blackcore/voiceclient_vatlib.cpp create mode 100644 src/blackcore/voiceclient_vatlib.h diff --git a/src/blackcore/voiceclient.h b/src/blackcore/voiceclient.h new file mode 100644 index 000000000..350a7a2f1 --- /dev/null +++ b/src/blackcore/voiceclient.h @@ -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 + +#include + +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 diff --git a/src/blackcore/voiceclient_vatlib.cpp b/src/blackcore/voiceclient_vatlib.cpp new file mode 100644 index 000000000..ff69a056b --- /dev/null +++ b/src/blackcore/voiceclient_vatlib.cpp @@ -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 diff --git a/src/blackcore/voiceclient_vatlib.h b/src/blackcore/voiceclient_vatlib.h new file mode 100644 index 000000000..b0b548cd5 --- /dev/null +++ b/src/blackcore/voiceclient_vatlib.h @@ -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 + +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 m_voice; + BlackMisc::Aviation::CCallsign m_callsign; + + }; + +} // namespace BlackCore + +#endif // VOICECLIENT_VATLIB_H