[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/NVRAMStatistic/autogen_v2/autogen/main.py b/mcu/tools/NVRAMStatistic/autogen_v2/autogen/main.py
new file mode 100644
index 0000000..0a8c150
--- /dev/null
+++ b/mcu/tools/NVRAMStatistic/autogen_v2/autogen/main.py
@@ -0,0 +1,161 @@
+import operator
+import sys
+import os
+import platform
+
+from .src.initconfig import logical_data_item_table
+from .src.initconfig import const_value
+from .src.initconfig import global_value
+from .src.initconfig import LtableEntry
+from .src.initconfig import printf
+from .src import tableconstructor
+from .src import sys_cache_generator
+from .src import gen_cache_info
+from .src import gen_cat_file
+from .src import gen_lid_information
+from .src import gen_statistic
+from .src import mcf_ota_helper
+from .src import custpackhelper
+from .src import secupackhelper
+from .src import buildtimecheck
+from .src import tableconstructor_win
+
+from .src import gen_assign_entry
+
+
+def main(path):
+    """
+     args:
+        path: gen file output path, path + "nvram_auto_gen" + filename
+    """
+    # set path    
+    global_value.logging_path = path
+    global_value.path = path
+    global_value.autogen_path = os.path.join(global_value.path, "nvram_auto_gen")
+    global_value.log_path = os.path.join(global_value.path, "bin", "log")
+    
+    # check path exist
+    if not os.access(global_value.autogen_path, os.F_OK):
+        printf("error: folder no exist: %s" % global_value.autogen_path)
+        sys.exit(2)
+    if not os.access(global_value.log_path, os.F_OK):
+        printf("error: folder no exist: %s" % global_value.log_path)
+        sys.exit(2)
+	
+	global_value.logger_config()
+    global_value.logger.info("========main========")
+    # set platform
+    global_value.platform = platform.system()
+    if global_value.platform != "Windows" and global_value.platform != "Linux":
+        printf("platform error: platform is not windows or linux!")
+        printf("platform.system() = %s" % platform.system())
+        global_value.logger.error("platform error: platform is not windows or linux!")
+        global_value.logger.error("platform.system() = %s", platform.system())
+        sys.exit(1)
+    
+    global_value.logger.info("path = %s, logging_path = %s, platform = %s", global_value.path, global_value.logging_path
+                             , global_value.platform)
+    
+    global_value.pars_macro_info()
+    
+    if global_value.platform == "Windows":  # windows
+        tableconstructor_win.parse_segment_info_win()
+    elif global_value.platform == "Linux":  # linux  
+        tableconstructor.pars_segment_info()
+    else:
+        pass
+    
+    tableconstructor.parse_lid_table()
+    tableconstructor.parse_lid_item_data()
+    tableconstructor.statistic_lid_item_data()
+
+    # tmp write ltable for NVDB test
+    # tableconstructor.write_logical_table()
+    
+    # sort ,key is lid
+    sort_key = operator.attrgetter('lid')
+    logical_data_item_table.sort(key=sort_key)
+    
+    # # assign entry
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_assign_entry")
+    gen_assign_entry.nvram_gen_assign_entry()
+    
+    # gen nvram_cache_info.c and nvram_cache_info.h
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_cache_info")
+    gen_cache_info.nvram_gen_cache_info()
+    
+    # gen custom_nvram_lid_cat.xml
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_cat_xml")
+    gen_cat_file.nvram_gen_cat_xml()
+    
+    # gen ~nvram_lid_information.log and ~nvram_lid_size.log
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_info_size_log")
+    gen_lid_information.nvram_gen_info_size_log()
+    
+    # gen nvram_lid_statistics_bak.h
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_statistic")
+    gen_statistic.nvram_gen_statistic()
+    
+    # gen custom_nvram_restore.c and nvram_restore_dom_new.h
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_restore_function")
+    sys_cache_generator.nvram_gen_restore_function()    # win || linux
+    
+    # gen nvram_custpack_table.c and nvram_custpack_table_lid.c
+    if (global_value.macro & const_value.__MMI_FMI__) and (not global_value.macro & const_value.__L1_STANDALONE__):
+        global_value.logger.info("====================")
+        global_value.logger.info("nvram_gen_custpack_table")
+        custpackhelper.nvram_gen_custpack_table()
+    
+    # gen custom_nvram_secro.c and custom_nvram_secro_tbl.c
+    if True:  # global_value.macro & const_value.__VENDOR_RELEASE__:
+        global_value.logger.info("====================")
+        global_value.logger.info("nvram_gen_secro")
+        secupackhelper.nvram_gen_secro()    # win || linux
+    
+    # gen nvram_ltable_List.h
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_ltable_list")
+    mcf_ota_helper.nvram_gen_ltable_list()
+    
+    # gen nvram_lid_list_for_mcf.h
+    global_value.logger.info("====================")
+    global_value.logger.info("nvram_gen_mcf_ota_lid_list")
+    mcf_ota_helper.nvram_gen_mcf_ota_lid_list()
+    
+    global_value.logger.info("====================")
+    global_value.logger.info("build time check: begin")
+    # build time check:lid enum overlapping
+    global_value.logger.info("build time check: lid enum overlapping")
+    buildtimecheck.check_lid_enum_overlapping()
+    buildtimecheck.check_lid_fileprefix_overlapping()
+    # build time check:write protect attr white list
+    global_value.logger.info("build time check: write protect attr white list ")
+    buildtimecheck.check_write_protect()
+    # build time check:cate attr confilicts
+    global_value.logger.info("build time check: cate attr confilicts")
+    buildtimecheck.nvram_gen_check_cate_attr_conflicts()
+    # build time check:hash key check
+    if (global_value.macro & const_value.__NVRAM_LID_HASH_CHECK__) and (global_value.macro & const_value.__MTK_INTERNAL__):
+        global_value.logger.info("build time check: hash key check")
+        buildtimecheck.check_lid_hash_key()
+    # build time check:special lid parameter
+    global_value.logger.info("build time check: special lid parameter")
+    buildtimecheck.check_special_lid_parameter()
+    global_value.logger.info("build time check: end")
+    
+    # gen custom_nvram_database.h
+    global_value.logger.info("build time check: gen custom_nvram_database")
+    tmp_path = os.path.join(path, "nvram_auto_gen", "custom_nvram_database.h")
+    print("custom_nvram database path: {}".format(tmp_path) )
+    f = open(tmp_path, "w")
+    f.close()
+    global_value.logger.info("build time check: end")
+
+if __name__ == '__main__':
+    main()