diff --git a/executables/nr-ue.c b/executables/nr-ue.c index d892bff9e5..9e5347e957 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -483,11 +483,23 @@ static void RU_write(nr_rxtx_thread_data_t *rxtxD, bool sl_tx_action) } } - int tmp = openair0_write_reorder(&UE->rfdevice, proc->timestamp_tx, txp, rxtxD->writeBlockSize, fp->nb_antennas_tx, flags); - AssertFatal(tmp == rxtxD->writeBlockSize, ""); + openair0_timestamp writeTimestamp = proc->timestamp_tx; + int writeBlockSize = rxtxD->writeBlockSize; + if ( writeBlockSize > fp->get_samples_per_slot(proc->nr_slot_tx, fp)) { + // if writeBlockSize gets longer that slot size, fill with dummy + const int dummyBlockSize = writeBlockSize - fp->get_samples_per_slot(proc->nr_slot_tx, fp); + int tmp = openair0_write_reorder(&UE->rfdevice, writeTimestamp, txp, dummyBlockSize, fp->nb_antennas_tx, flags); + AssertFatal(tmp == dummyBlockSize, ""); + + writeTimestamp += dummyBlockSize; + writeBlockSize -= dummyBlockSize; + } + + int tmp = openair0_write_reorder(&UE->rfdevice, writeTimestamp, txp, writeBlockSize, fp->nb_antennas_tx, flags); + AssertFatal(tmp == writeBlockSize, ""); for (int i = 0; i < fp->nb_antennas_tx; i++) - memset(txp[i], 0, rxtxD->writeBlockSize); + memset(txp[i], 0, writeBlockSize); } void processSlotTX(void *arg)