[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/CXIF/CMIF_Structure_Check.pm b/mcu/tools/CXIF/CMIF_Structure_Check.pm
new file mode 100644
index 0000000..3fdcd51
--- /dev/null
+++ b/mcu/tools/CXIF/CMIF_Structure_Check.pm
@@ -0,0 +1,115 @@
+use strict;
+use warnings;
+
+
+package CMIF_Structure_Check;
+use File::Find;
+return 1;
+
+sub crc32 {
+ my ($input, $init_value, $polynomial) = @_;
+
+ $init_value = 0 unless (defined $init_value);
+ $polynomial = 0xedb88320 unless (defined $polynomial);
+
+ my @lookup_table;
+
+ for (my $i=0; $i<256; $i++) {
+   my $x = $i;
+   for (my $j=0; $j<8; $j++) {
+     if ($x & 1) {
+       $x = ($x >> 1) ^ $polynomial;
+     } else {
+       $x = $x >> 1;
+     }
+   }
+   push @lookup_table, $x;
+ }
+
+ my $crc = $init_value ^ 0xffffffff;
+
+ foreach my $x (unpack ('C*', $input)) {
+   $crc = (($crc >> 8) & 0xffffff) ^ $lookup_table[ ($crc ^ $x) & 0xff ];
+ }
+
+ $crc = $crc ^ 0xffffffff;
+
+ return $crc;
+}
+
+sub file_checksum_input{
+    my ($filename) = @_;
+    open(FILE,$filename) or die "Could not open $filename, $!";
+    my $str="";
+    my @keyword=<FILE>;
+    
+    close(FILE);
+    $str=join("",@keyword);
+    
+    return $str;
+}
+
+my @all_list;
+sub want
+{
+         if($_ =~ /\.h$/){
+		 push @all_list,  $File::Find::name;
+         }
+}
+sub folder_checksum_input{
+    
+    my ($foldername) = @_;
+    find(\&want ,$foldername);
+    my $str="";
+    my $total_str="";
+    foreach (sort{crc32($a)<=>crc32($b)}@all_list)
+    {
+       open(FILE,$_);
+       my @keyword=<FILE>;
+       close(FILE);
+      $str=join("",@keyword);
+      $total_str = join($total_str,"",$str);
+    }
+    @all_list = ();
+    return $total_str;
+}
+
+sub merge_checksum_input{
+  my (@pathlist)=@_;
+  my $checksum_input="";
+  my $checksum_str="";
+  foreach (@pathlist)
+  {
+    if($_ =~ /\.h$/){
+        $checksum_str=file_checksum_input($_);
+        $checksum_input = join($checksum_input,"",$checksum_str);
+    }
+    else{
+        $checksum_str=folder_checksum_input($_);
+        $checksum_input=join($checksum_input,"",$checksum_str);
+    }
+  }
+  return $checksum_input;
+}
+
+sub get_cmif_checksum_value{
+    my($cmif_folder_path)=@_;
+    my $CMIF_SS_FILE_PATH=$cmif_folder_path;
+    my $checksum_value=sprintf("%d",&crc32(&folder_checksum_input($CMIF_SS_FILE_PATH)) );
+    $checksum_value=join($checksum_value,"","u");
+    return $checksum_value;
+
+    
+}
+
+
+##############################
+# test code
+##############################
+#my @TEST= ($ARGV[0]);
+#printf "%x",get_cmif_checksum_value(@TEST);
+#print "\n"
+
+
+
+