[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/tools/update-l1-utmd.py b/mcu/tools/update-l1-utmd.py
new file mode 100755
index 0000000..460618f
--- /dev/null
+++ b/mcu/tools/update-l1-utmd.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import csv
+import json
+import re
+import sys
+import logging
+import argparse
+col_tmd = 'TMD File'
+col_regex = 'regex to match Trace Class'
+col_tag = 'Expected Tag'
+def readUtmdToJson(utmd_filename):
+ with open(utmd_filename, 'r') as utmdfile:
+ j = json.load(utmdfile)
+ utmdfile.close()
+ return j
+def writeJsonToUtmd(j, utmd_filename):
+ with open(utmd_filename, 'w') as utmdfile:
+ utmdfile.write(json.dumps(j,
+ sort_keys=True,
+ ensure_ascii=True,
+ indent=2))
+ utmdfile.close()
+
+def updateUtmd(utmd_filename, csv_filename):
+ if utmd_filename.startswith('./'):
+ utmd_filename = utmd_filename[2::]
+ csvfile = open(csv_filename, 'r')
+ j = readUtmdToJson(utmd_filename)
+ if j is None:
+ logging.error('read UTMD failed')
+ sys.exit()
+ if j['traceFamily'] == 'PS':
+ logging.warning('{}-{} not L1 / L2 UTMD'.format(j['module'], j['traceFamily']))
+ sys.exit()
+ fieldnames = (col_tmd, col_regex, col_tag)
+ reader = csv.DictReader( csvfile, fieldnames)
+ logging.info('Module: {} - {}'.format(j['module'], utmd_filename))
+ debug_UH = 'Ultra-High'
+ debug_H = 'High'
+ debug_M = 'Medium'
+ debug_L = 'Low'
+ debug_UL = 'Ultra-Low'
+ #update debugLevel
+ for traceClass in j['traceClassDefs']:
+ for k, v in traceClass.iteritems():
+ if k.endswith('_UH'):
+ v['debugLevel'] = debug_UH
+ elif k.endswith('_H'):
+ v['debugLevel'] = debug_H
+ elif k.endswith('_M'):
+ v['debugLevel'] = debug_M
+ elif k.endswith('_L'):
+ v['debugLevel'] = debug_L
+ elif k.endswith('_UL'):
+ v['debugLevel'] = debug_UL
+ #update tag
+ for row in reader:
+ if row[col_tmd] in utmd_filename:
+ logging.info(row)
+ for traceClass in j['traceClassDefs']:
+ for k, v in traceClass.iteritems():
+ logging.info('Original: {} {}'.format(k, v))
+ #default mapping for entire TMD
+ if row[col_regex] == 'N/A':
+ logging.info('Matching N/A: {}'.format(k))
+ logging.info(k)
+ logging.info(v)
+ v['tag'] = [ row[col_tag] ]
+ #regex to match trace class name
+ else:
+ logging.info('Matching regex: {} {}'.format(k, row[col_regex]))
+ tag = re.sub(row[col_regex], row[col_tag], k)
+ if tag:
+ v['tag'] = [ tag ]
+ logging.info('Changed: {} {}'.format(k, v))
+ writeJsonToUtmd(j, utmd_filename)
+
+def init_logger(log_filename):
+ logging.basicConfig(level=logging.DEBUG,
+ format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
+ datefmt='%m-%d %H:%M:%S',
+ filename=log_filename)
+ console = logging.StreamHandler()
+ console.setLevel(logging.DEBUG)
+ formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
+ console.setFormatter(formatter)
+ logging.getLogger('').addHandler(console)
+
+def main():
+ parser = argparse.ArgumentParser(description='update-l1-utmd:\n\
+ Update tag of trace class',
+ #formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ formatter_class=argparse.RawDescriptionHelpFormatter)
+ parser.add_argument("-v", action="version", version='1.0.0')
+ parser.add_argument("utmd_file",
+ help="input L1 UTMD file")
+ parser.add_argument("csv_file",
+ help="input CSV file(survey table)")
+ parser.add_argument("-l", dest="log_file",
+ help="log file",
+ default='update-l1-utmd.log',
+ action="store")
+ args = parser.parse_args()
+ if args.utmd_file is None:
+ parser.print_help()
+ quit()
+ init_logger(args.log_file)
+ updateUtmd(args.utmd_file, args.csv_file)
+if __name__ == '__main__':
+ main()
+