--- a/srsf/nssvasapi/nssvascore/inc/nssvascspeechitem.h Thu Aug 19 09:56:14 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,634 +0,0 @@
-/*
-* Copyright (c) 2004-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: The CSeechItem provides speech mechanism to request services from SRS.
-*
-*/
-
-
-#ifndef NSSVASCSPEECHITEM_H
-#define NSSVASCSPEECHITEM_H
-
-// INCLUDE FILES
-#include <nsssispeechrecognitiondatacommon.h>
-#include <nsssispeechrecognitionutilityobserver.h>
-#include <nssttscommon.h>
-
-#include "srsfbldvariant.hrh"
-#include "nssvascoreconstant.h"
-#include "nssvasmspeechitem.h"
-#include "nssvasmtrainvoiceeventhandler.h"
-#include "nssvasmtraintexteventhandler.h"
-#include "nssvasmplayeventhandler.h"
-#include "nssvasmcoresrsdbeventhandler.h"
-#include "nssvasmsavetagclient.h"
-#include "nssvasmdeletetagclient.h"
-#include "nssvasccontext.h"
-#include "nssvascspeechitemsrsportal.h"
-#include "nssvastspeechitemconstant.h"
-#include "nssvasttsutilitywrapper.h"
-
-// FORWARD DECLARATIONS
-class CNssSpeechItemTrainer;
-class CNssTag;
-
-/**
-* The CNssSpeechItem class provides a realization of the MNssSpeechItem client
-* interface. The CNssSpeechItem methods use the CSpeechRecognitionUtility Api
-* to implement client speech requests.
-*
-* @lib nssvasapi.lib
-* @since 2.8
-*/
-class CNssSpeechItem : public CBase,
- public MNssSpeechItem,
- public MSISpeechRecognitionUtilityObserver,
- public MTtsClientUtilityObserver
-{
-
- public: // Constructors and destructor
-
- /**
- * Destructor.
- */
- ~CNssSpeechItem();
-
- /**
- * Two-phased CNssSpeechItem constructor
- *
- * @since 2.0
- * @param aContext A reference to Context object
- * @param aPortal A reference to SpeechItem Portal object
- * @return a pointer to the new SpeechItem object
- */
- static CNssSpeechItem* NewL( CNssContext& aContext,
- CNssSpeechItemSrsPortal& aPortal,
- CNssSpeechItemTrainer& aTrainer );
-
-
- /**
- * Two-phased CNssSpeechItem constructor
- *
- * @since 2.0
- * @param aContext A reference to Context object
- * @param aPortal A reference to SpeechItem Portal object
- * @param aRuleID A rule ID value
- * @param aText A reference to the TDesc text
- * @return a pointer to the new SpeechItem object
- */
- static CNssSpeechItem* NewL( CNssContext& aContext,
- CNssSpeechItemSrsPortal& aPortal,
- CNssSpeechItemTrainer& aTrainer,
- TUint32 aRuleID,
- const TDesC& aText );
-
- /**
- * Two-phased CNssSpeechItem constructor
- *
- * @since 2.0
- * @param aContext A reference to Context object
- * @param aPortal A reference to SpeechItem Portal object
- * @param aRuleID A rule ID value
- * @param aText A reference to the TDesc text
- * @return a pointer to the new SpeechItem object
- */
- static CNssSpeechItem* NewLC( CNssContext& aContext,
- CNssSpeechItemSrsPortal& aPortal,
- CNssSpeechItemTrainer& aTrainer,
- TUint32 aRuleID,
- const TDesC& aText );
-
-
- public: // New functions
-
- /**
- * Method to return the rule ID
- *
- * @since 2.0
- * @param
- * @return the rule ID.
- */
- TUint32 RuleID();
-
- /**
- * Method to set the rule ID
- *
- * @since 2.0
- * @param aRuleID Rule ID
- */
- void SetRuleID( TUint32 aRuleID );
-
- /**
- * Method to set the Training Type
- *
- * @since 2.0
- * @param aTrainType Training Type
- */
- void SetTrainedType( TNssVasCoreConstant::TNssTrainedType aTrainType );
-
- /**
- * Create a copy of the SpeechItem object.
- * This cunction creates a new SpeechItem by allocating memory for
- * a new SpeechItem, and deep copying the members of the SpeechItem
- * on which this fucntion is called. Old SpeechItem and new SpeechItem
- * exist. Client need to deallocate memory for both.
- *
- * @param aContext a pointer to a Context
- * @return pointer the newly created SpeechItem.
- */
- CNssSpeechItem* CopyL( CNssContext* aContext );
-
-
-
- public: // Functions from base classes
-
-
- /**
- * Function inherited from MSISpeechRecognitionUtilityObserver to
- * handle the events from SRS Utility object
- *
- * @since 2.0
- * @param aEvent an event from the SRS utility object
- * @param aResult the result from aEvent operation
- */
- void MsruoEvent( TUid aEvent, TInt aResult );
-
-
- /**
- * The Record method is used by the client in the train voice sequence
- * for SRS to record input speech.
- *
- * @since 2.0
- * @param aTrainVoiceEventHandler a reference to TrainVoiceEventHandler
- * @return a fail or success result from processing this method.
- */
- TNssSpeechItemResult RecordL( MNssTrainVoiceEventHandler* aTrainVoiceEventHandler );
-
-
- /**
- * Method called by the client to indicate to SRS that a playback is
- * needed.
- *
- * @since 2.0
- * @param aPlayEventHandler a reference to PlayEventHandler
- * @return a fail or success result from processing this method.
- */
- TNssSpeechItemResult PlayL( MNssPlayEventHandler* aPlayEventHandler );
-
- /**
- * Method called by the client to indicate to SRS that a playback is
- * needed with a certain language.
- *
- * @since 2.8
- * @param aPlayEventHandler a call back object to handle the play events
- * @param aLanguage language which will be used in playback
- * @return TNssSpeechItemResult synchronous return value to identify whether the
- * synchronous process is success or fail
- */
- TNssSpeechItemResult PlayL( MNssPlayEventHandler* aPlayEventHandler,
- TLanguage aLanguage );
-
- /**
- * Method called by the client to indicate to SRS that training is
- * needed.
- *
- * @since 2.0
- * @param aTrainVoiceEventHandler a reference to TrainVoiceEventHandler
- * @return a fail or success result from processing this method.
- */
- TNssSpeechItemResult TrainVoiceL(MNssTrainVoiceEventHandler* aTrainVoiceEventHandler);
-
- /**
- * Method called by the client to cancel the previous operation.
- *
- * @since 2.0
- * @return a fail or success result from processing this method.
- */
- TNssSpeechItemResult CancelL();
-
- /**
- * The TrainingCapabilities member fucntion is used by the client
- * to get training capabilities to beused in Speaker Independent voice
- * recognition.
- *
- * @since 2.0
- * @return a pointer to the Training Capability array object
- */
- CArrayFixFlat<TNssVasCoreConstant::TNssTrainingCapability>* TrainingCapabilities();
-
- /**
- * Method to return the Training Type
- *
- * @since 2.0
- * @return the Training Type
- */
- TNssVasCoreConstant::TNssTrainedType TrainedType();
-
- /**
- * Method to return the Text
- *
- * @since 2.0
- * @return the Text
- */
- TDesC& Text();
-
- /**
- * Returns the raw training text from where escape characters are not removed.
- * Should not be used by clients who want to display the string.
- *
- * @since 3.2
- * @return Reference to the text buffer
- */
- TDesC& RawText();
-
- /**
- * Returns the part of text which identified with the given id.
- * If RawText() is for example "_1Amy_1Harris_2mobile" then
- * PartialTextL( _L( "1" ) ) call will return "Amy Harris".
- *
- * @since 3.2
- * @param aIdentifier ID of the text part to return
- * @reuturn Text or KNullDesC if identifier is not found
- */
- HBufC* PartialTextL( const TDesC& aIdentifier );
-
- /**
- * Method to set the training text
- *
- * @since 2.0
- * @param aText Text which will be trained
- * @return
- */
- void SetTextL( const TDesC& aText );
-
- /**
- * Method to query playing support.
- *
- * @since 2.8
- * @return TBool True if playing is supported.
- */
- TBool IsPlayingSupported();
-
- /**
- * Method to train a speech model from text.
- *
- * @since 2.8
- * @param aEventHandler Event handler
- * @param aTrainingParams Training options, NULL uses default ones.
- * @return TNssSpeechItemResult Success status
- */
- TNssSpeechItemResult TrainTextL( MNssTrainTextEventHandler* aEventHandler,
- CNssTrainingParameters* aTrainingParams );
-
- /**
- * Unused method for future extensions of MTtsClientUtilityObserver.
- *
- * @from MTtsClientUtilityObserver
- * @since 2.8
- * @param aEvent event ID
- * @param aError result
- */
- void MapcCustomCommandEvent( TInt aEvent, TInt aError );
-
- /**
- * Method to signal that playing has been initialized.
- *
- * @from MTtsClientUtilityObserver
- * @since 2.8
- * @param aError Successful or not
- * @param aDuration Length of the TTS waveform
- */
- void MapcInitComplete( TInt aError, const TTimeIntervalMicroSeconds& aDuration);
-
- /**
- * Method to signal that playing has been completed.
- *
- * @from MTtsClientUtilityObserver
- * @since 2.8
- * @param aError Successful or not
- */
- void MapcPlayComplete( TInt aError );
-
- public: // New Functions
-
- /**
- * Method to start transaction for saving the data into the SRS.
- *
- * @since 2.0
- * @param aSaveTagClient Callback after we made it or died trying
- * @param aTag Tag to be deleted
- * @return a fail or success result from processing this method.
- */
- MNssCoreSrsDBEventHandler::TNssSrsDBResult
- NSSBeginSaveToSrs( MNssSaveTagClient* aSaveTagClient, CNssTag* aTag );
-
- /**
- * Method to start transaction for deleting tags from SRS and VAS DB.
- *
- * @since 2.0
- * @param aDeleteTagClient Callback after we made it or died trying
- * @param aTag Tag to be deleted
- * @return a fail or success result from processing this method.
- */
- MNssCoreSrsDBEventHandler::TNssSrsDBResult
- NSSBeginDeleteFromSrs( MNssDeleteTagClient* aDeleteTagClient, CNssTag* aTag );
-
- /**
- * Method to commit the transaction to the SRS.
- * This is a SYNCHRONOUS method.
- * @since 2.0
- * @return a fail or success result from processing this method.
- */
- MNssCoreSrsDBEventHandler::TNssSrsDBResult CommitSrsChanges();
-
-
- /**
- * Method to end the transaction without committing..
- * This is a SYNCHRONOUS method.
- * @since 2.8
- * @return a fail or success result from processing this method.
- */
- MNssCoreSrsDBEventHandler::TNssSrsDBResult RollbackSrsChanges();
-
- /**
- * Method to set the Tag ID
- * @since 2.0
- * @param aTagId a Tag ID
- */
- void SetTagId( TInt aTagId );
-
- /**
- * Method to return the Tag ID
- *
- * @since 2.0
- * @return the Tag ID.
- */
- TInt TagId();
-
- /**
- * Method to return the Grammar ID from the context of the speech item.
- *
- * @since 2.8
- * @return the Grammar ID.
- */
- TUint32 GrammarId();
-
- /**
- * Method to set the Trained flag for True or False
- *
- * @since 2.0
- * @param aTrained Trained flag
- */
- void SetTrained( TBool aTrained );
-
- /**
- * Method to return the Trained flag
- *
- * @since 2.0
- * @return the Trained flag
- */
- TBool Trained();
-
- /**
- * Updates the speech item after training.
- *
- * @since 2.8
- * @param aRuleID Rule ID.
- */
- void DelayedTrainingComplete( TUint32 aRuleID );
-
-
- private: //function
-
- /**
- * C++ constructor
- *
- * @param aContext reference to Context object
- * @param aPortal reference to SpeechItem Portal object
- * @param aTrainer reference to speech item trainer
- */
- CNssSpeechItem( CNssContext& aContext,
- CNssSpeechItemSrsPortal& aPortal,
- CNssSpeechItemTrainer& aTrainer );
-
- /**
- * Symbian 2nd phase constructor
- *
- * @param aRuleID Rule ID value
- * @param aText Reference to the TDesc text
- */
- void ConstructL( TUint32 aRuleID, const TDesC& aText );
-
- /**
- * Method to copy utterance data from current to transient values
- */
- void CopyUtteranceData();
-
- /**
- * Method to handle the "GetUtteranceDurationEvent" complete from SRS
- */
- void DoGetUtteranceDurationCompleteEvent();
-
- /**
- * Method to handle the "PlayEvent" complete from SRS
- */
- void DoPlayCompleteEvent();
-
- /**
- * Method to handle the "PlayEvent" fail from SRS
- *
- * @param aResult - a Result value from the Play operation
- */
- void DoPlayFailEvent( TInt aResult );
-
- /**
- * Method to process the SRS play error
- *
- * @param aResult the result value from SRS which indicates an error
- * @return a converted error code to identify the VAS play error
- */
- MNssPlayEventHandler::TNssPlayResult DoPlayResult( TInt aResult );
-
- /**
- * Method to handle the "GetAvailableStorageEvent" complete from SRS
- */
- void DoGetAvailableStorageCompleteEvent();
-
- /**
- * Method to handle the "TrainEvent" complete from SRS
- */
- void DoTrainCompleteEvent();
-
- /**
- * Method to process the various train failed events from SRS'
- *
- * @param aResult the result value to indicate an error
- */
- void DoTrainFailEvent( TInt aResult );
-
- /**
- * Method to process the SRS train error
- *
- * @param aResult the result value from SRS which indicates an error
- * @return a converted error code to identify the VAS train error
- */
- MNssTrainVoiceEventHandler::TNssTrainResult DoTrainResult( TInt aResult );
-
- /**
- * Method to handle the "AddPronunciation" complete from SRS
- */
- void DoAddPronunciationCompleteEvent();
-
- /**
- * Method to handle the "AddPronunciation" fail from SRS
- *
- * @param aResult a Result value from the event
- */
- void DoAddPronounciationFailEvent( TInt aResult );
-
- /**
- * Method to handle the "RemoveModel" complete from SRS
- */
- void DoRemoveModelCompleteEvent();
-
- /**
- * Method to handle the "RemoveModel" fail from SRS
- *
- * @param aResult a Result value from the event
- */
- void DoRemoveModelFailEvent( TInt aResult );
-
- /**
- * Method to process the SRS DB error
- *
- * @param aResult the result value from SRS to indicate an error
- * @return an error code to identify the DB error
- */
- MNssCoreSrsDBEventHandler::TNssSrsDBResult DoSrsDBResult( TInt aResult );
-
- /**
- * Method to notify the event handler for receiving the Unexpected Event
- */
- void NotifyHandlerForUnexpectedEvent();
-
- /**
- * Method to do clean up
- */
- void CleanUp();
-
- /**
- * Method to verify whether it is ok to retry
- *
- * @return ETrue is ok to retry, EFalse stops retry
- */
- TBool DoRetry();
-
- /**
- * This method starts playback with CTtsUtility.
- */
- void DoPlayL();
-
- /**
- * This method releases resources, which were reserved for playing,
- * and updated the state from PlayingStrated to Idle.
- */
- void CleanPlayback();
-
- /**
- * Makes the callback after playing has completed or failed.
- *
- * @param Symbian standard error code
- */
- void MakePlayCallback( TInt aResult );
-
- private: //data
-
- // The rule ID.
- TUint32 iRuleID;
-
- // The transient rule ID.
- TUint32 iTransientRuleID;
-
- // The text data.
- HBufC* iText;
-
- // The trained type.
- TNssVasCoreConstant::TNssTrainedType iTrainedType;
-
- // Need to keep track the training state.
- TNssSpeechItemConstant::TNssState iState;
- TNssSpeechItemConstant::TNssState iOldState;
-
- // Reference to Context object
- CNssContext& iContext;
-
- // Reference to SRS Portal object.
- CNssSpeechItemSrsPortal& iPortal;
-
- // Reference to SRS Trainer object. Used for delayed text training.
- CNssSpeechItemTrainer& iTrainer;
-
- // Pointer to Play Event Handler object.
- MNssPlayEventHandler* iPlayEventHandler;
-
- // Pointer to Train Event Handler object
- MNssTrainVoiceEventHandler* iTrainVoiceEventHandler;
-
- // The Tag ID for internal use by Vas Database,
- TInt iTagId;
-
- // The Trained flag for re-training operation
- TBool iTrained;
-
- // The duration for the play utterance
- TTimeIntervalMicroSeconds32 iPlayDuration;
-
- // The flag to identify recovery is in progress
- TBool iRecover;
-
- // Retry counter
- TInt iRetry;
-
- // Memory is allocated for TTS data only when plaing the tag.
- // This is because CNssSpeechItem may have thousands of copies.
- struct TTtsData
- {
- // TTS speech style
- TTtsStyle iStyle;
-
- // TTS speech style handle
- TTtsStyleID iStyleID;
-
- // TTS speech segment
- TTtsSegment iSegment;
-
- // TTS player
- CNssTtsUtilityWrapper* iTts;
-
- // Parsed text
- CTtsParsedText* iParsedText;
-
- // Initializes everyting to zero.
- TTtsData();
- };
-
- // TTS Data
- TTtsData* iTtsData;
-
- // Cleaned text data where escape characters have been removed
- HBufC* iTrimmedText;
-};
-
-#endif // NSSVASCSPEECHITEM_H
-
-// End of file