FeatureHDF5::FeatureHDF5(const shared_ptr<IFile> &file, const shared_ptr<IBlock> &block, const Group &group, const string &id, DataArray data, LinkType link_type, time_t time) : EntityHDF5(file, group, id, time), block(block) { linkType(link_type); // TODO: the line below currently throws an exception if the DataArray // is not in block - to consider if we prefer copying it to the block this->data(data.id()); }
FeatureFS::FeatureFS(const std::shared_ptr<base::IFile> &file, const std::shared_ptr<base::IBlock> &block, const std::string &loc, const std::string &id, DataArray data, LinkType link_type, time_t time) : EntityFS(file, (bfs::path(loc) / bfs::path(id)).string(), id, time), block(block) { linkType(link_type); // TODO: the line below currently throws an exception if the DataArray // is not in block - to consider if we prefer copying it to the block this->data(data.id()); }
// --------------------------------------------------------------------------- // CTestDtmf::TestStreamCreationL // --------------------------------------------------------------------------- // void CTestDtmf::TestStreamCreationL( TDtmfSignalType aSigType ) { TMccNetSettings tempSettings = iNetsettings; CMccInterfaceStub* stub = CMccInterfaceStub::NewL(); CleanupStack::PushL( stub ); CMccInterface* interface = CMccInterface::NewL( *stub ); CleanupStack::PushL( interface ); TUint32 sessionId; User::LeaveIfError( interface->CreateSession( sessionId ) ); TUint32 linkId; TInt linkType( KMccLinkGeneral ); User::LeaveIfError( interface->CreateLink( sessionId, linkType, linkId, tempSettings ) ); stub->WaitForEvent( sessionId, linkId, 0, KMccLinkCreated ); CMccCodecInformation* cInfo = FetchCodecByMimeSubtypeNameL( *interface, KTxtDtmf ); CleanupStack::PushL( cInfo ); if ( aSigType == EInbandSignal ) { cInfo->SetCodecMode( EDTMFModeInband ); } else { cInfo->SetCodecMode( EDTMFModeEvent ); } TUint32 streamId( 0 ); TUint32 endpointId1( 0 ), endpointId2( 0 ); User::LeaveIfError( interface->AddDataSink( KMccRtpSinkUid, KNullDesC8, endpointId1 ) ); User::LeaveIfError( interface->AddDataSource( KMccRtpSourceUid, KNullDesC8, endpointId2 ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, streamId, KMccDtmfStream, *cInfo ) ); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, streamId ) ); //interface->RemoveDataSink( endpointId1 ); //interface->RemoveDataSource( endpointId1 ); User::LeaveIfError( interface->CloseLink( sessionId, linkId ) ); User::LeaveIfError( interface->CloseSession( sessionId ) ); CleanupStack::PopAndDestroy( cInfo ); CleanupStack::PopAndDestroy( interface ); CleanupStack::PopAndDestroy( stub ); }
void KDGanttViewTaskLink::showMeType( bool visible ) { //qDebug("KDGanttViewTaskLink::showMeType %d",linkType()); hide(); isvisible = visible; int wid = 1; QPen p; QBrush b; p.setWidth(wid); b.setStyle(Qt::SolidPattern); if (ishighlighted) { b.setColor(myColorHL); p.setColor(myColorHL); } else { b.setColor(myColor); p.setColor(myColor); } QPoint start, end; QPtrListIterator<KDCanvasLine> horIt(*horLineList); QPtrListIterator<KDCanvasLine> verIt(*verLineList); QPtrListIterator<KDCanvasLine> horIt2(*horLineList2); QPtrListIterator<KDCanvasLine> verIt2(*verLineList2); QPtrListIterator<KDCanvasLine> horIt3(*horLineList3); QPtrListIterator<KDCanvasPolygon> topIt(*topList); QPtrListIterator<KDCanvasPolygon> topLeftIt(*topLeftList); QPtrListIterator<KDCanvasPolygon> topRightIt(*topRightList); QPtrListIterator<KDGanttViewItem> fromIt(fromList); QPtrListIterator<KDGanttViewItem> toIt(toList); for ( ; fromIt.current(); ++fromIt ) { (*fromIt)->setTextOffset(QPoint(30,0)); (*fromIt)->moveTextCanvas(); toIt.toFirst(); for ( ; toIt.current(); ++toIt ) { if (isvisible && (*fromIt)->isVisibleInGanttView && (*toIt)->isVisibleInGanttView && myTimeTable->taskLinksVisible) { (*horIt)->setPen(p); (*verIt)->setPen(p); (*horIt2)->setPen(p); (*verIt2)->setPen(p); (*horIt3)->setPen(p); (*topIt)->setBrush(b); (*topLeftIt)->setBrush(b); (*topRightIt)->setBrush(b); (*toIt)->setTextOffset(QPoint(30,0)); (*toIt)->moveTextCanvas(); switch (linkType()) { case StartStart: { start = (*fromIt)->middleLeft(); end = (*toIt)->middleLeft()-QPoint(12,0); bool down = start.y() < end.y(); (*horIt)->setPoints(start.x()-xOffset(*fromIt),start.y(), start.x()-10, start.y()); (*verIt)->setPoints( (*horIt)->endPoint().x(), (*horIt)->endPoint().y(), (*horIt)->endPoint().x(), (down ? (*toIt)->itemPos()+1 : (*toIt)->itemPos()+(*toIt)->height()-1)); (*horIt2)->setPoints((*verIt)->endPoint().x(), (*verIt)->endPoint().y(), end.x()-12, (*verIt)->endPoint().y()); (*verIt2)->setPoints((*horIt2)->endPoint().x(), (*horIt2)->endPoint().y(), (*horIt2)->endPoint().x(), end.y()); (*horIt3)->setPoints((*verIt2)->endPoint().x(), (*verIt2)->endPoint().y(), end.x(), end.y()); (*topRightIt)->move(end.x(),end.y()); (*topRightIt)->show(); break; } case FinishFinish: { start = (*fromIt)->middleRight(); end = (*toIt)->middleRight()+QPoint(12,0); bool down = start.y() < end.y(); (*horIt)->setPoints(start.x()+xOffset(*fromIt),start.y(), start.x()+10, start.y()); (*verIt)->setPoints( (*horIt)->endPoint().x(), (*horIt)->endPoint().y(), (*horIt)->endPoint().x(), (down ? (*toIt)->itemPos()+1 : (*toIt)->itemPos()+(*toIt)->height()-1)); (*horIt2)->setPoints((*verIt)->endPoint().x(), (*verIt)->endPoint().y(), end.x()+12, (*verIt)->endPoint().y()); (*verIt2)->setPoints((*horIt2)->endPoint().x(), (*horIt2)->endPoint().y(), (*horIt2)->endPoint().x(), end.y()); (*horIt3)->setPoints((*verIt2)->endPoint().x(), (*verIt2)->endPoint().y(), end.x(), end.y()); (*topLeftIt)->move(end.x(),end.y()); (*topLeftIt)->show(); break; } case FinishStart: { start = (*fromIt)->middleRight(); end = (*toIt)->middleLeft() - QPoint(12,0); bool down = start.y() < end.y(); (*horIt)->setPoints(start.x()+xOffset(*fromIt),start.y(), start.x()+10,start.y()); (*verIt)->setPoints( (*horIt)->endPoint().x(), (*horIt)->endPoint().y(), (*horIt)->endPoint().x(), (down ? (*toIt)->itemPos()+1 : (*toIt)->itemPos()+(*toIt)->height()-1)); (*horIt2)->setPoints((*verIt)->endPoint().x(), (*verIt)->endPoint().y(), end.x()-12, (*verIt)->endPoint().y()); (*verIt2)->setPoints((*horIt2)->endPoint().x(), (*horIt2)->endPoint().y(), (*horIt2)->endPoint().x(), end.y()); (*horIt3)->setPoints((*verIt2)->endPoint().x(), (*verIt2)->endPoint().y(), end.x(), end.y()); (*topRightIt)->move(end.x(),end.y()); (*topRightIt)->show(); break; } case StartFinish: { start = (*fromIt)->middleRight(); end = (*toIt)->middleRight()+QPoint(12,0); bool down = start.y() < end.y(); (*horIt)->setPoints(start.x()+xOffset(*fromIt),start.y(), start.x()+10, start.y()); (*verIt)->setPoints( (*horIt)->endPoint().x(), (*horIt)->endPoint().y(), (*horIt)->endPoint().x(), (down ? (*toIt)->itemPos()+1 : (*toIt)->itemPos()+(*toIt)->height()-1)); (*horIt2)->setPoints((*verIt)->endPoint().x(), (*verIt)->endPoint().y(), end.x()-12, (*verIt)->endPoint().y()); (*verIt2)->setPoints((*horIt2)->endPoint().x(), (*horIt2)->endPoint().y(), (*horIt2)->endPoint().x(), end.y()); (*horIt3)->setPoints((*verIt2)->endPoint().x(), (*verIt2)->endPoint().y(), end.x(), end.y()); (*topRightIt)->move(end.x(),end.y()); (*topRightIt)->show(); break; } default: qWarning("KDGanttViewTaskLink: Unknown link type"); break; } (*horIt)->show(); (*verIt)->show(); (*horIt2)->show(); (*verIt2)->show(); (*horIt3)->show(); } ++horIt; ++verIt; ++horIt2; ++verIt2; ++horIt3; ++topIt; ++topLeftIt; ++topRightIt; } } }
void KDGanttViewTaskLink::showMe( bool visible ) { if (linkType() != None) { showMeType(visible); return; } hide(); isvisible = visible; int wid = 1; QPen p; QBrush b; p.setWidth(wid); b.setStyle(Qt::SolidPattern); if (ishighlighted) { b.setColor(myColorHL); p.setColor(myColorHL); } else { b.setColor(myColor); p.setColor(myColor); } QPoint start, end; QPtrListIterator<KDCanvasLine> horIt(*horLineList); QPtrListIterator<KDCanvasLine> verIt(*verLineList); QPtrListIterator<KDCanvasPolygon> topIt(*topList); QPtrListIterator<KDGanttViewItem> fromIt(fromList); QPtrListIterator<KDGanttViewItem> toIt(toList); for ( ; fromIt.current(); ++fromIt ) { (*fromIt)->setTextOffset(QPoint(0,0)); toIt.toFirst(); for ( ; toIt.current(); ++toIt ) { (*toIt)->setTextOffset(QPoint(0,0)); if (!isvisible || ! (*fromIt)->isVisibleInGanttView || !(*toIt)->isVisibleInGanttView || !myTimeTable->taskLinksVisible) { (*horIt)->hide(); (*verIt)->hide(); (*topIt)->hide(); ++horIt; ++verIt; ++topIt; } else { (*horIt)->setPen(p); (*verIt)->setPen(p); (*topIt)->setBrush(b); end = (*toIt)->getTaskLinkEndCoord(); start = (*fromIt)->getTaskLinkStartCoord(end); (*horIt)->setPoints(start.x(),start.y(),end.x()+wid,start.y()); (*verIt)->setPoints(end.x()+wid/2,start.y(),end.x()+wid/2,end.y()-2); (*topIt)->move(end.x()+wid/2,end.y()); (*horIt)->show(); (*verIt)->show(); (*topIt)->show(); ++horIt; ++verIt; ++topIt; } } } while ( horIt.current() ) { (*horIt)->hide(); (*verIt)->hide(); (*topIt)->hide(); ++horIt; ++verIt; ++topIt; } }
// --------------------------------------------------------------------------- // CTestDtmf::TestAutomaticDtmfSendingL // --------------------------------------------------------------------------- // void CTestDtmf::TestAutomaticDtmfSendingL( TDtmfSignalType aSigType ) { TMccNetSettings tempSettings = iNetsettings; CMccInterfaceStub* stub = CMccInterfaceStub::NewL(); CleanupStack::PushL( stub ); CMccInterface* interface = CMccInterface::NewL( *stub ); CleanupStack::PushL( interface ); TUint32 sessionId; User::LeaveIfError( interface->CreateSession( sessionId ) ); TUint32 linkId; TInt linkType( KMccLinkGeneral ); User::LeaveIfError( interface->CreateLink( sessionId, linkType, linkId, tempSettings ) ); CMccCodecInformation* cInfo = FetchCodecByMimeSubtypeNameL( *interface, KAMRSdpName ); CleanupStack::PushL( cInfo ); CMccCodecInformation* cInfo2 = FetchCodecByMimeSubtypeNameL( *interface, KTelephoneEvent ); CleanupStack::PushL( cInfo2 ); if ( aSigType == EInbandSignal ) { cInfo2->SetCodecMode( EDTMFModeInband ); } else { cInfo2->SetCodecMode( EDTMFModeEvent ); } TUint32 speakerSinkId( 0 ); TUint32 rtpSourceId( 0 ); TUint32 dlStreamId( 0 ); User::LeaveIfError( interface->AddDataSink( KUidMmfAudioOutput, KNullDesC8, speakerSinkId ) ); User::LeaveIfError( interface->AddDataSource( KMccRtpSourceUid, KNullDesC8, rtpSourceId ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, dlStreamId, KMccAudioDownlinkStream, *cInfo ) ); TUint32 rtpSinkId( 0 ); TUint32 micSourceId( 0 ); TUint32 ulStreamId( 0 ); User::LeaveIfError( interface->AddDataSink( KMccRtpSinkUid, KNullDesC8, rtpSinkId ) ); User::LeaveIfError( interface->AddDataSource( KUidMmfAudioInput, KNullDesC8, micSourceId ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, ulStreamId, KMccAudioUplinkStream, *cInfo ) ); TUint32 dtmfStreamId( 0 ); User::LeaveIfError( interface->Reuse( sessionId, linkId, dlStreamId, rtpSourceId ) ); User::LeaveIfError( interface->Reuse( sessionId, linkId, ulStreamId, rtpSinkId ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, dtmfStreamId, KMccDtmfStream, *cInfo2 ) ); User::LeaveIfError( interface->SetRemoteAddress( sessionId, linkId, iNetsettings.iRemoteAddress ) ); User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, dlStreamId ) ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamPrepared ); User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, ulStreamId ) ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamPrepared ); User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, dtmfStreamId ) ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamPrepared ); /* User::LeaveIfError ( interface->StartStream( sessionId, linkId, dlStreamId ) ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamStarted ); User::LeaveIfError ( interface->StartStream( sessionId, linkId, ulStreamId ) ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamStarted ); */ User::LeaveIfError ( interface->StartStream( sessionId, linkId, dtmfStreamId ) ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamStarted ); TMccDtmfEventData dtmfSignal; dtmfSignal.iDtmfEventType = KMccDtmfSigSendString; dtmfSignal.iDtmfString.Copy( KTxtTestDtmfString1() ); dtmfSignal.iContinue = ETrue; TMccDtmfEventDataPackage signalPkg1( dtmfSignal ); // BASIC SENDING TEST WITH NORMAL DIGITS // Encapsulate the signal in event TMccEvent event; event.iSessionId = sessionId; event.iLinkId = linkId; event.iStreamId = dtmfStreamId; event.iEventCategory = KMccEventCategoryDtmf; event.iEventType = KMccDtmfControl; event.iEventData.Copy( signalPkg1 ); interface->SendMediaSignalL( event ); if ( EOutbandSignal == aSigType ) { // Note: In loopback test activity event comes first due to delayed // control event sending. stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccActivityEvent ); } for ( TInt i = 0; i < KTxtTestDtmfString1().Length(); i++ ) { stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStart ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStop ); } stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSendingComplete ); iConsole.Printf( _L("Media signal sent 1, press to continue\n") ); iConsole.Getch(); // PAUSE CHARACTER HANDLING TEST dtmfSignal.iDtmfString.Copy( KTxtTestDtmfStringWithPauseChars() ); TMccDtmfEventDataPackage signalPkg2( dtmfSignal ); event.iEventData.Copy( signalPkg2 ); interface->SendMediaSignalL( event ); for ( TInt i = 0; i < 3; i++ ) { stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStart ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStop ); } stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSendingComplete ); iConsole.Printf( _L("Media signal sent 2, press to continue\n") ); iConsole.Getch(); // STOP CHARACTER HANDLING TEST _LIT( KTxtTestDtmfStringWithStopChars, "w12" ); dtmfSignal.iDtmfString.Copy( KTxtTestDtmfStringWithStopChars() ); TMccDtmfEventDataPackage signalPkg3( dtmfSignal ); event.iEventData.Copy( signalPkg3 ); interface->SendMediaSignalL( event ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfStopInDtmfString ); dtmfSignal.iDtmfEventType = KMccDtmfSigContinueSending; dtmfSignal.iContinue = ETrue; signalPkg3 = dtmfSignal; event.iEventData.Copy( signalPkg3 ); interface->SendMediaSignalL( event ); for ( TInt i = 0; i < 2; i++ ) { stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStart ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStop ); } stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSendingComplete ); iConsole.Printf( _L("Media signal sent 3, press to continue\n") ); iConsole.Getch(); // CANCEL DTMF STRING SENDING -TEST dtmfSignal.iDtmfString.Copy( KTxtTestDtmfString1() ); dtmfSignal.iDtmfEventType = KMccDtmfSigSendString; TMccDtmfEventDataPackage signalPkg4( dtmfSignal ); event.iEventData.Copy( signalPkg4 ); interface->SendMediaSignalL( event ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfSequenceStart ); dtmfSignal.iDtmfEventType = KMccDtmfSigCancelSending; signalPkg4 = dtmfSignal; event.iEventData.Copy( signalPkg4 ); interface->SendMediaSignalL( event ); iConsole.Printf( _L("Media signal sent 4, press to continue\n") ); iConsole.Getch(); // TBD: which event should be sent when string sending is cancelled? User::LeaveIfError ( interface->StopStream( sessionId, linkId, dlStreamId ) ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamStopped ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamStopped ); User::LeaveIfError ( interface->StopStream( sessionId, linkId, ulStreamId ) ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamStopped ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamStopped ); User::LeaveIfError ( interface->StopStream( sessionId, linkId, dtmfStreamId ) ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamStopped ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamStopped ); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, dlStreamId ) ); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, ulStreamId ) ); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, dtmfStreamId ) ); User::LeaveIfError( interface->CloseLink( sessionId, linkId ) ); User::LeaveIfError( interface->CloseSession( sessionId ) ); CleanupStack::PopAndDestroy( cInfo2 ); CleanupStack::PopAndDestroy( cInfo ); CleanupStack::PopAndDestroy( interface ); CleanupStack::PopAndDestroy( stub ); }
// --------------------------------------------------------------------------- // CTestDtmf::TestManualDtmfSendingL // --------------------------------------------------------------------------- // void CTestDtmf::TestManualDtmfSendingL( TDtmfSignalType aSigType ) { TMccNetSettings tempSettings = iNetsettings; CMccInterfaceStub* stub = CMccInterfaceStub::NewL(); CleanupStack::PushL( stub ); CMccInterface* interface = CMccInterface::NewL( *stub ); CleanupStack::PushL( interface ); TUint32 sessionId; User::LeaveIfError( interface->CreateSession( sessionId ) ); TUint32 linkId; TInt linkType( KMccLinkGeneral ); User::LeaveIfError( interface->CreateLink( sessionId, linkType, linkId, tempSettings ) ); CMccCodecInformation* cInfo = FetchCodecByMimeSubtypeNameL( *interface, KAMRSdpName ); CleanupStack::PushL( cInfo ); CMccCodecInformation* cInfo2 = FetchCodecByMimeSubtypeNameL( *interface, KTelephoneEvent ); CleanupStack::PushL( cInfo2 ); if ( aSigType == EInbandSignal ) { cInfo2->SetCodecMode( EDTMFModeInband ); } else { cInfo2->SetCodecMode( EDTMFModeEvent ); } TUint32 speakerSinkId( 0 ); TUint32 rtpSourceId( 0 ); TUint32 dlStreamId( 0 ); User::LeaveIfError( interface->AddDataSink( KUidMmfAudioOutput, KNullDesC8, speakerSinkId ) ); User::LeaveIfError( interface->AddDataSource( KMccRtpSourceUid, KNullDesC8, rtpSourceId ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, dlStreamId, KMccAudioDownlinkStream, *cInfo ) ); TUint32 rtpSinkId( 0 ); TUint32 micSourceId( 0 ); TUint32 ulStreamId( 0 ); User::LeaveIfError( interface->AddDataSink( KMccRtpSinkUid, KNullDesC8, rtpSinkId ) ); User::LeaveIfError( interface->AddDataSource( KUidMmfAudioInput, KNullDesC8, micSourceId ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, ulStreamId, KMccAudioUplinkStream, *cInfo ) ); TUint32 dtmfStreamId( 0 ); User::LeaveIfError( interface->Reuse( sessionId, linkId, dlStreamId, rtpSourceId ) ); User::LeaveIfError( interface->Reuse( sessionId, linkId, ulStreamId, rtpSinkId ) ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, dtmfStreamId, KMccDtmfStream, *cInfo2 ) ); User::LeaveIfError( interface->SetRemoteAddress( sessionId, linkId, iNetsettings.iRemoteAddress ) ); User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, dlStreamId ) ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamPrepared ); User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, ulStreamId ) ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamPrepared ); User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, dtmfStreamId ) ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamPrepared ); /* User::LeaveIfError ( interface->StartStream( sessionId, linkId, dlStreamId ) ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, dlStreamId, KMccStreamStarted ); User::LeaveIfError ( interface->StartStream( sessionId, linkId, ulStreamId ) ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, ulStreamId, KMccStreamStarted ); */ User::LeaveIfError ( interface->StartStream( sessionId, linkId, dtmfStreamId ) ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccStreamStarted ); TMccDtmfEventData dtmfSignal; dtmfSignal.iDtmfEventType = KMccDtmfSigStartTone; _LIT8( KDtmfDigit, "0" ); dtmfSignal.iDtmfString.Copy( KDtmfDigit ); TMccDtmfEventDataPackage signalPkg1( dtmfSignal ); TMccEvent event; event.iSessionId = sessionId; event.iLinkId = linkId; event.iStreamId = dtmfStreamId; event.iEventCategory = KMccEventCategoryDtmf; event.iEventType = KMccDtmfControl; event.iEventData.Copy( signalPkg1 ); interface->SendMediaSignalL( event ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfManualStart ); if ( EOutbandSignal == aSigType ) { stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccActivityEvent ); } iConsole.Printf( _L("Press a key to stop digit send\n") ); iConsole.Getch(); dtmfSignal.iDtmfEventType = KMccDtmfSigStopTone; signalPkg1 = dtmfSignal; event.iEventData.Copy( signalPkg1 ); interface->SendMediaSignalL( event ); stub->WaitForEvent( sessionId, linkId, dtmfStreamId, KMccDtmfControl, KMccDtmfManualStop ); iConsole.Printf( _L("Press a key to delete streams\n") ); iConsole.Getch(); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, dlStreamId ) ); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, ulStreamId ) ); User::LeaveIfError( interface->DeleteStream( sessionId, linkId, dtmfStreamId ) ); User::LeaveIfError( interface->CloseLink( sessionId, linkId ) ); User::LeaveIfError( interface->CloseSession( sessionId ) ); CleanupStack::PopAndDestroy( cInfo2 ); CleanupStack::PopAndDestroy( cInfo ); CleanupStack::PopAndDestroy( interface ); CleanupStack::PopAndDestroy( stub ); }
// --------------------------------------------------------------------------- // CTestDtmf::TestStreamControlL // --------------------------------------------------------------------------- // void CTestDtmf::TestStreamControlL( TDtmfSignalType aSigType ) { TMccNetSettings tempSettings = iNetsettings; CMccInterfaceStub* stub = CMccInterfaceStub::NewL(); CleanupStack::PushL( stub ); CMccInterface* interface = CMccInterface::NewL( *stub ); CleanupStack::PushL( interface ); TUint32 sessionId; User::LeaveIfError( interface->CreateSession( sessionId ) ); TUint32 linkId; TInt linkType( KMccLinkGeneral ); User::LeaveIfError( interface->CreateLink( sessionId, linkType, linkId, tempSettings ) ); stub->WaitForEvent( sessionId, linkId, 0, KMccLinkCreated ); CMccCodecInformation* cInfo = FetchCodecByMimeSubtypeNameL( *interface, KTxtDtmf ); CleanupStack::PushL( cInfo ); if ( aSigType == EInbandSignal ) { cInfo->SetCodecMode( EDTMFModeInband ); } else { cInfo->SetCodecMode( EDTMFModeEvent ); } TUint32 streamId( 0 ); TUint32 sinkId( 0 ), sourceId( 0 ); interface->AddDataSink( KMccRtpSinkUid, KNullDesC8, sinkId ); interface->AddDataSource( KMccRtpSourceUid, KNullDesC8, sourceId ); User::LeaveIfError( interface->CreateStream( sessionId, linkId, streamId, KMccDtmfStream, *cInfo ) ); // TEST CORRECT CONTROL PATHS User::LeaveIfError ( interface->PrepareStream( sessionId, linkId, streamId ) ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamPrepared ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamPrepared ); User::LeaveIfError ( interface->StartStream( sessionId, linkId, streamId ) ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamStarted ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamStarted ); User::LeaveIfError ( interface->PauseStream( sessionId, linkId, streamId ) ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamPaused ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamPaused ); User::LeaveIfError ( interface->ResumeStream( sessionId, linkId, streamId ) ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamResumed ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamResumed ); User::LeaveIfError ( interface->StopStream( sessionId, linkId, streamId ) ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamStopped ); stub->WaitForEvent( sessionId, linkId, streamId, KMccStreamStopped ); // TBD: TEST INVALID CONTROL PATHS User::LeaveIfError( interface->DeleteStream( sessionId, linkId, streamId ) ); User::LeaveIfError( interface->CloseLink( sessionId, linkId ) ); User::LeaveIfError( interface->CloseSession( sessionId ) ); CleanupStack::PopAndDestroy( cInfo ); CleanupStack::PopAndDestroy( interface ); CleanupStack::PopAndDestroy( stub ); }