diff -r cad71a31b7fc -r e36f3802f733 srsf/nssvasapi/nssvascore/src/nssvassiutilitywrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srsf/nssvasapi/nssvascore/src/nssvassiutilitywrapper.cpp Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,432 @@ +/* +* 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: Class which hides the dynamic loading of +* nsssispeechrecognitionutility.dll +* +*/ + + +// INCLUDE FILES +#include +#include +#include "rubydebug.h" +#include "nssvassiutilitywrapper.h" + +// CONSTANTS +// DLL name +_LIT( KUtilityFilename, "nsssispeechrecognitionutility.dll" ); +// CreateInstanceL function ordinal number +const TInt KFunctionOrdinal = 1; + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::NewL +// Two-phased constructor +// --------------------------------------------------------- +// +CNssSiUtilityWrapper* CNssSiUtilityWrapper::NewL( + MSISpeechRecognitionUtilityObserver& aObserver, TUid aClientUid ) + { + CNssSiUtilityWrapper* self = new ( ELeave ) CNssSiUtilityWrapper( aObserver, aClientUid ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::~CNssSiUtilityWrapper +// Destructor +// --------------------------------------------------------- +// +CNssSiUtilityWrapper::~CNssSiUtilityWrapper() + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::~CNssSiUtilityWrapper" ); + + Cancel(); + + delete iUtility; + // Close RLibrary handle + iLib.Close(); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::CNssSiUtilityWrapper +// C++ constructor +// --------------------------------------------------------- +// +CNssSiUtilityWrapper::CNssSiUtilityWrapper( + MSISpeechRecognitionUtilityObserver& aObserver, TUid aClientUid ) : + CActive( EPriorityStandard ), + iClientUid( aClientUid ), + iObserver( aObserver ) + { + // Nothing + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::ConstructL +// Second phase constructor +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::ConstructL() + { + RUBY_DEBUG_BLOCK( "CNssSiUtilityWrapper::ConstructL" ); + + // Load a DLL based on name with RLibrary + User::LeaveIfError( iLib.Load( KUtilityFilename ) ); + + // Find the TAny* CreateInstanceL() function + TLibraryFunction entry = iLib.Lookup( KFunctionOrdinal ); + if ( !entry ) + { + User::Leave( KErrNotFound ); + } + + // Call CreateInstanceL + // Cannot use static_cast since entry() call returns TInt + iUtility = ( MSISpeechRecognitionUtilityBase* ) entry(); + + // Do the 2nd phase construction + iUtility->CreateInstanceSecondPhaseL( iClientUid, KNullUid, *this ); + + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::Adapt +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::Adapt( const CSIClientResultSet& aResultSet, + TInt aCorrect ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::Adapt" ); + return iUtility->Adapt( aResultSet, aCorrect ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::AddVoiceTags +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::AddVoiceTags( const RPointerArray& aTextArrayArray, + const RArray& aLanguageArray, + TSILexiconID aLexiconID, + TSIGrammarID aGrammarID, + RArray& aRuleIDArray ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::AddVoiceTags" ); + return iUtility->AddVoiceTags( aTextArrayArray, aLanguageArray, + aLexiconID, aGrammarID, aRuleIDArray ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::AddVoiceTags +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::AddVoiceTags( const RPointerArray& aTextArrayArray, + const RArray& aLanguageArray, + TSILexiconID aLexiconID, + TSIGrammarID aGrammarID, + RArray& aRuleIDArray ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::AddVoiceTags" ); + return iUtility->AddVoiceTags( aTextArrayArray, aLanguageArray, + aLexiconID, aGrammarID, aRuleIDArray ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::CancelUtility +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::CancelUtility() + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::Cancel" ); + return iUtility->Cancel(); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::CommitChanges +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::CommitChanges() + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::CommitChanges" ); + return iUtility->CommitChanges(); + } + + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::CreateGrammar +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::CreateGrammar( TSIGrammarID& aGrammarID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::CreateGrammar" ); + return iUtility->CreateGrammar( aGrammarID ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::CreateLexicon +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::CreateLexicon( TSILexiconID& aLexiconID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::CreateLexicon" ); + return iUtility->CreateLexicon( aLexiconID ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::CreateModelBank +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::CreateModelBank( TSIModelBankID& aModelBankID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::CreateModelBank" ); + return iUtility->CreateModelBank( aModelBankID ); + } + + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::EndRecSession +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::EndRecSession() + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::EndRecSession" ); + return iUtility->EndRecSession(); + } + + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::LoadGrammar +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::LoadGrammar( TSIGrammarID aGrammarID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::LoadGrammar" ); + return iUtility->LoadGrammar( aGrammarID ); + } + + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::LoadModels +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::LoadModels( TSIModelBankID aModelBankID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::LoadModels" ); + return iUtility->LoadModels( aModelBankID ); + } + + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::Record +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::Record( TTimeIntervalMicroSeconds32 aRecordTime ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::Record" ); + return iUtility->Record( aRecordTime ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::PreStartSampling +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::PreStartSampling() + { + RUBY_DEBUG0( "" ); + return iUtility->PreStartSampling(); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::Recognize +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::Recognize( CSIClientResultSet& aResultSet ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::Recognize" ); + return iUtility->Recognize( aResultSet ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::RemoveGrammar +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::RemoveGrammar( TSIGrammarID aGrammarID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::RemoveGrammar" ); + return iUtility->RemoveGrammar( aGrammarID ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::RemoveLexicon +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::RemoveLexicon( TSILexiconID aLexiconID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::RemoveLexicon" ); + return iUtility->RemoveLexicon( aLexiconID ); + } + + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::RemoveModelBank +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::RemoveModelBank( TSIModelBankID aModelBankID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::RemoveModelBank" ); + return iUtility->RemoveModelBank( aModelBankID ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::RemoveRule +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::RemoveRule( TSIGrammarID aGrammarID, TSIRuleID aRuleID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::RemoveRule" ); + return iUtility->RemoveRule( aGrammarID, aRuleID ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::RemoveRules +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::RemoveRules( TSIGrammarID aGrammarID, RArray& aRuleIDs ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::RemoveRules" ); + return iUtility->RemoveRules( aGrammarID, aRuleIDs ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::SetAudioPriority +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::SetAudioPriority( TInt aPriority, TInt aTrainPreference, + TInt aPlaybackPreference, TInt aRecognitionPreference ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::SetAudioPriority" ); + return iUtility->SetAudioPriority( aPriority, aTrainPreference, + aPlaybackPreference, aRecognitionPreference ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::SetEventHandler +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::SetEventHandler( MSISpeechRecognitionUtilityObserver* + aSpeechRecognitionUtilityObserver ) + { + iObserver = *aSpeechRecognitionUtilityObserver; + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::StartRecSession +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::StartRecSession( TNSSRecognitionMode aMode ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::StartRecSession" ); + return iUtility->StartRecSession( aMode ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::UnloadRule +// Forwards the call to Recognition Utility +// --------------------------------------------------------- +// +TInt CNssSiUtilityWrapper::UnloadRule( TSIGrammarID aGrammarID, TSIRuleID aRuleID ) + { + RUBY_DEBUG0( "CNssSiUtilityWrapper::UnloadRule" ); + return iUtility->UnloadRule( aGrammarID, aRuleID ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::MsruoEvent +// Callback from SI Utility +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::MsruoEvent( TUid aEvent, TInt aResult ) + { + RUBY_DEBUG2( "CNssSiUtilityWrapper::MsruoEvent, event[%d], result[%d]", aEvent, aResult ); + iEvent = aEvent; + iResult = aResult; + Ready(); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::Ready +// Sets active object ready to be run +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::Ready() + { + if ( !IsActive() ) + { + SetActive(); + TRequestStatus* stat = &iStatus; + User::RequestComplete( stat, KErrNone ); + } + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::RunL +// From CActive +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::RunL() + { + // Forwards callback to other parts of VAS + RUBY_DEBUG2( "CNssSiUtilityWrapper::RunL calling callback function, event[%d], result[%d]", iEvent, iResult ); + iObserver.MsruoEvent( iEvent, iResult ); + RUBY_DEBUG0( "CNssSiUtilityWrapper::RunL callback called" ); + } + +// --------------------------------------------------------- +// CNssSiUtilityWrapper::DoCancel +// From CActive +// --------------------------------------------------------- +// +void CNssSiUtilityWrapper::DoCancel() + { + // Nothing + } + + +// End of file