xls_v1.pm 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #!/usr/local/bin/perl
  2. #
  3. #*****************************************************************************
  4. # Copyright Statement:
  5. # --------------------
  6. # This software is protected by Copyright and the information contained
  7. # herein is confidential. The software may not be copied and the information
  8. # contained herein may not be used or disclosed except with the written
  9. # permission of MediaTek Inc. (C) 2008
  10. #
  11. # BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  12. # THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  13. # RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  14. # AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  15. # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  16. # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  17. # NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  18. # SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  19. # SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  20. # THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  21. # NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  22. # SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  23. #
  24. # BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  25. # LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  26. # AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  27. # OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  28. # MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  29. #
  30. # THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  31. # WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  32. # LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  33. # RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  34. # THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  35. #
  36. #****************************************************************************/
  37. #*
  38. #* Filename:
  39. #* ---------
  40. #* emigen_sp.pl
  41. #*
  42. #* Project:
  43. #* --------
  44. #*
  45. #*
  46. #* Description:
  47. #* ------------
  48. #* This script will
  49. #* 1. parse custom_MemoryDevice.h to get memory device type and part number
  50. #* 2. read a excel file to get appropriate emi setting based on the part number
  51. #* 3. based on the emi settings, generate custom_EMI.c if not exist
  52. #* 4. based on the emi settings, generate custom_EMI.h if not exist
  53. #*
  54. #* Author:
  55. #* -------
  56. #*
  57. #*============================================================================
  58. #* HISTORY
  59. #* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  60. #*------------------------------------------------------------------------------
  61. #* $Revision$
  62. #* $Modtime$
  63. #* $Log$
  64. #*
  65. #*
  66. #*------------------------------------------------------------------------------
  67. #* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  68. #*============================================================================
  69. #****************************************************************************/
  70. #****************************************************************************
  71. # Included Modules
  72. #****************************************************************************
  73. # original design, but perl does not support array of structure, really?
  74. #
  75. #my $CustomChip = () ;
  76. #
  77. #
  78. # an array of following structure:
  79. #
  80. # CustChip => NAND_ID
  81. # => CS0_PART_NUMBER
  82. # => CS1_PART_NUMBER
  83. #
  84. #
  85. #
  86. #
  87. #
  88. #
  89. package xls_v1;
  90. use strict;
  91. use File::Basename;
  92. my $LOCAL_PATH;
  93. BEGIN {
  94. $LOCAL_PATH = dirname($0);
  95. }
  96. use lib "$LOCAL_PATH/../";
  97. use pack_dep_gen;
  98. # remove windows support
  99. use lib "$LOCAL_PATH/../Spreadsheet";
  100. require 'ParseExcel.pm';
  101. our @ISA= qw( Exporter );
  102. our @EXPORT_OK = qw( xls_open get_sheet xls_cell_value );
  103. our @EXPORT = qw( xls_open get_sheet xls_cell_value );
  104. #****************************************************************************
  105. # read a excel file to get emi settings
  106. #****************************************************************************
  107. # get already active Excel application or open new
  108. sub xls_open {
  109. my $file = shift;
  110. my $parser = Spreadsheet::ParseExcel->new();
  111. return $parser->Parse($file);
  112. }
  113. #****************************************************************************
  114. # subroutine: trim
  115. # input: $string: trim string
  116. #****************************************************************************
  117. sub trim {
  118. my $string = shift;
  119. $string =~ s/^\s+//;
  120. $string =~ s/\s+$//;
  121. return $string;
  122. }
  123. #****************************************************************************************
  124. # subroutine: get_sheet
  125. # return: Excel worksheet no matter it's in merge area or not, and in windows or not
  126. # input: Specified Excel Sheetname
  127. #****************************************************************************************
  128. sub get_sheet {
  129. my $book = shift;
  130. my $MEMORY_DEVICE_TYPE = shift;
  131. print $MEMORY_DEVICE_TYPE ;
  132. return $book->Worksheet($MEMORY_DEVICE_TYPE);
  133. }
  134. #****************************************************************************************
  135. # subroutine: xls_cell_value
  136. # return: Excel cell value no matter it's in merge area or not, and in windows or not
  137. # input: $Sheet: Specified Excel Sheet
  138. # input: $row: Specified row number
  139. # input: $col: Specified column number
  140. #****************************************************************************************
  141. sub xls_cell_value {
  142. my ($Sheet, $row, $col) = @_;
  143. return &trim(&lin_xls_cell_value($Sheet, $row, $col));
  144. }
  145. sub win_xls_cell_value {
  146. my ($Sheet, $row, $col) = @_;
  147. if ($Sheet->Cells($row, $col)->{'MergeCells'}) {
  148. my $ma = $Sheet->Cells($row, $col)->{'MergeArea'};
  149. return ($ma->Cells(1, 1)->{'Value'});
  150. } else {
  151. return ($Sheet->Cells($row, $col)->{'Value'})
  152. }
  153. }
  154. sub lin_xls_cell_value {
  155. my ($Sheet, $row, $col) = @_;
  156. my $cell = $Sheet->get_cell($row, $col);
  157. return "" unless (defined $cell);
  158. my $value = $cell->Value();
  159. }
  160. 1;