diff -r 000000000000 -r ba25891c3a9e appinstaller/AppinstUi/Daemon/Inc/versionRevisor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appinstaller/AppinstUi/Daemon/Inc/versionRevisor.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,187 @@ +/* +* Copyright (c) 2004 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: +* +*/ + +#ifndef VERSIONREVISOR_H +#define VERSIONREVISOR_H + +#include +#include + +#include "sisregistryentry.h" +#include "uninstaller.h" +#include "programstatus.h" + +/** + * TVersionRevStubData class for stub data. + */ +class TVersionRevStubData + { + public: + TUid pkgUID; + TInt major; + TInt minor; + TInt build; + }; + +namespace Swi +{ + +/** + * CVersionRevisor class handles version checking for rom updates. + * + * This class reads stub sis files after firmware update and checks + * rom updates from user dirve. + */ +class CVersionRevisor : public CBase + { +public: + enum TStartUpReason + { + EFirmwareUpdate = 100 + }; + + /** + * Two-phased constructor. + */ + static CVersionRevisor* NewL( CProgramStatus& aMainStatus ); + + /** + * Two-phased constructor. + */ + static CVersionRevisor* NewLC( CProgramStatus& aMainStatus ); + + /** + * Destructor. + */ + ~CVersionRevisor(); + +public: + + /** + * This function runs all main tasks for VersionRevisor + * and starts uninstall if needed. + * + * @return TInt Error code. + */ + TInt StartProcessL(); + + /** + * This function handles self exit for VersionRevisor. + * + */ + void Exit(); + +private: + + /** + * 2nd phase constructor. + * @param aMainStatus - Program status + */ + void ConstructL( CProgramStatus& aMainStatus ); + + /** + * This function reads stub sis file's version and UID and adds + * the UID and version info to array. + * + * @return TInt Error code + */ + TInt ProcessStubFilesL(); + + /** + * This function searches installed rom updates from sis registry + * and compares version to stub version. + * + * @return TInt Error code + */ + TInt ProcessSisRegistryL(); + + /** + * This function checks if firmware has change. Function reads version + * string from the device and compares that to previous version. Function + * creates file to private directory in where it save the latest firmware + * string. + * + */ + void StartUpReasonL(); + + /** + * This function reads stub sis files version from sis controller and + * adds stub info to array. + * + * @param aStubName Stub's name + */ + void AppendStubInfoL( TDesC& aStubName ); + + /** + * This function compares rom update's (sis) and stub's version numbers. + * + * @param aSisVer Sis packages version + * @param aStubVer Stub sis version + * @return TInt + * Returns KVerRevSisVersionOlder if sis version is older. + * Returns KVerRevSisVersionSame if sis version same as stub version. + * Returns KVerRevSisVersionNewer if sis version is newer. + */ + TInt CompareVersions( TVersion aSisVer, TVersion aStubVer ); + + /** + * This function checks that all binary fails are found in rom. + * + * @param aEntry + * @return TBool ETure if all binaries are found in rom. + */ + TBool AllRomBinariesFoundL( Swi::RSisRegistryEntry& aEntry ); + + /** + * Helper function for StartUpReasonL. Reads firmware string. + * + * @param aFile File containing string. + * @param aText Buffer for string. + */ + void ReadFileText( RFile& aFile, TDes& aText ); + + /** + * Helper function for StartUpReasonL. Writes firmware string. + * This function is used to store current firmware string to + * private directory. + * + * @param aFile File to be writen. + * @param aText Buffer for string. + */ + void WriteFileText( RFile& aFile, TDes& aText ); + + +private: + + RFs iFs; + // Defines startup reason e.g. firmware update. + TInt iStartupReason; + // Instance of sis uninstaller AO. + CSisPkgUninstaller* iSisUninstaller; + // Revisor do not own this instance. Parameter defines the current + // status of swi daemon. This status is updated after install or + // uninstall process has finished. + CProgramStatus* iProgramStatus; + // Array containing stub version info. + RPointerArray iStubDataArray; + }; + +} // namespace Swi + +#endif /*VERSIONREVISOR_H*/ + +//EOF