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

/*
* Copyright (c) 2002-2007 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:  This is the main interface of the SI Controller Plugin.
*
*/



#ifndef SICONTROLLERPLUGININTERFACE_H
#define SICONTROLLERPLUGININTERFACE_H

// INCLUDES
#include <mmfcontroller.h>
#include <nsssispeechrecognitioncustomcommandimplementor.h>
#include <nsssispeechrecognitiondataclient.h>

// FORWARD DECLARATIONS
class CSIControllerPlugin;
class CSDClientResultSet;


// CLASS DECLARATION

/**
*  This is the main interface class of SI Controller Plugin
*
*  @lib SIControllerPlugin.lib
*  @since 2.8
*/
class CSIControllerPluginInterface : public CMMFController,
public MSISpeechRecognitionCustomCommandImplementor
{
public:  // Constructors and destructor
	
    /**
    * Two-phased constructor.
	*/
	static CSIControllerPluginInterface* NewL();
	
	/**
	* Destructor.
	*/
	virtual ~CSIControllerPluginInterface();
	
public: // Functions from base classes
	
    /**
    * From CMMFController
    * Add a data source to the controller plugin.
    * @since 2.8
    * @param aDataSource reference to the data source to be added
	*/
	void AddDataSourceL( MDataSource& aDataSource );
	
	/**
	* From CMMFController
	* Add a data sink to the controller plugin. Not supported.
	* @since 2.8
	* @param	aDataSink			reference to the data sink to be added
	*/
	void AddDataSinkL( MDataSink& aDataSink );
	
	/**
	* From CMMFController
	* Remove a data source from the controller plugin. Not supported.
	* @since 2.8
	* @param	aDataSource			reference to the data source to be removed
	*/
	void RemoveDataSourceL( MDataSource& aDataSource );
	
	/**
	* From CMMFController
	* Remove a data sink from the controller plugin. Not supported.
	* @since 2.8
	* @param	aDataSink			reference to the data sink to be removed
	*/
	void RemoveDataSinkL( MDataSink& aDataSink );
	
	/**
	* From CMMFController
	* Reset the controller plugin. Not supported.
	* @since 2.8
	*/
	void ResetL();
	
	/**
	* From CMMFController
	* Prime the controller plugin. Not supported.
	* @since 2.8
	*/
	void PrimeL();
	
	/**
	* From CMMFController
	* Commence playback. Not supported.
	* @since 2.8
	*/
	void PlayL();
	
	/**
	* From CMMFController
	* Pause the controller plugin. Not supported.
	* @since 2.8
	*/
	void PauseL();
	
	/**
	* From CMMFController
	* Stop the controller plugin. Not supported.
	* @since 2.8
	*/
	void StopL();
	
	/**
	* From CMMFController
	* Get the current position. Not supported.
	* @since 2.8
	*/
	TTimeIntervalMicroSeconds PositionL() const;
	
	/**
	* From CMMFController
	* Set the current position. Not supported.
	* @since 2.8
	* @param	aPosition			desired position in microseconds
	*/
	void SetPositionL( const TTimeIntervalMicroSeconds& aPosition );
	
	/**
	* From CMMFController
	* Get the duration of the clip. Not supported.
	* @since 2.8
	*/
	TTimeIntervalMicroSeconds DurationL() const;
	
	/**
	* From CMMFController
	* Set the priority settings for this controller.
	* @since 2.8
	* @param	aPrioritySettings	new priority settings
	*/
	void SetPrioritySettings( const TMMFPrioritySettings& aPrioritySettings );
	
	/**
	* From CMMFController
	* Retrieve the number of meta data entries in the clip. Not supported.
	* @since 2.8
	* @param	aNumberOfEntries	reference where the number of entries is set
	*/
	void GetNumberOfMetaDataEntriesL( TInt& aNumberOfEntries );
	
	/**
	* From CMMFController
	*	Retrieve a meta data entry from the clip. Not supported.
	* @since 2.8
	* @param	aIndex				index of the meta data entry to retrieve
	*/
	CMMFMetaDataEntry* GetMetaDataEntryL( TInt aIndex );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Adds a new pronunciation for the given model into the specified lexicon.
	* @since 2.8
	* @param	aLexiconID			lexicon Id, where the new pronunciation is added to
	* @param	aModelBankID		model bank Id
	* @param	aModelID			model Id
	* @param	aPronunciationID	reference where a new pronunciation Id is assigned to
	*/
	//SD Remove
	void MSrAddPronunciationL( TSILexiconID aLexiconID, TSIModelBankID aModelBankID,
		TSIModelID aModelID,TSIPronunciationID& aPronunciationID );
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Adds a new rule for the given pronunciation into the specified grammar.
    * @since 2.8
    * @param	aGrammarID			grammar Id, where the new rule is added to
    * @param	aLexiconID			lexicon Id
    * @param	aPronunciationID	pronunciation Id
    * @param	aRuleID				reference where a new rule Id is assigned to
	*/
	//SD Remove
	void MSrAddRuleL( TSIGrammarID aGrammarID, TSILexiconID aLexiconID,
		TSIPronunciationID aPronunciationID, TSIRuleID& aRuleID );
	
	/**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Cancels the current activity and returns the plugin to Idle state.
    * @since 2.8
	*/
	void MSrCancel();
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Commits (saves) the current trained model into a permanent storage.
	* @since 2.8
	*/
	void MSrCommitChangesL();
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Creates a new grammar.
	* @since 2.8
	* @param	aGrammarID			reference where a new rule Id is assigned to
	*/
	void MSrCreateGrammarL( TSIGrammarID& aGrammarID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Creates a new lexicon.
	* @since 2.8
	* @param	aLexiconID			reference where a new lexicon Id is assigned to
	*/
	void MSrCreateLexiconL( TSILexiconID& aLexiconID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Creates a new model bank.
	* @since 2.8
	* @param	aModelBankID		reference where a new model bank Id is assigned to
	*/
	void MSrCreateModelBankL( TSIModelBankID& aModelBankID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Ends the current recognition session.  Resources allocated for recognition are freed.
	* @since 2.8
	* @param	aModelBankID		reference where a new model bank Id is assigned to
	*/
	void MSrEndRecSessionL();
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all grammar Ids that belong to the current client, whose UID was set
	* with MSrSetClientUid().
	* @since 2.8
	* @param	aGrammarIDs			reference where grammar Ids are stored
	*/
	void MSrGetAllClientGrammarIDsL( RArray<TSIGrammarID>& aGrammarIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all lexicon Ids that belong to the current client, whose UID was set
	* with MSrSetClientUid().
	* @since 2.8
	* @param	aLexiconIDs			reference where lexicon Ids are stored
	*/
	void MSrGetAllClientLexiconIDsL( RArray<TSILexiconID>& aLexiconIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all model bank Ids that belong to the current client, whose UID was set
	* with MSrSetClientUid().
	* @since 2.8
	* @param	aModelBankIDs		reference where model bank Ids are stored
	*/
	void MSrGetAllClientModelBankIDsL( RArray<TSIModelBankID>& aModelBankIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all grammar Ids that exist (for all clients).
	* @since 2.8
	* @param	aGrammarIDs			reference where grammar Ids are stored
	*/
	void MSrGetAllGrammarIDsL( RArray<TSIGrammarID>& aGrammarIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all lexicon Ids that exist (for all clients).
	* @since 2.8
	* @param	aLexiconIDs			reference where lexicon Ids are stored
	*/
	void MSrGetAllLexiconIDsL( RArray<TSILexiconID>& aLexiconIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all model bank Ids that exist (for all clients).
	* @since 2.8
	* @param	aModelBankIDs		reference where model bank Ids are stored
	*/
	void MSrGetAllModelBankIDsL( RArray<TSIModelBankID>& aModelBankIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all model Ids that exist in the specified model bank.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	* @param	aModelIDs			reference where model Ids are stored
	*/
	//SD
	void MSrGetAllModelIDsL( TSIModelBankID aModelBankID, RArray<TSIModelID>& aModelIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns all pronunciation Ids that exist in the specified lexicon.
	* @since 2.8
	* @param	aLexiconID			lexicon Id
	* @param	aPronunciationIDs	reference where pronunciation Ids are stored
	*/
	void MSrGetAllPronunciationIDsL( TSILexiconID aLexiconID,
		RArray<TSIPronunciationID>& aPronunciationIDs );
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Returns all rule Ids that exist in the specified grammar.
    * @since 2.8
    * @param	aGrammarID			grammar Id
    * @param	aRuleIDs			reference where rule Ids are stored
	*/
	void MSrGetAllRuleIDsL( TSIGrammarID aGrammarID, RArray<TSIRuleID>& aRuleIDs );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns the number of models available for training system wide, based on
	* available disk space.
	* @since 2.8
	* @param	aCount				reference where the number of available models is set
	*/
	//SD
	void MSrGetAvailableStorageL( TInt& aCount );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns the engine properties specified by the engine property ID array.
	* On return aPropertyValue contains an array of engine properties.
	* @since 2.8
	* @param	aPropertyId			constant reference to array of engine property Ids
	* @param	aPropertyValue		reference to array of engine property values
	*/
	void MSrGetEnginePropertiesL( const RArray<TInt>& aPropertyId,
		RArray<TInt>& aPropertyValue );
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Returns the number of models in the specified model bank.
    * @since 2.8
    * @param	aModelBankID		model bank Id
    * @param	aCount				reference where the number of models is set
	*/
	//SD
	void MSrGetModelCountL( TSIModelBankID aModelBankID, TInt& aCount );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Checks if the rule is valid or not.
	* @since 2.8
	* @param	aGrammarID			grammar Id
	* @param	aRuleID				rule Id
	* @param	aValid				reference where the validity of the rule is set
	*/
	void MSrGetRuleValidityL( TSIGrammarID aGrammarID, TSIRuleID aRuleID, TBool& aValid );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Returns the duration of the utterance for the specified model.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	* @param	aModelID			model Id
	* @param	aDuration			reference where the duration of utterance is set
	*/
	//SD
	void MSrGetUtteranceDurationL( TSIModelBankID aModelBankID, TSIModelID aModelID,
		TTimeIntervalMicroSeconds32& aDuration );
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Loads the specified recognizer parameter(s).  These parameters are used to
    * alter the recognizer's default parameters.  The parameters are specified as
    * attribute and value pairs.
    * @since 2.8
    * @param	aParameterID		list of parameter Ids
    * @param	aParameterValue		list of parameter values
	*/
	void MSrLoadEngineParametersL( const RArray<TInt>& aParameterId,
		const RArray<TInt>& aParameterValue );
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Loads the specified grammar into the recognizer; done prior to recognition.
    * @since 2.8
    * @param	aGrammarID			grammar Id
	*/
	void MSrLoadGrammarL( TSIGrammarID aGrammarID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Loads the specified lexicon into the recognizer; done prior to recognition.
	* @since 2.8
	* @param	aLexiconID			lexicon Id
	*/
	void MSrLoadLexiconL( TSILexiconID aLexiconID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Loads the specified model bank into the recognizer; done prior to recognition.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	*/
	void MSrLoadModelsL( TSIModelBankID aModelBankID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Plays the previously trained utterance.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	* @param	aModelID			model Id, whose utterance is played
	*/
	//SD
	void MSrPlayUtteranceL( TSIModelBankID aModelBankID, TSIModelID aModelID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Initiates recognition; performed following loading of model bank, lexicon, and grammar.
	* @since 2.8
	* @param	aResultSet			reference where the recognition result is set
	*/
	//SD
	void MSrRecognizeL( CSDClientResultSet& aResultSet );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Records uder utterance for training and recognition.
	* @since 2.8
	* @param	aRecordTime			recording time in microseconds
	*/
	void MSrRecordL( TTimeIntervalMicroSeconds32 aRecordTime );
	
    /**
	* From MSISpeechRecognitionCustomCommandImplementor.
	* Starts sampling before MSrRecordL call.
	*
	* @since 3.2
	*/
	void MSrPreStartSamplingL();	
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Removes the specified grammar from the permanent storage.
	* Removing a grammar will remove all rules within the grammar.
	* @since 2.8
	* @param	aGrammarID			grammar Id
	*/
	void MSrRemoveGrammarL( TSIGrammarID aGrammarID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Removes the specified lexicon from the permanent storage.
	* Removing a lexicon will remove all pronunciations within the lexicon.
	* @since 2.8
	* @param	aLexiconID			lexicon Id
	*/
	void MSrRemoveLexiconL( TSILexiconID aLexiconID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Removes the specified model bank from the permanent storage.
	* Removing a model bank will remove all models within the model bank.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	*/
	void MSrRemoveModelBankL( TSIModelBankID aModelBankID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Removes the specified model from the specified model bank.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	* @param	aModelID			model Id
	*/
	//SD
	void MSrRemoveModelL( TSIModelBankID aModelBankID, TSIModelID aModelID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Removes the specified pronunciation from the specified lexicon.
	* @since 2.8
	* @param	aLexiconID			lexicon Id
	* @param	aPronunciationID	pronunciation Id
	*/
	void MSrRemovePronunciationL( TSILexiconID aLexiconID, TSIPronunciationID aPronunciationID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Removes the specified rule from the specified grammar.
	* @since 2.8
	* @param	aGrammarID			grammar Id
	* @param	aRuleID				rule Id
	*/
	void MSrRemoveRuleL( TSIGrammarID aGrammarID, TSIRuleID aRuleID );
	
    /**
	* From MSISpeechRecognitionCustomCommandImplementor
    * Removes the specified rules from the specified grammar permanently.
    * If the rule contains rule variants, they are also destoryed.
    * @since	2.8
    * @param	aGrammarID			grammar Id
    * @param	aRuleIDs			array of rule ids
    */
    void MSrRemoveRulesL( TSIGrammarID aGrammarID, RArray<TSIRuleID>& aRuleIDs );

	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Sets the client's UID for data ownership identification.
	* @since 2.8
	* @param	aClientUid			client's UID
	*/
	void MSrSetClientUid( TUid aClientUid );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Starts a new recognition session.
	* @since 2.8
	* @param	aMode				recognition mode
	*/
	void MSrStartRecSessionL( TNSSRecognitionMode aMode );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Trains a new model into the specified model bank.
	* @since 2.8
	* @param	aModelBankID		model bank Id
	* @param	aModelID			reference where a new model Id is assigned to
	*/
	//SD
	void MSrTrainL( TSIModelBankID aModelBankID, TSIModelID& aModelID );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Unloads the specified rule from the specified grammar in temporary memory, previously
	* loaded with LoadGrammarL.  The rule in the permanent storage remains intact.
	* @since 2.8
	* @param	aGrammarID			grammar Id
	* @param	aRuleID				rule Id
	*/
	void MSrUnloadRuleL( TSIGrammarID aGrammarID, TSIRuleID aRuleID );
	
	///SI Component
	
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Does speaker adapation to speaker independent models
	* @since 2.8
	* @param	aResultSet			a recognition result containing adaptation data
	* @param	aCorrect			identifies the correct recognition result from the N-best list.
	*/           
	void MSrAdaptL( CSIClientResultSet& aResultSet ,TInt aCorrect);

	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Adds a new pronunciation for the given model into the specified lexicon.
	* @since 2.8
	* @param	aLexiconID			lexicon Id
	* @param	aTrainText:			the text to be trained
 	* @param	aLanguage			the pronunciation language	
	* @param	aPronunciationID: reference where a new pronunciation identifier is set.
	*/
	void MSrAddPronunciationL(TSILexiconID aLexiconID, const TDesC& aTrainText,
		TLanguage aLanguage, TSIPronunciationID& aPronunciationID) ;
	
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Adds a new rule variant for the given pronunciation into the specified grammar.
    * @since 2.8
    * @param	aGrammarID			grammar Id, where the new rule is added to
    * @param	aLexiconID			lexicon Id
    * @param	aPronunciationIDs	pronunciation Id array
    * @param	aRuleVariantID		reference where a new rule Variant Id is assigned to
	*/
	void MSrAddRuleVariantL(TSIGrammarID aGrammarID, TSILexiconID aLexiconID,
		RArray<TSIPronunciationID>& aPronunciationIDs, TSIRuleID aRuleID, TSIRuleVariantID& aRuleVariantID );
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Trains a new voice tag. The recognition phrase is the concatenation of words in the aTrainArray. 
    * Pronunciations are created with all given languages, which are supported.
    * @since 2.8
    * @param	aTrainArray:		Recognition phrase is formed by concatenating the descriptors in this array.
    * @param	aLanguageArray		Pronunciations are created with these languages. Not all languages are supported. The argument can be NULL.
    * @param	aLexiconID			lexicon Id
    * @param	aGrammarID			grammar Id, where the new rule is added to
    * @param	aRuleID		reference where a new rule Id is assigned to
	*/
	void MSrAddVoiceTagL( MDesCArray& aTrainArray,  RArray<TLanguage>& aLanguageArray, 
		TSILexiconID aLexiconID, TSIGrammarID aGrammarID, TSIRuleID& aRuleID);
	
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Adds several new voice tags.
    * @since 2.8
    * @param	aTrainArray : An array of MDesCArrays. The recognition phrases are formed by concatenating the descriptors in the MDesCArrays.
    * @param	aLanguageArray		Pronunciations are created with these languages. Not all languages are supported. The argument can be NULL.
    * @param	aLexiconID			lexicon Id
    * @param	aGrammarID			grammar Id, where the new rule is added to
    * @param	aRuleID		reference where a new rule Id is assigned to
	*/
	void MSrAddVoiceTagsL( RPointerArray<MDesCArray>* aTrainArray,  RArray<TLanguage>& aLanguageArray, TSILexiconID aLexiconID,
		TSIGrammarID aGrammarID,  RArray<TSIRuleID>& aRuleID );
	
	/**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Creates a new empty rule.
    * @since 2.8
    * @param	aGrammarID			grammar Id, where the new rule is added to
    * @param	aRuleID		reference where a new rule Id is assigned to
	*/
	void MSrCreateRuleL( TSIGrammarID aGrammarID, TSIRuleID& aRuleID );

	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Initiates recognition; performed following loading of model bank, lexicon, and grammar.
	* @since 2.8
	* @param	aResultSet: reference where the recognition result is set. 
	*/		
	void MSrRecognizeL( CSIClientResultSet& aResultSet );
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Ends recording. Unlike Cancel(), this function may return a recognition 
	* result if adequate number of samples was already recorded.		
	* @since 2.8
	*/				
	void MSrEndRecordL();
	
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Unloads the specified grammar from the temporary memory, 
	* previously loaded with MSrLoadGrammarL. The grammar in the permanent storage remains intact. 
	* result if adequate number of samples was already recorded.		
	* @since 2.8
	* @param	aGrammarID			grammar Id,  
	*/	
	void MSrUnloadGrammarL( TSIGrammarID aGrammarID );
		
	/**
	* From MSISpeechRecognitionCustomCommandImplementor
	* Activiate specified grammar after deactivating. 	
	* @since 2.8
	* @param	aGrammarID			grammar Id,  
	*/	
	void MSrActivateGrammarL( TSIGrammarID aGrammarID );
			
	/**
	* 
	* Deactivates a specified grammar.
	* @since 2.8
	* @param	aGrammarID			grammar Id,  
	*/	
	void MSrDeactivateGrammarL( TSIGrammarID aGrammarID );
				
	/**
	* 
	* Get the number of Pronunciations in the lexicon  
	* @since 2.8
	* @param	aLexiconID			lexicon Id, 
	* @param	aCount				number of pronunciations, 		
	*/	
	void MSrGetPronunciationCountL( TSILexiconID aLexiconID, TInt& aCount );
	
	/**
	* 
	* Get the number of rules in the Grammar 
	* @since 2.8
	* @param	aGrammarID			grammar Id, 
	* @param	aCount				number of rules, 		
	*/	
	void MSrGetRuleCountL( TSIGrammarID aGrammarID, TInt& aCount );

    
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Trains one SINDE voice tag. Adds the text to the lexicon, and 
    * creates the required rules and rule variants.
    * 
    * @since 3.1
    * @param aTrainArray The phrase to be trained, split into subwords
    * @param aLanguageArray The pronunciation languages for each of the 
    * @param aLexiconID Lexicon identifier
    * @param aGrammarID Grammar identifier
    * @param aRuleID Reference, where the new rule identifier is assigned to.
    */
    void MSrAddSindeVoiceTagL( MDesCArray& aTrainArray,
                               RArray<RLanguageArray>& aLanguageArray,
                               TSILexiconID aLexiconID,
                               TSIGrammarID aGrammarID,
                               TSIRuleID& aRuleID );
    
    /**
    * From MSISpeechRecognitionCustomCommandImplementor
    * Trains SINDE voice tags. If the training fails for some of the names
    * (but not all), it is signaled by setting the Rule ID to KInvalidRuleID.
    * 
    * @since 3.1
    * @param aTrainArray The phrase to be trained, split into subwords
    * @param aLanguageArray The pronunciation languages
    * @param aLexiconID Lexicon identifier
    * @param aGrammarID Grammar identifier
    * @param aRuleID Referenceto an array, where the new
    *                rule identifiers are assigned to.
    */
    void MSrAddSindeVoiceTagsL( RPointerArray<MDesCArray>* aTrainArray,
                                RArray<RLanguageArray>& aLanguageArray,
                                TSILexiconID aLexiconID,
                                TSIGrammarID aGrammarID,
                                RArray<TSIRuleID>& aRuleID );
    
    
	public: // New functions
		
        /**
        * Sends an event to the client.
        * @since 2.8
        * @param	aEvent				event
        * @param	aResult				result
        */
        void SendSrsEvent( TUid aEvent, TInt aResult );
	
    private:
		
        /**
        * C++ default constructor.
        */
        CSIControllerPluginInterface();
		
        /**
        * By default Symbian 2nd phase constructor is private.
        */
		void ConstructL();
		
		
    private:    // Data
		
		// SI Controller Plugin Implementation
		CSIControllerPlugin* iController;

    };
	
#endif // SICONTROLLERPLUGININTERFACE_H
	
// End of File