diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2017-12-29 09:30:47 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2017-12-29 09:30:47 +0100 |
commit | 0c0f828c6bccee3aeb3049cb8b5bb480153cd3b6 (patch) | |
tree | 520dc4ff15dbc8dba056ea03d762d570b243f27d /dpd/main.py | |
parent | 9234155749be0c9ee3ae1269f47c2240d302c21a (diff) | |
parent | 8e3338479c180418a05ab030c60ba01c2a8615ca (diff) | |
download | dabmod-0c0f828c6bccee3aeb3049cb8b5bb480153cd3b6.tar.gz dabmod-0c0f828c6bccee3aeb3049cb8b5bb480153cd3b6.tar.bz2 dabmod-0c0f828c6bccee3aeb3049cb8b5bb480153cd3b6.zip |
Merge branch 'next' into outputRefactoring
Diffstat (limited to 'dpd/main.py')
-rwxr-xr-x | dpd/main.py | 109 |
1 files changed, 61 insertions, 48 deletions
diff --git a/dpd/main.py b/dpd/main.py index 49c0d1d..093f227 100755 --- a/dpd/main.py +++ b/dpd/main.py @@ -11,6 +11,7 @@ This engine calculates and updates the parameter of the digital predistortion module of ODR-DabMod.""" +import sys import datetime import os import argparse @@ -45,7 +46,7 @@ parser.add_argument('--digital_gain', default=0.6, required=False, type=float) parser.add_argument('--target_median', default=0.05, - help='target_median', + help='The target median for the RX and TX AGC', required=False, type=float) parser.add_argument('--samps', default='81920', type=int, @@ -58,10 +59,14 @@ parser.add_argument('-L', '--lut', help='Use lookup table instead of polynomial predistorter', action="store_true") parser.add_argument('--plot', - help='Enable all plots, to be more selective choose plots in Const.py', + help='Enable all plots, to be more selective choose plots in GlobalConfig.py', action="store_true") parser.add_argument('--name', default="", type=str, help='Name of the logging directory') +parser.add_argument('-r', '--reset', action="store_true", + help='Reset the DPD settings to the defaults.') +parser.add_argument('-s', '--status', action="store_true", + help='Display the currently running DPD settings.') cli_args = parser.parse_args() @@ -81,27 +86,36 @@ plot = cli_args.plot # Logging import logging -dt = datetime.datetime.now().isoformat() -logging_path = '/tmp/dpd_{}'.format(dt).replace('.', '_').replace(':', '-') -if name: - logging_path += '_' + name -os.makedirs(logging_path) -logging.basicConfig(format='%(asctime)s - %(module)s - %(levelname)s - %(message)s', - datefmt='%Y-%m-%d %H:%M:%S', - filename='{}/dpd.log'.format(logging_path), - filemode='w', - level=logging.DEBUG) -# also log up to INFO to console -console = logging.StreamHandler() -console.setLevel(logging.INFO) -# set a format which is simpler for console use -formatter = logging.Formatter('%(asctime)s - %(module)s - %(levelname)s - %(message)s') -# tell the handler to use this format -console.setFormatter(formatter) -# add the handler to the root logger -logging.getLogger('').addHandler(console) - -logging.info(cli_args) +# Simple usage scenarios don't need to clutter /tmp +if not (cli_args.status or cli_args.reset): + dt = datetime.datetime.now().isoformat() + logging_path = '/tmp/dpd_{}'.format(dt).replace('.', '_').replace(':', '-') + if name: + logging_path += '_' + name + print("Logs and plots written to {}".format(logging_path)) + os.makedirs(logging_path) + logging.basicConfig(format='%(asctime)s - %(module)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S', + filename='{}/dpd.log'.format(logging_path), + filemode='w', + level=logging.DEBUG) + # also log up to INFO to console + console = logging.StreamHandler() + console.setLevel(logging.INFO) + # set a format which is simpler for console use + formatter = logging.Formatter('%(asctime)s - %(module)s - %(levelname)s - %(message)s') + # tell the handler to use this format + console.setFormatter(formatter) + # add the handler to the root logger + logging.getLogger('').addHandler(console) +else: + dt = datetime.datetime.now().isoformat() + logging.basicConfig(format='%(asctime)s - %(module)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S', + level=logging.DEBUG) + logging_path = None + +logging.info("DPDCE starting up with options: {}".format(cli_args)) import numpy as np import traceback @@ -109,26 +123,38 @@ from src.Model import Lut, Poly import src.Heuristics as Heuristics from src.Measure import Measure from src.ExtractStatistic import ExtractStatistic -from src.Adapt import Adapt +from src.Adapt import Adapt, dpddata_to_str from src.RX_Agc import Agc from src.TX_Agc import TX_Agc from src.Symbol_align import Symbol_align -from src.Const import Const +from src.GlobalConfig import GlobalConfig from src.MER import MER from src.Measure_Shoulders import Measure_Shoulders -c = Const(samplerate, target_median, plot) +c = GlobalConfig(cli_args, logging_path) SA = Symbol_align(c) MER = MER(c) MS = Measure_Shoulders(c) -meas = Measure(samplerate, port, num_req) +meas = Measure(c, samplerate, port, num_req) extStat = ExtractStatistic(c) -adapt = Adapt(port_rc, coef_path) +adapt = Adapt(c, port_rc, coef_path) + +if cli_args.status: + txgain = adapt.get_txgain() + rxgain = adapt.get_rxgain() + digital_gain = adapt.get_digital_gain() + dpddata = dpddata_to_str(adapt.get_predistorter()) + + logging.info("ODR-DabMod currently running with TXGain {}, RXGain {}, digital gain {} and {}".format( + rxgain, rxgain, digital_gain, dpddata)) + sys.exit(0) if cli_args.lut: model = Lut(c) else: model = Poly(c) + +# Models have the default settings on startup adapt.set_predistorter(model.get_dpd_data()) adapt.set_digital_gain(digital_gain) @@ -149,26 +175,13 @@ rx_gain = adapt.get_rxgain() digital_gain = adapt.get_digital_gain() dpddata = adapt.get_predistorter() -if dpddata[0] == "poly": - coefs_am = dpddata[1] - coefs_pm = dpddata[2] - logging.info( - "TX gain {}, RX gain {}, dpd_coefs_am {}," - " dpd_coefs_pm {}, digital_gain {}".format( - tx_gain, rx_gain, coefs_am, coefs_pm, digital_gain - ) - ) -elif dpddata[0] == "lut": - scalefactor = dpddata[1] - lut = dpddata[2] - logging.info( - "TX gain {}, RX gain {}, LUT scalefactor {}," - " LUT {}, digital_gain {}".format( - tx_gain, rx_gain, scalefactor, lut, digital_gain - ) - ) -else: - logging.error("Unknown dpd data format {}".format(dpddata[0])) + +logging.info("TX gain {}, RX gain {}, digital_gain {}, {!s}".format( + tx_gain, rx_gain, digital_gain, dpddata_to_str(dpddata))) + +if cli_args.reset: + logging.info("DPD Settings were reset to default values.") + sys.exit(0) tx_agc = TX_Agc(adapt, c) |