diff -r 000000000000 -r 044383f39525 imgtools/buildrom/tools/featuresdat.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imgtools/buildrom/tools/featuresdat.pm Tue Oct 27 16:36:35 2009 +0000 @@ -0,0 +1,106 @@ +# +# 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 routines to create features data file. +use featurefile; +package featuresdat; + +BEGIN +{ + @ISA = qw (featurefile); # Declare this a child of featurefile class +} + +use featureparser; +use strict; + +# Class constructor +sub new +{ + my ($class,$xmlDBHandle) = @_; + my $object = $class->SUPER::new($xmlDBHandle); # Invoke base class new function + + $object->{_FEATURELIST} = undef; + $object->{_FEATUREHASHMAP} = undef; + $object->{_FILEVERSION} = 0x0001; + + return $object; +} + +# Subroutine to create feature map +# @param $object - Object reference which is passed implicitly +sub createFeatureMap +{ + my $object = shift; + + foreach my $fidMain (@{$object->{_FEATURELIST}}) + { + my $fid = $fidMain->{uid}; + + # Check whether the feature is present in feature list XMl file or not. + # If not, then generate an error message and discard this feature. + if (!$object->isPresentInFeatureListXML($fidMain)) + { + next; + } + + # "0th" bit of the Status Flag is set depending on whether the feature is included by using "FEATURE" keyword or + # excluded using "EXCLUDE_FEATURE" keyword (i.e. "0th" bit will be set as '1' if the feature is included or else will + # be set as '0' if feature is excluded). + if ($fidMain->{include} == 1) + { + $fidMain->{SF} |= 1; + } + elsif ($fidMain->{exclude} == 1) + { + $fidMain->{SF} &= 0xFFFFFFFE; + } + + $object->{_FEATUREHASHMAP}->{$fid} = { SF=>$fidMain->{SF}, UD=>$fidMain->{UD} }; + } +} + +# Subroutine to write the feature entries in the features data file. +# @param $object - Object reference which is passed implicitly +sub writeFeatures +{ + my $object = shift; + + foreach my $featureId (sort {$a <=> $b} (keys %{$object->{_FEATUREHASHMAP}})) + { + $object->write2File($featureId); + $object->write2File($object->{_FEATUREHASHMAP}->{$featureId}->{SF}); + $object->write2File($object->{_FEATUREHASHMAP}->{$featureId}->{UD}); + } +} + +# 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; + + # Set the Default Range Count only for core image feature database file. + if ($object->{_FEATUREFILENAME} =~ /features.dat$/i ) + { + $object->{_DEFAULTRANGECOUNT} = ($object->{_XMLDBHANDLE})->defaultIncludeCount(); + } + else + { + $object->{_DEFAULTRANGECOUNT} = 0; + } +} + +1; \ No newline at end of file