| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- #!/usr/local/bin/perl
- #
- #*****************************************************************************
- # Copyright Statement:
- # --------------------
- # This software is protected by Copyright and the information contained
- # herein is confidential. The software may not be copied and the information
- # contained herein may not be used or disclosed except with the written
- # permission of MediaTek Inc. (C) 2008
- #
- # BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
- # THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
- # RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
- # AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
- # NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
- # SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
- # SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
- # THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
- # NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
- # SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
- #
- # BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
- # LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
- # AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
- # OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
- # MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
- #
- # THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
- # WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
- # LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
- # RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
- # THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
- #
- #****************************************************************************/
- #*
- #* Filename:
- #* ---------
- #* emigen_sp.pl
- #*
- #* Project:
- #* --------
- #*
- #*
- #* Description:
- #* ------------
- #* This script will
- #* 1. parse custom_MemoryDevice.h to get memory device type and part number
- #* 2. read a excel file to get appropriate emi setting based on the part number
- #* 3. based on the emi settings, generate custom_EMI.c if not exist
- #* 4. based on the emi settings, generate custom_EMI.h if not exist
- #*
- #* Author:
- #* -------
- #*
- #*============================================================================
- #* HISTORY
- #* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
- #*------------------------------------------------------------------------------
- #* $Revision$
- #* $Modtime$
- #* $Log$
- #*
- #*
- #*------------------------------------------------------------------------------
- #* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
- #*============================================================================
- #****************************************************************************/
- #****************************************************************************
- # Included Modules
- #****************************************************************************
- # original design, but perl does not support array of structure, really?
- #
- #my $CustomChip = () ;
- #
- #
- # an array of following structure:
- #
- # CustChip => NAND_ID
- # => CS0_PART_NUMBER
- # => CS1_PART_NUMBER
- #
- #
- #
- #
- #
- #
- package xls_v1;
- use strict;
- use File::Basename;
- my $LOCAL_PATH;
- BEGIN {
- $LOCAL_PATH = dirname($0);
- }
- use lib "$LOCAL_PATH/../";
- use pack_dep_gen;
- # remove windows support
- use lib "$LOCAL_PATH/../Spreadsheet";
- require 'ParseExcel.pm';
- our @ISA= qw( Exporter );
- our @EXPORT_OK = qw( xls_open get_sheet xls_cell_value );
- our @EXPORT = qw( xls_open get_sheet xls_cell_value );
- #****************************************************************************
- # read a excel file to get emi settings
- #****************************************************************************
- # get already active Excel application or open new
- sub xls_open {
- my $file = shift;
- my $parser = Spreadsheet::ParseExcel->new();
- return $parser->Parse($file);
- }
- #****************************************************************************
- # subroutine: trim
- # input: $string: trim string
- #****************************************************************************
- sub trim {
- my $string = shift;
- $string =~ s/^\s+//;
- $string =~ s/\s+$//;
- return $string;
- }
- #****************************************************************************************
- # subroutine: get_sheet
- # return: Excel worksheet no matter it's in merge area or not, and in windows or not
- # input: Specified Excel Sheetname
- #****************************************************************************************
- sub get_sheet {
- my $book = shift;
- my $MEMORY_DEVICE_TYPE = shift;
- print $MEMORY_DEVICE_TYPE ;
- return $book->Worksheet($MEMORY_DEVICE_TYPE);
- }
- #****************************************************************************************
- # subroutine: xls_cell_value
- # return: Excel cell value no matter it's in merge area or not, and in windows or not
- # input: $Sheet: Specified Excel Sheet
- # input: $row: Specified row number
- # input: $col: Specified column number
- #****************************************************************************************
- sub xls_cell_value {
- my ($Sheet, $row, $col) = @_;
- return &trim(&lin_xls_cell_value($Sheet, $row, $col));
- }
- sub win_xls_cell_value {
- my ($Sheet, $row, $col) = @_;
- if ($Sheet->Cells($row, $col)->{'MergeCells'}) {
- my $ma = $Sheet->Cells($row, $col)->{'MergeArea'};
- return ($ma->Cells(1, 1)->{'Value'});
- } else {
- return ($Sheet->Cells($row, $col)->{'Value'})
- }
- }
- sub lin_xls_cell_value {
- my ($Sheet, $row, $col) = @_;
- my $cell = $Sheet->get_cell($row, $col);
- return "" unless (defined $cell);
- my $value = $cell->Value();
- }
- 1;
|