imgtools/buildrom/tools/featuresdat.pm
changeset 0 044383f39525
--- /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