iaupdate/IAD/engine/controller/src/iaupdateplatformdependency.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/engine/controller/src/iaupdateplatformdependency.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2009 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:   ?Description
+*
+*/
+
+
+
+// For the system version info
+#include <versioninfo.h>
+
+#include "iaupdateplatformdependency.h"
+#include "iaupdateversion.h"
+#include "iaupdateprotocolconsts.h"
+
+#include "iaupdatedebug.h"
+
+
+CIAUpdatePlatformDependency* CIAUpdatePlatformDependency::NewL()
+    {
+    CIAUpdatePlatformDependency* self =
+        CIAUpdatePlatformDependency::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+    
+    
+CIAUpdatePlatformDependency* CIAUpdatePlatformDependency::NewLC()
+    {
+    CIAUpdatePlatformDependency* self =
+        new( ELeave ) CIAUpdatePlatformDependency();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+
+CIAUpdatePlatformDependency::CIAUpdatePlatformDependency()
+: CBase()
+    {
+    Reset();
+    }
+
+void CIAUpdatePlatformDependency::ConstructL()
+    {
+    // Nothing to do here.
+    }
+
+
+CIAUpdatePlatformDependency::~CIAUpdatePlatformDependency()
+    {
+    delete iPlatform;
+    }
+
+
+TBool CIAUpdatePlatformDependency::AcceptablePlatformL() const
+    {
+    IAUPDATE_TRACE("[IAUPDATE] CIAUpdatePlatformDependency::AcceptablePlatformL() begin");
+    
+    // Get the platform version
+    VersionInfo::TPlatformVersion platformVersion;
+    User::LeaveIfError( VersionInfo::GetVersion( platformVersion ) );
+
+    IAUPDATE_TRACE_2("Platform version major: %d, minor: %d",
+                     platformVersion.iMajorVersion,
+                     platformVersion.iMinorVersion);
+    IAUPDATE_TRACE_2("Node version floor major: %d, minor: %d",
+                     iVersionFloor.iMajor,
+                     iVersionFloor.iMinor);
+    IAUPDATE_TRACE_2("Node version roof major: %d, minor: %d",
+                     iVersionRoof.iMajor,
+                     iVersionRoof.iMinor);
+                                          
+    // Create TIAUpdateVersion for comparing purposes. 
+    // Notice, that platform version does not have build value.
+    TVersion tmpVersion( platformVersion.iMajorVersion, platformVersion.iMinorVersion, 0 );
+    TIAUpdateVersion iaPlatformVersion( tmpVersion );
+
+    // Create temporary version infos.
+    // Notice, here we ignore build values, because platform version
+    // does not support them. So, set build to extreame values.
+    TIAUpdateVersion floor;
+    floor.SetToFloor();
+    floor.iMajor = iVersionFloor.iMajor;
+    floor.iMinor = iVersionFloor.iMinor;
+    TIAUpdateVersion roof;
+    roof.SetToRoof();
+    roof.iMajor = iVersionRoof.iMajor;
+    roof.iMinor = iVersionRoof.iMinor;
+    
+    // Now compare the version ranges.
+    TBool correctVersion(  
+        floor <= iaPlatformVersion && iaPlatformVersion <= roof );
+   
+    // Check if the platform description and versions are acceptable.
+    if ( ( !iPlatform 
+           || iPlatform->CompareF( IAUpdateProtocolConsts::KPlatformDescriptionValue() ) == 0 )
+         && correctVersion )
+        {
+        IAUPDATE_TRACE("[IAUPDATE] CIAUpdatePlatformDependency::AcceptablePlatformL() end: Acceptable");
+        return ETrue;
+        }
+    else
+        {
+        IAUPDATE_TRACE("[IAUPDATE] CIAUpdatePlatformDependency::AcceptablePlatformL() end: Not Acceptable");
+        return EFalse; 
+        }
+    }
+    
+    
+void CIAUpdatePlatformDependency::SetPlatformL( const TDesC8& aPlatform )
+    {
+    HBufC8* tmp( aPlatform.AllocL() );
+    delete iPlatform;
+    iPlatform = tmp;
+    }
+    
+
+const TIAUpdateVersion& CIAUpdatePlatformDependency::VersionFloor() const
+    {
+    return iVersionFloor;
+    }
+    
+    
+void CIAUpdatePlatformDependency::SetVersionFloor( const TVersion& aVersion )
+    {
+    iVersionFloor = aVersion;
+    }
+    
+    
+const TIAUpdateVersion& CIAUpdatePlatformDependency::VersionRoof() const
+    {
+    return iVersionRoof;
+    }
+    
+    
+void CIAUpdatePlatformDependency::SetVersionRoof( const TVersion& aVersion )
+    {
+    iVersionRoof = aVersion;    
+    }
+    
+    
+void CIAUpdatePlatformDependency::Reset()
+    {
+    iVersionFloor.SetToFloor();
+    iVersionRoof.SetToRoof();
+
+    delete iPlatform;
+    iPlatform = NULL;    
+    }