add hidden fn adjustment command

This is only useful if the rf path delays the signal by at least one
frame, and therefore a fairly experimental command that might be removed
or reworked in the future and should not be relied upon.

Change-Id: I29964acffad5bad4f5bcad7f631e435a72979c46
This commit is contained in:
Eric
2021-05-05 17:33:18 +02:00
parent a1ea63f777
commit c27fe60a25
3 changed files with 19 additions and 1 deletions

View File

@@ -48,6 +48,7 @@ struct trx_cfg {
double offset; double offset;
double freq_offset_khz; double freq_offset_khz;
double rssi_offset; double rssi_offset;
int ul_fn_offset;
bool force_rssi_offset; /* Force value set in VTY? */ bool force_rssi_offset; /* Force value set in VTY? */
bool swap_channels; bool swap_channels;
bool ext_rach; bool ext_rach;

View File

@@ -271,6 +271,20 @@ DEFUN(cfg_rssi_offset, cfg_rssi_offset_cmd,
return CMD_SUCCESS; return CMD_SUCCESS;
} }
DEFUN_ATTR(cfg_ul_fn_offset, cfg_ul_fn_offset_cmd,
"ul-fn-offset <-10-10>",
"Adjusts the uplink frame FN by the specified amount\n"
"Frame Number offset\n",
CMD_ATTR_HIDDEN)
{
struct trx_ctx *trx = trx_from_vty(vty);
trx->cfg.ul_fn_offset = atoi(argv[0]);
return CMD_SUCCESS;
}
DEFUN(cfg_swap_channels, cfg_swap_channels_cmd, DEFUN(cfg_swap_channels, cfg_swap_channels_cmd,
"swap-channels (disable|enable)", "swap-channels (disable|enable)",
"Swap primary and secondary channels of the PHY (if any)\n" "Swap primary and secondary channels of the PHY (if any)\n"
@@ -624,6 +638,8 @@ static int config_write_trx(struct vty *vty)
vty_out(vty, " filler access-burst-delay %u%s", trx->cfg.rach_delay, VTY_NEWLINE); vty_out(vty, " filler access-burst-delay %u%s", trx->cfg.rach_delay, VTY_NEWLINE);
if (trx->cfg.stack_size != 0) if (trx->cfg.stack_size != 0)
vty_out(vty, " stack-size %u%s", trx->cfg.stack_size, VTY_NEWLINE); vty_out(vty, " stack-size %u%s", trx->cfg.stack_size, VTY_NEWLINE);
if (trx->cfg.ul_fn_offset != 0)
vty_out(vty, " ul-fn-offset %u%s", trx->cfg.ul_fn_offset, VTY_NEWLINE);
trx_rate_ctr_threshold_write_config(vty, " "); trx_rate_ctr_threshold_write_config(vty, " ");
for (i = 0; i < trx->cfg.num_chans; i++) { for (i = 0; i < trx->cfg.num_chans; i++) {
@@ -787,6 +803,7 @@ int trx_vty_init(struct trx_ctx* trx)
install_element(TRX_NODE, &cfg_stack_size_cmd); install_element(TRX_NODE, &cfg_stack_size_cmd);
install_element(TRX_NODE, &cfg_chan_cmd); install_element(TRX_NODE, &cfg_chan_cmd);
install_element(TRX_NODE, &cfg_ul_fn_offset_cmd);
install_node(&chan_node, dummy_config_write); install_node(&chan_node, dummy_config_write);
install_element(CHAN_NODE, &cfg_chan_rx_path_cmd); install_element(CHAN_NODE, &cfg_chan_rx_path_cmd);
install_element(CHAN_NODE, &cfg_chan_tx_path_cmd); install_element(CHAN_NODE, &cfg_chan_tx_path_cmd);

View File

@@ -649,7 +649,7 @@ int Transceiver::pullRadioVector(size_t chan, struct trx_ul_burst_ind *bi)
} }
/* Set time and determine correlation type */ /* Set time and determine correlation type */
burstTime = radio_burst->getTime(); burstTime = radio_burst->getTime() + cfg->ul_fn_offset;
CorrType type = expectedCorrType(burstTime, chan); CorrType type = expectedCorrType(burstTime, chan);
/* Initialize struct bi */ /* Initialize struct bi */