[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/Office.pm b/mcu/tools/Office.pm
new file mode 100644
index 0000000..5229d98
--- /dev/null
+++ b/mcu/tools/Office.pm
@@ -0,0 +1,759 @@
+#!/usr/bin/perl
+#
+# Filename:
+# ---------
+# Office.pm
+#
+# Description:
+# ------------
+# Microsoft Office access functions.
+#
+# Auther:
+# -------
+# mtk01542
+#
+# Note:
+# -----
+# Hints for Win32 Ole: for object, use 'abc->def'; for attribute, use 'abc->{def}'.
+#
+# Log:
+# -----
+# 2006/12/26 Create for Excel part.
+#
+
+package Office; # declare package library
+use strict;
+
+# for use of Excel
+use Win32::OLE qw(in with);
+use Win32::OLE::Const 'Microsoft Excel';
+$Win32::OLE::Warn = 3;
+
+#******************************************************************************
+# Global Data
+#******************************************************************************
+my $g_excel_name = "";
+my $g_excel;
+my $g_book;
+my $g_sheet;
+
+my %g_fontAttr = ('Name' => 'Arial', 'Size' => 11, 'Bold' => 0, 'ColorIndex' => 1);
+my %g_fontColorHash = ('black' => 1, 'white' => 2, 'red' => 3, 'blue' => 5);
+
+my $curr_obj;
+
+#******************************************************************************
+# Export Function
+#******************************************************************************
+
+
+#******************************************************************************
+# FUNCTION
+# excelGetColIndex
+# DESCRIPTION
+# get column index by given cell names and desired row
+# PARAMETERS
+# para 1 - reference to cell name array
+# para 2 - reference to index hash
+# para 3 - desired row number
+# RETURNS
+# none
+#******************************************************************************
+sub excelGetColIndex()
+{
+ my $indexStrArray_ref;
+ my $indexHash_ref;
+ my $row;
+
+ ($indexStrArray_ref, $indexHash_ref, $row) = @_;
+
+ foreach my $indexStr (@{$indexStrArray_ref})
+ {
+ ${$indexHash_ref}{$indexStr} = 0;
+ my $col = 1;
+ my $str = trim(excelRead($row, $col));
+ while ($str ne "")
+ {
+ if ($str =~ /^$indexStr$/i)
+ {
+ ${$indexHash_ref}{$indexStr} = $col;
+ #print "$indexStr = $col\n";
+ }
+ $col++;
+ $str = trim(excelRead($row, $col));
+ }
+ }
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelNew
+# DESCRIPTION
+# new an excel file
+# PARAMETERS
+# para 1 - filename
+# RETURNS
+# none
+#******************************************************************************
+sub excelNew()
+{
+ $g_excel_name = $_[0];
+
+ $g_excel = Win32::OLE->new('Excel.Application', 'Quit') or die "Oops, cannot start Excel";
+ #Win32::OLE->Option(CP => Win32::OLE::CP_UTF8);
+
+ $curr_obj = $g_excel;
+
+ $g_book = $g_excel->Workbooks->Add;
+ $g_sheet = $g_book->Worksheets(1);
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelOpen
+# DESCRIPTION
+# open an excel file
+# PARAMETERS
+# para 1 - filename
+# RETURNS
+# none
+#******************************************************************************
+sub excelOpen()
+{
+ my $file = $_[0];
+
+ $g_excel = Win32::OLE->new('Excel.Application', 'Quit') or die "Oops, cannot start Excel";
+ #Win32::OLE->Option(CP => Win32::OLE::CP_UTF8);
+
+ $curr_obj = $g_excel;
+
+ die "\n[ERROR] $file doesn't exist!\n" if (!(-e $file));
+ $g_book = $g_excel->Workbooks->Open("$file");
+ $g_sheet = $g_book->Worksheets(1);
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetWorksheet
+# DESCRIPTION
+# set worksheet of excel file
+# PARAMETERS
+# para 1 - worksheet name
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetWorksheet()
+{
+ my $worksheet;
+
+ ($worksheet) = @_;
+
+ $g_sheet = $g_book->Worksheets($worksheet);
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelAddWorksheet
+# DESCRIPTION
+# add worksheet to excel file
+# PARAMETERS
+# para 1 - worksheet name
+# para 2 - how to add? to right/left or rightest
+# para 3 - name of reference worksheet
+# RETURNS
+# none
+#******************************************************************************
+sub excelAddWorksheet()
+{
+ my $name;
+ my $cmd;
+ my $arg;
+
+ ($name, $cmd, $arg) = @_;
+
+ $arg = $g_book->ActiveSheet->{Name} if ($arg eq ''); # set to current if empty
+
+ if ($cmd eq 'rightest')
+ {
+ # add worksheet as rightest one
+ $g_book->Worksheets->add(
+ {After=>$g_book->Worksheets($g_book->Worksheets->{Count})})->{Name} = $name;
+ }
+ elsif ($cmd eq 'right')
+ {
+ # add worksheet at the right of given worksheet
+ $g_book->Worksheets->add(
+ {After=>$g_book->Worksheets($arg)})->{Name} = $name;
+ }
+ else
+ {
+ # add worksheet at the left of given worksheet
+ $g_book->Worksheets->add(
+ {Before=>$g_book->Worksheets($arg)})->{Name} = $name;
+ }
+ $g_sheet = $g_book->Worksheets($name);
+}
+
+#******************************************************************************
+# FUNCTION
+# excelOpenText
+# DESCRIPTION
+# open a text file to excel
+# PARAMETERS
+# para 1 - text filename
+# para 2 - delimiter character
+# RETURNS
+# none
+#******************************************************************************
+sub excelOpenText()
+{
+ my $file = $_[0];
+ my $delimiter = $_[1];
+
+ $g_excel = Win32::OLE->new('Excel.Application', 'Quit') or die "Oops, cannot start Excel";
+ #Win32::OLE->Option(CP => Win32::OLE::CP_UTF8);
+
+ $curr_obj = \$g_excel;
+
+ $g_book = $g_excel->Workbooks->Open($file, 0, 0, 6, 0, 0, 0, 2, $delimiter);
+ $g_sheet = $g_book->Worksheets(1);
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSaveAs
+# DESCRIPTION
+# save as another excel file
+# PARAMETERS
+# para 1 - filename
+# RETURNS
+# none
+#******************************************************************************
+sub excelSaveAs()
+{
+ $g_book->SaveAs("$_[0]");
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelClose
+# DESCRIPTION
+# close excel file
+# PARAMETERS
+# none
+# RETURNS
+# none
+#******************************************************************************
+sub excelClose()
+{
+ if ($g_excel_name ne "")
+ {
+ $g_book->SaveAs("$g_excel_name");
+ }
+ $g_book->Close();
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelWriteRow
+# DESCRIPTION
+# write data items to row
+# PARAMETERS
+# para 1 - row
+# para 2 - start of col
+# para 3 - reference to data array (e.g. \@abc)
+# RETURNS
+# none
+#******************************************************************************
+sub excelWriteRow()
+{
+ my $row = $_[0];
+ my $col = $_[1];
+ my $data_ref = $_[2];
+
+ foreach my $item (@$data_ref)
+ {
+ excelSetFontAttr($g_sheet->Cells($row,$col));
+ $g_sheet->Cells($row,$col)->{Value} = "$item";
+ $col++;
+ }
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelWriteCol
+# DESCRIPTION
+# write data items to column
+# PARAMETERS
+# para 1 - start of row
+# para 2 - column
+# para 3 - reference to data array (e.g. \@abc)
+# RETURNS
+# none
+#******************************************************************************
+sub excelWriteCol()
+{
+ my $row = $_[0];
+ my $col = $_[1];
+ my $data_ref = $_[2];
+
+ foreach my $item (@$data_ref)
+ {
+ excelSetFontAttr($g_sheet->Cells($row,$col));
+ $g_sheet->Cells($row,$col)->{Value} = "$item";
+ $row++;
+ }
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelWrite
+# DESCRIPTION
+# write a cell
+# PARAMETERS
+# para 1 - row
+# para 2 - col
+# para 3 - data
+# RETURNS
+# none
+#******************************************************************************
+sub excelWrite()
+{
+ my $row = $_[0];
+ my $col = $_[1];
+ my $data = $_[2];
+
+ excelSetFontAttr($g_sheet->Cells($row,$col));
+ $g_sheet->Cells($row,$col)->{Value} = "$data";
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelRead
+# DESCRIPTION
+# read a cell
+# PARAMETERS
+# para 1 - row
+# para 2 - col
+# RETURNS
+# data read
+#******************************************************************************
+sub excelRead()
+{
+ my $row = $_[0];
+ my $col = $_[1];
+
+ return $g_sheet->Cells($row,$col)->{Value};
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelDelCol
+# DESCRIPTION
+# delete a column
+# PARAMETERS
+# para 1 - column to delete
+# RETURNS
+# none
+#******************************************************************************
+sub excelDelCol()
+{
+ $g_sheet->Columns($_[0])->Delete;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelDelRow
+# DESCRIPTION
+# delete a row
+# PARAMETERS
+# para 1 - row to delete
+# RETURNS
+# none
+#******************************************************************************
+sub excelDelRow()
+{
+ $g_sheet->Rows($_[0])->Delete;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelColAlignment
+# DESCRIPTION
+# set alignment to specified column
+# PARAMETERS
+# para 1 - column to set
+# para 2 - alignment type (center, right, left)
+# RETURNS
+# none
+#******************************************************************************
+sub excelColAlignment()
+{
+ my $col;
+ my $align;
+ my %alignHash = ('center' => xlCenter, 'right' => xlRight, 'left' => xlLeft);
+
+ ($col, $align) = @_;
+
+ $g_sheet->Columns($col)->{HorizontalAlignment} = $alignHash{$align};
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelColAlignmentAll
+# DESCRIPTION
+# set alignment to all columns
+# PARAMETERS
+# para 1 - alignment type (center, right, left)
+# RETURNS
+# none
+#******************************************************************************
+sub excelColAlignmentAll()
+{
+ my $col;
+ my $align;
+ my %alignHash = ('center' => xlCenter, 'right' => xlRight, 'left' => xlLeft);
+
+ ($align) = @_;
+
+ $g_sheet->Cells->EntireColumn->{HorizontalAlignment} = $alignHash{$align};
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetTextOrientation
+# DESCRIPTION
+# set text orientation to specified cell
+# PARAMETERS
+# para 1 - row to set
+# para 2 - column to set
+# para 3 - degree
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetTextOrientation()
+{
+ my $row;
+ my $col;
+ my $degree;
+
+ ($row, $col, $degree) = @_;
+
+ $g_sheet->Cells($row,$col)->{'Orientation'} = $degree; # background color
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelAutoFilter
+# DESCRIPTION
+# enable auto-filter for all data (usually used when all data are ready)
+# PARAMETERS
+# none
+# RETURNS
+# none
+#******************************************************************************
+sub excelAutoFilter()
+{
+ $g_sheet->Cells->AutoFilter();
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelAutoFit
+# DESCRIPTION
+# set auto-fit to specified column
+# PARAMETERS
+# para 1 - column to set
+# RETURNS
+# none
+#******************************************************************************
+sub excelAutoFit()
+{
+ $g_sheet->Columns($_[0])->AutoFit;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelAutoFitAll
+# DESCRIPTION
+# set auto-fit to all.
+# note that this only works when there's already data in cells.
+# PARAMETERS
+# none
+# RETURNS
+# none
+#******************************************************************************
+sub excelAutoFitAll()
+{
+ $g_sheet->Cells->EntireColumn->AutoFit;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetFontName
+# DESCRIPTION
+# set cell font name (e.g. Arial)
+# PARAMETERS
+# para 1 - font name
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetFontName()
+{
+ my $fontName;
+
+ ($fontName) = @_;
+
+ $g_fontAttr{'Name'} = $fontName if ($fontName ne "");
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetFontSize
+# DESCRIPTION
+# set cell font size
+# PARAMETERS
+# para 1 - font size
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetFontSize()
+{
+ my $fontSize;
+
+ ($fontSize) = @_;
+
+ $g_fontAttr{'Size'} = $fontSize if ($fontSize > 0);
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetFontColor
+# DESCRIPTION
+# set cell font color
+# PARAMETERS
+# para 1 - font color name
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetFontColor()
+{
+ my $fontColor;
+
+ ($fontColor) = @_;
+
+ $g_fontAttr{'ColorIndex'} = $g_fontColorHash{$fontColor} if (defined $g_fontColorHash{$fontColor});
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetFontBold
+# DESCRIPTION
+# set cell font bold
+# PARAMETERS
+# para 1 - font bold
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetFontBold()
+{
+ my $fontBold;
+
+ ($fontBold) = @_;
+
+ $g_fontAttr{'Bold'} = $fontBold if ($fontBold =~ /[0-1]/);
+}
+
+
+#******************************************************************************
+# FUNCTION
+# setVisible
+# DESCRIPTION
+# write excel file
+# PARAMETERS
+# para 1 - visible (1) or not (0)
+# RETURNS
+# none
+#******************************************************************************
+sub setVisible()
+{
+ $$curr_obj->{Visible} = 1;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelWrapText
+# DESCRIPTION
+# set wrap-text to specified column
+# (use this when there's data in specified column)
+# PARAMETERS
+# para 1 - column to set
+# RETURNS
+# none
+#******************************************************************************
+sub excelWrapText()
+{
+ $g_sheet->Columns($_[0])->{WrapText} = 1;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelWrapTextAll
+# DESCRIPTION
+# set wrap-text to all columns
+# PARAMETERS
+# none
+# RETURNS
+# none
+#******************************************************************************
+sub excelWrapTextAll()
+{
+ $g_sheet->Cells->EntireColumn->{WrapText} = 1;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetColumnWidth
+# DESCRIPTION
+# set width of specified column
+# PARAMETERS
+# para 1 - column to set
+# para 2 - width
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetColumnWidth()
+{
+ $g_sheet->Columns($_[0])->{ColumnWidth} = $_[1];
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelSetColumnWidthAll
+# DESCRIPTION
+# set width of all columns
+# PARAMETERS
+# para 1 - width
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetColumnWidthAll()
+{
+ $g_sheet->Cells->EntireColumn->{ColumnWidth} = $_[0];
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelShrinkToFit
+# DESCRIPTION
+# set shrink-to-fit to specified column
+# PARAMETERS
+# para 1 - column to set
+# RETURNS
+# none
+#******************************************************************************
+sub excelShrinkToFit()
+{
+ $g_sheet->Columns($_[0])->{ShrinkToFit} = 1;
+}
+
+
+#******************************************************************************
+# FUNCTION
+# excelShrinkToFitAll
+# DESCRIPTION
+# set shrink-to-fit to all columns
+# PARAMETERS
+# noneß
+# RETURNS
+# none
+#******************************************************************************
+sub excelShrinkToFitAll()
+{
+ $g_sheet->Cells->EntireColumn->{ShrinkToFit} = 1;
+}
+
+#******************************************************************************
+# Internal Data
+#******************************************************************************
+
+#******************************************************************************
+# Program Start
+#******************************************************************************
+
+1; # return success
+
+#******************************************************************************
+# Internal Function
+#******************************************************************************
+
+#******************************************************************************
+# FUNCTION
+# excelSetFontAttr
+# DESCRIPTION
+# set cell font attributes
+# PARAMETERS
+# $oleObject_ref - reference to ole object, may be cells, range, rows, columns, etc.
+# RETURNS
+# none
+#******************************************************************************
+sub excelSetFontAttr()
+{
+ my $oleObject_ref;
+
+ ($oleObject_ref) = @_;
+
+ #$g_sheet->Cells($row,$col)->Interior->{'ColorIndex'} # background color
+
+ while (my ($key, $val) = each(%g_fontAttr))
+ {
+ $oleObject_ref->Font->{$key} = $val if ($val ne "");
+ }
+}
+
+
+#******************************************************************************
+# FUNCTION
+# trim
+# DESCRIPTION
+# trim left and right spaces
+# PARAMETERS
+# $str [IN] - string to process
+# RETURNS
+# processed string
+#******************************************************************************
+sub trim()
+{
+ my $str;
+ ($str) = @_;
+
+ $str =~ s/(^\s*)|(\s*$)//g;
+ return $str;
+}