blob: 3b6e54d89deee552c2597ce6ceae6fad592ba97c [file] [log] [blame]
#LIF & Path calculation table parser
use Win32::OLE;
use warnings;
use strict;
my $input_file = $ARGV[0];
my $output_file = $ARGV[1];
open (out_file,">$output_file") or die "ERROR\n";
print "Input file: $input_file\n";
print "Output file: $output_file\n";
# Open excel
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
our $workbook = $Excel->Workbooks->Open($input_file);
# Special assignment table
my ($special_assignment_define, $special_assignment_string, $special_assignment_search_string) = special_assignment_process();
# RX path calc split table
my ($rx_path_calc_split_define, $rx_path_calc_split_string, $rx_path_calc_split_search_string) = rx_path_calc_split_process();
# RX path calc spur table
my ($rx_path_calc_spur_define, $rx_path_calc_spur_string, $rx_path_calc_spur_search_string) = rx_path_calc_spur_process();
# LIF spur table
my ($lif_spur_define, $lif_spur_string, $lif_spur_search_string) = lif_spur_process();
# Write output file
print out_file "// TODO: UPDATE THESE DEFINES TO mml1_path_calculation_lif.h\n";
print out_file $special_assignment_define;
print out_file $rx_path_calc_split_define;
print out_file $rx_path_calc_spur_define;
print out_file $lif_spur_define;
print out_file "\n\n";
print out_file "\n\n";
print out_file "// TODO: UPDATE THESE TABLES TO mml1_path_calculation_lif_tables.c\n";
print out_file $special_assignment_string;
# Search table not used for SpecialAssign table
#print out_file $special_assignment_search_string;
print out_file $rx_path_calc_split_string;
print out_file $rx_path_calc_split_search_string;
print out_file $rx_path_calc_spur_string;
print out_file $rx_path_calc_spur_search_string;
print out_file "\n\n";
print out_file "\n\n";
print out_file $lif_spur_string;
print out_file $lif_spur_search_string;
close(out_file);
# Close excel
$workbook->Close(0);
$Excel->Workbooks->Close();
sub special_assignment_process
{
# Open worksheet
my $curr_ws = $workbook->Worksheets("SpecialAssign");
print "\nProcessing sheet: SpecialAssign\n";
# Process
my $Tot_Rows = $curr_ws->UsedRange->Rows->{'Count'};
my $Tot_Cols = $curr_ws->UsedRange->Columns->{'Count'};
my $start_row = 3;
print "--->Number of Rows=> $Tot_Rows\n";
print "--->Number of Cols=> $Tot_Cols\n";
print "--->Start parsing from Row $start_row ...\n";
my ($rxpath_str,$rxpath_search_str);
$rxpath_str .= "const MML1_PC_SPECIAL_ASSIGNMENT_T MML1_PC_SPECIAL_ASSIGNMENT_TBL[MML1_PC_SPECIAL_ASSIGNMENT_TBL_SIZE] =\n";
$rxpath_str .= "{\n";
$rxpath_str .= "\/* {CC_nums, {RX_Band0, RX_Band1, RX_Band2, RX_Band3, RX_Band4, RX_Band5 },{TX_Band0, SUL_Band0, TX_Band1, SUL_Band0, TX_Band2, SUL_Band2 },{ RX_BW0, RX_BW1, RX_BW2, RX_BW3, RX_BW4, RX_BW5},{ TX_BW0, SUL_BW0, TX_BW1, SUL_BW1, TX_BW2, SUL_BW2},{ RX_freq0, RX_freq1, RX_freq2, RX_freq3, RX_freq4, RX_freq5},{ TX_freq0,SUL_freq0, TX_freq1,SUL_freq1, TX_freq1,SUL_freq1},{ CC0_path, CC1_path, CC2_path, CC3_path, CC4_path, CC5_path},{ TX0_path,SUL0_path, TX1_path,SUL1_path,TX2_path, SUL2_path}, SET#,{ DL0_BW, DL1_BW, DL2_BW, DL3_BW, DL4_BW, DL5_BW},{ UL0_BW, UL1_BW, UL2_BW, UL3_BW},{ DL0_freq, DL1_freq, DL2_freq, DL3_freq, DL4_freq, DL5_freq},{ UL0_freq,SUL0_freq, UL1_freq,SUL1_freq}, MAX_eLNA, Victim_RX,{{ RX0_LO_F, RX0_BW_F},{ RX1_LO_F, RX1_BW_F},{ RX2_LO_F, RX2_BW_F},{ RX3_LO_F, RX3_BW_F},{ RX4_LO_F, RX4_BW_F},{ RX5_LO_F, RX5_BW_F}},{{ TX0_LO_F, TX0_BW_F},{SUL0_LO_F,SUL0_BW_F},{ TX1_LO_F, TX1_BW_F},{SUL1_LO_F,SUL1_BW_F}},UL_PA_IMD},*/\n";
$rxpath_search_str .= "const MML1_PC_LIF_PACKED_BAND_INFO_T MML1_PC_SPECIAL_ASSIGNMENT_SEARCH_TBL[MML1_PC_SPECIAL_ASSIGNMENT_TBL_SIZE] =\n";
$rxpath_search_str .= "{\n";
my $lif_count = 0;
my $j;
# Process rows
for $j ($start_row..$Tot_Rows)
{
if($curr_ws->Cells($j,1)->{'Value'} eq '')
{
#print "----->Empty row...\n"
}
else
{
$rxpath_str .= " {";
# RX CC num
my $i;
my $rx_cc_num = 0;
for $i (1...6)
{
if(!($curr_ws->Cells($j,$i)->{'Value'} eq '0'))
{
$rx_cc_num++;
}
else
{
last;
}
}
# TX & SUL CC num
my $tx_cc_num = 0;
my $sul_cc_num = 0;
for $i (0...1)
{
if(!($curr_ws->Cells($j,(7+$i*2))->{'Value'} eq '0'))
{
$tx_cc_num++;
}
else
{
last;
}
if(!($curr_ws->Cells($j,(7+$i*2+1))->{'Value'} eq '0'))
{
$sul_cc_num++;
}
}
$rxpath_str .= $rx_cc_num;
$rxpath_str .= ", ";
$rxpath_str .= $tx_cc_num;
$rxpath_str .= ", ";
$rxpath_str .= $sul_cc_num;
$rxpath_str .= ", {";
# RX CC bands
$rxpath_search_str .= " {";
my ($temp_str,$temp_search) = band_process($curr_ws,$j,1,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
$rxpath_search_str .= $temp_search;
$rxpath_search_str .= ",";
# TX CC Bands
$rxpath_str .= "{";
($temp_str,$temp_search) = band_process($curr_ws,$j,7,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
$temp_search =~ s/^0*//; #Remove preceding 0's from the beginning
$temp_search .= "},\n";
$rxpath_search_str .= $temp_search;
# RX CC BW
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,17,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# TX CC BW
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,23,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# RX CC freq
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,33,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# TX CC freq
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,39,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# RX CC region
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,49,6);
$temp_str =~ s/DL/ /g; #Remove DL prefixes used in special assignment table
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# TX CC region
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,55,6);
$temp_str =~ s/UL/ /g; #Remove UL prefixes used in special assignment table
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# SET index
$rxpath_str .= " ";
$temp_str = coef_process($curr_ws,$j,65,1);
$rxpath_str .= $temp_str;
$rxpath_str .= ",";
# RX region BW
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,66,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# TX region BW
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,72,4);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# RX region freq
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,76,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# TX region freq
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,82,4);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# MAX eLNA gain
$rxpath_str .= " ";
$temp_str = coef_process($curr_ws,$j,86,1);
$temp_str =~ s/G/ /g; #Remove G prefix used in special assignment table
$rxpath_str .= $temp_str;
$rxpath_str .= ",";
# Victim RX
$rxpath_str .= " ";
$temp_str = coef_process($curr_ws,$j,87,1);
$rxpath_str .= $temp_str;
$rxpath_str .= ",";
# RX region forbidden flags
my $k;
my $table_idx;
$rxpath_str .= "{";
for $k (0...5)
{
$table_idx = 88 + $k*2;
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,$table_idx,2);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
}
$rxpath_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_str .= "},";
# TX region forbidden flags
$rxpath_str .= "{";
for $k (0...3)
{
$table_idx = 100 + $k*2;
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,$table_idx,2);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
}
$rxpath_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_str .= "},";
# ulca_pa_imd
$rxpath_str .= " ";
if($curr_ws->Cells($j,108)->{'Value'} eq "ON")
{
$rxpath_str .= " 1";
}
else
{
$rxpath_str .= " 0";
}
$rxpath_str .= "";
#End of line
$rxpath_str .= "},\n";
#Increase LIF count
$lif_count = $lif_count + 1;
}
}
# Avoid empty table
if($lif_count == 0)
{
# Empty instance
$rxpath_str .= "\n // No table instances, so use empty one\n {0,0,0,{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},0,{0,0,0,0,0,0},{0,0,0,0},{0,0,0,0,0,0},{0,0,0,0},0,0,{{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}},{{0,0},{0,0},{0,0},{0,0}},0}";
$rxpath_search_str .= " // No table instances, so use empty one\n {0,0}";
#Increase count
$lif_count = $lif_count + 1;
}
$rxpath_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_str .= "\n};\n\n";
$rxpath_search_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_search_str .= "\n};\n\n";
my $rxpath_define_str .= "#define MML1_PC_SPECIAL_ASSIGNMENT_TBL_SIZE ($lif_count)\n";
return ($rxpath_define_str,$rxpath_str,$rxpath_search_str);
}
sub rx_path_calc_split_process
{
# Open worksheet
my $curr_ws = $workbook->Worksheets("RxPathCal_Split");
print "\nProcessing sheet: RxPathCal_Split\n";
# Process
my $Tot_Rows = $curr_ws->UsedRange->Rows->{'Count'};
my $Tot_Cols = $curr_ws->UsedRange->Columns->{'Count'};
my $start_row = 3;
print "--->Number of Rows=> $Tot_Rows\n";
print "--->Number of Cols=> $Tot_Cols\n";
print "--->Start parsing from Row $start_row ...\n";
my ($rxpath_str,$rxpath_search_str);
$rxpath_str .= "const MML1_PC_SPLIT_BAND_T MML1_PC_SPLIT_BAND_TBL[MML1_PC_SPLIT_BAND_TBL_SIZE] = \n";
$rxpath_str .= "{\n";
$rxpath_search_str .= "const MML1_PC_LIF_PACKED_BAND_INFO_T MML1_PC_SPLIT_BAND_SEARCH_TBL[MML1_PC_SPLIT_BAND_TBL_SIZE] =\n";
$rxpath_search_str .= "{\n";
$rxpath_str .= "/* {{RX_Band0, RX_Band1, RX_Band2, RX_Band3, RX_Band4, RX_Band5 },{TX_Band0, SUL_Band0, TX_Band1, SUL_Band0 },NotAllowedBand },*/\n";
my $lif_count = 0;
my $j;
# process rows
for $j ($start_row..$Tot_Rows)
{
if(!(defined $curr_ws->Cells($j,1)->{'Value'}))
{
#print "----->Empty row...\n"
}
else
{
my $i;
#print "----->Process Row $j\n";
# RX CC bands
$rxpath_str .= " {{";
$rxpath_search_str .= " {";
my ($temp_str,$temp_search) = band_process($curr_ws,$j,1,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
$rxpath_search_str .= $temp_search;
$rxpath_search_str .= ",";
#TX Bands
$rxpath_str .= "{";
($temp_str,$temp_search) = band_process($curr_ws,$j,7,4);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
$temp_search =~ s/^0*//; #Remove preceding 0's from the beginning
$temp_search .= "},\n";
$rxpath_search_str .= $temp_search;
$rxpath_str .= "";
$rxpath_str .= sprintf("%-16s", "MMRF_UNI_BAND" . $curr_ws->Cells($j,11)->{'Value'});
#End of line
$rxpath_str .= "},\n";
#Increase LIF count
$lif_count = $lif_count + 1;
}
}
# Avoid empty table
if($lif_count == 0)
{
# Empty instance
$rxpath_str .= "\n // No table instances, so use empty one\n {{0,0,0,0,0,0},{0,0,0,0},0}";
$rxpath_search_str .= " // No table instances, so use empty one\n {0,0}";
#Increase count
$lif_count = $lif_count + 1;
}
$rxpath_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_str .= "\n};\n\n";
$rxpath_search_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_search_str .= "\n};\n\n";
my $rxpath_define_str .= "#define MML1_PC_SPLIT_BAND_TBL_SIZE ($lif_count)\n";
return ($rxpath_define_str,$rxpath_str,$rxpath_search_str);
}
sub rx_path_calc_spur_process
{
# Open worksheet
my $curr_ws = $workbook->Worksheets("RxPathCal_Spur");
print "\nProcessing sheet: RxPathCal_Spur\n";
# process
my $Tot_Rows = $curr_ws->UsedRange->Rows->{'Count'};
my $Tot_Cols = $curr_ws->UsedRange->Columns->{'Count'};
my $start_row = 3;
print "--->Number of Rows=> $Tot_Rows\n";
print "--->Number of Cols=> $Tot_Cols\n";
print "--->Start parsing from Row $start_row ...\n";
my ($rxpath_str,$rxpath_search_str);
$rxpath_str .= "const MML1_PC_TX_IM2_PARAMS_T MML1_PC_TX_IM2_TBL[MML1_PC_TX_IM2_TBL_SIZE] =\n";
$rxpath_str .= "{\n";
$rxpath_str .= "\/* {{{RX_Band0, RX_Band1, RX_Band2, RX_Band3, RX_Band4, RX_Band5 },{TX_Band0, SUL_Band0, TX_Band1, SUL_Band0 },{ RX_Coef0, RX_Coef1, RX_Coef2, RX_Coef3, RX_Coef4, RX_Coef5},{ TX_Coef0, TX_Coef1, TX_Coef2, TX_Coef3}, Victim_RX},{ RX_BW0, RX_BW1, RX_BW2, RX_BW3, RX_BW4, RX_BW5}} *\/\n";
$rxpath_search_str .= "const MML1_PC_LIF_PACKED_BAND_INFO_T MML1_PC_TX_IM2_SEARCH_TBL[MML1_PC_TX_IM2_TBL_SIZE] =\n";
$rxpath_search_str .= "{\n";
my $lif_count = 0;
my $j;
# process rows
for $j ($start_row..$Tot_Rows)
{
if (!(defined $curr_ws->Cells($j,1)->{'Value'}))
{
#print "----->Empty row...\n"
}
else
{
my $i;
#print "----->Process Row $j\n";
# RX bands
$rxpath_str .= " {{{";
$rxpath_search_str .= " {";
my ($temp_str,$temp_search) = band_process($curr_ws,$j,1,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
$rxpath_search_str .= $temp_search;
$rxpath_search_str .= ",";
#TX Bands
$rxpath_str .= "{";
($temp_str,$temp_search) = band_process($curr_ws,$j,7,4);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
$temp_search =~ s/^0*//; #Remove preceding 0's from the beginning
$temp_search .= "},\n";
$rxpath_search_str .= $temp_search;
# RX coef
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,11,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# TX coef
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,17,4);
$rxpath_str .= $temp_str;
$rxpath_str .= "},";
# Victim RX
$rxpath_str .= sprintf("%12s",$curr_ws->Cells($j,21)->{'Value'} . "},");
# RX Merge
$rxpath_str .= "{";
$temp_str = coef_process($curr_ws,$j,22,6);
$rxpath_str .= $temp_str;
$rxpath_str .= "}";
#End of line
$rxpath_str .= "},\n";
#Increase LIF count
$lif_count = $lif_count + 1;
}
}
# Avoid empty table
if($lif_count == 0)
{
# Empty instance
$rxpath_str .= "\n // No table instances, so use empty one\n {{{0,0,0,0,0,0},{0,0,0,0},{0,0,0,0,0,0},{0,0,0,0},0},{0,0,0,0,0,0}}";
$rxpath_search_str .= " // No table instances, so use empty one\n {0,0}";
#Increase count
$lif_count = $lif_count + 1;
}
$rxpath_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_str .= "\n};\n\n";
$rxpath_search_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$rxpath_search_str .= "\n};\n\n";
my $rxpath_define_str .= "#define MML1_PC_TX_IM2_TBL_SIZE ($lif_count)\n";
return ($rxpath_define_str,$rxpath_str,$rxpath_search_str);
}
sub lif_spur_process
{
# Open worksheet
my $curr_ws = $workbook->Worksheets("LIFtable");
print "\nProcessing sheet: LIFtable\n";
# process
my $Tot_Rows= $curr_ws->UsedRange->Rows->{'Count'};
my $Tot_Cols= $curr_ws->UsedRange->Columns->{'Count'};
my $start_row = 4;
print "--->Number of Rows=> $Tot_Rows\n";
print "--->Number of Cols=> $Tot_Cols\n";
print "--->Start parsing from Row $start_row ...\n";
# set struct definition
my $txspur_tbl_str = "const MML1_LIF_LO_SHIFT_TX_SPUR_PARAMS_T MML1_LIF_LO_SHIFT_TX_SPUR_PARAMS_TBL[MML1_LIF_LO_SHIFT_TX_SPUR_TBL_SIZE] =\n";
$txspur_tbl_str .= "{\n";
$txspur_tbl_str .= "\/* {{{RX_Band0, RX_Band1, RX_Band2, RX_Band3, RX_Band4, RX_Band5 },{TX_Band0, SUL_Band0, TX_Band1, SUL_Band1 },{ RX_Coef0, RX_Coef1, RX_Coef2, RX_Coef3, RX_Coef4, RX_Coef5},{ TX_Coef0,SUL_Coef0, TX_Coef1,SUL_Coef1}, Victim_RX}, Spur_grp#, { RX_BW0, RX_BW1, RX_BW2, RX_BW3, RX_BW4, RX_BW5},{ RX0_m, RX1_m, RX2_m, RX3_m, RX4_m, RX5_m}, LIF_EN, Max_eLNA_gain, APT_flag} */\n";
my $txspur_search_tbl_str = "const MML1_PC_LIF_PACKED_BAND_INFO_T MML1_LIF_LO_SHIFT_TX_SPUR_SEARCH_TBL[MML1_LIF_LO_SHIFT_TX_SPUR_TBL_SIZE] = \n";
$txspur_search_tbl_str .= "{\n";
my $lif_count = 0;
my $j;
# process rows
for $j ($start_row..$Tot_Rows)
{
if(!(defined $curr_ws->Cells($j,1)->{'Value'}))
{
#print "----->Empty row...\n"
}
else
{
#print "----->Process Row $j\n";
# RX bands
$txspur_tbl_str .= " {{{";
$txspur_search_tbl_str .= " {";
my ($temp_str,$temp_search) = band_process($curr_ws,$j,1,6);
$txspur_tbl_str .= $temp_str;
$txspur_tbl_str .= "},";
$txspur_search_tbl_str .= $temp_search;
$txspur_search_tbl_str .= ",";
# TX Bands
$txspur_tbl_str .= "{";
($temp_str,$temp_search) = band_process($curr_ws,$j,7,4);
$txspur_tbl_str .= $temp_str;
$txspur_tbl_str .= "},";
$temp_search =~ s/^0*//; #Remove preceding 0's from the beginning
$temp_search .= "},\n";
$txspur_search_tbl_str .= $temp_search;
# RX coef
$txspur_tbl_str .= "{";
$temp_str = coef_process($curr_ws,$j,12,6);
$txspur_tbl_str .= $temp_str;
$txspur_tbl_str .= "},";
# TX coef
$txspur_tbl_str .= "{";
$temp_str = coef_process($curr_ws,$j,18,4);
$txspur_tbl_str .= $temp_str;
$txspur_tbl_str .= "},";
# Victim RX
$txspur_tbl_str .= sprintf("%12s",$curr_ws->Cells($j,22)->{'Value'} . "},");
# Spur Group
$txspur_tbl_str .= sprintf("%12s",$curr_ws->Cells($j,11)->{'Value'} . ", ");
# RX BW
$txspur_tbl_str .= "{";
$temp_str = coef_process($curr_ws,$j,23,6);
$txspur_tbl_str .= $temp_str;
$txspur_tbl_str .= "},";
# RX Movable
$txspur_tbl_str .= "{";
my $i;
for($i = 29; $i < 35; $i++)
{
if($curr_ws->Cells($j,$i)->{'Value'} eq 'not')
{
$txspur_tbl_str .= sprintf("%7s","0,");
}
else
{
$txspur_tbl_str .= sprintf("%7s",$curr_ws->Cells($j,$i)->{'Value'} . ",");
}
}
$txspur_tbl_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$txspur_tbl_str .= "},";
# LIF EN
if($curr_ws->Cells($j,35)->{'Value'} eq "ON")
{
$txspur_tbl_str .= sprintf("%8s"," 1,");
}
else
{
$txspur_tbl_str .= sprintf("%8s"," 0,");
}
# Max eLNA Gain
$txspur_tbl_str .= " ";
$temp_str = coef_process($curr_ws,$j,36,1);
$temp_str =~ s/G/ /g; #Remove G prefix used in special assignment table
$txspur_tbl_str .= $temp_str;
$txspur_tbl_str .= ",";
# APT_flag EN
if($curr_ws->Cells($j,37)->{'Value'} eq "ON")
{
$txspur_tbl_str .= " 1";
}
else
{
$txspur_tbl_str .= " 0";
}
#End of line
$txspur_tbl_str .= "},\n";
#Increase LIF count
$lif_count = $lif_count + 1;
}
}
# Avoid empty table
if($lif_count == 0)
{
# Empty instance
$txspur_tbl_str .= "\n // No table instances, so use empty one\n {{{0,0,0,0,0,0},{0,0,0,0},{0,0,0,0,0,0},{0,0,0,0},0},0,{0,0,0,0,0,0},{0,0,0,0,0,0},0,0,0}";
$txspur_search_tbl_str .= " // No table instances, so use empty one\n {0,0}";
#Increase count
$lif_count = $lif_count + 1;
}
$txspur_tbl_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$txspur_tbl_str .= "\n};\n\n";
$txspur_search_tbl_str =~ s/,\s*$//; #Remove spaces and "," after the last element
$txspur_search_tbl_str .= "\n};\n\n";
my $define_str .= "#define MML1_LIF_LO_SHIFT_TX_SPUR_TBL_SIZE ($lif_count)\n";
return ($define_str ,$txspur_tbl_str, $txspur_search_tbl_str);
}
sub band_process
{
my ($curr_ws,$row,$start,$count) = @_;
my $i;
my $end = $start + $count;
my $tbl_str;
my $tbl_search;
for($i = $start; $i < $end; $i++)
{
if($curr_ws->Cells($row,$i)->{'Value'} eq "0")
{
$tbl_str .= sprintf("%-19s", "MMRF_UNI_BANDNONE,");
if($i == 1)
{
$tbl_search .= sprintf("%s",0);
}
else
{
$tbl_search .= sprintf("%03s",0);
}
}
else
{
$tbl_str .= sprintf("%-19s", "MMRF_UNI_BAND" . $curr_ws->Cells($row,$i)->{'Value'} . ",");
if($i == 1)
{
$tbl_search .= sprintf("%s",$curr_ws->Cells($row,$i)->{'Value'});
}
else
{
$tbl_search .= sprintf("%03s",$curr_ws->Cells($row,$i)->{'Value'});
}
}
}
$tbl_str =~ s/,\s*$//; #Remove spaces and "," after the last element
#print "$tbl_str $tbl_search";
return ($tbl_str,$tbl_search);
}
sub coef_process
{
my ($curr_ws,$row,$start,$count) = @_;
my $i;
my $end = $start + $count;
my $tbl_str;
for($i = $start; $i < $end; $i++)
{
$tbl_str .= sprintf("%10s", $curr_ws->Cells($row,$i)->{'Value'} . ",");
}
$tbl_str =~ s/,\s*$//; #Remove spaces and "," after the last element
return $tbl_str;
}