srsf/nssvasapi/nssvascore/inc/nssvasccontextsrsportal.h
branchRCL_3
changeset 19 e36f3802f733
parent 0 bf1d17376201
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/srsf/nssvasapi/nssvascore/inc/nssvasccontextsrsportal.h	Wed Sep 01 12:29:17 2010 +0100
@@ -0,0 +1,229 @@
+/*
+* 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:  CNssContextSrsPortal provides SRS related functionalities for 
+*               context processing. A context is saved in the SRS DB by creating 
+*               model bank, lexicon, and grammar into the SRS.
+*
+*/
+
+
+#ifndef NSSVASCCONTEXTSRSPORTAL_H
+#define NSSVASCCONTEXTSRSPORTAL_H
+
+//  INCLUDES
+#include "nssvassiutilitywrapper.h"
+#include <nsssispeechrecognitionutilityobserver.h>
+#include "nssvasccontext.h"
+#include "nssvasmcoresrsdbeventhandler.h"
+
+// FORWARD DECLARATIONS
+class CNssContext;
+ 
+//FORWARD DECLARATION  
+class MNssSpeechRecognitionEvent;
+
+// CLASS DECLARATION
+
+/**
+*  CNssContextSrsPortal is the interface to SRS.
+*  @lib NssVASApi.lib
+*  @since 2.8
+*/
+class CNssContextSrsPortal: public CBase, public MSISpeechRecognitionUtilityObserver
+{
+
+public:
+
+	// ENUMERATIONS
+	enum TNssTerminationState
+	{
+		EVASTERMINATION_PENDING,
+		EVASTERMINATION_NOT_PENDING
+	};
+
+public:
+
+	/**
+    * C++ constructor
+    */
+	CNssContextSrsPortal();
+
+	/**
+    * C++ destructor
+    */
+	~CNssContextSrsPortal();
+
+public: // from MSpeechRecognitionEvent
+
+	/**
+    * overriding interface from MSpeechRecognitionUtilityObserver
+	* @since 2.0
+    */
+	void MsruoEvent(TUid aEvent, TInt aResult);
+
+
+public: // for inter component use
+
+	/**
+    * Save a context to SRS. Asyncronous function.
+	* @since 2.0
+    * @param aContext - context to be saved
+	* @param aSrsDBEventHandler - call back address
+    * @return none
+    */
+	void BeginSaveContextL(CNssContext* aContext, MNssCoreSrsDBEventHandler* aSrsDBEventHandler);
+
+	/**
+    * Delete a context from SRS. Asyncronous function
+	* @since 2.0
+    * @param aContext - context to be deleted
+	* @param aSrsDBEventHandler - call back address
+    * @return none
+    */
+	void BeginDeleteContextL(CNssContext* aContext, MNssCoreSrsDBEventHandler* aSrsDBEventHandler);
+
+    /**
+    * Reset speaker adapted models: Remove a model bank and create a new one.
+    * @since 2.8
+    * @param 
+    * @return none
+    */
+    void BeginResetModelsL( TSIModelBankID aAdaptedModels, 
+            TSIModelBankID& aNewModels, MNssCoreSrsDBEventHandler* aSrsDBEventHandler );
+
+	/**
+    * Commit a context from SRS. Syncronous function
+	* @since 2.0
+    * @param 
+    * @return error code
+    */
+	TInt CommitSaveContext();
+
+	/**
+    * Don't commit a context from SRS. Syncronous function
+	* @since 2.8
+    * @param 
+    * @return error code
+    */
+	TInt RollbackSaveContext();
+
+	/**
+    * Register context to the portal
+	* @since 2.0
+    * @param 
+    * @return
+    */
+	void Register();
+
+	/**Deregister context from portal 
+	* @since 2.0
+    * @param 
+    * @return 
+    */
+	void Deregister();
+
+	/**
+    * Set portal state to termination pending, or not pending
+	* @since 2.0
+    * @param aState - termination pending, or not.
+    * @return 
+    */
+	void SetTerminationState(TNssTerminationState aState);
+
+	/**
+    * Returns context count, number of contexts registered with the portal
+	* @since 2.0
+    * @param 
+    * @return count
+    */
+	TInt ContextCount();
+
+	/**
+    * Clean up the SRS after the SRS operation fail
+	* @since 2.0
+    * @param 
+    * @return
+    */
+	void CleanUp(TInt aResult);
+
+	/**
+    * Delete the SRS 
+	* @since 2.0
+    * @param 
+    * @return
+    */
+	void DeleteSRS();
+
+    /**
+    * Method to process the SRS DB error 
+    * @since 2.0
+    * @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);
+
+
+
+private:
+	
+	// a count of the number of contexts registered to the portal
+	TInt					    iContextCount; 
+
+	// state denoting if the builder is destroyed or not
+	TNssTerminationState			iTerminationState;
+
+	// instance of the SRS utility class
+	CNssSiUtilityWrapper*	iSpeechRecognitionUtility;
+
+	// Pointer to SRS DB Event Handler object.
+    MNssCoreSrsDBEventHandler* iSrsDBEventHandler; 
+	
+	// model bank id, used internally for error handling
+	TSIModelBankID iModelBankId;
+
+	// lexicon id, used internally for error handling
+	TSILexiconID iLexiconId;
+
+	// grammar id, used internally for error handling
+	TSIGrammarID iGrammarId;
+
+	// local pointer to context, used internally for error handling
+	CNssContext *iContext;
+
+	// flag for recovery during error cases
+	TBool iRecovery;
+
+    // when resetting speaker adaptation, the new model bank ID is stored here.
+    TSIModelBankID* iResetModelBankId;
+
+	// states required for EDiskFull errors from SRS
+	enum TState
+	{
+		EVASNone,
+		EVASCreateModelBank,
+		EVASCreateLexicon,
+		EVASCreateGrammar,
+		EVASRemoveModelBank,
+		EVASRemoveLexicon,
+		EVASRemoveGrammar,
+        EVASResetRemoveModelBank,
+        EVASResetCreateModelBank,
+        EVasWaitForCommitChanges
+	} iState;
+};
+
+
+#endif // NSSVASCCONTEXTSRSPORTAL_H
+            
+// End of File