diff -r 75a71fdb4c92 -r 7d11f9a6646f omadm/omadmappui/src/NSmlDMFotaModel.cpp --- a/omadm/omadmappui/src/NSmlDMFotaModel.cpp Tue Feb 02 00:03:17 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,535 +0,0 @@ -/* -* Copyright (c) 2005-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 containing the FOTA functionality and communication to -* other related components -* -*/ - - - -// INCLUDE FILES -#include -#include -#include -#include -#include "NSmlDMSyncPrivateCRKeys.h" - -#include "NSmlDMSyncDocument.h" -#include "NSmlDMFotaModel.h" -#include "NSmlDMSyncUi.hrh" -#include "NSmlDMSyncDebug.h" - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CNSmlDMFotaModel* CNSmlDMFotaModel::NewL( CNSmlDMSyncDocument* aDocument ) - { - CNSmlDMFotaModel* self = new( ELeave ) CNSmlDMFotaModel( aDocument ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - } - - -// Destructor -CNSmlDMFotaModel::~CNSmlDMFotaModel() - { - FLOG( "[OMADM] CNSmlDMFotaModel::~CNSmlDMFotaModel()" ); - //iFwUpdIdStateList.Close(); - iFotaEngine.Close(); - } - - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::GetProfileName -// Changes aProfileName to KNullDesC if the profile identifier is -// not found. -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::GetProfileNameL( const TInt aProfileId, - HBufC* aProfileName ) const - { - FLOG( "[OMADM] CNSmlDMFotaModel::GetProfileNameL()" ); - - TInt index( 0 ); - aProfileName->Des().Copy( KNullDesC ); - - iDocument->RefreshProfileListL( ETrue ); // Include hidden profile - CArrayFixFlat* profileList = iDocument->ProfileList( index ); - - for ( index = 0; index < profileList->Count(); index++ ) - { - if ( ( *profileList )[index].iProfileId == aProfileId ) - { - aProfileName->Des().Copy( ( *profileList )[index].iProfileName ); - } - } - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::GetProfileNameL(): aProfileId = %d, ProfileName = \"%S\"" ), - aProfileId, aProfileName ) ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::DefaultFotaProfileIdL -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::DefaultFotaProfileIdL() const - { - FLOG( "[OMADM] CNSmlDMFotaModel::DefaultFotaProfileIdL()" ); - - TInt profileId( KErrNotFound ); - CRepository* centrep = NULL; - TRAPD( err, centrep = CRepository::NewL( KCRUidNSmlDMSyncApp ) ); - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::DefaultFotaProfileIdL(), opening cenrep returned %d" ), - err ) ); - - User::LeaveIfError( err ); - centrep->Get( KNSmlDMDefaultFotaProfileKey, profileId ); - delete centrep; - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::DefaultFotaProfileIdL() completed, profileId = %d" ), - profileId ) ); - return profileId; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::SetDefaultFotaProfileIdL -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::SetDefaultFotaProfileIdL( const TInt aProfileId ) - { - FLOG( "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL()" ); - - CRepository* centrep = NULL; - TRAPD( err, centrep = CRepository::NewL( KCRUidNSmlDMSyncApp ) ); - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL(), opening cenrep returned %d" ), - err ) ); - - User::LeaveIfError( err ); - centrep->Set( KNSmlDMDefaultFotaProfileKey, aProfileId ); - delete centrep; - - FLOG( "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL() completed" ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::EnableFwUpdRequestL -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::EnableFwUpdRequestL( const TInt aProfileId ) - { - FLOG( "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL()" ); - - CRepository* centrep = NULL; - TRAPD( err, centrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys ) ); - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::EnableFwUpdRequestL(), opening cenrep returned %d" ), - err ) ); - User::LeaveIfError( err ); - centrep->Set( KDevManClientInitiatedFwUpdateId, aProfileId ); - delete centrep; - - FLOG( "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL() completed" ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::ReadProfileListL -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::ReadProfileListL( CDesCArray* aItems, - CArrayFixFlat* aProfileIdList ) - { - FLOG( "[OMADM] CNSmlDMFotaModel::ReadProfileListL()" ); - - TInt index( 0 ); - - iDocument->RefreshProfileListL( ETrue ); // Include hidden profile - CArrayFixFlat* profileList = iDocument->ProfileList( index ); - - for ( index = 0; index < profileList->Count(); index++ ) - { - aItems->AppendL( ( *profileList )[index].iProfileName ); - aProfileIdList->AppendL( ( *profileList )[index].iProfileId ); - } - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::ReadProfileListL() completed, items = %d" ), - index ) ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::SelectDefaultProfileFromList -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::SelectDefaultProfileFromList( - const CArrayFixFlat* aProfileIdList ) const - { - FLOG( "[OMADM] CNSmlDMFotaModel::SelectDefaultProfileFromList()" ); - - TInt retval( KErrNotFound ); - TInt defaultId( KErrNotFound ); - - TRAPD( err, defaultId = iDocument->FotaModel()->DefaultFotaProfileIdL() ); - - if ( err != KErrNone ) - { - // We do not care about the possible errors here. It only means - // that the identifier is not found on the list. - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::SelectDefaultProfileFromList() received error %d" ), - err ) ); - } - - for ( TInt index( 0 ); index < aProfileIdList->Count(); index++ ) - { - if ( ( *aProfileIdList )[index] == defaultId ) - { - retval = index; - break; // Jump out of the loop - } - } - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::SelectDefaultProfileFromList() completed, retval = %d" ), - retval ) ); - return retval; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::VerifyProfileL -// ----------------------------------------------------------------------------- -// -TBool CNSmlDMFotaModel::VerifyProfileL( const TInt aProfileId ) const - { - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::VerifyProfileL(), aProfileId = %d" ), - aProfileId ) ); - - TInt index( 0 ); - TBool retval( EFalse ); - - iDocument->RefreshProfileListL( ETrue ); // Include hidden profile - CArrayFixFlat* profileList = iDocument->ProfileList( index ); - - for ( index = 0; index < profileList->Count(); index++ ) - { - if ( ( *profileList )[index].iProfileId == aProfileId ) - { - retval = ETrue; - break; // Jump out of the loop - } - } - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::VerifyProfileL() completed, return = %d" ), - retval ) ); - return retval; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::RetrieveFwUpdPkgIdListL -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::RetrieveFwUpdPkgIdListL(TFotaState aState) - { - const TInt maxNumOfProfiles = 32; - - TBuf16< maxNumOfProfiles > idListDescriptor; - User::LeaveIfError( iFotaEngine.GetUpdatePackageIds( idListDescriptor ) ); - TInt retval = KErrNotFound; - RArray< TInt > idList; - - TInt count = idListDescriptor.Length(); - for ( TInt i = 0; i < count; i++ ) - { - idList.Append( idListDescriptor[ i ] ); - } - TInt count1 = idList.Count(); - for ( TInt i = 0; (i < count1) && (retval == KErrNotFound); i++ ) - { - RFotaEngineSession::TState pkgState; - pkgState = iFotaEngine.GetState( idList[ i ] ); - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::RetrieveFwUpdPkgIdListL(): profileid = %d, pkgstate = %d" ), - idList[i], (TInt) pkgState ) ); - if ( pkgState == aState ) - { - retval = idList[ i ]; - } - } - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::RetrieveFwUpdPkgIdListL(): completed, retval = %d" ), - retval ) ); - idList.Close(); - return retval; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::FindFwUpdPkgWithStateL -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::FindFwUpdPkgWithStateL( - TFotaState aState ) - { - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::FindFwUpdPkgWithStateL(): aState = %d" ), - (TInt) aState ) ); - RFotaEngineSession fotasession; - fotasession.OpenL(); - CleanupClosePushL(fotasession); - const TInt x = -1; - TFotaState res = EIdle; - res = (TFotaState)fotasession.GetState(x); - CleanupStack::PopAndDestroy(&fotasession); - if( res == aState ) - return KErrNone; - else - return KErrNotFound; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::InitiateFwUpdInstall -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::InitiateFwUpdInstall( TInt aPkgId, TInt aProfileId ) - { - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::InitiateFwUpdInstall(): aPkgId = %d, aProfileId = %d" ), - aPkgId, aProfileId ) ); - - TInt retval = KErrGeneral; - retval = iFotaEngine.Update( aPkgId, aProfileId, KNullDesC8, KNullDesC8 ); - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::InitiateFwUpdInstall() completed, retval = %d" ), - retval ) ); - return retval; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::ContinueFwUpdInstall -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::ContinueFwUpdInstall( ) - { - FLOG( "[OMADM] CNSmlDMFotaModel::ContinueFwUpdInstall(): begin" ); - - TInt retval = iFotaEngine.TryResumeDownload( ); - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::ContinueFwUpdInstall() completed, retval = %d") ,retval )); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::CurrentFwVersionString -// If the software version retrieval fails, the aVersionstring is not modified. -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::CurrentFwVersionString( TDes& aVersionString ) - { - FLOG( "[OMADM] CNSmlDMFotaModel::CurrentFwVersionString()" ); - TBuf< KSysUtilVersionTextLength > buf; - - TInt err = SysUtil::GetSWVersion( buf ); - if ( err == KErrNone ) - { - _LIT( separator, "\n" ); - TInt location = buf.Find( separator ); - if ( location != KErrNotFound) - { - // Delete the separator and the text after it. We are - // only interested in the first section. - buf.Delete( location, (buf.Length() - location) ); - } - - aVersionString.Copy( buf.Left( aVersionString.MaxLength() ) ); - } - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::CurrentFwVersionString() completed, err = %d, string = \"%S\"" ), - err, &aVersionString ) ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::LastUpdateTime -// ----------------------------------------------------------------------------- -// -TInt CNSmlDMFotaModel::LastUpdateTime( TTime& aTime ) - { - FLOG( "[OMADM] CNSmlDMFotaModel::LastUpdateTime()" ); - TInt retval = iFotaEngine.LastUpdate( aTime ); - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::LastUpdateTime() completed, err = %d" ), - retval ) ); - return retval; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::MarkFwUpdChangesStartL -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::MarkFwUpdChangesStartL() - { - FLOG( "[OMADM] CNSmlDMFotaModel::MarkFwUpdChangesStartL()" ); - - /*iFwUpdIdStateList.Reset(); - RArray< TInt > pkgIdList = RetrieveFwUpdPkgIdListL(); - - TInt count = pkgIdList.Count(); - for ( TInt i = 0; i < count; i++ ) - { - TFwUpdIdState item; - item.iPkgId = pkgIdList[ i ]; - item.iState = iFotaEngine.GetState( pkgIdList[ i ] ); - iFwUpdIdStateList.Append( item ); - } - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::MarkFwUpdChangesStartL() completed, list count = %d" ), - iFwUpdIdStateList.Count() ) ); - pkgIdList.Close(); */ - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::FwUpdStatesChangedL -// The array is reseted at the end of the execution to save memory, since at -// the moment the information is not needed multiple times. -// ----------------------------------------------------------------------------- -// -TBool CNSmlDMFotaModel::FwUpdStatesChangedL() - { - FLOG( "[OMADM] CNSmlDMFotaModel::FwUpdStatesChangedL()" ); - - TBool retval = EFalse; - /*RArray< TInt > pkgIdList = RetrieveFwUpdPkgIdListL(); - - TInt count = pkgIdList.Count(); - for ( TInt i = 0; i < count; i++ ) - { - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::FwUpdStatesChangedL() searching pkgid = %d" ), - pkgIdList[ i ] ) ); - - TInt originalCount = iFwUpdIdStateList.Count(); - TBool found = EFalse; - - for ( TInt index = 0; (index < originalCount) && (!found); - index++ ) - { - if ( iFwUpdIdStateList[ index ].iPkgId == pkgIdList[ i ] ) - { - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::FwUpdStatesChangedL() found pkgid = %d" ), - iFwUpdIdStateList[ index ].iPkgId ) ); - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::FwUpdStatesChangedL() states are: %d and %d" ), - iFotaEngine.GetState( pkgIdList[ i ] ), - iFwUpdIdStateList[ index ].iState ) ); - - found = ETrue; - if ( iFwUpdIdStateList[ index ].iState - != iFotaEngine.GetState( pkgIdList[ i ] ) ) - { - retval = ETrue; - } - } - } - - if ( !found ) - { - retval = ETrue; - } - } - iFwUpdIdStateList.Reset(); - - FTRACE( FPrint( _L( - "[OMADM] CNSmlDMFotaModel::FwUpdStatesChangedL() completed, return = %d" ), - retval ) ); - pkgIdList.Close();*/ - TInt configFlags = EGenericSession; - //TInt SetGenValue(EGenericSession ); - CRepository* centrep = NULL; - TRAPD( err, centrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys ) ); - if ( centrep ) - { - centrep->Get( KDevManSessionType, configFlags ); - - } - if ( err != KErrNone ) - { - User::Leave( err ); - } - else - { - centrep->Set( KDevManSessionType, EGenericSession ); - } - if(centrep) - { - delete centrep; - } - if ( configFlags == EFotaPkgFound ) - { - retval = ETrue; - } - // configFlags=2 for FOTA Package not downloaded case ,1- successful download - return retval; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::CNSmlDMFotaModel -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CNSmlDMFotaModel::CNSmlDMFotaModel( CNSmlDMSyncDocument* aDocument ) : - iDocument( aDocument ) - { - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CNSmlDMFotaModel::ConstructL() - { - iFotaEngine.OpenL(); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMFotaModel::GetCurrentFwUpdState -// Fetches the state of last or current Fota operation -// ----------------------------------------------------------------------------- -// -TFotaState CNSmlDMFotaModel::GetCurrentFwUpdState() - { - const TInt x = -1; - TFotaState res = EIdle; - res = (TFotaState)iFotaEngine.GetState(x); - return res; - } - -// End of File