#!/usr/bin/env python3 from jinja2 import Template import argparse import os parser = argparse.ArgumentParser() parser.add_argument('-d', '--delete', action='store_true') args = parser.parse_args() if args.delete: directory = os.path.dirname(os.path.realpath(__file__)) test_directory = os.path.join(directory, 'test') for f in os.listdir(directory): if 'tdd' in f: os.remove(os.path.join(directory, f)) for f in os.listdir(test_directory): if 'testTDD' in f: os.remove(os.path.join(test_directory, f)) exit() global_context = { 'generated_file_message': "This file was generated using a jinja2 template and the render-templates script, don't modify directly." } rf_mode_context_list = [ { 'rf_mode' : 'tdd1900', 'default_dl_earfcn' : 38350, 'default_lte_dl_freq' : 1890.0, 'default_lte_band' : 39, 'default_dl_nr_arfcn' : 378000, 'default_nr_band' : 39, 'default_nr_dl_freq' : 1890.0, 'default_nr_ssb_pos_bitmap' : "1000", 'default_ssb_nr_arfcn' : 377790, 'min_frequency' : 1880.0, 'max_frequency' : 1920, }, { 'rf_mode' : 'tdd2600', 'default_dl_earfcn' : 38050, 'default_lte_dl_freq' : 2600.0, 'default_lte_band' : 38, 'default_dl_nr_arfcn' : 520000, 'default_nr_band' : 38, 'default_nr_dl_freq' : 2600.0, 'default_nr_ssb_pos_bitmap' : "10000000", 'default_ssb_nr_arfcn' : 517930, 'min_frequency' : 2570, 'max_frequency' : 2620, }, { 'rf_mode' : 'tdd3500', 'default_dl_earfcn' : 42590, 'default_lte_dl_freq' : 3500.0, 'default_lte_band' : 42, 'default_dl_nr_arfcn' : 632628, 'default_nr_band' : 78, 'default_nr_dl_freq' : 3489.42, 'default_nr_ssb_pos_bitmap' : "10000000", 'default_ssb_nr_arfcn' : 632544, 'min_frequency' : 3400, 'max_frequency' : 3600, }, { 'rf_mode' : 'tdd3700', 'default_dl_earfcn' : 44590, 'default_lte_dl_freq' : 3700.0, 'default_lte_band' : 43, 'default_dl_nr_arfcn' : 646666, 'default_nr_band' : 78, 'default_nr_dl_freq' : 3699.99, 'default_nr_ssb_pos_bitmap' : "10000000", 'default_ssb_nr_arfcn' : 646656, 'min_frequency' : 3600, 'max_frequency' : 3800, }, { 'rf_mode' : 'tdd', 'default_dl_earfcn' : 0, 'default_lte_dl_freq' : 0.0, 'default_lte_band' : 0, 'default_dl_nr_arfcn' : 0, 'default_nr_band' : 0, 'default_nr_dl_freq' : 0.0, 'default_nr_ssb_pos_bitmap' : "10000000", 'default_ssb_nr_arfcn' : 0, 'min_frequency' : 0, 'max_frequency' : 0, } ] for i in range (4): rf_mode_context_list[i].update({ 'default_lte_n_rb_dl' : 100, 'default_lte_tx_gain' : 60, 'default_lte_rx_gain' : 45, 'default_lte_imsi' : "001010123456789", 'default_lte_k' : "00112233445566778899aabbccddeeff", 'default_lte_inactivity_timer' : 10000, 'default_nr_bandwidth' : 40, 'default_nr_tx_gain' : 60, 'default_nr_rx_gain' : 45, 'default_nr_imsi' : "001010123456789", 'default_nr_k' : "00112233445566778899aabbccddeeff", 'default_n_antenna_dl' : 2, 'default_n_antenna_ul' : 2, 'default_nr_inactivity_timer' : 10000, }) with open('software.cfg.json.jinja2', 'r') as f: software_json_template = Template(f.read()) instance_json_template_map = {} for software_type in ['enb', 'gnb', 'ue-lte', 'ue-nr']: with open('instance-{}-input-schema.json.jinja2'.format(software_type), 'r') as f: instance_json_template_map[software_type] = Template(f.read()) with open('software.jinja2.cfg', 'r') as f: software_template = Template(f.read()) with open('test/test.jinja2.py', 'r') as f: test_template = Template(f.read()) for rf_mode_context in rf_mode_context_list: with open('software-{}.cfg.json'.format(rf_mode_context['rf_mode']), 'w+') as f: f.write(software_json_template.render(**rf_mode_context, **global_context) + '\n') with open('test/test{}.py'.format(rf_mode_context['rf_mode'].upper()), 'w+') as f: f.write(test_template.render(**rf_mode_context, **global_context) + '\n') with open('software-{}.cfg'.format(rf_mode_context['rf_mode']), 'w+') as f: f.write(software_template.render(**rf_mode_context, **global_context) + '\n') for software_type in ['enb', 'gnb', 'ue-lte', 'ue-nr']: with open('instance-{}-{}-input-schema.json'.format( rf_mode_context['rf_mode'], software_type), 'w+') as f: f.write(instance_json_template_map[software_type].render(**rf_mode_context, **global_context) + '\n')