diff options
author | Keith <keith@rhizomatica.org> | 2021-09-23 06:43:03 +0200 |
---|---|---|
committer | keith <keith@rhizomatica.org> | 2021-10-05 04:32:33 +0000 |
commit | 22622452095bff83b254b5c5123438564f3b2219 (patch) | |
tree | 1101658f83a450b59a10caa81765c190a6f33c2d /src/osmo-bsc/bts_vty.c | |
parent | b263d860e6ae98673b1c3973351af2e98c092dea (diff) |
Implement MS Uplink Power Control Loop
* Adds vty option dyn-bsc for ms-power-control -> mode
* Imports power_control.c from osmo-bts project
[at commit 2f3cd4b697972d8484f9a9d3b7ef634086f65fa5]
* Removes unused C/I code from osmo-bts's power_control.c
This patch then calls the power loop on receipt of measurement
reports and updates the MS Power Level accordingly.
Change-Id: Ibc307e758697eb5ca3fb86622f35709d6077db9e
Diffstat (limited to 'src/osmo-bsc/bts_vty.c')
-rw-r--r-- | src/osmo-bsc/bts_vty.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c index fb1152048..460e14a10 100644 --- a/src/osmo-bsc/bts_vty.c +++ b/src/osmo-bsc/bts_vty.c @@ -2915,10 +2915,11 @@ DEFUN(cfg_bts_power_ctrl, DEFUN_USRATTR(cfg_power_ctrl_mode, cfg_power_ctrl_mode_cmd, X(BSC_VTY_ATTR_NEW_LCHAN), - "mode (static|dyn-bts) [reset]", + "mode (static|dyn-bts|dyn-bsc) [reset]", "Power control mode\n" "Instruct the MS/BTS to use a static power level\n" "Power control to be performed dynamically by the BTS itself\n" + "Power control to be performed dynamically at this BSC\n" "Reset to default parameters for the given mode\n") { struct gsm_power_ctrl_params *params = vty->index; @@ -2935,6 +2936,13 @@ DEFUN_USRATTR(cfg_power_ctrl_mode, params->mode = GSM_PWR_CTRL_MODE_STATIC; else if (strcmp(argv[0], "dyn-bts") == 0) params->mode = GSM_PWR_CTRL_MODE_DYN_BTS; + else if (strcmp(argv[0], "dyn-bsc") == 0) { + if (params->dir == GSM_PWR_CTRL_DIR_DL) { + vty_out(vty, "%% mode dyn-bsc not supported for Downlink.%s", VTY_NEWLINE); + return CMD_WARNING; + } + params->mode = GSM_PWR_CTRL_MODE_DYN_BSC; + } return CMD_SUCCESS; } @@ -3139,6 +3147,11 @@ DEFUN_USRATTR(cfg_power_ctrl_ci_thresh, int upper = atoi(argv[2]); struct gsm_power_ctrl_meas_params *meas_params; + if (params->mode == GSM_PWR_CTRL_MODE_DYN_BSC) { + vty_out(vty, "%% C/I based power loop not possible in dyn-bsc mode!%s", VTY_NEWLINE); + return CMD_WARNING; + } + if (params->dir != GSM_PWR_CTRL_DIR_UL) { vty_out(vty, "%% C/I based power loop only possible in Uplink!%s", VTY_NEWLINE); return CMD_WARNING; @@ -3962,8 +3975,10 @@ static void config_write_power_ctrl(struct vty *vty, unsigned int indent, cfg_out(" bs-power static %u%s", cp->bs_power_val_db, VTY_NEWLINE); break; case GSM_PWR_CTRL_MODE_DYN_BTS: + case GSM_PWR_CTRL_MODE_DYN_BSC: cfg_out("%s%s", node_name, VTY_NEWLINE); - cfg_out(" mode dyn-bts%s", VTY_NEWLINE); + cfg_out(" mode %s%s", + cp->mode == GSM_PWR_CTRL_MODE_DYN_BTS ? "dyn-bts" : "dyn-bsc", VTY_NEWLINE); if (cp->dir == GSM_PWR_CTRL_DIR_DL) cfg_out(" bs-power dyn-max %u%s", cp->bs_power_max_db, VTY_NEWLINE); @@ -3975,7 +3990,8 @@ static void config_write_power_ctrl(struct vty *vty, unsigned int indent, /* Measurement processing / averaging parameters */ config_write_power_ctrl_meas(vty, indent + 1, &cp->rxlev_meas, "rxlev", ""); config_write_power_ctrl_meas(vty, indent + 1, &cp->rxqual_meas, "rxqual", ""); - if (cp->dir == GSM_PWR_CTRL_DIR_UL && is_osmobts(bts)) { + if (cp->dir == GSM_PWR_CTRL_DIR_UL && is_osmobts(bts) + && cp->mode == GSM_PWR_CTRL_MODE_DYN_BTS) { config_write_power_ctrl_meas(vty, indent + 1, &cp->ci_fr_meas, "ci", " fr-efr"); config_write_power_ctrl_meas(vty, indent + 1, &cp->ci_hr_meas, "ci", " hr"); config_write_power_ctrl_meas(vty, indent + 1, &cp->ci_amr_fr_meas, "ci", " amr-fr"); |