// --------------------------------------------------------------------------- // CDTMFPayloadFormatWrite::StartDTMFToneL // Starts a timer which sends specified DTMF digit periodically until // StopDTMFTone() is called. // --------------------------------------------------------------------------- // void CDTMFPayloadFormatWrite::StartDTMFToneL( const TChar aTone ) { TUint32 tickCount( User::NTickCount() ); DP_DTMF_WRITE3( _L("CDTMFPayloadFormatWrite::StartDTMFToneL aTone = %c, tick = %u"), static_cast<TUint>( aTone ), tickCount ); DP_DTMF_WRITE2( _L("CDTMFPayloadFormatWrite::StartDTMFToneL enc state %d"), iStateMachine->State() ); __ASSERT_ALWAYS( IsValidDigit( aTone ), User::Leave( KErrArgument ) ); iSendingMode = EModeManual; TSendBufferElement element( aTone, tickCount ); iSendBuffer.AppendL( element ); if ( EStateSendingIdle == iStateMachine->State() ) { if ( KSignalOutbandDtmf == iGenerationMode ) { iSinkBuffer->Data().FillZ( KDTMFDefaultPayloadSize ); } iStateMachine->ChangeStateTo( EStateEncodeNextDigit ); } else { DP_DTMF_WRITE( _L("CDTMFPayloadFormatWrite::StartDTMFToneL - REQ BUFFERED") ); } }
void GlobeTracker::stopGlobeMovie() { switch (_trackDirection) { case kTrackLeft: _leftHighlight->hide(); _globeMovie->stop(); break; case kTrackRight: _rightHighlight->hide(); _globeMovie->stop(); break; case kTrackUp: _upHighlight->hide(); _trackTime = tickCount() - kVerticalDuration; break; case kTrackDown: _downHighlight->hide(); _trackTime = tickCount() - kVerticalDuration; break; } }
void GlobeTracker::trackGlobeMovie() { TimeValue time; switch (_trackDirection) { case kTrackLeft: if (!_globeMovie->isRunning()) _globeMovie->start(); _leftHighlight->show(); break; case kTrackRight: if (!_globeMovie->isRunning()) _globeMovie->start(); _rightHighlight->show(); break; case kTrackUp: time = _globeMovie->getTime(); if (_trackTime == 0) { _trackTime = tickCount(); } else if ((int)time - (int)kDurationPerRow * 2 >= 0 && (int)tickCount() >= _trackTime + kVerticalDuration) { _trackTime = tickCount(); _globeMovie->setTime(time - kDurationPerRow * 2); _globeMovie->redrawMovieWorld(); } _upHighlight->show(); break; case kTrackDown: time = _globeMovie->getTime(); if (_trackTime == 0) { _trackTime = tickCount(); } else if (time + kDurationPerRow * 2 < _globeMovie->getDuration() && (int)tickCount() >= _trackTime + kVerticalDuration) { _trackTime = tickCount(); _globeMovie->setTime(time + kDurationPerRow * 2); _globeMovie->redrawMovieWorld(); } _downHighlight->show(); break; } }
// --------------------------------------------------------------------------- // CDTMFPayloadFormatWrite::StopDTMFToneL // Stops the timer for DTMF digit update packet sending. Starts a timer for // sending Final Packet three times according to RFC 2833, section 2.5.1.4. // --------------------------------------------------------------------------- // void CDTMFPayloadFormatWrite::StopDTMFToneL() { TUint32 tickCount( User::NTickCount() ); DP_DTMF_WRITE2( _L("CDTMFPayloadFormatWrite::StopDTMFTone, tick = %u"), tickCount ); // set stop time to the first unupdated element TBool elementFound( EFalse ); TInt index( 0 ); while ( !elementFound && index < iSendBuffer.Count() ) { if ( iSendBuffer[index].StopTime() == 0 ) { iSendBuffer[index].SetStopTime( tickCount ); if ( iSendBuffer[index].StopTime() == 0 ) { // mark stop time as updated to prevent update of the same // element in future iSendBuffer[index].SetStopTime( 1 ); } elementFound = ETrue; } index++; } if ( EStateToneOn == iStateMachine->State() ) { if ( KSignalOutbandDtmf == iGenerationMode ) { if ( EDTMFPayloadFormatEvent == iPayloadFormat || EDTMFPayloadFormatRedEvents == iPayloadFormat ) { // Send final packet with "E" bit set. According to // RFC 2833 2.5.1.4 final packet SHOULD be sent three times. iPayloadEncoder ->UpdateEventPayload( ETrue, iToneDuration, iSinkBuffer ); iStateMachine->ChangeStateTo( EStateToneOff ); } else if ( EDTMFPayloadFormatTone == iPayloadFormat ) { // Tone Payload Format doesn't have final packet redundancy iPayloadEncoder->UpdateTonePayload( iToneDuration, iSinkBuffer ); } else { // Not acceptable payload format } } else { iStateMachine->ChangeStateTo( EStateToneOff ); } } else { DP_DTMF_WRITE( _L("CDTMFPayloadFormatWrite::StopDTMFTone OUT-OF-SYNC") ); } }