diff -r c7c26511138f -r 360bd6b35136 imgtools/buildrom/tools/featurefile.pm --- a/imgtools/buildrom/tools/featurefile.pm Wed Jun 16 16:51:40 2010 +0300 +++ b/imgtools/buildrom/tools/featurefile.pm Wed Jun 23 16:56:47 2010 +0800 @@ -1,187 +1,187 @@ -# -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of the License "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 package contains common routines required for the creation of feature registry configuration/ -# features data file. -package featurefile; - -# Include Module package -use FileHandle; -use WRITER; - -use strict; - -# Class constructor -sub new -{ - my ($class,$xmlDBHandle) = @_; - - my $object = {}; - $object->{_FEATUREFILENAME} = undef; - $object->{_FILEHANDLE} = undef; - $object->{_FILEVERSION} = undef; - $object->{_FEATCOUNT} = 0; - $object->{_DEFAULTRANGECOUNT} = 0; - $object->{_XMLDBHANDLE} = $xmlDBHandle; - - bless($object, $class); - return $object; -} - -# Subroutine to create feature registry configuration/features data file -# @param $object - Object reference which is passed implicitly -# @param _FEATUREFILENAME - Feature registry configuration/features data filename -# @param _FEATURELIST - The complete List of features which are either to be included or excluded -sub createFile -{ - my $object = shift; - $object->{_FEATUREFILENAME} = shift; - $object->{_FEATURELIST} = shift; - - # Open feature file for writing - if (!$object->openFile()) - { - return 0; - } - - # Create feauture map - $object->createFeatureMap(); - - # Set feature count - $object->setFeatureCount(); - - # Set Default Range Count - $object->setDefaultRangeCount(); - - # Write feature file header - $object->writeHeader(); - - # Create feature entry for the listed features - $object->writeFeatures(); - - # Write Default Supported Range - $object->writeDefault(); - - # Close feature file. - $object->closeFile(); - - return 1; -} - -# Subroutine to open feature file -# @param $object - Object reference which is passed implicitly -sub openFile -{ - my $object = shift; - - open (CONFIG_FH, ">$object->{_FEATUREFILENAME}"); - binmode(CONFIG_FH); - $object->{_FILEHANDLE} = *CONFIG_FH; - - if(!defined $object->{_FILEHANDLE}) - { - print "\nError in creating the $object->{_FEATUREFILENAME}, check for the accessability of File / Drive\n"; - return 0; - } - return 1; -} - -# Subroutine to write feature file header -# @param $object - Object reference which is passed implicitly -sub writeHeader -{ - my $object = shift; - - $object->write2File(0x74616566); - $object->write2File($object->{_FILEVERSION}); - $object->write2File($object->{_FEATCOUNT}); - $object->write2File($object->{_DEFAULTRANGECOUNT}); -} - -# Subroutine to check if the feature is present in feature databse XML file -# @param $object - Object reference which is passed implicitly -sub isPresentInFeatureListXML -{ - my $object = shift; - my $fidMain= shift; - - # If the feature is not found, generate an error message. - if(!defined $fidMain->{uid}) - { - print "Error:Feature $fidMain->{name} not found in feature list XML \n"; - return 0; - } - return 1; -} - -# Subroutine to set the count of listed features in feature file -# @param $object - Object reference which is passed implicitly -sub setFeatureCount -{ - my $object = shift; - - $object->{_FEATCOUNT} = scalar (keys %{$object->{_FEATUREHASHMAP}}); -} - -# Subroutine to set the count of Default Support Range(D.S.R) -# @param $object - Object reference which is passed implicitly -sub setDefaultRangeCount -{ - my $object = shift; - - $object->{_DEFAULTRANGECOUNT} = ($object->{_XMLDBHANDLE})->defaultIncludeCount(); -} - -# Write the default=present featureUID ranges (min/lowerruid,max/higheruid) to the feature file -# @param $object - Object reference which is passed implicitly -sub writeDefault -{ - my $object = shift; - - if ($object->{_DEFAULTRANGECOUNT}) - { - my @defaultFeatures = ($object->{_XMLDBHANDLE})->getDefaultIncludeInfo(); - for my $i ( 0 .. $#defaultFeatures ) - { - my $minuid = $defaultFeatures[$i][0]; - my $maxuid = $defaultFeatures[$i][1]; - $object->write2File($minuid); - $object->write2File($maxuid); - } - } -} - -# Subroutine to close feature file. -# @param $object - Object reference which is passed implicitly -sub closeFile -{ - my $object = shift; - - close $object->{_FILEHANDLE}; -} - -# Subroutine to write the bytes to the binary file. -# @param $object - Object reference which is passed implicitly -# @param $bytes - 32-bit value which is to be writen in binary file. -sub write2File -{ - my $object = shift; - my $bytes = shift; - - &WRITER::write32($object->{_FILEHANDLE}, $bytes); -} - -1; \ No newline at end of file +# +# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "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 package contains common routines required for the creation of feature registry configuration/ +# features data file. +package featurefile; + +# Include Module package +use FileHandle; +use romutl; + +use strict; + +# Class constructor +sub new +{ + my ($class,$xmlDBHandle) = @_; + + my $object = {}; + $object->{_FEATUREFILENAME} = undef; + $object->{_FILEHANDLE} = undef; + $object->{_FILEVERSION} = undef; + $object->{_FEATCOUNT} = 0; + $object->{_DEFAULTRANGECOUNT} = 0; + $object->{_XMLDBHANDLE} = $xmlDBHandle; + + bless($object, $class); + return $object; +} + +# Subroutine to create feature registry configuration/features data file +# @param $object - Object reference which is passed implicitly +# @param _FEATUREFILENAME - Feature registry configuration/features data filename +# @param _FEATURELIST - The complete List of features which are either to be included or excluded +sub createFile +{ + my $object = shift; + $object->{_FEATUREFILENAME} = shift; + $object->{_FEATURELIST} = shift; + + # Open feature file for writing + if (!$object->openFile()) + { + return 0; + } + + # Create feauture map + $object->createFeatureMap(); + + # Set feature count + $object->setFeatureCount(); + + # Set Default Range Count + $object->setDefaultRangeCount(); + + # Write feature file header + $object->writeHeader(); + + # Create feature entry for the listed features + $object->writeFeatures(); + + # Write Default Supported Range + $object->writeDefault(); + + # Close feature file. + $object->closeFile(); + + return 1; +} + +# Subroutine to open feature file +# @param $object - Object reference which is passed implicitly +sub openFile +{ + my $object = shift; + + open (CONFIG_FH, ">$object->{_FEATUREFILENAME}"); + binmode(CONFIG_FH); + $object->{_FILEHANDLE} = *CONFIG_FH; + + if(!defined $object->{_FILEHANDLE}) + { + print "\nError in creating the $object->{_FEATUREFILENAME}, check for the accessability of File / Drive\n"; + return 0; + } + return 1; +} + +# Subroutine to write feature file header +# @param $object - Object reference which is passed implicitly +sub writeHeader +{ + my $object = shift; + + $object->write2File(0x74616566); + $object->write2File($object->{_FILEVERSION}); + $object->write2File($object->{_FEATCOUNT}); + $object->write2File($object->{_DEFAULTRANGECOUNT}); +} + +# Subroutine to check if the feature is present in feature databse XML file +# @param $object - Object reference which is passed implicitly +sub isPresentInFeatureListXML +{ + my $object = shift; + my $fidMain= shift; + + # If the feature is not found, generate an error message. + if(!defined $fidMain->{uid}) + { + print "Error:Feature $fidMain->{name} not found in feature list XML \n"; + return 0; + } + return 1; +} + +# Subroutine to set the count of listed features in feature file +# @param $object - Object reference which is passed implicitly +sub setFeatureCount +{ + my $object = shift; + + $object->{_FEATCOUNT} = scalar (keys %{$object->{_FEATUREHASHMAP}}); +} + +# Subroutine to set the count of Default Support Range(D.S.R) +# @param $object - Object reference which is passed implicitly +sub setDefaultRangeCount +{ + my $object = shift; + + $object->{_DEFAULTRANGECOUNT} = ($object->{_XMLDBHANDLE})->defaultIncludeCount(); +} + +# Write the default=present featureUID ranges (min/lowerruid,max/higheruid) to the feature file +# @param $object - Object reference which is passed implicitly +sub writeDefault +{ + my $object = shift; + + if ($object->{_DEFAULTRANGECOUNT}) + { + my @defaultFeatures = ($object->{_XMLDBHANDLE})->getDefaultIncludeInfo(); + for my $i ( 0 .. $#defaultFeatures ) + { + my $minuid = $defaultFeatures[$i][0]; + my $maxuid = $defaultFeatures[$i][1]; + $object->write2File($minuid); + $object->write2File($maxuid); + } + } +} + +# Subroutine to close feature file. +# @param $object - Object reference which is passed implicitly +sub closeFile +{ + my $object = shift; + + close $object->{_FILEHANDLE}; +} + +# Subroutine to write the bytes to the binary file. +# @param $object - Object reference which is passed implicitly +# @param $bytes - 32-bit value which is to be writen in binary file. +sub write2File +{ + my $object = shift; + my $bytes = shift; + + write_32bit($object->{_FILEHANDLE}, $bytes); +} + +1;