added edci.c and minor configuration changes
This commit is contained in:
@@ -222,7 +222,7 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
|
||||
# Debug related options
|
||||
#########################################
|
||||
add_boolean_option(ASN_DEBUG False "ASN1 coder/decoder Debug")
|
||||
add_boolean_option(EMIT_ASN_DEBUG False "ASN1 coder/decoder Debug")
|
||||
add_boolean_option(EMIT_ASN_DEBUG False "ASN1 coder/decoder Debug")
|
||||
add_boolean_option(MSG_PRINT False "print debug messages")
|
||||
add_boolean_option(DISABLE_XER_PRINT False "print XER Format")
|
||||
add_boolean_option(XER_PRINT False "print XER Format")
|
||||
|
||||
Executable
+122
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
||||
* the OAI Public License, Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.openairinterface.org/?page_id=698
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*-------------------------------------------------------------------------------
|
||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/*! \file PHY/LTE_TRANSPORT/dci.c
|
||||
* \brief Implements PDCCH physical channel TX/RX procedures (36.211) and DCI encoding/decoding (36.212/36.213). Current LTE compliance V8.6 2009-03.
|
||||
* \author R. Knopp
|
||||
* \date 2011
|
||||
* \version 0.1
|
||||
* \company Eurecom
|
||||
* \email: knopp@eurecom.fr
|
||||
* \note
|
||||
* \warning
|
||||
*/
|
||||
#ifdef USER_MODE
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#include "PHY/defs.h"
|
||||
#include "PHY/extern.h"
|
||||
#include "SCHED/defs.h"
|
||||
#include "SIMULATION/TOOLS/defs.h" // for taus
|
||||
#include "PHY/sse_intrin.h"
|
||||
|
||||
#include "assertions.h"
|
||||
#include "T.h"
|
||||
#include "UTIL/LOG/log.h"
|
||||
|
||||
//#define DEBUG_DCI_ENCODING 1
|
||||
//#define DEBUG_DCI_DECODING 1
|
||||
//#define DEBUG_PHY
|
||||
|
||||
typedef struct {
|
||||
uint8_t num_dci;
|
||||
mDCI_ALLOC_t mdci_alloc[32];
|
||||
} LTE_eNB_MPDCCH;
|
||||
|
||||
typedef struct {
|
||||
/// Length of DCI in bits
|
||||
uint8_t dci_length;
|
||||
/// Aggregation level
|
||||
uint8_t L;
|
||||
/// Position of first CCE of the dci
|
||||
int firstCCE;
|
||||
/// flag to indicate that this is a RA response
|
||||
boolean_t ra_flag;
|
||||
/// rnti
|
||||
rnti_t rnti;
|
||||
/// Format
|
||||
DCI_format_t format;
|
||||
/// harq process index
|
||||
uint8_t harq_pid;
|
||||
/// Narrowband index
|
||||
uint8_t narrowband;
|
||||
/// number of PRB pairs for MPDCCH
|
||||
uint8_t number_of_prb_pairs;
|
||||
/// mpdcch resource assignement (0=localized,1=distributed)
|
||||
uint8_t resource_block_assignment;
|
||||
/// transmission type
|
||||
uint8_t transmission_type;
|
||||
/// mpdcch start symbol
|
||||
uint8_t start_symbol;
|
||||
/// CE mode (1=ModeA,2=ModeB)
|
||||
uint8_t ce_mode;
|
||||
/// 0-503 n_EPDCCHid_i
|
||||
uint16_t dmrs_scrambling_init;
|
||||
/// Absolute subframe of the initial transmission (0-10239)
|
||||
uint16_t initial_transmission_sf_io;
|
||||
/// DCI pdu
|
||||
uint8_t dci_pdu[8];
|
||||
} mDCI_ALLOC_t;
|
||||
|
||||
void generate_edci_top(PHY_VARS_eNB *eNB, int frame, int subframe) {
|
||||
|
||||
}
|
||||
|
||||
void generate_mdci_top(PHY_VARS_eNB *eNB, int frame, int subframe) {
|
||||
|
||||
LTE_eNB_MPDCCH *mpdcch= &eNB->mpdcch_vars[subframe&2];
|
||||
mDCI_ALLOC_t *mdci;
|
||||
uint8_t e[DCI_BITS_MAX];
|
||||
|
||||
for (i=0;i<mpdcch->num_dci;i++) {
|
||||
mdci = &mdpcch->mdci_alloc[i];
|
||||
|
||||
// Assume 4 EREG/ECCE case (normal prefix)
|
||||
AssertFatal(eNB->frame_parms.frame_type==FDD,"TDD is not yet supported for MPDCCH\n");
|
||||
|
||||
// 9 REs/EREG => 36 REs/ECCE => 72 bits/ECCE
|
||||
generate_dci0(mdci->dci_pdu,
|
||||
e+(72*mdci->firstCCE),
|
||||
mdci_length,
|
||||
mdci->L,
|
||||
mdci->rnti);
|
||||
|
||||
// compute MPDCCH format based on parameters from NFAPI
|
||||
AssertFatal(mdci->reps>0,"mdci->reps==0\n");
|
||||
if (reps==0) { // table 6.8A.1-1
|
||||
AssertFatal(eNB->frame_parms->Ncp == NORMAL,"Extended Prefix not yet supported for MPDCCH\n");
|
||||
N_ECCE_EREG = 4;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2461,7 +2461,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms1000;
|
||||
break;
|
||||
|
||||
case 3110:
|
||||
case 3000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms3000;
|
||||
break;
|
||||
|
||||
@@ -2481,7 +2481,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms20000;
|
||||
break;
|
||||
|
||||
case 31100:
|
||||
case 30000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms30000;
|
||||
break;
|
||||
|
||||
@@ -3761,7 +3761,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms1000;
|
||||
break;
|
||||
|
||||
case 3110:
|
||||
case 3000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms3000;
|
||||
break;
|
||||
|
||||
@@ -3781,7 +3781,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms20000;
|
||||
break;
|
||||
|
||||
case 31100:
|
||||
case 30000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms30000;
|
||||
break;
|
||||
|
||||
|
||||
@@ -1025,10 +1025,10 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1 = calloc(1, sizeof(struct RACH_ConfigCommon__ext1));
|
||||
memset((*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1, 0, sizeof(struct RACH_ConfigCommon__ext1));
|
||||
|
||||
if (rrconfig->rach_maxHARQ_Msg3Tx)
|
||||
if (rrconfig->preambleTransMax_CE_r13)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->preambleTransMax_CE_r13 = calloc(1, sizeof(PreambleTransMax_t));
|
||||
*(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->preambleTransMax_CE_r13 = rrconfig->rach_maxHARQ_Msg3Tx; // to be re-initialized when we find the enum
|
||||
*(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->preambleTransMax_CE_r13 = *rrconfig->preambleTransMax_CE_r13; // to be re-initialized when we find the enum
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1176,9 +1176,9 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
// LTE-M - +Kogo
|
||||
(*sib2)->radioResourceConfigCommon.ext4 = calloc(1, sizeof(struct RadioResourceConfigCommonSIB__ext4));
|
||||
memset((*sib2)->radioResourceConfigCommon.ext4, 0, sizeof(struct RadioResourceConfigCommonSIB__ext4));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310 = calloc(1, sizeof(BCCH_Config_v1310_t));
|
||||
memset((*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310, 0, sizeof(BCCH_Config_v1310_t));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310->modificationPeriodCoeff_v1310 = BCCH_Config_v1310__modificationPeriodCoeff_v1310_n64;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310 = NULL; //calloc(1, sizeof(BCCH_Config_v1310_t));
|
||||
//memset((*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310, 0, sizeof(BCCH_Config_v1310_t));
|
||||
//(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310->modificationPeriodCoeff_v1310 = BCCH_Config_v1310__modificationPeriodCoeff_v1310_n64;
|
||||
|
||||
if (configuration->pcch_config_v1310)
|
||||
{
|
||||
|
||||
@@ -146,7 +146,7 @@ eNBs =
|
||||
|
||||
# SIB23
|
||||
frame_type = "FDD";
|
||||
preambleTransMax_CE_r13 = 10;
|
||||
preambleTransMax_CE_r13 = 6;
|
||||
|
||||
# max 4
|
||||
rach_CE_LevelInfoList_r13 =
|
||||
@@ -231,9 +231,9 @@ eNBs =
|
||||
prach_config_index = 3;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 3;
|
||||
pucch_delta_shift = 2;
|
||||
pucch_nRB_CQI = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -27;
|
||||
@@ -245,7 +245,7 @@ eNBs =
|
||||
pusch_groupHoppingEnabled = "ENABLE";
|
||||
pusch_groupAssignment = 0;
|
||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||
pusch_nDMRS1 = 1;
|
||||
pusch_nDMRS1 = 0;
|
||||
phich_duration = "NORMAL";
|
||||
phich_resource = "ONESIXTH";
|
||||
srs_enable = "DISABLE";
|
||||
@@ -258,7 +258,7 @@ eNBs =
|
||||
pucch_deltaF_Format2 = "deltaF0";
|
||||
pucch_deltaF_Format2a = "deltaF0";
|
||||
pucch_deltaF_Format2b = "deltaF0";
|
||||
rach_numberOfRA_Preambles = 64;
|
||||
rach_numberOfRA_Preambles = 60;
|
||||
rach_preamblesGroupAConfig = "DISABLE";
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
@@ -270,11 +270,11 @@ eNBs =
|
||||
pcch_nB = "oneT";
|
||||
bcch_modificationPeriodCoeff = 2;
|
||||
ue_TimersAndConstants_t300 = 1000;
|
||||
ue_TimersAndConstants_t301 = 1000;
|
||||
ue_TimersAndConstants_t310 = 1000;
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
ue_TimersAndConstants_t301 = 400;
|
||||
ue_TimersAndConstants_t310 = 50;
|
||||
ue_TimersAndConstants_t311 = 30000;
|
||||
ue_TimersAndConstants_n310 = 1;
|
||||
ue_TimersAndConstants_n311 = 10;
|
||||
ue_TransmissionMode = 1;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user