featuremgmt/featuremgr/tools/datfilehelpers/FeatureDSR.pm
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/featuremgmt/featuremgr/tools/datfilehelpers/FeatureDSR.pm	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,94 @@
+#!perl -w
+# 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 "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:
+#
+
+use strict;
+
+#
+# A simple class to maintain a single 'default supported range' feature
+# object.
+#
+package FeatureDSR;
+
+sub new
+{
+	my $arg = shift;
+	my $class = ref($arg) || $arg;
+	my($low, $high) = @_;
+	my $self = {
+			       lowuid => $low,
+			       highuid => $high,
+				   endian => "LE",
+			   };
+	bless $self, $class;
+	return $self;
+}
+
+sub LowUID
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	return $self->{lowuid} unless(defined($arg));
+	$self->{lowuid} = $arg;
+	return $arg;
+}
+
+sub HighUID
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	return $self->{highuid} unless(defined($arg));
+	$self->{highuid} = $arg;
+	return $arg;
+}
+
+sub Endian
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	return $self->{endian} unless($arg =~ m/(LE|BE)i/);
+	$arg = uc($arg);
+	$self->{endian} = $arg;
+	return $arg;
+}
+
+# Return the content of this object as packed binary, i.e 8 bytes
+# of the specified endian-ness.
+sub BinaryContent
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $packstring = "V2";
+	   $packstring = "N2" if($self->{endian} eq "BE");
+	my $retstring = pack($packstring, ( $self->LowUID, $self->HighUID ) );
+	return $retstring;
+}
+
+# Display the content of the DSR in english.
+sub Show
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $fd = shift;
+	$fd = *STDOUT unless(defined($fd));
+	printf $fd "LOW UID 0x%08x\n", $self->LowUID();
+	printf $fd "HIGH UID 0x%08x\n", $self->HighUID();
+	return 1;
+}
+
+1;