mirror of https://github.com/PentHertz/srsLTE.git
Add test for pdcch order (un)packing.
This commit is contained in:
parent
d0c07fc86e
commit
f228491e1d
|
@ -9,7 +9,7 @@
|
||||||
set(CTEST_LABELS "lib;phy;phch")
|
set(CTEST_LABELS "lib;phy;phch")
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# PBCH TEST
|
# PBCH TEST
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
add_executable(pbch_test pbch_test.c)
|
add_executable(pbch_test pbch_test.c)
|
||||||
|
@ -223,6 +223,14 @@ foreach (nof_prb 6 15 25 50 75 100)
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# DCI TEST
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
add_executable(dci_test dci_test.c)
|
||||||
|
target_link_libraries(dci_test srsran_phy)
|
||||||
|
add_test(dci_test dci_test)
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# PDSCH TEST
|
# PDSCH TEST
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* \section COPYRIGHT
|
||||||
|
*
|
||||||
|
* Copyright 2013-2021 Software Radio Systems Limited
|
||||||
|
*
|
||||||
|
* By using this file, you agree to the terms and conditions set
|
||||||
|
* forth in the LICENSE file which can be found at the top level of
|
||||||
|
* the distribution.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "srsran/phy/phch/dci.h"
|
||||||
|
#include "srsran/phy/utils/debug.h"
|
||||||
|
#include "srsran/phy/utils/random.h"
|
||||||
|
#include "srsran/srsran.h"
|
||||||
|
#include "srsran/support/srsran_test.h"
|
||||||
|
#include <getopt.h>
|
||||||
|
|
||||||
|
#define UE_CRNTI 0x1234
|
||||||
|
|
||||||
|
static int test_pdcch_orders()
|
||||||
|
{
|
||||||
|
static srsran_cell_t cell = {
|
||||||
|
52, // nof_prb
|
||||||
|
1, // nof_ports
|
||||||
|
0, // cell_id
|
||||||
|
SRSRAN_CP_NORM, // cyclic prefix
|
||||||
|
SRSRAN_PHICH_NORM, // PHICH length
|
||||||
|
SRSRAN_PHICH_R_1, // PHICH resources
|
||||||
|
SRSRAN_FDD,
|
||||||
|
};
|
||||||
|
|
||||||
|
srsran_dl_sf_cfg_t dl_sf;
|
||||||
|
ZERO_OBJECT(dl_sf);
|
||||||
|
|
||||||
|
srsran_dci_location_t locations[SRSRAN_NOF_SF_X_FRAME][30];
|
||||||
|
static uint32_t cfi = 2;
|
||||||
|
|
||||||
|
static srsran_pdcch_t pdcch;
|
||||||
|
static srsran_regs_t regs;
|
||||||
|
|
||||||
|
if (srsran_regs_init(®s, cell)) {
|
||||||
|
ERROR("Error initiating regs");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (srsran_pdcch_init_enb(&pdcch, cell.nof_prb)) {
|
||||||
|
ERROR("Error creating PDCCH object");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
if (srsran_pdcch_set_cell(&pdcch, ®s, cell)) {
|
||||||
|
ERROR("Error creating PDCCH object");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initiate valid DCI locations */
|
||||||
|
for (int i = 0; i < SRSRAN_NOF_SF_X_FRAME; i++) {
|
||||||
|
dl_sf.cfi = cfi;
|
||||||
|
dl_sf.tti = i;
|
||||||
|
srsran_pdcch_ue_locations(&pdcch, &dl_sf, locations[i], 30, UE_CRNTI);
|
||||||
|
}
|
||||||
|
|
||||||
|
srsran_dci_dl_t dci_tx;
|
||||||
|
bzero(&dci_tx, sizeof(srsran_dci_dl_t));
|
||||||
|
dci_tx.rnti = UE_CRNTI;
|
||||||
|
dci_tx.location = locations[1][0];
|
||||||
|
dci_tx.format = SRSRAN_DCI_FORMAT1A;
|
||||||
|
dci_tx.cif_present = false;
|
||||||
|
dci_tx.is_pdcch_order = true;
|
||||||
|
dci_tx.preamble_idx = 0;
|
||||||
|
dci_tx.prach_mask_idx = 0;
|
||||||
|
|
||||||
|
srsran_dci_cfg_t cfg = {};
|
||||||
|
cfg.cif_enabled = false;
|
||||||
|
cfg.srs_request_enabled = false;
|
||||||
|
|
||||||
|
// Pack
|
||||||
|
srsran_dci_msg_t dci_msg = {};
|
||||||
|
TESTASSERT(srsran_dci_msg_pack_pdsch(&cell, &dl_sf, &cfg, &dci_tx, &dci_msg) == SRSRAN_SUCCESS);
|
||||||
|
|
||||||
|
// Unpack
|
||||||
|
srsran_dci_dl_t dci_rx = {};
|
||||||
|
TESTASSERT(srsran_dci_msg_unpack_pdsch(&cell, &dl_sf, &cfg, &dci_msg, &dci_rx) == SRSRAN_SUCCESS);
|
||||||
|
|
||||||
|
// To string
|
||||||
|
char str[128];
|
||||||
|
srsran_dci_dl_info(&dci_tx, str, sizeof(str));
|
||||||
|
printf("Tx: %s\n", str);
|
||||||
|
srsran_dci_dl_info(&dci_rx, str, sizeof(str));
|
||||||
|
printf("Rx: %s\n", str);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
TESTASSERT(memcmp(&dci_tx, &dci_rx, srsran_dci_format_sizeof(&cell, &dl_sf, &cfg, dci_tx.format)) == 0);
|
||||||
|
|
||||||
|
return SRSRAN_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
if (test_pdcch_orders() != SRSRAN_SUCCESS) {
|
||||||
|
return SRSRAN_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Success!\n");
|
||||||
|
|
||||||
|
return SRSRAN_SUCCESS;
|
||||||
|
}
|
Loading…
Reference in New Issue