From 6313ded5834546f7fd00869475611c0ec3998b6c Mon Sep 17 00:00:00 2001 From: laurent <laurent.thomas@open-cells.com> Date: Mon, 12 Aug 2019 21:32:46 +0200 Subject: [PATCH] UE primary sync ok, DU upper layers disabled, UE DCI decoding nok (partial) --- executables/main-fs6.c | 5 +++++ executables/main-ocp.c | 11 ++++++----- executables/split_headers.h | 1 + executables/transport_split.c | 3 +-- targets/COMMON/create_tasks.c | 5 ++++- targets/RT/USER/lte-softmodem.c | 6 ++++-- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/executables/main-fs6.c b/executables/main-fs6.c index ace3f7fd1..cc94ea42f 100644 --- a/executables/main-fs6.c +++ b/executables/main-fs6.c @@ -485,6 +485,8 @@ void phy_procedures_eNB_TX_process(uint8_t *bufferZone, int nbBlocks, PHY_VARS_e eNB->pdcch_vars[subframe&1].num_pdcch_symbols=hDL(bufferZone)->num_pdcch_symbols; eNB->pdcch_vars[subframe&1].num_dci=hDL(bufferZone)->num_dci; uint8_t num_mdci = eNB->mpdcch_vars[subframe&1].num_dci = hDL(bufferZone)->num_mdci; + eNB->pbch_configured=true; + memcpy(eNB->pbch_pdu,hDL(bufferZone)->pbch_pdu, 4); // Remove all scheduled DL, we will populate from the CU sending for (int UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) { @@ -684,6 +686,8 @@ void phy_procedures_eNB_TX_extract(uint8_t *bufferZone, PHY_VARS_eNB *eNB, L1_rx uint8_t num_pdcch_symbols = eNB->pdcch_vars[subframe&1].num_pdcch_symbols; uint8_t num_dci = eNB->pdcch_vars[subframe&1].num_dci; uint8_t num_mdci = eNB->mpdcch_vars[subframe&1].num_dci; + memcpy(hDL(bufferZone)->pbch_pdu,eNB->pbch_pdu,4); + LOG_D(PHY,"num_pdcch_symbols %"PRIu8",number dci %"PRIu8"\n",num_pdcch_symbols, num_dci); if (NFAPI_MODE==NFAPI_MONOLITHIC || NFAPI_MODE==NFAPI_MODE_PNF) { @@ -691,6 +695,7 @@ void phy_procedures_eNB_TX_extract(uint8_t *bufferZone, PHY_VARS_eNB *eNB, L1_rx hDL(bufferZone)->num_dci=num_dci; hDL(bufferZone)->num_mdci=num_mdci; hDL(bufferZone)->amp=AMP; + LOG_D(PHY, "pbch configured: %d\n", eNB->pbch_configured); } if (do_meas==1) stop_meas(&eNB->dlsch_common_and_dci); diff --git a/executables/main-ocp.c b/executables/main-ocp.c index 3f6d057d8..432ec6025 100644 --- a/executables/main-ocp.c +++ b/executables/main-ocp.c @@ -109,9 +109,10 @@ void init_RU_proc(RU_t *ru) { if (fs6) { if ( strncasecmp(fs6,"cu", 2) == 0 ) - threadCreate(&t, cu_fs6, (void *)ru, "MainCu", -1, OAI_PRIORITY_RT_MAX); - else if ( strncasecmp(fs6,"du", 2) == 0 ) - threadCreate(&t, du_fs6, (void *)ru, "MainDu", -1, OAI_PRIORITY_RT_MAX); + threadCreate(&t, cu_fs6, (void *)ru, "MainCu", -1, OAI_PRIORITY_RT_MAX); + else if ( strncasecmp(fs6,"du", 2) == 0 ) { + threadCreate(&t, du_fs6, (void *)ru, "MainDu", -1, OAI_PRIORITY_RT_MAX); + } else AssertFatal(false, "environement variable fs6 is not cu or du"); } else @@ -638,8 +639,8 @@ void rx_rf(RU_t *ru,int *frame,int *subframe) { } else { if (proc->timestamp_rx - old_ts != fp->samples_per_tti) { LOG_E(HW,"impossible shift in RFSIM\n"); - ru->ts_offset += (proc->timestamp_rx - old_ts - fp->samples_per_tti); - proc->timestamp_rx = ts-ru->ts_offset; + //ru->ts_offset += (proc->timestamp_rx - old_ts - fp->samples_per_tti); + //proc->timestamp_rx = ts-ru->ts_offset; } } diff --git a/executables/split_headers.h b/executables/split_headers.h index 59909e524..42202d546 100644 --- a/executables/split_headers.h +++ b/executables/split_headers.h @@ -52,6 +52,7 @@ typedef struct { } fs6_ul_t; typedef struct { + uint8_t pbch_pdu[4]; int num_pdcch_symbols; int num_dci; DCI_ALLOC_t dci_alloc[32]; diff --git a/executables/transport_split.c b/executables/transport_split.c index 38cd9c343..c9d848ef1 100644 --- a/executables/transport_split.c +++ b/executables/transport_split.c @@ -155,7 +155,6 @@ int sendSubFrame(UDPsock_t *sock, void *bufferZone, ssize_t secondHeaderSize, ui nbBlocks--; } while (nbBlocks); - LOG_D(HW,"Sent: TS: %lu, frame: %d, subframe: %d\n", - UDPheader->timestamp, *(((int *)UDPheader)+1), *(((int *)UDPheader)+2)); + LOG_D(HW,"Sent: TS: %lu\n", UDPheader->timestamp); return 0; } diff --git a/targets/COMMON/create_tasks.c b/targets/COMMON/create_tasks.c index cfc2bc221..58be63a84 100644 --- a/targets/COMMON/create_tasks.c +++ b/targets/COMMON/create_tasks.c @@ -49,6 +49,9 @@ int create_tasks(uint32_t enb_nb) { int rc; if (enb_nb == 0) return 0; + bool fs6Du=false; + if ( getenv("fs6") != NULL && strncasecmp( getenv("fs6"), "du", 2) == 0 ) + fs6Du=true; LOG_I(ENB_APP, "Creating ENB_APP eNB Task\n"); rc = itti_create_task (TASK_ENB_APP, eNB_app_task, NULL); @@ -64,7 +67,7 @@ int create_tasks(uint32_t enb_nb) { } - if (EPC_MODE_ENABLED && !NODE_IS_DU(type)) { + if (EPC_MODE_ENABLED && !NODE_IS_DU(type) && !fs6Du ) { rc = itti_create_task(TASK_S1AP, s1ap_eNB_task, NULL); AssertFatal(rc >= 0, "Create task for S1AP failed\n"); if (!(get_softmodem_params()->emulate_rf)){ diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 109c0afdd..85862f943 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -593,8 +593,10 @@ int main( int argc, char **argv ) { /* initializes PDCP and sets correct RLC Request/PDCP Indication callbacks * for monolithic/F1 modes */ - if ( getenv("fs6") == NULL || strncasecmp( getenv("fs6"), "du", 2) != 0 ) - init_pdcp(); + //if ( getenv("fs6") != NULL && strncasecmp( getenv("fs6"), "du", 2) == 0 ) + //RC.rrc[0]->node_type=ngran_eNB_DU; + + init_pdcp(); if (create_tasks(1) < 0) { printf("cannot create ITTI tasks\n"); -- 2.26.2