srsf/vcommandhandler/inc/tagplayer.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:17 +0100
branchRCL_3
changeset 23 e36f3802f733
parent 0 bf1d17376201
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2006 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:  Plays back voice commands
*
*/


 
#ifndef TAGPLAYER_H
#define TAGPLAYER_H

#include <nssvasmplayeventhandler.h>
#include <nssvasmtag.h>
#include <nssvasmgettagclient.h>  // for MNssTagListArray
#include "vcommandinternalapi.h"

/**
* Plays back the voice commad
*/
class CTagPlayer : public CBase, public MNssPlayEventHandler
    {
    public:
        
        static CTagPlayer* NewL();
        
        ~CTagPlayer();
        
        /**
        * Attempts to play back the text expected to be recognized. 
        * This object takes ownership on the aTag and will delete it upon
        * the playback completion.
        * This function is asynchronous
        *
        * @param aTag Tag to play. Will be deleted (not from VAS) upon the 
        *        playback completion
        * @param aPlayEventHandler Entity that handles the playback callbacks
        * @see NssVasMPlayEventHandler.h
        *
        * @leave KErrBadHandle if the current command has not been retrieved 
        *        from CVCommandHandler (i.e. was not trained for recognition)
        * @leave KErrNotFound if this command cannot be found in aHandler
        * @leave KErrNotReady @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
        *                                              EVasUnexpectedRequest
        * @leave KErrInUse @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
        *                                              EVasInUse
        * @leave KErrArgument @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
        *                                              EVasInvalidParameter
        * @leave KErrGeneral @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
        *                                             EVasPlayFailed
        */
        virtual void PlayTagL( MNssTag* aTag, MNssPlayEventHandler& aPlayEventHandler );
        
        /**
        * Cancels playback. No PlayStarted/PlayComplete after it
        *
        * @leave KErrNotReady if playback has never been started
        */                                   
        virtual void CancelPlaybackL();
    
        // From MNsPlayEventHandler

        /**
        * The HandlePlayStarted method is a virtual method implemented by the
        * client and is called when play is started
        * @param aDuration - the duration of the utterance data
        */       
        virtual void HandlePlayStarted( TTimeIntervalMicroSeconds32 aDuration );

        /**
        * The HandlePlayComplete method is a virtual method implemented by the
        * client and is called when play is completed
        * @param aErrorCode EVasErrorNone if playing was successfull
        */       
        virtual void HandlePlayComplete( TNssPlayResult aErrorCode );        
        
    private:
        // Playback is asynchronous function. 
        // This variable is used to hold the tag being played back
        MNssTag*                    iPlaybackTag;
        
        // Playback is asynchronous function. 
        // This variable is used to hold the external play event
        // handler
        MNssPlayEventHandler*       iPlayEventHandler;

    };

#endif // TAGPLAYER_H