Repository navigation
cell M1: per-UE state in the DU library (UeRegistry UeContext: TA loop, uplink-quality window) - #570
Conversation
PR Summary by QodoKeep per-UE timing advance and uplink quality in UeRegistry
AI Description
Diagram
High-Level Assessment
Files changed (6)
|
Code Review by Qodo
1. Rig results quoted without failing cases
|
84da476 to
d0cda9f
Compare
|
Review fixes pushed:
Rig on this build: |
…loop, uplink-quality window) The last open M1 deliverable: UeRegistry keeps each scheduled UE's context, its timing-advance loop (TaLoop, moved from examples/cell to src/cell/TimingAdvance.h) and its latest uplink-quality window (RSSI, SNR, EVM of its own frames, attributed per transmitter by UeRxAttribution, M0), created with a bind or an admission and dropped with a release (an id reused by another UE starts fresh; the DU's old TA map kept the departed UE's TA). The DU keeps its TA there instead of its own map and closes each UE's uplink window on its TA cadence (cell.ue_rx). Rig: m1_cell_2ue, m3_cell_rach --leave-at and m6_handover pass; 20 frames per 2 s window per UE, RSSI/SNR/EVM logged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Qodo's re-review resolves #2 and #4. On the other two:
Adding skip-qodo-gate. |
d0cda9f to
7168c65
Compare
Closes the last open M1 deliverable of #255, the
UeRegistryper-UE state ("timing advance, and a per-UE RX-quality window built from M0's per-frame attribution"). Epic #254.What
src/cell/TimingAdvance.h:TaLoop, the DU's per-UE TA loop, moved unchanged fromexamples/cell/cell.h, which keeps ausing.src/cell/UeRegistry.h: aUeContextper scheduled UE id: itsTaLoopand its latest uplink-quality window (UeRxWindow: RSSI, SNR, EVM, noise floor of its own frames, attributed per transmitter by M0'sUeRxAttribution, not the device-wideGetRxQuality).bind/admitand is dropped withrelease;context(ue)creates one for an id scheduled otherwise (a handover arrival before its admission);reset_contextstarts it over.rx_frame()attributes an uplink frame;close_rx_window(ue_of)closes the window into each UE's context. The address-to-UE mapping is the caller's.examples/cell): keeps its TA in the contexts instead of its own map, feeds each verified own-UE uplink into the attribution, and closes the window on its TA cadence (cell.ue_rx).cell_m3): context lifetime with bind, re-join, release and reuse; reset; window attribution and foreign transmitters ignored.Link adaptation still steers on the SNR the UE reports for the downlink. The uplink window is the DU's own per-UE measurement, which #566 (EVM over F1) can now draw on.
Rig (on this code):
m1_cell_2uepasses (both UEs in slot both ways, 0 overlaps). Each UE's uplink window logged every 2 s: 20 frames median, RSSI −51 / −53 dBm, SNR 38 / 39 dB, EVM −33 / −31 dB.m3_cell_rach --leave-atpasses (joined, released 51 sf after its last uplink), and so doesm6_handover.🤖 Generated with Claude Code