[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/tools/DataManipulation.pm b/mcu/tools/DataManipulation.pm
new file mode 100644
index 0000000..11a2335
--- /dev/null
+++ b/mcu/tools/DataManipulation.pm
@@ -0,0 +1,205 @@
+#!/usr/bin/perl

+#

+# Filename: 

+# ---------

+#  DataManipulation.pl

+#

+# Description: 

+# ------------

+#  Functions for data manipulation.

+#

+# Auther: 

+# -------

+#  Shinn Lin

+# 

+# Note:

+# -----

+#  none.

+#

+# Log: 

+# -----

+#  2007/05/04   Create.

+#

+

+#BEGIN { push @INC, 'U:\\00MyPerlLib'}  # add additional library path

+package DataManipulation;                           # declare package library

+use strict;

+

+#******************************************************************************

+# Global Data

+#******************************************************************************

+

+#******************************************************************************

+# Export Function

+#******************************************************************************

+

+return 1; # return true

+

+#******************************************************************************

+# FUNCTION

+#  clone

+# DESCRIPTION

+#  clone data from source to destination

+# PARAMETERS

+#  para 1 - reference to source data

+#  para 2 - reference to destination data

+# RETURNS

+#  none

+#******************************************************************************

+sub clone()

+{

+    my $src_ref;

+    my $dest_ref;

+    

+    ($src_ref, $dest_ref) = @_;

+    

+    # check if types of src and dest are the same

+    die "can't clone different type [".ref($src_ref)."][".ref($dest_ref)."]\n" if (ref($src_ref) ne ref($dest_ref));

+

+    # clone reference-to-hash

+    if (ref($src_ref) eq "HASH")

+    {

+        %{$dest_ref} = ();

+        while (my ($key, $value) = (each %{$src_ref}))

+        {

+            if(ref($value) eq "HASH")

+            {

+                %{${$dest_ref}{$key}} = ();

+                clone( $value, \%{${$dest_ref}{$key}});

+            }

+            elsif (ref($value) eq "ARRAY")

+            {

+                @{${$dest_ref}{$key}} = ();

+                clone( $value, \@{${$dest_ref}{$key}});

+            }

+            else

+            {

+                ${$dest_ref}{$key} = $value;

+            }

+        }

+    }

+    # clone reference-to-array

+    elsif (ref($src_ref) eq "ARRAY")

+    {

+        @{$dest_ref} = ();

+        for (my $i=0; $i<scalar(@{$src_ref}); $i++)

+        {

+            if(ref(${$src_ref}[$i]) eq "HASH")

+            {

+                %{${$dest_ref}[$i]} = ();

+                clone( ${$src_ref}[$i], \%{${$dest_ref}[$i]});

+            }

+            elsif (ref(${$src_ref}[$i]) eq "ARRAY")

+            {

+                @{${$dest_ref}[$i]} = ();

+                clone( ${$src_ref}[$i], \@{${$dest_ref}[$i]});

+            }

+            else

+            {

+                ${$dest_ref}[$i] = ${$src_ref}[$i];

+            }

+        }

+    }

+    else

+    {

+        $$src_ref = $$dest_ref;

+    }

+}

+

+

+sub printObject()

+{

+    my $src_ref;

+    

+    ($src_ref) = @_;

+    

+    # clone reference-to-hash

+    if (ref($src_ref) eq "HASH")

+    {

+        while(my ($key, $value) = (each %{$src_ref}))

+        {

+            print $src_ref."[".$key."] = ".$value."\n";

+            if((ref($value) eq "HASH") || (ref($value) eq "ARRAY"))

+            {

+                &printObject($value);

+            }

+        }

+    }

+    # clone reference-to-array

+    elsif(ref($src_ref) eq "ARRAY")

+    {

+        for (my $i=0; $i<scalar(@{$src_ref}); $i++)

+        {

+            print $src_ref."[".$i."] = ".${$src_ref}[$i]."\n";

+            if((ref(${$src_ref}[$i]) eq "HASH") || (ref(${$src_ref}[$i]) eq "ARRAY"))

+            {

+                &printObject(${$src_ref}[$i]);

+            }

+        }

+    }

+    else

+    {

+    }

+}

+

+

+#******************************************************************************

+# Internal Data

+#******************************************************************************

+

+

+#******************************************************************************

+# Program Start

+#******************************************************************************

+

+

+

+#******************************************************************************

+# Internal Function

+#******************************************************************************

+

+#******************************************************************************

+# FUNCTION

+#  xxx

+# DESCRIPTION

+#  xxx

+# PARAMETERS

+#  xxx

+# RETURNS

+#  xxx

+#******************************************************************************

+

+

+#******************************************************************************

+# FUNCTION

+#  timeCheck

+# DESCRIPTION

+#  print current time (in sec.) and time-difference to previous check if exists

+# PARAMETERS

+#  none

+# RETURNS

+#  current time and time difference if exists (both in sec.)

+#******************************************************************************

+my $timePrev = 0;

+sub timeCheck()

+{

+    my $prePrintStr;

+    my $postPrintStr;   

+    my $timeCurr = time();

+    my $timeDiff = 0;

+    

+    ($prePrintStr, $postPrintStr) = @_;

+    

+    print "$prePrintStr" if ($prePrintStr ne "");

+    print "[Time: ".$timeCurr." sec.";

+    if ($timePrev > 0) # previous-time exists

+    {

+        $timeDiff = $timeCurr - $timePrev;

+        print "(Diff = $timeDiff)";

+    }

+    print "]";

+    print "$postPrintStr" if ($postPrintStr ne "");

+    print "\n\n";

+    $timePrev = $timeCurr;

+    return $timeDiff;

+}