diff -r cad71a31b7fc -r e36f3802f733 srsf/sisrscontrollerplugin/src/simodelbankdb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srsf/sisrscontrollerplugin/src/simodelbankdb.h Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,291 @@ +/* +* Copyright (c) 2002 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 class handles the storage and access of user trained models +* and utterances into a database. It performs checksum verification +* for the stored data. It is also responsible for allocating memory +* when loading the models into the recognizer. +* +*/ + + +#ifndef CSIMODELBANKDB_H +#define CSIMODELBANKDB_H + +// INCLUDES +#include + +#include "asrplugindataloader.h" +#include "sicommondb.h" + +// CLASS DECLARATION + +/** +* This class implements Speaker Independent Model Database. +* +* @lib SIControllerPlugin.lib +* @since 2.0 +*/ +class CSIModelBankDB : public CSICommonDB + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CSIModelBankDB* NewL( RDbNamedDatabase& aDatabase, + RDbs& aDbSession, + TInt aDrive ); + + /** + * Destructor. + */ + virtual ~CSIModelBankDB(); + + public: // New functions + + /** + * Returns a model bank object containing all speaker independent models of + * the specified model bank. + * @since 2.0 + * @param aModelBankID model bank Id + * @return pointer to a bank bank object + */ + const CSIModelBank* AllAcousticModelsL( TSIModelBankID aModelBankID ); //* + + /** + * Returns the total number of models in the system (all model banks). + * @since 2.0 + * @param - + * @return Number of models in all model banks. + */ + TInt AllModelCountL(); + + /** + * Creates a new model bank ID table in the database. + * @since 2.0 + * @param - + * @return - + */ + void CreateIDTableL(); + + /** + * Creates a new model bank in the database. + * @since 2.0 + * @param aClientUid client's Uid for data ownership + * @return new model bank Id + */ + TSIModelBankID CreateModelBankL( TUid aClientUid ); + + /** + * Returns all model bank Ids that belong to the specified client. + * @since 2.0 + * @param aClientUid client's Uid for data ownership + * @param aModelBankIDs reference where model bank Ids are stored + * @return - + */ + void GetAllClientModelBankIDsL( TUid aClientUid, RArray& aModelBankIDs ); //* + + /** + * Returns all model bank Ids in the database. + * @since 2.0 + * @param aLexiconIDs reference where model bank Ids are stored + * @return - + */ + void GetAllModelBankIDsL( RArray& aModelBankIDs ); //* + + /** + * Returns all model Ids that exist in the specified model bank. + * @since 2.0 + * @param aModelBankID model bank Id + * @param aModelIDs reference where model Ids are stored + * @return - + */ + void GetAllModelIDsL( TSIModelBankID aModelBankID, RArray& aModelIDs ); //* + + /** + * Returns the duration of the utterance for the specified model. + * @since 2.0 + * @param aModelBankID model bank Id + * @param aModelID model Id + * @param aDuration reference where the duration of utterance is set + * @return - + */ + void GetUtteranceDurationL( TSIModelBankID aModelBankID, TSIModelID aModelID, + TTimeIntervalMicroSeconds32& aDuration ); //* + + /** + * Checks if the model bank is valid or not and also verify ownership. + * Leaves with KErrAsrDataRightViolation if not owned by the client. + * @since 2.0 + * @param aClientUid client's Uid for data ownership + * @param aModelBankID model bank Id + * @return ETrue if the model bank is valid + */ + TBool IsModelBankValidL( TUid aClientUid, TSIModelBankID aModelBankID ); //* + + /** + * Checks if the model is valid or not. + * @since 2.0 + * @param aModelBankID model bank Id + * @param aModelID model Id + * @return ETrue if the model is valid + */ + TBool IsModelValidL( TSIModelBankID aModelBankID, TSIModelID aModelID ); //* + + /** + * Checks if the model bank is valid and update if necessary. + * @since 3.1 + * @param aModelBankID model bank Id + */ + void UpdateModelBankIfInvalidL( TSIModelBankID aModelBankID ); + /** + * Returns the number of models in the specified model bank. + * @since 2.0 + * @param aModelBankID model bank Id + * @return Number of models + */ + TInt ModelCountL( TSIModelBankID aModelBankID ); //* + + /** + * Removes the specified model bank from the database. + * Removing a model bank will remove all models within the model bank. + * @since 2.0 + * @param aClientUid client's Uid for data ownership + * @param aModelBankID model bank Id + * @return - + */ + void RemoveModelBankL( TUid aClientUid, TSIModelBankID aModelBankID ); //* + + /** + * Removes the specified model from the database. + * @since 2.0 + * @param aClientUid client's Uid for data ownership + * @param aModelBankID model bank Id + * @param aModelID model Id + * @return - + */ + void RemoveModelL( TUid aClientUid, TSIModelBankID aModelBankID, TSIModelID aModelID ); //* + + /** + * Deallocates the temporary memory allocated during training. + * @since 2.0 + * @param - + * @return - + */ + void Reset(); //* + + /** + * Deallocates the temporary memory allocated during recognition. + * @since 2.0 + * @param - + * @return - + */ + void ResetAndDestroy(); //* + + /** + * Saves the trained model in the temporary memory into the database. + * @since 2.0 + * @param aModelBankID model bank Id + * @return A new model ID + */ + TSIModelID SaveModelL( TSIModelBankID aModelBankID ); //* + + /** + * Saves the acoustic model into a temporary memory during training. + * @since 2.0 + * @param aAcousticModelBuf buffer containing the acoustic model + * @return - + */ + void SetAcousticModelL( const TPtr8& aAcousticModelBuf ); //* + + /** + * Saves the utterance duration of a trained model in temporary memory during training. + * @since 2.0 + * @param aUtteranceDuration utterace duration in microseconds + * @return - + */ + void SetUtteranceDurationL( TInt aUtteranceDuration ); //* + + /** + * Returns a reference to a pointer descriptor with the specified length where the + * utterance will be stored. + * @since 2.0 + * @param aLength length of the requested descriptor + * @return Reference to a pointer descriptor + */ + // TPtr8& UtteranceBufferL( TInt aLength ); //* + + /** + * Returns a reference to a previously trained user utterance of the specified model. + * @since 2.0 + * @param aModelBankID model bank Id + * @param aModelID model Id + * @return Reference to a user utterance pointer descriptor + */ + // TPtr8& UtteranceL( TSIModelBankID aModelBankID, TSIModelID aModelID ); //* + + // test + RPointerArray& ModelBankArray(); + + private: + + /** + * C++ default constructor. + */ + CSIModelBankDB( RDbNamedDatabase& aDatabase, RDbs& aDbSession, TInt aDrive ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Calculates a checksum value for the given buffer. + * @since 2.0 + * @param aBuf reference to a pointer descriptor containing binary data + * @return Checksum value + */ + TInt32 CalculateChecksum( const TPtr8& aBuf ); + + /** + * Verifies the checksum value for the given buffer. + * @since 2.0 + * @param aBuf reference to a pointer descriptor containing binary data + * @param aChecksum checksum value to compare to + * @return ETrue if the checksum of aBuf is equal to aChecksum + */ + TBool VerifyChecksum( const TPtr8& aBuf, TInt32 aChecksum ); + const CSIModelBank* GetAllAcousticModelsL( TSIModelBankID aModelBankID ); + + private: // Data + + // Temporary memory where loaded model banks are held during recognition session + RPointerArray iModelBankArray; + + // Pointer to acoustic model - used during training + TPtr8 iAcousticModelPtr; + // Pointer to the user utterance + // TPtr8 iUtterancePtr; + + CDataLoader* iDataLoader; + + // Temporary memory where loaded SI model banks are held during recognition session + //RPointerArray iSIModelBankArray; + HBufC8 *iFileBuffer; + RFs iFs; + }; + +#endif // CSIModelBankDB_H + +// End of File