diff -r e42293e811d8 -r 6c1dfe4da5dd mmappfw_plat/qt_telephony_multimedia_service_api/tsrc/qtmsvoiptest/qtmsvoiptest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/tsrc/qtmsvoiptest/qtmsvoiptest.cpp Tue Aug 31 15:41:40 2010 +0300 @@ -0,0 +1,1770 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: QTMS Voip test + * + */ +#include +#include +#include "qtestmains60.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +// CONSTANTS +#define __TEST_CODE_COVERAGE__ + +using namespace QTMS; + + +class QTmsVoipTest: public QObject +{ +Q_OBJECT +private slots: + void initTestCase(); + void init(); + void cleanup(); + void SupportedFormats(); + void CreateRouting_data(); + void CreateRouting(); + void CreateGlobalVol(); + void CreateGlobalGain(); + void CreateFormat_data(); + void CreateFormat(); + void CreateStreamVol(); + void CreateStreamGain(); + void CreateDnlinkDtmf(); + void CreateBuffer(); + + void cleanupTestCase(); +public slots: + //From TMSClientSourceObserver + void FillBuffer(QTMSBuffer& buffer); + void BufferProcessed(QTMSBuffer* buffer, gint reason); + //From TMSClientSinkObserver + void ProcessBuffer(const QTMSBuffer* buffer); + //From TMSStreamObserver + void TMSStreamEvent(const QTMSStream& stream, QTMSSignalEvent event); + //From TMSClientSinkObserver + void EffectsEvent(const QTMSEffect& tmseffect, QTMSSignalEvent event); + //From TMSGlobalRoutingObserver + void GlobalRoutingEvent(const QTMSGlobalRouting& routing, QTMSSignalEvent event, + QTMSAudioOutput output); + //From TMSRingToneObserver + void RingtoneEvent(const QTMSRingTone& rt, QTMSSignalEvent event); + //From TMSDTMFObserver + void DTMFEvent(const QTMSDTMF& dtmf, QTMSSignalEvent event); + +private: + + void VoipCallSetup(); + + void SupportedUplinkFormats(); + void SupportedDnlinkFormats(); + + void CreateUplink(); + void CreateDnlink(); + + void CreateMicSource(); + void AddMicSourceToStream(); + + void CreateClientSink(); + void AddClientSinkToStream(); + + void CreateClientSource(); + void AddClientSourceToStream(); + + void CreateSpeakerSink(); + void AddSpeakerSinkToStream(); + + void InitUplink(); + void InitDnlink(); + + void DeinitUplink(); + void DeinitDnlink(); + + void StartUplink(); + void StopUplink(); + void StartDnlink(); + + void ResetUplnkFormat(); + void ResetDnlnkFormat(); + + void StreamVol(); + void StreamGain(); + + void CloseUplink(); + void CloseDownlink(); + + void DisplayFormat(QTMSFormatType format); + void StopDnlink(); + void CreateRingTone(); + + void ToggleVad(); + void GetVad(); + void ToggleCng(); + void GetCng(); + void TogglePlc(); + void GetPlc(); + + void SelectMinBitrate(); + void SelectMaxBitrate(); + void SetBitrate(guint bitrate); + void GetSupportedBitrates(); + gint GetSupportedBitrates(BitRateVector& aBrArr); + void GetBitrate(); + + void SetDnLinkG711ALAW(); + void SetDnLinkG711uLAW(); + void SetDnLinkILBC20MS(); + void SetDnLinkILBC30MS(); + void SetUpLinkG711ALAW(); + void SetUpLinkG711uLAW(); + void SetUpLinkILBC20MS(); + void SetUpLinkILBC30MS(); + void GetDnLinkG711Mode(); + void GetDnLinkILBCMode(); + void GetUpLinkG711Mode(); + void GetUpLinkILBCMode(); + + void DisplayDevice(QTMSAudioOutput device); + +private: + QTMSFactory *m_Factory; + QTMSCall *m_Call; + QTMSDTMF *m_Dnlnkdtmf; + QTMSStream *m_Dnlink; + QTMSStream *m_Uplink; + + QTMSSource *m_MicSource; + QTMSSource *m_ClientSource; + QTMSSink *m_ClientSink; + QTMSSink *m_SpeakerSink; + + QTMSFormat *m_G711EncFormatIntfc; + QTMSFormat *m_G711DecFormatIntfc; + QTMSFormat *m_G729EncFormatIntfc; + QTMSFormat *m_G729DecFormatIntfc; + QTMSFormat *m_ILBCEncFormatIntfc; + QTMSFormat *m_ILBCDecFormatIntfc; + QTMSFormat *m_AMRNBEncFormatIntfc; + QTMSFormat *m_AMRNBDecFormatIntfc; + QTMSFormat *m_PCM16EncFormatIntfc; + QTMSFormat *m_PCM16DecFormatIntfc; + + QTMS::FormatVector m_UplCodecs; + QTMS::FormatVector m_DnlCodecs; + + BitRateVector m_BitratesVector; + guint iBitrate; + + QTMSEffect *m_Vol; + QTMSEffect *m_Gain; + QTMSEffect *m_GlobalVol; + QTMSEffect *m_GlobalGain; + QTMSGlobalRouting *m_Routing; + + QTMSFormatType m_DnLinkCodec; + QTMSFormatType m_UpLinkCodec; + + QSignalSpy *m_UplinkSpy; + QSignalSpy *m_DnlinkSpy; + QSignalSpy *m_RoutingSpy; + + gboolean m_Vad; + gboolean m_Cng; + gboolean m_Plc; + +}; + +void QTmsVoipTest::initTestCase() +{ + qDebug("Start QTms Voip tests"); + + g_setenv("G_SLICE", "always-malloc", 1); + + qRegisterMetaType ("QTMSSignalEvent"); + qRegisterMetaType ("QTMSAudioOutput"); +} + +void QTmsVoipTest::cleanupTestCase() +{ + qDebug("End QTms tests"); +} + +void QTmsVoipTest::init() +{ + qDebug("****NEW TEST****"); + m_Factory = NULL; + m_Call = NULL; + m_Dnlink = NULL; + m_Uplink = NULL; + m_MicSource = NULL; + m_ClientSource = NULL; + m_SpeakerSink = NULL; + m_ClientSink = NULL; + m_Vol = NULL; + m_Gain = NULL; + m_GlobalVol = NULL; + m_GlobalGain = NULL; + m_Routing = NULL; + m_Dnlnkdtmf = NULL; + + m_G711EncFormatIntfc = NULL; + m_G711DecFormatIntfc = NULL; + m_G729EncFormatIntfc = NULL; + m_G729DecFormatIntfc = NULL; + m_ILBCEncFormatIntfc = NULL; + m_ILBCDecFormatIntfc = NULL; + m_AMRNBEncFormatIntfc = NULL; + m_AMRNBDecFormatIntfc = NULL; + m_PCM16EncFormatIntfc = NULL; + m_PCM16DecFormatIntfc = NULL; + + m_UplinkSpy = NULL; + m_DnlinkSpy = NULL; + + QTMSVer *ver(NULL); + gint status; + status = QTMSFactory::CreateFactory(m_Factory, *ver); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + VoipCallSetup(); + + CreateUplink(); + CreateDnlink(); + + CreateMicSource(); + AddMicSourceToStream(); + + CreateClientSink(); + AddClientSinkToStream(); + + CreateClientSource(); + AddClientSourceToStream(); + + CreateSpeakerSink(); + AddSpeakerSinkToStream(); + +} +void QTmsVoipTest::cleanup() +{ + qDebug("****END TEST******"); + + ResetUplnkFormat(); + ResetDnlnkFormat(); + + CloseUplink(); + CloseDownlink(); + + if (m_MicSource) { + m_Factory->DeleteSource(m_MicSource); + } + if (m_ClientSource) { + m_Factory->DeleteSource(m_ClientSource); + } + if (m_ClientSink) { + m_Factory->DeleteSink(m_ClientSink); + } + if (m_SpeakerSink) { + m_Factory->DeleteSink(m_SpeakerSink); + } + + if (m_Dnlnkdtmf) { + m_Factory->DeleteDTMF(m_Dnlnkdtmf); + } + + if (m_Vol) { + m_Factory->DeleteEffect(m_Vol); + } + if (m_Gain) { + m_Factory->DeleteEffect(m_Gain); + } + if (m_GlobalVol) { + m_Factory->DeleteEffect(m_GlobalVol); + } + if (m_GlobalGain) { + m_Factory->DeleteEffect(m_GlobalGain); + } + + if (m_Routing) { + m_Factory->DeleteGlobalRouting(m_Routing); + } + + if (m_PCM16EncFormatIntfc) { + m_Factory->DeleteFormat(m_PCM16EncFormatIntfc); + } + if (m_ILBCEncFormatIntfc) { + m_Factory->DeleteFormat(m_ILBCEncFormatIntfc); + } + if (m_AMRNBEncFormatIntfc) { + m_Factory->DeleteFormat(m_AMRNBEncFormatIntfc); + } + if (m_G711EncFormatIntfc) { + m_Factory->DeleteFormat(m_G711EncFormatIntfc); + } + if (m_G729EncFormatIntfc) { + m_Factory->DeleteFormat(m_G729EncFormatIntfc); + } + if (m_PCM16DecFormatIntfc) { + m_Factory->DeleteFormat(m_PCM16DecFormatIntfc); + } + if (m_ILBCDecFormatIntfc) { + m_Factory->DeleteFormat(m_ILBCDecFormatIntfc); + } + if (m_AMRNBDecFormatIntfc) { + m_Factory->DeleteFormat(m_AMRNBDecFormatIntfc); + } + if (m_G711DecFormatIntfc) { + + m_Factory->DeleteFormat(m_G711DecFormatIntfc); + } + if (m_G729DecFormatIntfc) { + m_Factory->DeleteFormat(m_G729DecFormatIntfc); + } + + if (m_Uplink) { + m_Call->DeleteStream(m_Uplink); + } + if (m_Dnlink) { + m_Call->DeleteStream(m_Dnlink); + } + + if (m_Call) { + m_Factory->DeleteCall(m_Call); + } + + if (m_Factory) { + delete m_Factory; + } + +} + +void QTmsVoipTest::VoipCallSetup() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Factory && !m_Call) { + gboolean issupported(FALSE); + m_Factory->IsCallTypeSupported(QTMS_CALL_IP, issupported); + QVERIFY(issupported == TRUE); + status = m_Factory->CreateCall(QTMS_CALL_IP, m_Call, 0); + QVERIFY(status == QTMS_RESULT_SUCCESS); + guint ctxid; + m_Call->GetCallContextId(ctxid); + } + +} + +void QTmsVoipTest::SupportedFormats() +{ + SupportedUplinkFormats(); + SupportedDnlinkFormats(); +} + +void QTmsVoipTest::SupportedUplinkFormats() +{ + gint status(QTMS_RESULT_SUCCESS); + status = m_Factory->GetSupportedFormats(QTMS_STREAM_UPLINK, m_UplCodecs); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + qDebug("Supported UPL codecs"); + std::vector::iterator codecs = m_UplCodecs.begin(); + QTMSFormatType fmttype; + for (; codecs < m_UplCodecs.end(); codecs++) { + (*codecs)->GetType(fmttype); + DisplayFormat(fmttype); + } + gint size = m_UplCodecs.size(); + for (gint i = 0; i < size; i++) { + codecs = m_UplCodecs.begin(); + m_Factory->DeleteFormat(*codecs); + m_UplCodecs.erase(codecs); + } + +} + +void QTmsVoipTest::SupportedDnlinkFormats() +{ + gint status(QTMS_RESULT_SUCCESS); + status = m_Factory->GetSupportedFormats(QTMS_STREAM_DOWNLINK, m_DnlCodecs); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + qDebug("Supported DNL codecs"); + std::vector::iterator codecs = m_DnlCodecs.begin(); + QTMSFormatType fmttype; + for (; codecs < m_DnlCodecs.end(); codecs++) { + (*codecs)->GetType(fmttype); + DisplayFormat(fmttype); + } + gint size = m_DnlCodecs.size(); + for (gint i = 0; i < size; i++) { + codecs = m_DnlCodecs.begin(); + m_Factory->DeleteFormat(*codecs); + m_DnlCodecs.erase(codecs); + } +} + +void QTmsVoipTest::DisplayFormat(QTMSFormatType format) +{ + switch (format) { + case QTMS_FORMAT_AMR: + qDebug("AMR-NB"); + break; + case QTMS_FORMAT_G711: + qDebug("G.711"); + break; + case QTMS_FORMAT_G729: + qDebug("G.729"); + break; + case QTMS_FORMAT_ILBC: + qDebug("iLBC"); + break; + case QTMS_FORMAT_PCM: + qDebug("PCM-16"); + break; + default: + break; + } +} + +void QTmsVoipTest::CreateUplink() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Call) { + status = m_Call->CreateStream(QTMS_STREAM_UPLINK, m_Uplink); + + m_UplinkSpy = new QSignalSpy(m_Uplink, + SIGNAL(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent))); + + QVERIFY( m_UplinkSpy->isValid() ); + + // QCOMPARE(m_UplinkSpy->count(), 0 ); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + connect(m_Uplink, SIGNAL(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent)), this, + SLOT(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent))); + } +} + +void QTmsVoipTest::CreateDnlink() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Call) { + status = m_Call->CreateStream(QTMS_STREAM_DOWNLINK, m_Dnlink); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + m_DnlinkSpy = new QSignalSpy(m_Dnlink, + SIGNAL(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent))); + + QVERIFY( m_DnlinkSpy->isValid() ); + + // QCOMPARE(m_DnlinkSpy->count(), 0 ); + + connect(m_Dnlink, SIGNAL(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent)), this, + SLOT(TMSStreamEvent(const QTMSStream&, QTMSSignalEvent))); + } +} + +void QTmsVoipTest::CreateClientSource() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Factory && !m_ClientSource) { + status = m_Factory->CreateSource(QTMS_SOURCE_CLIENT, m_ClientSource); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::AddClientSourceToStream() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Dnlink && m_ClientSource) { + connect(static_cast (m_ClientSource), + SIGNAL(FillBuffer(QTMSBuffer&)), this, SLOT(FillBuffer(QTMSBuffer&))); + status = m_Dnlink->AddSource(m_ClientSource); + +#ifdef __TEST_CODE_COVERAGE__ + QTMSSourceType st; + static_cast (m_ClientSource)->GetType(st); + gboolean enqueue(FALSE); + static_cast (m_ClientSource)->GetEnqueueMode(enqueue); + static_cast (m_ClientSource)->SetEnqueueMode(FALSE); + static_cast (m_ClientSource)->Flush(); +#endif //__TEST_CODE_COVERAGE__ + } + + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::CreateClientSink() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && !m_ClientSink) { + status = m_Factory->CreateSink(QTMS_SINK_CLIENT, m_ClientSink); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::AddClientSinkToStream() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Uplink && m_ClientSink) { + connect(static_cast (m_ClientSink), + SIGNAL(ProcessBuffer(const QTMSBuffer*)), this, + SLOT(ProcessBuffer(const QTMSBuffer*))); + status = m_Uplink->AddSink(m_ClientSink); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::CreateMicSource() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && !m_MicSource) { + status = m_Factory->CreateSource(TMS_SOURCE_MIC, m_MicSource); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::AddMicSourceToStream() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Uplink && m_MicSource) { + status = m_Uplink->AddSource(m_MicSource); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::CreateSpeakerSink() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && !m_SpeakerSink) { + status = m_Factory->CreateSink(QTMS_SINK_SPEAKER, m_SpeakerSink); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::AddSpeakerSinkToStream() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Dnlink && m_SpeakerSink) { + status = m_Dnlink->AddSink(m_SpeakerSink); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); +} + +void QTmsVoipTest::InitUplink() +{ + QVERIFY(m_Uplink->Init() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(m_UplinkSpy->count(), 1 ); + + GetSupportedBitrates(); + SelectMinBitrate(); + SelectMaxBitrate(); + GetBitrate(); + + ToggleVad(); + GetVad(); + + SetUpLinkG711ALAW(); + SetUpLinkG711uLAW(); + GetUpLinkG711Mode(); + + SetUpLinkILBC20MS(); + SetUpLinkILBC30MS(); + GetUpLinkILBCMode(); + +} + +void QTmsVoipTest::InitDnlink() +{ + QVERIFY(m_Dnlink->Init() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(m_DnlinkSpy->count(), 1 ); + ToggleCng(); + GetCng(); + TogglePlc(); + GetPlc(); + + SetDnLinkG711ALAW(); + SetDnLinkG711uLAW(); + GetDnLinkG711Mode(); + + SetDnLinkILBC20MS(); + SetDnLinkILBC30MS(); + GetDnLinkILBCMode(); + +} +void QTmsVoipTest::DeinitUplink() +{ + m_Uplink->Deinit(); + QTest::qWait(1000); +} + +void QTmsVoipTest::DeinitDnlink() +{ + m_Dnlink->Deinit(); + QTest::qWait(1000); +} + +void QTmsVoipTest::StartUplink() +{ + QVERIFY(m_Uplink->Start() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(m_UplinkSpy->count(), 2 ); +} + +void QTmsVoipTest::StartDnlink() +{ + QVERIFY(m_Dnlink->Start() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(m_DnlinkSpy->count(), 2 ); +} +void QTmsVoipTest::StopUplink() +{ +#ifdef __TEST_CODE_COVERAGE__ + QVERIFY(m_Uplink->Pause()== QTMS_RESULT_SUCCESS); + QTest::qWait(1000); +#endif //__TEST_CODE_COVERAGE__ + QVERIFY(m_Uplink->Stop() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(m_UplinkSpy->count(), 3 ); +} + +void QTmsVoipTest::StopDnlink() +{ +#ifdef __TEST_CODE_COVERAGE__ + QVERIFY(m_Dnlink->Pause() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); +#endif //__TEST_CODE_COVERAGE__ + QVERIFY(m_Dnlink->Stop() == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(m_DnlinkSpy->count(), 3 ); +} + +void QTmsVoipTest::CloseUplink() +{ + m_Uplink->Deinit(); + QTest::qWait(1000); + if (m_Uplink) { + if (m_Gain) { + QVERIFY(m_Uplink->RemoveEffect(m_Gain)== QTMS_RESULT_SUCCESS); + } + if (m_MicSource) { + QVERIFY(m_Uplink->RemoveSource(m_MicSource)== QTMS_RESULT_SUCCESS); + } + if (m_ClientSink) { + QVERIFY(m_Uplink->RemoveSink(m_ClientSink)== QTMS_RESULT_SUCCESS); + } + } +} + +void QTmsVoipTest::CloseDownlink() +{ + m_Dnlink->Deinit(); + QTest::qWait(1000); + if (m_Dnlink) { + if (m_Vol) { + QVERIFY(m_Dnlink->RemoveEffect(m_Vol)== QTMS_RESULT_SUCCESS); + } + if (m_ClientSource) { + QVERIFY(m_Dnlink->RemoveSource(m_ClientSource)== QTMS_RESULT_SUCCESS); + } + if (m_SpeakerSink) { + QVERIFY(m_Dnlink->RemoveSink(m_SpeakerSink) == QTMS_RESULT_SUCCESS); + } + } + +} + +void QTmsVoipTest::ResetUplnkFormat() +{ + if (m_Uplink) { + switch (m_UpLinkCodec) { + case QTMS_FORMAT_PCM: + m_Uplink->ResetFormat(m_PCM16EncFormatIntfc); + break; + case QTMS_FORMAT_AMR: + m_Uplink->ResetFormat(m_AMRNBEncFormatIntfc); + break; + case QTMS_FORMAT_G711: + m_Uplink->ResetFormat(m_G711EncFormatIntfc); + break; + case QTMS_FORMAT_G729: + m_Uplink->ResetFormat(m_G729EncFormatIntfc); + break; + case QTMS_FORMAT_ILBC: + m_Uplink->ResetFormat(m_ILBCEncFormatIntfc); + break; + default: + break; + } + } + +} + +void QTmsVoipTest::ResetDnlnkFormat() +{ + if (m_Dnlink) { + switch (m_DnLinkCodec) { + case QTMS_FORMAT_PCM: + m_Dnlink->ResetFormat(m_PCM16DecFormatIntfc); + break; + case QTMS_FORMAT_AMR: + m_Dnlink->ResetFormat(m_AMRNBDecFormatIntfc); + break; + case QTMS_FORMAT_G711: + m_Dnlink->ResetFormat(m_G711DecFormatIntfc); + break; + case QTMS_FORMAT_G729: + m_Dnlink->ResetFormat(m_G729DecFormatIntfc); + break; + case QTMS_FORMAT_ILBC: + m_Dnlink->ResetFormat(m_ILBCDecFormatIntfc); + break; + default: + break; + } + } +} + +void QTmsVoipTest::CreateFormat_data() +{ + QTest::addColumn("format"); + +#ifndef __WINSCW__ + QTest::newRow("G711")<CreateFormat(QTMS_FORMAT_G711, m_G711DecFormatIntfc); + encstatus = m_Factory->CreateFormat(QTMS_FORMAT_G711, m_G711EncFormatIntfc); + setdecstatus = m_Dnlink->SetFormat(m_G711DecFormatIntfc); + setencstatus = m_Uplink->SetFormat(m_G711EncFormatIntfc); + qDebug("G.711 Set"); + + } + break; + case QTMS_FORMAT_G729: + { + decstatus = m_Factory->CreateFormat(QTMS_FORMAT_G729, m_G729DecFormatIntfc); + encstatus = m_Factory->CreateFormat(QTMS_FORMAT_G729, m_G729EncFormatIntfc); + setdecstatus = m_Dnlink->SetFormat(m_G729DecFormatIntfc); + setdecstatus = m_Uplink->SetFormat(m_G729EncFormatIntfc); + qDebug("G.729 Set"); + } + break; + case QTMS_FORMAT_ILBC: + { + decstatus = m_Factory->CreateFormat(QTMS_FORMAT_ILBC, m_ILBCDecFormatIntfc); + encstatus = m_Factory->CreateFormat(QTMS_FORMAT_ILBC, m_ILBCEncFormatIntfc); + setdecstatus = m_Dnlink->SetFormat(m_ILBCDecFormatIntfc); + setencstatus = m_Uplink->SetFormat(m_ILBCEncFormatIntfc); + qDebug("iLBC Set"); + } + break; + case QTMS_FORMAT_AMR: + { + decstatus = m_Factory->CreateFormat(QTMS_FORMAT_AMR, m_AMRNBDecFormatIntfc); + encstatus = m_Factory->CreateFormat(QTMS_FORMAT_AMR, m_AMRNBEncFormatIntfc); + setdecstatus = m_Dnlink->SetFormat(m_AMRNBDecFormatIntfc); + setencstatus = m_Uplink->SetFormat(m_AMRNBEncFormatIntfc); + qDebug("AMR-NB Set"); + } + break; + case QTMS_FORMAT_PCM: + { + decstatus = m_Factory->CreateFormat(QTMS_FORMAT_PCM, m_PCM16DecFormatIntfc); + encstatus = m_Factory->CreateFormat(QTMS_FORMAT_PCM, m_PCM16EncFormatIntfc); + setdecstatus = m_Dnlink->SetFormat(m_PCM16DecFormatIntfc); + setencstatus = m_Uplink->SetFormat(m_PCM16EncFormatIntfc); + qDebug("PCM-16 Set"); + } + break; + default: + break; + } + + QVERIFY(decstatus == QTMS_RESULT_SUCCESS); + QVERIFY(encstatus == QTMS_RESULT_SUCCESS); + QVERIFY(setdecstatus == QTMS_RESULT_SUCCESS); + QVERIFY(setencstatus == QTMS_RESULT_SUCCESS); + + InitUplink(); + InitDnlink(); +} + +void QTmsVoipTest::ToggleVad() +{ + //m_Vad = (m_Vad) ? EFalse : ETrue; + + m_Vad = ETrue; + switch (m_UpLinkCodec) { + case QTMS_FORMAT_G711: + static_cast (m_G711EncFormatIntfc)->SetVADMode(m_Vad); + qDebug("G711 VAD set %d", m_Vad); + break; + case QTMS_FORMAT_G729: + static_cast (m_G729EncFormatIntfc)->SetVADMode(m_Vad); + qDebug("G729 VAD set %d", m_Vad); + break; + case QTMS_FORMAT_ILBC: + static_cast (m_ILBCEncFormatIntfc)->SetVADMode(m_Vad); + qDebug("iLBC VAD set %d", m_Vad); + break; + case QTMS_FORMAT_AMR: + //static_cast(iAMRNBEncFormatIntfc)->SetVADMode(m_Vad); + break; + case QTMS_FORMAT_PCM: + // Not supported; just for testing failing condition + //static_cast(iPCM16EncFormatIntfc)->SetVADMode(m_Vad); + break; + default: + break; + } +} + +void QTmsVoipTest::GetVad() +{ + gint status(QTMS_RESULT_SUCCESS); + gboolean vad = EFalse; + + switch (m_UpLinkCodec) { + case QTMS_FORMAT_G711: + status = static_cast (m_G711EncFormatIntfc)->GetVADMode(vad); + qDebug("get G711 VAD: %d", vad); + break; + case QTMS_FORMAT_G729: + status = static_cast (m_G729EncFormatIntfc)->GetVADMode(vad); + qDebug("get G729 VAD: %d", vad); + break; + case QTMS_FORMAT_ILBC: + status = static_cast (m_ILBCEncFormatIntfc)->GetVADMode(vad); + qDebug("get iLBC VAD: %d", vad); + break; + default: + return; + } + QVERIFY(status == QTMS_RESULT_SUCCESS); + // QVERIFY(vad == m_Vad); + + +} + +void QTmsVoipTest::ToggleCng() +{ + // m_Cng = (m_Cng) ? EFalse : ETrue; + + m_Cng = ETrue; + switch (m_DnLinkCodec) { + case QTMS_FORMAT_G711: + //case EG711_10MS: + static_cast (m_G711DecFormatIntfc)->SetCNG(m_Cng); + qDebug("G711 CNG set %d", m_Cng); + break; + case QTMS_FORMAT_ILBC: + static_cast (m_ILBCDecFormatIntfc)->SetCNG(m_Cng); + qDebug("iLBC CNG set %d", m_Cng); + break; + default: + break; + } +} + +void QTmsVoipTest::GetCng() +{ + gint status; + gboolean cng = EFalse; + switch (m_DnLinkCodec) { + case QTMS_FORMAT_G711: + status = static_cast (m_G711DecFormatIntfc)->GetCNG(cng); + qDebug("G711 CNG: %d", cng); + QVERIFY(status == QTMS_RESULT_SUCCESS); + break; + case QTMS_FORMAT_ILBC: + status = static_cast (m_ILBCDecFormatIntfc)->GetCNG(cng); + qDebug("iLBC CNG: %d", cng); + QVERIFY(status == QTMS_RESULT_SUCCESS); + break; + default: + break; + } + + // QVERIFY(cng == m_Cng); + +} + +void QTmsVoipTest::TogglePlc() +{ + // m_Plc = (m_Plc) ? EFalse : ETrue; + m_Plc = ETrue; + if (m_DnLinkCodec == QTMS_FORMAT_G711) { + static_cast (m_G711DecFormatIntfc)->SetPlc(m_Plc); + qDebug("G711 PLC set %d", m_Plc); + } +} + +void QTmsVoipTest::GetPlc() +{ + gboolean plc = EFalse; + if (m_G711DecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711DecFormatIntfc)->GetPlc(plc); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("G711 PLC: %d", plc); + // QVERIFY(plc == m_Plc); + } +} + +void QTmsVoipTest::SelectMinBitrate() +{ + if (m_BitratesVector.size() > 0) { + std::vector::iterator bitrate = m_BitratesVector.begin(); + iBitrate = *bitrate; + SetBitrate(iBitrate); + qDebug("BR set %d", iBitrate); + } +} + +void QTmsVoipTest::SelectMaxBitrate() +{ + if (m_BitratesVector.size() > 0) { + iBitrate = m_BitratesVector.back(); + SetBitrate(iBitrate); + qDebug("BR set %d", iBitrate); + } +} + +void QTmsVoipTest::SetBitrate(guint bitrate) +{ + switch (m_UpLinkCodec) { + case QTMS_FORMAT_G711: + static_cast (m_G711EncFormatIntfc)->SetBitRate(bitrate); + qDebug("Set BR %d", bitrate); + break; + case QTMS_FORMAT_G729: + static_cast (m_G729EncFormatIntfc)->SetBitRate(bitrate); + qDebug("Set BR %d", bitrate); + break; + case QTMS_FORMAT_ILBC: + static_cast (m_ILBCEncFormatIntfc)->SetBitRate(bitrate); + qDebug("Set BR %d", bitrate); + break; + case QTMS_FORMAT_AMR: + static_cast (m_AMRNBEncFormatIntfc)->SetBitRate(bitrate); + qDebug("Set BR %d", bitrate); + break; + case QTMS_FORMAT_PCM: + default: + break; + } +} + +void QTmsVoipTest::GetSupportedBitrates() +{ + gint numOfItems(0); + m_BitratesVector.clear(); + gint status = GetSupportedBitrates(m_BitratesVector); + + numOfItems = m_BitratesVector.size(); + qDebug("BR Count %d", numOfItems); + std::vector::iterator itBitrates = m_BitratesVector.begin(); + for (; itBitrates < m_BitratesVector.end(); itBitrates++) { + qDebug("BR %d", *itBitrates); + } +} + +gint QTmsVoipTest::GetSupportedBitrates(BitRateVector& aBrArr) +{ + gint status(QTMS_RESULT_SUCCESS); + + switch (m_UpLinkCodec) { + case QTMS_FORMAT_G711: + status = m_G711EncFormatIntfc->GetSupportedBitRates(aBrArr); + break; + case QTMS_FORMAT_G729: + status = m_G729EncFormatIntfc->GetSupportedBitRates(aBrArr); + break; + case QTMS_FORMAT_ILBC: + status = m_ILBCEncFormatIntfc->GetSupportedBitRates(aBrArr); + break; + case QTMS_FORMAT_AMR: + status = m_AMRNBEncFormatIntfc->GetSupportedBitRates(aBrArr); + break; + case QTMS_FORMAT_PCM: + // not supported, but test for correct error handling + //status = m_PCM16EncFormatIntfc->GetSupportedBitRates(aBrArr); + break; + default: + status = KErrNotSupported; + break; + } + + return status; +} + +void QTmsVoipTest::GetBitrate() +{ + guint bitrate; + switch (m_UpLinkCodec) { + case QTMS_FORMAT_G711: + static_cast (m_G711EncFormatIntfc)->GetBitRate(bitrate); + qDebug("G711 bitrate: %d", bitrate); + break; + case QTMS_FORMAT_G729: + static_cast (m_G729EncFormatIntfc)->GetBitRate(bitrate); + qDebug("G729 bitrate: %d", bitrate); + break; + case QTMS_FORMAT_ILBC: + static_cast (m_ILBCEncFormatIntfc)->GetBitRate(bitrate); + qDebug("iLBC bitrate: %d", bitrate); + break; + case QTMS_FORMAT_AMR: + static_cast (m_AMRNBEncFormatIntfc)->GetBitRate(bitrate); + qDebug("AMR bitrate: %d", bitrate); + break; + case TMS_FORMAT_PCM: + default: + break; + } +} + +void QTmsVoipTest::SetDnLinkG711ALAW() +{ + if (m_G711DecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711DecFormatIntfc)->SetMode( + QTMS_G711_CODEC_MODE_ALAW); + qDebug("SetDnLinkG711ALAW status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("DNL G.711 Mode Set: [aLaw]"); + } +} + +void QTmsVoipTest::SetDnLinkG711uLAW() +{ + if (m_G711DecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711DecFormatIntfc)->SetMode( + QTMS_G711_CODEC_MODE_MULAW); + qDebug("SetDnLinkG711uLAW status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("DNL G.711 Mode Set: [uLaw]"); + } +} + +void QTmsVoipTest::GetDnLinkG711Mode() +{ + QTMSG711CodecMode mode; + if (m_G711DecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711DecFormatIntfc)->GetMode(mode); + qDebug("GetDnLinkG711Mode status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + if (mode == TMS_G711_CODEC_MODE_MULAW) { + qDebug("DNL G711 Mode: [uLaw]"); + } + else { + qDebug("DNL G711 Mode: [aLaw]"); + } + } +} + +void QTmsVoipTest::SetDnLinkILBC20MS() +{ + if (m_ILBCDecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_ILBC) { + gint status = static_cast (m_ILBCDecFormatIntfc)->SetMode( + TMS_ILBC_CODEC_MODE_20MS_FRAME); + qDebug("SetDnLinkILBC20MS status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("DNL iLBC Mode Set: [20ms]"); + } +} + +void QTmsVoipTest::SetDnLinkILBC30MS() +{ + if (m_ILBCDecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_ILBC) { + gint status = static_cast (m_ILBCDecFormatIntfc)->SetMode( + TMS_ILBC_CODEC_MODE_30MS_FRAME); + qDebug("SetDnLinkILBC30MS status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("DNL iLBC Mode Set: [30ms]"); + } +} + +void QTmsVoipTest::GetDnLinkILBCMode() +{ + QTMSILBCCodecMode mode; + if (m_ILBCDecFormatIntfc && m_DnLinkCodec == QTMS_FORMAT_ILBC) { + gint status = static_cast (m_ILBCDecFormatIntfc)->GetMode(mode); + qDebug("GetDnLinkILBCMode status %d", status); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + if (mode == QTMS_ILBC_CODEC_MODE_30MS_FRAME) { + qDebug("DNL iLBC Mode: [30ms]"); + } + else if (mode == QTMS_ILBC_CODEC_MODE_20MS_FRAME) { + qDebug("DNL iLBC Mode: [20ms]"); + } + } +} + +void QTmsVoipTest::SetUpLinkG711ALAW() +{ + if (m_G711EncFormatIntfc && m_UpLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711EncFormatIntfc)->SetMode( + QTMS_G711_CODEC_MODE_ALAW); + + qDebug("SetUpLinkG711ALAW status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("UPL G.711 Mode Set: [aLaw]"); + } +} + +void QTmsVoipTest::SetUpLinkG711uLAW() +{ + if (m_G711EncFormatIntfc && m_UpLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711EncFormatIntfc)->SetMode( + QTMS_G711_CODEC_MODE_MULAW); + qDebug("SetUpLinkG711uLAW status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("UPL G.711 Mode Set: [uLaw]"); + } +} + +void QTmsVoipTest::GetUpLinkG711Mode() +{ + QTMSG711CodecMode mode; + if (m_G711EncFormatIntfc && m_UpLinkCodec == QTMS_FORMAT_G711) { + gint status = static_cast (m_G711EncFormatIntfc)->GetMode(mode); + qDebug("GetUpLinkG711Mode status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + if (mode == QTMS_G711_CODEC_MODE_MULAW) { + qDebug("UPL G.711 Mode: [uLaw]"); + } + else if (mode == QTMS_G711_CODEC_MODE_ALAW) { + qDebug("UPL G.711 Mode: [aLaw]"); + } + } + +} + +void QTmsVoipTest::SetUpLinkILBC20MS() +{ + if (m_ILBCEncFormatIntfc && m_UpLinkCodec == QTMS_FORMAT_ILBC) { + gint status = static_cast (m_ILBCEncFormatIntfc)->SetMode( + QTMS_ILBC_CODEC_MODE_20MS_FRAME); + qDebug("SetUpLinkILBC20MS status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("UPL iLBC Mode Set: [20ms]"); + } +} + +void QTmsVoipTest::SetUpLinkILBC30MS() +{ + if (m_ILBCEncFormatIntfc && m_UpLinkCodec == QTMS_FORMAT_ILBC) { + gint status = static_cast (m_ILBCEncFormatIntfc)->SetMode( + QTMS_ILBC_CODEC_MODE_30MS_FRAME); + qDebug("SetUpLinkILBC30MS status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("UPL iLBC Mode Set: [30ms]"); + } +} + +void QTmsVoipTest::GetUpLinkILBCMode() +{ + QTMSILBCCodecMode mode; + if (m_ILBCEncFormatIntfc && m_UpLinkCodec == QTMS_FORMAT_ILBC) { + gint status = static_cast (m_ILBCEncFormatIntfc)->GetMode(mode); + qDebug("GetUpLinkILBCMode status %d", status); + QVERIFY(status == QTMS_RESULT_SUCCESS); + if (mode == QTMS_ILBC_CODEC_MODE_30MS_FRAME) { + qDebug("UPL iLBC Mode: [30ms]"); + } + else if (mode == QTMS_ILBC_CODEC_MODE_20MS_FRAME) { + qDebug("UPL iLBC Mode: [20ms]"); + } + } + +} + +void QTmsVoipTest::CreateStreamVol() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && m_Dnlink && !m_Vol) { + m_Factory->CreateFormat(QTMS_FORMAT_PCM, m_PCM16DecFormatIntfc); + m_Dnlink->SetFormat(m_PCM16DecFormatIntfc); + + status = m_Factory->CreateEffect(QTMS_EFFECT_VOLUME, m_Vol); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + connect(static_cast (m_Vol), + SIGNAL(EffectsEvent(const QTMSEffect&,QTMSSignalEvent)), this, + SLOT(EffectsEvent(const QTMSEffect&,QTMSSignalEvent))); + + if (m_Dnlink) { + status = m_Dnlink->AddEffect(m_Vol); + } + QVERIFY(status == QTMS_RESULT_SUCCESS); + + InitDnlink(); + + StreamVol(); + + } +} + +void QTmsVoipTest::StreamVol() +{ + gint status(QTMS_RESULT_SUCCESS); + guint maxvol(0); + if (m_Vol) { + status = static_cast (m_Vol)->GetMaxLevel(maxvol); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + status = static_cast (m_Vol)->SetLevel(maxvol); + QVERIFY(status == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + + guint vol(0); + status = static_cast (m_Vol)->GetLevel(vol); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + QCOMPARE(vol,maxvol); + } +} + +void QTmsVoipTest::CreateStreamGain() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && m_Uplink && !m_Gain) { + + m_Factory->CreateFormat(QTMS_FORMAT_PCM, m_PCM16EncFormatIntfc); + m_Uplink->SetFormat(m_PCM16EncFormatIntfc); + status = m_Factory->CreateEffect(QTMS_EFFECT_GAIN, m_Gain); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + connect(static_cast (m_Gain), + SIGNAL(EffectsEvent(const QTMSEffect&,QTMSSignalEvent)), this, + SLOT(EffectsEvent(const QTMSEffect&,QTMSSignalEvent))); + + status = m_Uplink->AddEffect(m_Gain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + InitUplink(); + + StreamGain(); + } +} + +void QTmsVoipTest::StreamGain() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Gain) { + guint maxgain(0); + static_cast (m_Gain)->GetMaxLevel(maxgain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + static_cast (m_Gain)->SetLevel(maxgain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + + guint gain(0); + static_cast (m_Gain)->GetLevel(gain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + QCOMPARE(gain,maxgain); + } + +} + +void QTmsVoipTest::CreateGlobalVol() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && !m_GlobalVol) { + status = m_Factory->CreateEffect(QTMS_EFFECT_GLOBAL_VOL, m_GlobalVol); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + connect(static_cast (m_GlobalVol), + SIGNAL(EffectsEvent(const QTMSEffect&,QTMSSignalEvent)), this, + SLOT(EffectsEvent(const QTMSEffect&,QTMSSignalEvent))); + + guint maxvol(0); + status = static_cast (m_GlobalVol)->GetMaxLevel(maxvol); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("global max vol %d", maxvol); + + status = static_cast (m_GlobalVol)->SetLevel(maxvol); + QVERIFY(status == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + + guint vol(0); + status = static_cast (m_GlobalVol)->GetLevel(vol); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("global vol %d", vol); + + QCOMPARE(vol,maxvol); + + } +} + +void QTmsVoipTest::CreateGlobalGain() +{ + gint status(QTMS_RESULT_SUCCESS); + + if (m_Factory && !m_GlobalGain) { + status = m_Factory->CreateEffect(QTMS_EFFECT_GLOBAL_GAIN, m_GlobalGain); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + connect(static_cast (m_GlobalGain), + SIGNAL(EffectsEvent(const QTMSEffect&,QTMSSignalEvent)), this, + SLOT(EffectsEvent(const QTMSEffect&,QTMSSignalEvent))); + + guint maxgain(0); + static_cast (m_GlobalGain)->GetMaxLevel(maxgain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("global max gain %d", maxgain); + + static_cast (m_GlobalGain)->SetLevel(maxgain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + + guint gain(0); + static_cast (m_GlobalGain)->GetLevel(gain); + QVERIFY(status == QTMS_RESULT_SUCCESS); + qDebug("global gain %d", gain); + + QCOMPARE(gain,maxgain); + + } +} + +void QTmsVoipTest::CreateRouting_data() +{ + + QTest::addColumn("routing"); + + QTest::newRow("Public") << QTMS_AUDIO_OUTPUT_PUBLIC; + QTest::newRow("Private") << QTMS_AUDIO_OUTPUT_PRIVATE; + +} + +void QTmsVoipTest::CreateRouting() +{ + gint status(QTMS_RESULT_SUCCESS); + QFETCH(QTMSAudioOutput, routing); + + if (m_Factory && !m_Routing) { + m_UpLinkCodec = QTMS_FORMAT_PCM; + m_Factory->CreateFormat(QTMS_FORMAT_PCM, m_PCM16DecFormatIntfc); + m_Dnlink->SetFormat(m_PCM16DecFormatIntfc); + + InitDnlink(); + StartDnlink(); + + status = m_Factory->CreateGlobalRouting(m_Routing); + QVERIFY(status == QTMS_RESULT_SUCCESS); + + m_RoutingSpy = new QSignalSpy(m_Routing, + SIGNAL(GlobalRoutingEvent(const QTMSGlobalRouting&, + QTMSSignalEvent, + QTMSAudioOutput))); + + QVERIFY( m_RoutingSpy->isValid() ); + + //QCOMPARE(m_RoutingSpy->count(), 0 ); + connect(m_Routing, + SIGNAL(GlobalRoutingEvent(const QTMSGlobalRouting&,QTMSSignalEvent,QTMSAudioOutput)), + this, + SLOT(GlobalRoutingEvent(const QTMSGlobalRouting&,QTMSSignalEvent,QTMSAudioOutput))); + } + + if (m_Routing) { + status = m_Routing->SetOutput(routing); + QVERIFY(status == QTMS_RESULT_SUCCESS); +#ifndef __WINSCW__ + QTest::qWait(1000); + //QCOMPARE(m_RoutingSpy->count(), 1 ); +#endif + QTMSAudioOutput current; + status = m_Routing->GetOutput(current); + DisplayDevice(current); + + QVERIFY(status == QTMS_RESULT_SUCCESS); +#ifndef __WINSCW__ + QCOMPARE(routing,current); +#endif + StopDnlink(); + } +} + +void QTmsVoipTest::DisplayDevice(QTMSAudioOutput device) +{ + qDebug("Current Output:"); + + switch (device) { + case QTMS_AUDIO_OUTPUT_NONE: + { + qDebug("none"); + } + break; + case QTMS_AUDIO_OUTPUT_PUBLIC: + { + qDebug("Public"); + } + break; + case QTMS_AUDIO_OUTPUT_PRIVATE: + { + qDebug("Private"); + } + break; + default: + break; + } +} + +void QTmsVoipTest::CreateDnlinkDtmf() +{ + gint status(QTMS_RESULT_SUCCESS); + GString* dtmfstring(NULL); + + if (m_Factory && m_Dnlink && !m_Dnlnkdtmf) { + m_UpLinkCodec = QTMS_FORMAT_PCM; + m_Factory->CreateFormat(QTMS_FORMAT_PCM, m_PCM16DecFormatIntfc); + m_Dnlink->SetFormat(m_PCM16DecFormatIntfc); + + InitDnlink(); + + status = m_Factory->CreateDTMF(QTMS_STREAM_DOWNLINK, m_Dnlnkdtmf); + + QVERIFY(status == QTMS_RESULT_SUCCESS); + + QSignalSpy dtmfspy(m_Dnlnkdtmf, SIGNAL(DTMFEvent(const QTMSDTMF&,QTMSSignalEvent))); + + QVERIFY( dtmfspy.isValid() ); + + //QCOMPARE(dtmfspy.count(), 0 ); + + connect(m_Dnlnkdtmf, SIGNAL(DTMFEvent(const QTMSDTMF&,QTMSSignalEvent)), this, + SLOT(DTMFEvent(const QTMSDTMF&,QTMSSignalEvent))); + + dtmfstring = g_string_new("4723"); + status = m_Dnlnkdtmf->SetTone(dtmfstring); + + m_Dnlnkdtmf->Start(); + QTest::qWait(1000); + g_string_free(dtmfstring, TRUE); + //QCOMPARE(dtmfspy.count(), 1 ); + + status = m_Dnlnkdtmf->Stop(); + QVERIFY(status == QTMS_RESULT_SUCCESS); + QTest::qWait(1000); + //QCOMPARE(dtmfspy.count(), 2 ); + } +} + +void QTmsVoipTest::CreateRingTone() +{ + +} + +void QTmsVoipTest::CreateBuffer() +{ + gint status(QTMS_RESULT_SUCCESS); + if (m_Factory) { + QTMSBuffer* qtmsbuffer(NULL); + QTMSBufferType buftype(QTMS_BUFFER_MEMORY); + guint size(100); + status = m_Factory->CreateBuffer(QTMS_BUFFER_MEMORY, size, qtmsbuffer); + QVERIFY(status == QTMS_RESULT_SUCCESS); + if (qtmsbuffer) { + qtmsbuffer->GetType(buftype); + qtmsbuffer->GetDataSize(size); + qtmsbuffer->SetDataSize(size); + guint8* pbuf(NULL); + qtmsbuffer->GetDataPtr(pbuf); + guint64 ts(0); + qtmsbuffer->GetTimeStamp(ts); + qtmsbuffer->SetTimeStamp(ts); + m_Factory->DeleteBuffer(qtmsbuffer); + } + } +} + +void QTmsVoipTest::FillBuffer(QTMSBuffer& buffer) +{ + //TODO: add loopback test and file playback +#ifdef __TEST_CODE_COVERAGE__ + if (m_ClientSource) { + static_cast (m_ClientSource)->BufferFilled(buffer); + } +#endif + +} + +void QTmsVoipTest::BufferProcessed(QTMSBuffer* /*buffer*/, gint /*reason*/) +{ +} + +void QTmsVoipTest::ProcessBuffer(const QTMSBuffer* buffer) +{ + //TODO: add loopback test +#ifdef __TEST_CODE_COVERAGE__ + QTMSBuffer* recBuf(NULL); + recBuf = const_cast (buffer); + if (m_ClientSink) { + static_cast (m_ClientSink)->BufferProcessed(recBuf); + } +#endif +} + +void QTmsVoipTest::EffectsEvent(const QTMSEffect& tmseffect, QTMSSignalEvent event) +{ + QTMSEffectType effecttype; + const_cast (tmseffect).GetType(effecttype); + + QVERIFY(event.reason == QTMS_RESULT_SUCCESS); + + switch (effecttype) { + case QTMS_EFFECT_GLOBAL_VOL: + { + switch (event.type) { + case QTMS_EVENT_EFFECT_VOL_CHANGED: + qDebug("Global vol effect change"); + break; + default: + break; + } + } + break; + case QTMS_EFFECT_GLOBAL_GAIN: + { + switch (event.type) { + case QTMS_EVENT_EFFECT_GAIN_CHANGED: + qDebug("Global gain effect change"); + break; + default: + break; + } + } + break; + case QTMS_EFFECT_VOLUME: + { + switch (event.type) { + case QTMS_EVENT_EFFECT_GAIN_CHANGED: + qDebug("Stream vol effect change"); + break; + default: + break; + } + } + break; + case QTMS_EFFECT_GAIN: + { + switch (event.type) { + case QTMS_EVENT_EFFECT_GAIN_CHANGED: + qDebug("Stream gain effect change"); + break; + default: + break; + } + } + break; + default: + break; + } +} + +void QTmsVoipTest::GlobalRoutingEvent(const QTMSGlobalRouting& /*routing*/, QTMSSignalEvent event, + QTMSAudioOutput /*output*/) +{ + QVERIFY(event.reason == QTMS_RESULT_SUCCESS); + switch (event.type) { + case QTMS_EVENT_ROUTING_AVAIL_OUTPUTS_CHANGED: + qDebug("Available outputs changed"); + break; + case QTMS_EVENT_ROUTING_OUTPUT_CHANGED: + qDebug("output changed"); + break; + case QTMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE: + qDebug("set output complete"); + break; + default: + break; + } + +} + +void QTmsVoipTest::TMSStreamEvent(const QTMSStream& stream, QTMSSignalEvent event) +{ + + QVERIFY(event.reason == QTMS_RESULT_SUCCESS); + + gint streamId; + streamId = const_cast (stream).GetStreamId(); + qDebug("StreamID %d", streamId); + gint state; + state = const_cast (stream).GetState(); + QVERIFY(state == event.curr_state); + + switch (const_cast (stream).GetStreamType()) { + case QTMS_STREAM_UPLINK: + { + switch (event.type) { + case QTMS_EVENT_STREAM_STATE_CHANGED: + { + switch (event.curr_state) { + case QTMS_STREAM_INITIALIZED: + { + qDebug("Uplink initialized "); + break; + } + case QTMS_STREAM_UNINITIALIZED: + qDebug("Uplink uninitialized "); + break; + case QTMS_STREAM_PAUSED: + qDebug("Uplink paused "); + break; + case QTMS_STREAM_STARTED: + qDebug("Uplink started "); + break; + default: + break; + } + break; + } + default: + break; + } + break; + } + case QTMS_STREAM_DOWNLINK: + { + switch (event.type) { + case QTMS_EVENT_STREAM_STATE_CHANGED: + { + switch (event.curr_state) { + case QTMS_STREAM_INITIALIZED: + qDebug("Downlink initialized "); + break; + case QTMS_STREAM_UNINITIALIZED: + qDebug("Downlink uninitialized "); + break; + case QTMS_STREAM_PAUSED: + qDebug("Downlink paused "); + break; + case QTMS_STREAM_STARTED: + qDebug("Downlink started "); + break; + default: + break; + } + break; + } + default: + break; + } + break; + } + default: + break; + } +} + +void QTmsVoipTest::RingtoneEvent(const QTMSRingTone& /*rt*/, QTMSSignalEvent event) +{ + QVERIFY(event.reason == QTMS_RESULT_SUCCESS); + switch (event.type) { + case QTMS_EVENT_RINGTONE_OPEN_COMPLETE: + qDebug("RT Open Complete"); + break; + case QTMS_EVENT_RINGTONE_PLAY_COMPLETE: + qDebug("RT Play Complete"); + break; + default: + break; + } +} + +void QTmsVoipTest::DTMFEvent(const QTMSDTMF& /*dtmf*/, QTMSSignalEvent event) +{ + + QVERIFY(event.reason == QTMS_RESULT_SUCCESS); + switch (event.type) { + case QTMS_EVENT_DTMF_TONE_STARTED: + qDebug("DTMF Started"); + break; + case QTMS_EVENT_DTMF_TONE_STOPPED: + qDebug("DTMF Stopped"); + break; + default: + break; + } +} + +QTEST_MAIN_S60(QTmsVoipTest) + +#include "qtmsvoiptest.moc" +