Add PUCCH power control T traces

This commit is contained in:
Robert Schmidt
2026-02-24 18:44:27 +01:00
parent 28d770108f
commit c229d59efd
3 changed files with 28 additions and 0 deletions

View File

@@ -217,6 +217,10 @@ ID = GNB_MAC_PUSCH_POWER_CONTROL
DESC = NR MAC PUSCH power control-related data DESC = NR MAC PUSCH power control-related data
GROUP = ALL:MAC:GNB:CSV GROUP = ALL:MAC:GNB:CSV
FORMAT = int,rnti : int,frame : int,slot : int,snrx10 : int,phr : int,tpc : int,tb_size : int,txpower_calc : int,rbSize : int,mcs : int,rssi FORMAT = int,rnti : int,frame : int,slot : int,snrx10 : int,phr : int,tpc : int,tb_size : int,txpower_calc : int,rbSize : int,mcs : int,rssi
ID = GNB_MAC_PUCCH_POWER_CONTROL
DESC = NR MAC PUCCH power control-related data
GROUP = ALL:MAC:GNB:CSV
FORMAT = int,rnti : int,frame : int,slot : int,snrx10 : int,tpc : int,rssi
ID = GNB_MAC_DL_RAR_PDU_WITH_DATA ID = GNB_MAC_DL_RAR_PDU_WITH_DATA
DESC = NR MAC downlink PDU for RAR DESC = NR MAC downlink PDU for RAR
GROUP = ALL:MAC:GNB:WIRESHARK GROUP = ALL:MAC:GNB:WIRESHARK

View File

@@ -936,6 +936,14 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id, frame_t frame, slot_t slot, con
} else } else
sched_ctrl->tpc1 = 1; sched_ctrl->tpc1 = 1;
sched_ctrl->tpc1 = nr_limit_tpc(sched_ctrl->tpc1, uci_01->rssi, rssi_threshold); sched_ctrl->tpc1 = nr_limit_tpc(sched_ctrl->tpc1, uci_01->rssi, rssi_threshold);
T(T_GNB_MAC_PUCCH_POWER_CONTROL,
T_INT(uci_01->rnti),
T_INT(frame),
T_INT(slot),
T_INT(sched_ctrl->pucch_snrx10),
T_INT(sched_ctrl->tpc1),
T_INT(uci_01->rssi));
} }
// check scheduling request result, confidence_level == 0 is good // check scheduling request result, confidence_level == 0 is good
@@ -971,6 +979,14 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, frame_t frame, slot_t slot, c
sched_ctrl->pucch_snrx10 = uci_234->ul_cqi * 5 - 640; sched_ctrl->pucch_snrx10 = uci_234->ul_cqi * 5 - 640;
sched_ctrl->tpc1 = nr_get_tpc(nrmac->radio_config.pucch.target_snrx10, uci_234->ul_cqi, 30, 0); sched_ctrl->tpc1 = nr_get_tpc(nrmac->radio_config.pucch.target_snrx10, uci_234->ul_cqi, 30, 0);
sched_ctrl->tpc1 = nr_limit_tpc(sched_ctrl->tpc1, uci_234->rssi, rssi_threshold); sched_ctrl->tpc1 = nr_limit_tpc(sched_ctrl->tpc1, uci_234->rssi, rssi_threshold);
T(T_GNB_MAC_PUCCH_POWER_CONTROL,
T_INT(uci_234->rnti),
T_INT(frame),
T_INT(slot),
T_INT(sched_ctrl->pucch_snrx10),
T_INT(sched_ctrl->tpc1),
T_INT(uci_234->rssi));
} }
// TODO: handle SR // TODO: handle SR

View File

@@ -55,6 +55,14 @@ a `&`. In that case, it's important to run the `nr-softmodem` at second
position, which will receive signals and stop the `csv` tracer when stopping position, which will receive signals and stop the `csv` tracer when stopping
the main process. the main process.
The script might also be used to print PUCCH SNR. This can be achieved by only
recording the relevant fields with the `csv` tracer for trace
`GNB_MAC_PUCCH_POWER_CONTROL
./common/utils/T/tracer/record -d ../common/utils/T/T_messages.txt -OFF -on GNB_MAC_PUSCH_POWER_CONTROL -on GNB_MAC_PUCCH_POWER_CONTROL -o /tmp/record.raw
Use the `replay` tracer and `csv` to separate into PUSCH and PUCCH traces.
After recovering the `pusch.csv` file, you could plot it with a script. After recovering the `pusch.csv` file, you could plot it with a script.
./plot-power-control.gp.sh /tmp/pusch.csv ./plot-power-control.gp.sh /tmp/pusch.csv