[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/mspm_gen_proc_tbl.pl b/mcu/tools/mspm_gen_proc_tbl.pl
new file mode 100644
index 0000000..bd16a0a
--- /dev/null
+++ b/mcu/tools/mspm_gen_proc_tbl.pl
@@ -0,0 +1,425 @@
+use strict;
+use Cwd;
+use lib "tools/perl";
+use Text::CSV;
+use File::Path;
+
+#redirect STDERR to STDOUT
+open(STDERR, ">&STDOUT");
+
+printf "perl current dir : %s\n", getcwd();
+my $mspm_body_path = "$ARGV[2]/modem/mspm/src";
+
+mkpath($mspm_body_path) if(! -e $mspm_body_path);
+print "mspm gen source dir : $mspm_body_path\n";
+
+my $mspm_gen_body = "$mspm_body_path/mspm_procedure_gen_table.c";
+open (MSPM_BODY, "> $mspm_gen_body") or die "open file fail : $mspm_gen_body\n";
+
+my $csv = Text::CSV->new ( { binary => 1 } ) or die "Cannot use CSV: ".Text::CSV->error_diag();
+my @rows;
+my $csv_file_name = sprintf("%s/protocol/as_multimode/asinterfaces/mspm_proc_gen_tbl/mspm_procedure_table.csv", getcwd());
+
+print "CSV table file path : $csv_file_name\n";
+
+if (! -f $csv_file_name)
+{
+ printf "%s Not Exist\n", $csv_file_name;
+ exit
+}
+open(my $fh, "<:encoding(UTF-8)", $csv_file_name) or die "$csv_file_name : $!";
+while (my $row = $csv->getline($fh))
+{
+ push @rows, $row;
+}
+$csv->eof or $csv->error_diag();
+close $fh;
+
+my $max_row = scalar @rows;
+my $max_col;
+foreach (@rows)
+{
+ my @first_row = @$_;
+ $max_col = scalar @first_row;
+ last;
+}
+
+my @mspm_procedure_attr_index;
+my $mspm_procedure_priority_index = 0;
+my $mspm_procedure_category_type_index = 0;
+my $mspm_procedure_extend_end_session_timer_value_index = 0;
+my $mspm_procedure_on_start_stop_extend_end_session_timer_event_index = 0;
+my $mspm_procedure_on_end_stop_extend_end_session_timer_event_index = 0;
+my $mspm_procedure_source_module_index = 0;
+my $mspm_icd_procedure_type_index = 0;
+my @mspm_procedure_on_start_to_stop_timer_size_list;
+my @mspm_procedure_on_start_to_stop_timer_list;
+my @mspm_procedure_on_end_to_stop_timer_size_list;
+my @mspm_procedure_on_end_to_stop_timer_list;
+my @mspm_procedure_not_start_ext_timer_if_proc_exist_size_list;
+my @mspm_procedure_not_start_ext_timer_if_proc_exist_list;
+my @mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list;
+my @mspm_procedure_not_start_ext_timer_if_proc_not_exist_list;
+
+#mspm_procedure_attribute_enum
+for (my $col=0; $col < $max_col; $col++)
+{
+ if (index(uc $rows[0][$col], "MSPM_PROC_ATTR_") == 0)
+ {
+ push @mspm_procedure_attr_index, $col;
+ }
+ if ((uc $rows[0][$col]) eq "PRIORITY")
+ {
+ $mspm_procedure_priority_index = $col;
+ }
+ if ((uc $rows[0][$col]) eq "CATEGORY")
+ {
+ $mspm_procedure_category_type_index = $col;
+ }
+ if ((uc $rows[0][$col]) eq "OWNER MODULE")
+ {
+ $mspm_procedure_source_module_index = $col;
+ }
+ if (index(uc $rows[0][$col], "MSPM_PROC_EXTEND_END_SESSION_TIMER_VALUE") == 0)
+ {
+ $mspm_procedure_extend_end_session_timer_value_index = $col;
+ }
+ if (index(uc $rows[0][$col], "MSPM_PROC_ON_START_TO_STOP_EXTEND_TIMER") == 0)
+ {
+ $mspm_procedure_on_start_stop_extend_end_session_timer_event_index = $col;
+ }
+ if (index(uc $rows[0][$col], "MSPM_PROC_ON_END_TO_STOP_EXTEND_TIMER") == 0)
+ {
+ $mspm_procedure_on_end_stop_extend_end_session_timer_event_index = $col;
+ }
+ if ((uc $rows[0][$col]) eq "ICD_PROCEDURE_TYPE")
+ {
+ $mspm_icd_procedure_type_index = $col;
+ }
+}
+
+#mspm_procedure_enum
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ $mspm_procedure_on_start_to_stop_timer_size_list[$row-1] = 0;
+ $mspm_procedure_on_end_to_stop_timer_size_list[$row-1] = 0;
+ $mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$row-1] = 0;
+ $mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$row-1] = 0;
+}
+
+#mspm_procedure_priority_table
+print MSPM_BODY "#include \"mspm_public_api.h\"\n";
+print MSPM_BODY "#include \"mspm_fsm.h\"\n\n";
+print MSPM_BODY "kal_uint8 mspm_procedure_priority_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %2d, //%s\n", $rows[$row][$mspm_procedure_priority_index], $rows[$row][0];
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_setting_table
+print MSPM_BODY "kal_bool mspm_procedure_setting_table[MSPM_PROCEDURE_ENUM_NUM][MSPM_PROC_ATTR_MAX_NUM] =\n";
+print MSPM_BODY "{\n";
+print MSPM_BODY " //{";
+
+print MSPM_BODY "MSPM_PROC_ATTR_AS_CONNECTION, ";
+print MSPM_BODY "MSPM_PROC_ATTR_C2K_AS_CONNECTION, ";
+foreach(@mspm_procedure_attr_index)
+{
+ print MSPM_BODY "$rows[0][$_], ";
+}
+print MSPM_BODY "}\n";
+
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ print MSPM_BODY " {";
+ if ((uc $rows[$row][$mspm_procedure_category_type_index]) eq "AS CONNECTION")
+ {
+ printf MSPM_BODY "%9s, ", "KAL_TRUE";
+ }
+ else
+ {
+ printf MSPM_BODY "%9s, ", "KAL_FALSE";
+ }
+ if ((uc $rows[$row][$mspm_procedure_category_type_index]) eq "C2K AS CONNECTION")
+ {
+ printf MSPM_BODY "%9s, ", "KAL_TRUE";
+ }
+ else
+ {
+ printf MSPM_BODY "%9s, ", "KAL_FALSE";
+ }
+ foreach(@mspm_procedure_attr_index)
+ {
+ if ((uc $rows[$row][$_]) eq "Y")
+ {
+ printf MSPM_BODY "%9s, ", "KAL_TRUE";
+ }
+ else
+ {
+ printf MSPM_BODY "%9s, ", "KAL_FALSE";
+ }
+ }
+ printf MSPM_BODY "}, //%s\n", $rows[$row][0];
+
+ my $mspm_on_start_string = (uc $rows[$row][$mspm_procedure_on_start_stop_extend_end_session_timer_event_index]);
+ while($mspm_on_start_string =~ /(\w+)/g)
+ {
+ my $mspm_on_start_proc = $1;
+ for (my $mspm_proc_index=1; $mspm_proc_index<$max_row-1; $mspm_proc_index++)
+ {
+ if ((uc $rows[$mspm_proc_index][0]) eq $mspm_on_start_proc)
+ {
+ $mspm_procedure_on_start_to_stop_timer_list[$mspm_proc_index-1][$mspm_procedure_on_start_to_stop_timer_size_list[$mspm_proc_index-1]] = $rows[$row][0];
+ $mspm_procedure_on_start_to_stop_timer_size_list[$mspm_proc_index-1] += 1;
+
+ $mspm_procedure_not_start_ext_timer_if_proc_exist_list[$row-1][$mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$row-1]] = $mspm_on_start_proc;
+ $mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$row-1] += 1;
+ }
+ }
+ }
+
+ my $mspm_on_end_string = (uc $rows[$row][$mspm_procedure_on_end_stop_extend_end_session_timer_event_index]);
+ while($mspm_on_end_string =~ /(\w+)/g)
+ {
+ my $mspm_on_end_proc = $1;
+ for (my $mspm_proc_index=1; $mspm_proc_index<$max_row-1; $mspm_proc_index++)
+ {
+ if ((uc $rows[$mspm_proc_index][0]) eq $mspm_on_end_proc)
+ {
+ $mspm_procedure_on_end_to_stop_timer_list[$mspm_proc_index-1][$mspm_procedure_on_end_to_stop_timer_size_list[$mspm_proc_index-1]] = $rows[$row][0];
+ $mspm_procedure_on_end_to_stop_timer_size_list[$mspm_proc_index-1] += 1;
+
+ $mspm_procedure_not_start_ext_timer_if_proc_not_exist_list[$row-1][$mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$row-1]] = $mspm_on_end_proc;
+ $mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$row-1] += 1;
+ }
+ }
+ }
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_string_table
+print MSPM_BODY "char* mspm_procedure_string_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ print MSPM_BODY " \"$rows[$row][0]\", \n";
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_extend_end_session_timer_value_table
+print MSPM_BODY "kal_uint32 mspm_procedure_extend_end_session_timer_value_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %5d, //%s\n", $rows[$row][$mspm_procedure_extend_end_session_timer_value_index], $rows[$row][0];
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_on_start_to_stop_extend_timer_event_list_size_table
+print MSPM_BODY "kal_uint8 mspm_procedure_on_start_to_stop_extend_timer_event_list_size_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %2d, //%s\n", $mspm_procedure_on_start_to_stop_timer_size_list[$row-1], $rows[$row][0];
+}
+print MSPM_BODY "};\n\n";
+
+#element of mspm_procedure_on_start_to_stop_extend_timer_event_list_table
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ if ($mspm_procedure_on_start_to_stop_timer_size_list[$row-1] > 0)
+ {
+ printf MSPM_BODY "static mspm_procedure_enum mspm_on_start_list_element_%s[] =\n", $rows[$row][0];
+ print MSPM_BODY " {";
+ for(my $j=0; $j<$mspm_procedure_on_start_to_stop_timer_size_list[$row-1]; $j++)
+ {
+ printf MSPM_BODY "%s, ", $mspm_procedure_on_start_to_stop_timer_list[$row-1][$j];
+ }
+ print MSPM_BODY "};\n\n";
+ }
+}
+
+#mspm_procedure_on_start_to_stop_extend_timer_event_list_table
+print MSPM_BODY "mspm_procedure_enum* mspm_procedure_on_start_to_stop_extend_timer_event_list_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for(my $i=0; $i<$max_row-2; $i++)
+{
+ if ($mspm_procedure_on_start_to_stop_timer_size_list[$i] == 0)
+ {
+ printf MSPM_BODY " NULL, //%s\n", $rows[$i+1][0];
+ }
+ else
+ {
+ printf MSPM_BODY " mspm_on_start_list_element_%s, //%s\n", $rows[$i+1][0], $rows[$i+1][0];
+ }
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_on_end_to_stop_extend_timer_event_list_size_table
+print MSPM_BODY "kal_uint8 mspm_procedure_on_end_to_stop_extend_timer_event_list_size_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %2d, //%s\n", $mspm_procedure_on_end_to_stop_timer_size_list[$row-1], $rows[$row][0];
+}
+print MSPM_BODY "};\n\n";
+
+#element of mspm_procedure_on_end_to_stop_extend_timer_event_list_table
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ if ($mspm_procedure_on_end_to_stop_timer_size_list[$row-1] > 0)
+ {
+ printf MSPM_BODY "static mspm_procedure_enum mspm_on_end_list_element_%s[] =\n", $rows[$row][0];
+ print MSPM_BODY " {";
+ for(my $j=0; $j<$mspm_procedure_on_end_to_stop_timer_size_list[$row-1]; $j++)
+ {
+ printf MSPM_BODY "%s, ", $mspm_procedure_on_end_to_stop_timer_list[$row-1][$j];
+ }
+ print MSPM_BODY "};\n\n";
+ }
+}
+
+#mspm_procedure_on_end_to_stop_extend_timer_event_list_table
+print MSPM_BODY "mspm_procedure_enum* mspm_procedure_on_end_to_stop_extend_timer_event_list_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for(my $i=0; $i<$max_row-2; $i++)
+{
+ if ($mspm_procedure_on_end_to_stop_timer_size_list[$i] == 0)
+ {
+ printf MSPM_BODY " NULL, //%s\n", $rows[$i+1][0];
+ }
+ else
+ {
+ printf MSPM_BODY " mspm_on_end_list_element_%s, //%s\n", $rows[$i+1][0], $rows[$i+1][0];
+ }
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_not_start_extend_timer_if_proc_exist_list_size_table
+print MSPM_BODY "kal_uint8 mspm_procedure_not_start_extend_timer_if_proc_exist_list_size_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %2d, //%s\n", $mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$row-1], $rows[$row][0];
+}
+print MSPM_BODY "};\n\n";
+
+#element of mspm_procedure_not_start_extend_timer_if_proc_exist_list_table
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ if ($mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$row-1] > 0)
+ {
+ printf MSPM_BODY "static mspm_procedure_enum mspm_not_start_ext_timer_if_proc_exist_element_%s[] =\n", $rows[$row][0];
+ print MSPM_BODY " {";
+ for(my $j=0; $j<$mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$row-1]; $j++)
+ {
+ printf MSPM_BODY "%s, ", $mspm_procedure_not_start_ext_timer_if_proc_exist_list[$row-1][$j];
+ }
+ print MSPM_BODY "};\n\n";
+ }
+}
+
+#mspm_procedure_not_start_extend_timer_if_proc_exist_list_table
+print MSPM_BODY "mspm_procedure_enum* mspm_procedure_not_start_extend_timer_if_proc_exist_list_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for(my $i=0; $i<$max_row-2; $i++)
+{
+ if ($mspm_procedure_not_start_ext_timer_if_proc_exist_size_list[$i] == 0)
+ {
+ printf MSPM_BODY " NULL, //%s\n", $rows[$i+1][0];
+ }
+ else
+ {
+ printf MSPM_BODY " mspm_not_start_ext_timer_if_proc_exist_element_%s, //%s\n", $rows[$i+1][0], $rows[$i+1][0];
+ }
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_not_start_extend_timer_if_proc_not_exist_list_size_table
+print MSPM_BODY "kal_uint8 mspm_procedure_not_start_extend_timer_if_proc_not_exist_list_size_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %2d, //%s\n", $mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$row-1], $rows[$row][0];
+}
+print MSPM_BODY "};\n\n";
+
+#element of mspm_procedure_not_start_extend_timer_if_proc_not_exist_list_table
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ if ($mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$row-1] > 0)
+ {
+ printf MSPM_BODY "static mspm_procedure_enum mspm_not_start_ext_timer_if_proc_not_exist_element_%s[] =\n", $rows[$row][0];
+ print MSPM_BODY " {";
+ for(my $j=0; $j<$mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$row-1]; $j++)
+ {
+ printf MSPM_BODY "%s, ", $mspm_procedure_not_start_ext_timer_if_proc_not_exist_list[$row-1][$j];
+ }
+ print MSPM_BODY "};\n\n";
+ }
+}
+
+#mspm_procedure_not_start_extend_timer_if_proc_not_exist_list_table
+print MSPM_BODY "mspm_procedure_enum* mspm_procedure_not_start_extend_timer_if_proc_not_exist_list_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for(my $i=0; $i<$max_row-2; $i++)
+{
+ if ($mspm_procedure_not_start_ext_timer_if_proc_not_exist_size_list[$i] == 0)
+ {
+ printf MSPM_BODY " NULL, //%s\n", $rows[$i+1][0];
+ }
+ else
+ {
+ printf MSPM_BODY " mspm_not_start_ext_timer_if_proc_not_exist_element_%s, //%s\n", $rows[$i+1][0], $rows[$i+1][0];
+ }
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_source_module_list_table
+print MSPM_BODY "kal_char* mspm_source_module_list_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ print MSPM_BODY " \"$rows[$row][$mspm_procedure_source_module_index]\", \n";
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_procedure_type_table
+print MSPM_BODY "mspm_procedure_type_enum mspm_procedure_type_table[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ if (index($rows[$row][$mspm_procedure_category_type_index], 'C2K') == -1)
+ {
+ printf MSPM_BODY " MSPM_PROCEDURE_TYPE_NON_C2K, //%s\n", $rows[$row][0];
+ }
+ else
+ {
+ printf MSPM_BODY " MSPM_PROCEDURE_TYPE_C2K, //%s\n", $rows[$row][0];
+ }
+}
+print MSPM_BODY "};\n\n";
+
+#mspm_icd_procedure_type
+print MSPM_BODY "#ifdef __ICD_LOGGING_SUPPORT__\n";
+print MSPM_BODY "mspm_icd_proc_enum mspm_icd_procedure_type[MSPM_PROCEDURE_ENUM_NUM] =\n";
+print MSPM_BODY "{\n";
+for (my $row = 1; $row < $max_row-1; $row++)
+{
+ printf MSPM_BODY " %s, //%s\n", $rows[$row][$mspm_icd_procedure_type_index], $rows[$row][0];
+}
+print MSPM_BODY "};\n";
+print MSPM_BODY "#endif /* __ICD_LOGGING_SUPPORT__ */\n\n";
+
+#close file
+close MSPM_BODY or warn "Error closing MSPM Body";
+close MSPM_CUSTOM or warn "Error closing MSPM Custom";
+
+
+
+
+
+
+