Commit 81829065 authored by khalidhamdy's avatar khalidhamdy

Adding Schedule UE Spec BR Method

parent 7876b46f
// Add predefined macros for your project here. For example:
// #define THE_ANSWER 42
This source diff could not be displayed because it is too large. You can view the blob instead.
cmake_targets/lte_build_oai/build/CMakeFiles/R10.5
cmake_targets/lte_build_oai/build/CMakeFiles/R11.2
cmake_targets/lte_build_oai/build/CMakeFiles/Rel14
common
common/utils
common/utils/collection
common/utils/hashtable
common/utils/itti
common/utils/itti_analyzer/common
common/utils/itti_analyzer/libbuffers
common/utils/itti_analyzer/libparser
common/utils/itti_analyzer/libresolver
common/utils/itti_analyzer/libui
common/utils/msc
common/utils/T
common/utils/T/tracer
common/utils/T/tracer/filter
common/utils/T/tracer/gui
common/utils/T/tracer/logger
common/utils/T/tracer/view
openair1/PHY
openair1/PHY/CODING
openair1/PHY/INIT
openair1/PHY/LTE_ESTIMATION
openair1/PHY/LTE_REFSIG
openair1/PHY/LTE_TRANSPORT
openair1/PHY/MODULATION
openair1/PHY/TOOLS
openair1/SCHED
openair1/SIMULATION/ETH_TRANSPORT
openair1/SIMULATION/LTE_PHY
openair1/SIMULATION/RF
openair1/SIMULATION/TOOLS
openair2/COMMON
openair2/DOCS/TEMPLATES/CODE
openair2/ENB_APP
openair2/ENB_APP/CONTROL_MODULES/MAC
openair2/LAYER2
openair2/LAYER2/MAC
openair2/LAYER2/PDCP_v10.1.0
openair2/LAYER2/RLC
openair2/LAYER2/RLC/AM_v9.3.0
openair2/LAYER2/RLC/TM_v9.3.0
openair2/LAYER2/RLC/UM_v9.3.0
openair2/NAS/DRIVER/CELLULAR/CTL_TOOL
openair2/NAS/DRIVER/CELLULAR/NASMT
openair2/NAS/DRIVER/CELLULAR/NASRG
openair2/NAS/SIMU_CELLULAR
openair2/NETWORK_DRIVER/LITE
openair2/NETWORK_DRIVER/MESH
openair2/NETWORK_DRIVER/UE_IP
openair2/PHY_INTERFACE
openair2/RRC/L2_INTERFACE
openair2/RRC/LITE
openair2/RRC/LITE/MESSAGES
openair2/RRC/NAS
openair2/UTIL/ASYNC_IF
openair2/UTIL/BIGPHYS
openair2/UTIL/CLI
openair2/UTIL/FIFO
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/inc
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_abstraction
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_freelist
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_liblfds
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_queue
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_ringbuffer
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_slist
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_stack
openair2/UTIL/LFDS/liblfds6.1.1/test/src
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/inc
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/inc/liblfds700
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_btree_addonly_unbalanced
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_freelist
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_hash_addonly
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_list_addonly_ordered_singlylinked
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_list_addonly_singlylinked_unordered
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_misc
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_queue
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_queue_bounded_singleconsumer_singleproducer
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_ringbuffer
openair2/UTIL/LFDS/liblfds7.0.0/liblfds700/src/lfds700_stack
openair2/UTIL/LFDS/liblfds7.0.0/test/src
openair2/UTIL/LISTS
openair2/UTIL/LOG
openair2/UTIL/MATH
openair2/UTIL/MEM
openair2/UTIL/OCG
openair2/UTIL/OMG
openair2/UTIL/OMV
openair2/UTIL/OPT
openair2/UTIL/OSA
openair2/UTIL/OTG
openair2/UTIL/TIMER
openair2/UTIL/TRACE
openair2/X2AP
openair3/COMMON
openair3/GTPV1-U
openair3/GTPV1-U/nw-gtpv1u/include
openair3/GTPV1-U/nw-gtpv1u/shared
openair3/GTPV1-U/nw-gtpv1u/test-app/nw-helloworld
openair3/NAS/COMMON
openair3/NAS/COMMON/API/NETWORK
openair3/NAS/COMMON/EMM/MSG
openair3/NAS/COMMON/ESM/MSG
openair3/NAS/COMMON/IES
openair3/NAS/COMMON/UTIL
openair3/NAS/TEST/AS_SIMULATOR
openair3/NAS/TEST/NETWORK
openair3/NAS/TEST/USER
openair3/NAS/TOOLS
openair3/NAS/UE
openair3/NAS/UE/API/USER
openair3/NAS/UE/API/USIM
openair3/NAS/UE/EMM
openair3/NAS/UE/EMM/SAP
openair3/NAS/UE/ESM
openair3/NAS/UE/ESM/SAP
openair3/S1AP
openair3/SCTP
openair3/SECU
openair3/TEST
openair3/TEST/EPC_TEST
openair3/UDP
openair3/UTILS
targets/ARCH/BLADERF/USERSPACE/LIB
targets/ARCH/COMMON
targets/ARCH/ETHERNET/USERSPACE/LIB
targets/ARCH/EXMIMO/DEFS
targets/ARCH/EXMIMO/DRIVER/eurecom
targets/ARCH/EXMIMO/DRIVER/exmimo3
targets/ARCH/EXMIMO/DRIVER/telecomparistech
targets/ARCH/EXMIMO/USERSPACE/LIB
targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT
targets/ARCH/EXMIMO/USERSPACE/OCTAVE
targets/COMMON
targets/RT/USER
targets/RT/USER/TOOLS
targets/SIMU/PROC
targets/SIMU/USER
targets/TEST/PDCP
targets/TEST/ROHDE_SCHWARZ
\ No newline at end of file
// Add predefined macros for your project here. For example:
// #define THE_ANSWER 42
This source diff could not be displayed because it is too large. You can view the blob instead.
common/utils
common/utils/collection
common/utils/collection/hashtable
common/utils/itti
common/utils/itti_analyzer/common
common/utils/itti_analyzer/libbuffers
common/utils/itti_analyzer/libparser
common/utils/itti_analyzer/libresolver
common/utils/itti_analyzer/libui
common/utils/msc
openair-cn/COMMON
openair-cn/GTPV1-U
openair-cn/GTPV1-U/GTPUAH
openair-cn/GTPV1-U/nw-gtpv1u/include
openair-cn/GTPV1-U/nw-gtpv1u/shared
openair-cn/GTPV1-U/nw-gtpv1u/test-app/nw-helloworld
openair-cn/GTPV2-C/nwgtpv2c-0.11/include
openair-cn/GTPV2-C/nwgtpv2c-0.11/shared
openair-cn/GTPV2-C/nwgtpv2c-0.11/test-app/nw-egtping
openair-cn/GTPV2-C/nwgtpv2c-0.11/test-app/nw-helloworld
openair-cn/INTERTASK_INTERFACE
openair-cn/MME_APP
openair-cn/NAS
openair-cn/NAS/EURECOM-NAS/src
openair-cn/NAS/EURECOM-NAS/src/api/mme
openair-cn/NAS/EURECOM-NAS/src/api/network
openair-cn/NAS/EURECOM-NAS/src/api/user
openair-cn/NAS/EURECOM-NAS/src/api/usim
openair-cn/NAS/EURECOM-NAS/src/emm
openair-cn/NAS/EURECOM-NAS/src/emm/msg
openair-cn/NAS/EURECOM-NAS/src/emm/sap
openair-cn/NAS/EURECOM-NAS/src/esm
openair-cn/NAS/EURECOM-NAS/src/esm/msg
openair-cn/NAS/EURECOM-NAS/src/esm/sap
openair-cn/NAS/EURECOM-NAS/src/ies
openair-cn/NAS/EURECOM-NAS/src/include
openair-cn/NAS/EURECOM-NAS/src/util
openair-cn/NAS/EURECOM-NAS/tools
openair-cn/NAS/EURECOM-NAS/tst/as_simulator
openair-cn/NAS/EURECOM-NAS/tst/network
openair-cn/NAS/EURECOM-NAS/tst/user
openair-cn/OAI_EPC
openair-cn/OAI_SGW
openair-cn/OAISIM_MME
openair-cn/OPENAIRHSS/access_restriction
openair-cn/OPENAIRHSS/auc
openair-cn/OPENAIRHSS/db
openair-cn/OPENAIRHSS/s6a
openair-cn/OPENAIRHSS/tests
openair-cn/OPENAIRHSS/utils
openair-cn/S11
openair-cn/S1AP
openair-cn/S6A
openair-cn/SCTP
openair-cn/SECU
openair-cn/SGW-LITE
openair-cn/TEST
openair-cn/UDP
openair-cn/UTILS
openair-cn/UTILS/HASHTABLE
openair1/MAC_INTERFACE
openair1/PHY
openair1/PHY/CODING
openair1/PHY/INIT
openair1/PHY/LTE_ESTIMATION
openair1/PHY/LTE_REFSIG
openair1/PHY/LTE_TRANSPORT
openair1/PHY/MODULATION
openair1/PHY/TOOLS
openair1/SCHED
openair1/SIMULATION/ETH_TRANSPORT
openair1/SIMULATION/LTE_PHY
openair1/SIMULATION/RF
openair1/SIMULATION/TOOLS
openair2/COMMON
openair2/DOCS/TEMPLATES/CODE
openair2/ENB_APP
openair2/LAYER2
openair2/LAYER2/MAC
openair2/LAYER2/PDCP_v10.1.0
openair2/LAYER2/RLC
openair2/LAYER2/RLC/AM_v9.3.0
openair2/LAYER2/RLC/TM_v9.3.0
openair2/LAYER2/RLC/UM_v9.3.0
openair2/NAS
openair2/NAS/DRIVER/CELLULAR/CTL_TOOL
openair2/NAS/DRIVER/CELLULAR/NASMT
openair2/NAS/DRIVER/CELLULAR/NASRG
openair2/NAS/SIMU_CELLULAR
openair2/NETWORK_DRIVER/LITE
openair2/NETWORK_DRIVER/MESH
openair2/NETWORK_DRIVER/UE_IP
openair2/PHY_INTERFACE
openair2/RRC/L2_INTERFACE
openair2/RRC/LITE
openair2/RRC/LITE/MESSAGES
openair2/RRC/NAS
openair2/RRM_4_RRC_LITE/src
openair2/RRM_4_RRC_LITE/src/com
openair2/RRM_4_RRC_LITE/src/com/rrc
openair2/RRM_4_RRC_LITE/src/com/rrm
openair2/RRM_4_RRC_LITE/src/foreign/sockets-2.3.9.4
openair2/RRM_4_RRC_LITE/src/foreign/sql
openair2/RRM_4_RRC_LITE/src/foreign/tcpip
openair2/RRM_4_RRC_LITE/src/radio_resources
openair2/RRM_4_RRC_LITE/src/test
openair2/UTIL
openair2/UTIL/AT_COMMANDS
openair2/UTIL/BIGPHYS
openair2/UTIL/CLI
openair2/UTIL/FIFO
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/inc
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_abstraction
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_freelist
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_liblfds
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_queue
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_ringbuffer
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_slist
openair2/UTIL/LFDS/liblfds6.1.1/liblfds611/src/lfds611_stack
openair2/UTIL/LFDS/liblfds6.1.1/test/src
openair2/UTIL/LISTS
openair2/UTIL/LOG
openair2/UTIL/MATH
openair2/UTIL/MEM
openair2/UTIL/OCG
openair2/UTIL/OMG
openair2/UTIL/OMV
openair2/UTIL/OPT
openair2/UTIL/OSA
openair2/UTIL/OTG
openair2/UTIL/TIMER
openair2/UTIL/TRACE
openair2/X2AP
openair3/DOCS/TEMPLATES/CODE
openair3/MESH
openair3/MESH/RRM
openair3/MESH/RRM/EMUL
openair3/MESH/RRM/GRAPH
openair3/PMIPv6/freeradius-client-1.1.6
openair3/PMIPv6/freeradius-client-1.1.6/include
openair3/PMIPv6/freeradius-client-1.1.6/lib
openair3/PMIPv6/freeradius-client-1.1.6/src
openair3/PMIPv6/pmipv6-daemon-umip/include
openair3/PMIPv6/pmipv6-daemon-umip/include/linux
openair3/PMIPv6/pmipv6-daemon-umip/include/netinet
openair3/PMIPv6/pmipv6-daemon-umip/src
openair3/PMIPv6/pmipv6-daemon-umip/src/pmip
openair3/RAL-LTE/INTERFACE-802.21/INCLUDE
openair3/RAL-LTE/LTE_RAL_ENB/INCLUDE
openair3/RAL-LTE/LTE_RAL_UE/INCLUDE
openair3/RAL-LTE/RAL-DUMMY/INCLUDE
openairITS/mac/DOT11/include/crypto
openairITS/mac/DOT11/include/linux
openairITS/mac/DOT11/include/linux/bcma
openairITS/mac/DOT11/include/linux/spi
openairITS/mac/DOT11/include/linux/ssb
openairITS/mac/DOT11/include/linux/unaligned
openairITS/mac/DOT11/include/linux/usb
openairITS/mac/DOT11/include/N/pcmcia
openairITS/mac/DOT11/include/N/trace
openairITS/mac/DOT11/include/net
openairITS/mac/DOT11/net/mac80211
openairITS/mac/DOT11/net/wireless
openairITS/phy/DOT11
openairITS/phy/DRIVERS
targets/ARCH/BLADERF/USERSPACE/LIB
targets/ARCH/COMMON
targets/ARCH/ETHERNET/USERSPACE/LIB
targets/ARCH/EXMIMO/DEFS
targets/ARCH/EXMIMO/DRIVER/eurecom
targets/ARCH/EXMIMO/DRIVER/exmimo3
targets/ARCH/EXMIMO/DRIVER/telecomparistech
targets/ARCH/EXMIMO/USERSPACE/LIB
targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT
targets/COMMON
targets/RT/USER
targets/RT/USER/TOOLS
targets/SIMU/PROC
targets/SIMU/USER
targets/TEST/PDCP
targets/TEST/ROHDE_SCHWARZ
\ No newline at end of file
...@@ -425,7 +425,7 @@ void getRepetition(UE_TEMPLATE * pue_template,unsigned int *maxRep , unsigned i ...@@ -425,7 +425,7 @@ void getRepetition(UE_TEMPLATE * pue_template,unsigned int *maxRep , unsigned i
AssertFatal(epdcch_setconfig_r11->ext2 && epdcch_setconfig_r11->ext2->mpdcch_config_r13 ," mpdcch config not found") ; AssertFatal(epdcch_setconfig_r11->ext2 && epdcch_setconfig_r11->ext2->mpdcch_config_r13 ," mpdcch config not found") ;
*maxRep = epdcch_setconfig_r11->ext2->mpdcch_config_r13->choice.setup.csi_NumRepetitionCE_r13 ; *maxRep = epdcch_setconfig_r11->ext2->mpdcch_config_r13->choice.setup.mpdcch_NumRepetition_r13 ;
* narrowBandindex = epdcch_setconfig_r11->ext2->mpdcch_config_r13->choice.setup.mpdcch_Narrowband_r13 ; * narrowBandindex = epdcch_setconfig_r11->ext2->mpdcch_config_r13->choice.setup.mpdcch_Narrowband_r13 ;
...@@ -461,7 +461,7 @@ void getRepetition(UE_TEMPLATE * pue_template,unsigned int *maxRep , unsigned i ...@@ -461,7 +461,7 @@ void getRepetition(UE_TEMPLATE * pue_template,unsigned int *maxRep , unsigned i
} }
/*
void void
schedule_ue_spec_br( schedule_ue_spec_br(
...@@ -601,6 +601,8 @@ schedule_ue_spec_br( ...@@ -601,6 +601,8 @@ schedule_ue_spec_br(
for (UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) for (UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id])
{ {
if (!UE_list->UE_template[CC_id][UE_id].rach_resource_type ) // do the following scheduling only if the UE is emtc
continue ;
continue_flag = 0; // reset the flag to allow allocation for the remaining UEs continue_flag = 0; // reset the flag to allow allocation for the remaining UEs
rnti = UE_RNTI(module_idP, UE_id); rnti = UE_RNTI(module_idP, UE_id);
...@@ -776,26 +778,26 @@ schedule_ue_spec_br( ...@@ -776,26 +778,26 @@ schedule_ue_spec_br(
vrb_map[first_rb + 5] = 1; vrb_map[first_rb + 5] = 1;
if ((UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt == 0) && if ((UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt == 0) &&
(mpdcch_sf_condition(eNB, CC_idP, frameP, subframeP, rmax, TYPEUESPEC) > 0)) (mpdcch_sf_condition(eNB, CC_id, frameP, subframeP, rmax, TYPEUESPEC) > 0))
{ {
// MPDCCH configuration for RAR // MPDCCH configuration for RAR
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t)); memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t));
dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_MPDCCH_PDU_TYPE; dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_MPDCCH_PDU_TYPE;
dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_mpdcch_pdu)); dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_mpdcch_pdu));
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.dci_format = (UE_template[CC_id][UE_id].rach_resource_type > 1) ? 11 : 10; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.dci_format = (UE_list->UE_template[CC_id][UE_id].rach_resource_type > 1) ? 11 : 10;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_narrow_band = narrowBandindex_index; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_narrow_band = narrowBandindex_index;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_prb_pairs = 6; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_prb_pairs = 6;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_assignment = 0; // Note: this can be dynamic dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_assignment = 0; // Note: this can be dynamic
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_tansmission_type = 1; // imposed (9.1.5 in 213) for Type 2 Common search space dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_tansmission_type = 1; // imposed (9.1.5 in 213) for Type 2 Common search space
AssertFatal(cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL, AssertFatal(cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL,
"cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n"); "cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n");
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 16; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4 dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 16; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 4; // other-RNTI dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 4; // other-RNTI
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = rnti; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = rnti;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (UE_list->UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.drms_scrambling_init = cc[CC_id].physCellId; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.drms_scrambling_init = cc[CC_id].physCellId;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.initial_transmission_sf_io = (frameP * 10) + subframeP; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.initial_transmission_sf_io = (frameP * 10) + subframeP;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.transmission_power = 6000; // 0dB dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.transmission_power = 6000; // 0dB
...@@ -826,7 +828,7 @@ schedule_ue_spec_br( ...@@ -826,7 +828,7 @@ schedule_ue_spec_br(
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.direct_indication = 0; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.direct_indication = 0;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.total_dci_length_including_padding = 0; // this is not needed by OAI L1, but should be filled in dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.total_dci_length_including_padding = 0; // this is not needed by OAI L1, but should be filled in
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_tx_antenna_ports = 1; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_tx_antenna_ports = 1;
UE_template[CC_id][UE_id].mpdcch_repetition_cnt++; UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt++;
dl_req->number_pdu++; dl_req->number_pdu++;
...@@ -846,31 +848,31 @@ schedule_ue_spec_br( ...@@ -846,31 +848,31 @@ schedule_ue_spec_br(
S_DL_SCHEDULED); S_DL_SCHEDULED);
} //repetition_count==0 && SF condition met } //repetition_count==0 && SF condition met
else if (UE_template[CC_id][UE_id].msg2_mpdcch_repetition_cnt > 0) else if (UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt > 0)
{ {
// we're in a stream of repetitions // we're in a stream of repetitions
UE_template[CC_id][UE_id].mpdcch_repetition_cnt++; UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt++;
if (UE_template[CC_id][UE_id].mpdcch_repetition_cnt == reps) if (UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt == reps)
{ {
// this is the last mpdcch repetition // this is the last mpdcch repetition
if (cc[CC_idP].tdd_Config == NULL) { // FDD case if (cc[CC_id].tdd_Config == NULL) { // FDD case
// wait 2 subframes for PDSCH transmission // wait 2 subframes for PDSCH transmission
if (subframeP > 7) UE_template[CC_id][UE_id].Msg2_frame = (frameP + 1) & 1023; if (subframeP > 7) UE_list->UE_template[CC_id][UE_id].Msg2_frame = (frameP + 1) & 1023;
else UE_template[CC_id][UE_id].Msg2_frame = frameP; else UE_list->UE_template[CC_id][UE_id].Msg2_frame = frameP;
UE_template[CC_id][UE_id].Msg2_subframe = (subframeP + 2) % 10; // +2 is the "n+x" from Section 7.1.11 in 36.213 UE_list->UE_template[CC_id][UE_id].Msg2_subframe = (subframeP + 2) % 10; // +2 is the "n+x" from Section 7.1.11 in 36.213
} }
else { else {
AssertFatal(1 == 0, "TDD case not done yet\n"); AssertFatal(1 == 0, "TDD case not done yet\n");
} }
} // mpdcch_repetition_count == reps } // mpdcch_repetition_count == reps
if ((UE_template[CC_id][UE_id].Msg2_frame == frameP) && (UE_template[CC_id][UE_id].Msg2_subframe == subframeP)) { if ((UE_list->UE_template[CC_id][UE_id].Msg2_frame == frameP) && (UE_list->UE_template[CC_id][UE_id].Msg2_subframe == subframeP)) {
// Program PDSCH // Program PDSCH
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t)); memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t));
dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DLSCH_PDU_TYPE; dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DLSCH_PDU_TYPE;
dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_dlsch_pdu)); dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_dlsch_pdu));
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = eNB->pdu_index[CC_idP]; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = eNB->pdu_index[CC_id];
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti = rnti; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti = rnti;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_allocation_type = 4; // format 6-1A dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_allocation_type = 4; // format 6-1A
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.virtual_resource_block_assignment_flag = 0; // localized dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.virtual_resource_block_assignment_flag = 0; // localized
...@@ -893,7 +895,7 @@ schedule_ue_spec_br( ...@@ -893,7 +895,7 @@ schedule_ue_spec_br(
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1;
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ; // dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = (UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2;; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = (UE_list->UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2;;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 2; // not SI message dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 2; // not SI message
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = (10 * frameP) + subframeP; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = (10 * frameP) + subframeP;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.drms_table_flag = 0; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.drms_table_flag = 0;
...@@ -956,6 +958,9 @@ schedule_ue_spec_br( ...@@ -956,6 +958,9 @@ schedule_ue_spec_br(
rlc_status.bytes_in_buffer = 0; rlc_status.bytes_in_buffer = 0;
// Now check RLC information to compute number of required RBs // Now check RLC information to compute number of required RBs
// get maximum TBS size for RLC request // get maximum TBS size for RLC request
TBS = 408; TBS = 408;
// check first for RLC data on DCCH // check first for RLC data on DCCH
// add the length for all the control elements (timing adv, drx, etc) : header + payload // add the length for all the control elements (timing adv, drx, etc) : header + payload
...@@ -1155,6 +1160,9 @@ schedule_ue_spec_br( ...@@ -1155,6 +1160,9 @@ schedule_ue_spec_br(
//else { //else {
// nb_rb = min_rb_unit[CC_id]; // nb_rb = min_rb_unit[CC_id];
//} //}
//[khalid]: maximum MCS (7 or 15) depend on the DCI formate used from UE_list->UE_template[CC_id [UE_id].rach_resource_type
mcs = 4; mcs = 4;
nb_rb = 6; nb_rb = 6;
...@@ -1368,7 +1376,7 @@ schedule_ue_spec_br( ...@@ -1368,7 +1376,7 @@ schedule_ue_spec_br(
unsigned int first_rb, rep, reps; unsigned int first_rb, rep, reps;
// rmax from RRC connection setup // rmax from RRC connection setup
getRepetition(&UE_template[CC_id][UE_id], &rmax, &narrowBandindex_index, &first_rb); getRepetition(&UE_list->UE_template[CC_id][UE_id], &rmax, &narrowBandindex_index, &first_rb);
// choose r3 by default for RAR (Table 9.1.5-5) // choose r3 by default for RAR (Table 9.1.5-5)
rep = 2; rep = 2;
...@@ -1384,28 +1392,28 @@ schedule_ue_spec_br( ...@@ -1384,28 +1392,28 @@ schedule_ue_spec_br(
vrb_map[first_rb + 4] = 1; vrb_map[first_rb + 4] = 1;
vrb_map[first_rb + 5] = 1; vrb_map[first_rb + 5] = 1;
if ((UE_template[CC_id][UE_id].mpdcch_repetition_cnt == 0) && if ((UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt == 0) &&
(mpdcch_sf_condition(eNB, CC_idP, frameP, subframeP, rmax, TYPEUESPEC) > 0)) (mpdcch_sf_condition(eNB, CC_id, frameP, subframeP, rmax, TYPEUESPEC) > 0))
{ {
// MPDCCH configuration for RAR // MPDCCH configuration for RAR
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t)); memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t));
dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_MPDCCH_PDU_TYPE; dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_MPDCCH_PDU_TYPE;
dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_mpdcch_pdu)); dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_mpdcch_pdu));
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.dci_format = (UE_template[CC_id][UE_id].rach_resource_type > 1) ? 11 : 10; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.dci_format = (UE_list->UE_template[CC_id][UE_id].rach_resource_type > 1) ? 11 : 10;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_narrow_band = narrowBandindex_index; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_narrow_band = narrowBandindex_index;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_prb_pairs = 6; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_prb_pairs = 6;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_assignment = 0; // Note: this can be dynamic dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_assignment = 0; // Note: this can be dynamic
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_tansmission_type = 1; // imposed (9.1.5 in 213) for Type 2 Common search space dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mpdcch_tansmission_type = 1; // imposed (9.1.5 in 213) for Type 2 Common search space
AssertFatal(cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL, AssertFatal(cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL,
"cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n"); "cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n");
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 16; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4 dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 16; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 4; // other-RNTI dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 4; // other-RNTI
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = rnti; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = rnti;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (UE_list->UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.drms_scrambling_init = cc[CC_idP].physCellId; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.drms_scrambling_init = cc[CC_id].physCellId;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.initial_transmission_sf_io = (frameP * 10) + subframeP; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.initial_transmission_sf_io = (frameP * 10) + subframeP;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.transmission_power = 6000; // 0dB dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.transmission_power = 6000; // 0dB
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_coding = getRIV(6, 0, 6); // Note: still to be checked if it should not be (getRIV(N_RB_DL,first_rb,6)) : Check nFAPI specifications and what is done L1 with this parameter dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_coding = getRIV(6, 0, 6); // Note: still to be checked if it should not be (getRIV(N_RB_DL,first_rb,6)) : Check nFAPI specifications and what is done L1 with this parameter
...@@ -1435,7 +1443,7 @@ schedule_ue_spec_br( ...@@ -1435,7 +1443,7 @@ schedule_ue_spec_br(
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.direct_indication = 0; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.direct_indication = 0;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.total_dci_length_including_padding = 0; // this is not needed by OAI L1, but should be filled in dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.total_dci_length_including_padding = 0; // this is not needed by OAI L1, but should be filled in
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_tx_antenna_ports = 1; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.number_of_tx_antenna_ports = 1;
UE_template[CC_id][UE_id].mpdcch_repetition_cnt++; UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt++;
dl_req->number_pdu++; dl_req->number_pdu++;
...@@ -1458,31 +1466,31 @@ schedule_ue_spec_br( ...@@ -1458,31 +1466,31 @@ schedule_ue_spec_br(
eNB->TX_req[CC_id].tx_request_body.number_of_pdus++; eNB->TX_req[CC_id].tx_request_body.number_of_pdus++;
} //repetition_count==0 && SF condition met } //repetition_count==0 && SF condition met
else if (UE_template[CC_id][UE_id].msg2_mpdcch_repetition_cnt > 0) else if (UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt > 0)
{ {
// we're in a stream of repetitions // we're in a stream of repetitions
UE_template[CC_id][UE_id].mpdcch_repetition_cnt++; UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt++;
if (UE_template[CC_id][UE_id].mpdcch_repetition_cnt == reps) if (UE_list->UE_template[CC_id][UE_id].mpdcch_repetition_cnt == reps)
{ {
// this is the last mpdcch repetition // this is the last mpdcch repetition
if (cc[CC_idP].tdd_Config == NULL) { // FDD case if (cc[CC_id].tdd_Config == NULL) { // FDD case
// wait 2 subframes for PDSCH transmission // wait 2 subframes for PDSCH transmission
if (subframeP > 7) UE_template[CC_id][UE_id].Msg2_frame = (frameP + 1) & 1023; if (subframeP > 7) UE_list->UE_template[CC_id][UE_id].Msg2_frame = (frameP + 1) & 1023;
else UE_template[CC_id][UE_id].Msg2_frame = frameP; else UE_list->UE_template[CC_id][UE_id].Msg2_frame = frameP;
UE_template[CC_id][UE_id].Msg2_subframe = (subframeP + 2) % 10; // +2 is the "n+x" from Section 7.1.11 in 36.213 UE_list->UE_template[CC_id][UE_id].Msg2_subframe = (subframeP + 2) % 10; // +2 is the "n+x" from Section 7.1.11 in 36.213
} }
else { else {
AssertFatal(1 == 0, "TDD case not done yet\n"); AssertFatal(1 == 0, "TDD case not done yet\n");
} }
} // mpdcch_repetition_count == reps } // mpdcch_repetition_count == reps
if ((UE_template[CC_id][UE_id].Msg2_frame == frameP) && (UE_template[CC_id][UE_id].Msg2_subframe == subframeP)) { if ((UE_list->UE_template[CC_id][UE_id].Msg2_frame == frameP) && (UE_list->UE_template[CC_id][UE_id].Msg2_subframe == subframeP)) {
// Program PDSCH // Program PDSCH
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t)); memset((void*)dl_config_pdu, 0, sizeof(nfapi_dl_config_request_pdu_t));
dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DLSCH_PDU_TYPE; dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DLSCH_PDU_TYPE;
dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_dlsch_pdu)); dl_config_pdu->pdu_size = (uint8_t)(2 + sizeof(nfapi_dl_config_dlsch_pdu));
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = eNB->pdu_index[CC_idP]; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = eNB->pdu_index[CC_id];
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti = rnti; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti = rnti;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_allocation_type = 4; // format 6-1A dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_allocation_type = 4; // format 6-1A
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.virtual_resource_block_assignment_flag = 0; // localized dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.virtual_resource_block_assignment_flag = 0; // localized
...@@ -1505,7 +1513,7 @@ schedule_ue_spec_br( ...@@ -1505,7 +1513,7 @@ schedule_ue_spec_br(
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1;
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ; // dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = (UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2;; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = (UE_list->UE_template[CC_id][UE_id].rach_resource_type < 3) ? 1 : 2;;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 2; // not SI message dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 2; // not SI message
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = (10 * frameP) + subframeP; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = (10 * frameP) + subframeP;
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.drms_table_flag = 0; dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.drms_table_flag = 0;
...@@ -1574,7 +1582,7 @@ schedule_ue_spec_br( ...@@ -1574,7 +1582,7 @@ schedule_ue_spec_br(
} }
*/
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment