Commit 3852320a authored by francescomani's avatar francescomani

improvements in ul_port_config function

parent a04e7af6
......@@ -268,18 +268,11 @@ float nr_get_Pcmax(int p_Max,
float nr_get_Pcmin(int bandwidth_index);
void set_antenna_port_parameters(fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_pdu, int n_cw, long *max_length, long *dmrs, int ant);
int get_sum_delta_pucch(NR_UE_MAC_INST_t *mac, int slot, frame_t frame);
uint8_t get_table_7_3_1_1_2_12_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_13_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_14_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_15_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_16_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_17_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_18_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_19_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_20_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_21_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_22_value(int ap, int idx);
uint8_t get_table_7_3_1_1_2_23_value(int ap, int idx);
void ul_ports_config(NR_UE_MAC_INST_t *mac,
int *n_front_load_symb,
nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
dci_pdu_rel15_t *dci,
nr_dci_format_t dci_format);
/* Random Access */
/* \brief This function schedules the PRACH according to prach_ConfigurationIndex and TS 38.211 tables 6.3.3.2.x
......
......@@ -122,12 +122,6 @@ const uint8_t table_7_3_1_1_2_12[14][3] = {
{2,7,2}
};
uint8_t get_table_7_3_1_1_2_12_value(int ap, int idx)
{
AssertFatal(ap < 14 && idx < 3, "Invalid inputs for table_7_3_1_1_2_12\n");
return table_7_3_1_1_2_12[ap][idx];
}
const uint8_t table_7_3_1_1_2_13[10][4] = {
{1,0,1,1},
{2,0,1,1},
......@@ -141,24 +135,12 @@ const uint8_t table_7_3_1_1_2_13[10][4] = {
{2,2,6,2}
};
uint8_t get_table_7_3_1_1_2_13_value(int ap, int idx)
{
AssertFatal(ap < 10 && idx < 4, "Invalid inputs for table_7_3_1_1_2_13\n");
return table_7_3_1_1_2_13[ap][idx];
}
const uint8_t table_7_3_1_1_2_14[3][5] = {
{2,0,1,2,1},
{2,0,1,4,2},
{2,2,3,6,2}
};
uint8_t get_table_7_3_1_1_2_14_value(int ap, int idx)
{
AssertFatal(ap < 3 && idx < 5, "Invalid inputs for table_7_3_1_1_2_14\n");
return table_7_3_1_1_2_14[ap][idx];
}
const uint8_t table_7_3_1_1_2_15[4][6] = {
{2,0,1,2,3,1},
{2,0,1,4,5,2},
......@@ -166,12 +148,6 @@ const uint8_t table_7_3_1_1_2_15[4][6] = {
{2,0,2,4,6,2}
};
uint8_t get_table_7_3_1_1_2_15_value(int ap, int idx)
{
AssertFatal(ap < 4 && idx < 6, "Invalid inputs for table_7_3_1_1_2_15\n");
return table_7_3_1_1_2_15[ap][idx];
}
const uint8_t table_7_3_1_1_2_16[12][2] = {
{1,0},
{1,1},
......@@ -187,12 +163,6 @@ const uint8_t table_7_3_1_1_2_16[12][2] = {
{3,5}
};
uint8_t get_table_7_3_1_1_2_16_value(int ap, int idx)
{
AssertFatal(ap < 12 && idx < 2, "Invalid inputs for table_7_3_1_1_2_16\n");
return table_7_3_1_1_2_16[ap][idx];
}
const uint8_t table_7_3_1_1_2_17[7][3] = {
{1,0,1},
{2,0,1},
......@@ -202,36 +172,17 @@ const uint8_t table_7_3_1_1_2_17[7][3] = {
{3,4,5},
{2,0,2}
};
uint8_t get_table_7_3_1_1_2_17_value(int ap, int idx)
{
AssertFatal(ap < 7 && idx < 3, "Invalid inputs for table_7_3_1_1_2_17\n");
return table_7_3_1_1_2_17[ap][idx];
}
const uint8_t table_7_3_1_1_2_18[3][4] = {
{2,0,1,2},
{3,0,1,2},
{3,3,4,5}
};
uint8_t get_table_7_3_1_1_2_18_value(int ap, int idx)
{
AssertFatal(ap < 3 && idx < 4, "Invalid inputs for table_7_3_1_1_2_18\n");
return table_7_3_1_1_2_18[ap][idx];
}
const uint8_t table_7_3_1_1_2_19[2][5] = {
{2,0,1,2,3},
{3,0,1,2,3}
};
uint8_t get_table_7_3_1_1_2_19_value(int ap, int idx)
{
AssertFatal(ap < 2 && idx < 5, "Invalid inputs for table_7_3_1_1_2_19\n");
return table_7_3_1_1_2_19[ap][idx];
}
const uint8_t table_7_3_1_1_2_20[28][3] = {
{1,0,1},
{1,1,1},
......@@ -263,12 +214,6 @@ const uint8_t table_7_3_1_1_2_20[28][3] = {
{1,7,2}
};
uint8_t get_table_7_3_1_1_2_20_value(int ap, int idx)
{
AssertFatal(ap < 28 && idx < 3, "Invalid inputs for table_7_3_1_1_2_20\n");
return table_7_3_1_1_2_20[ap][idx];
}
const uint8_t table_7_3_1_1_2_21[19][4] = {
{1,0,1,1},
{2,0,1,1},
......@@ -291,12 +236,6 @@ const uint8_t table_7_3_1_1_2_21[19][4] = {
{2,8,9,2}
};
uint8_t get_table_7_3_1_1_2_21_value(int ap, int idx)
{
AssertFatal(ap < 19 && idx < 4, "Invalid inputs for table_7_3_1_1_2_21\n");
return table_7_3_1_1_2_21[ap][idx];
}
const uint8_t table_7_3_1_1_2_22[6][5] = {
{2,0,1,2,1},
{3,0,1,2,1},
......@@ -306,12 +245,6 @@ const uint8_t table_7_3_1_1_2_22[6][5] = {
{3,4,5,10,2}
};
uint8_t get_table_7_3_1_1_2_22_value(int ap, int idx)
{
AssertFatal(ap < 6 && idx < 5, "Invalid inputs for table_7_3_1_1_2_22\n");
return table_7_3_1_1_2_22[ap][idx];
}
const uint8_t table_7_3_1_1_2_23[5][6] = {
{2,0,1,2,3,1},
{3,0,1,2,3,1},
......@@ -320,12 +253,6 @@ const uint8_t table_7_3_1_1_2_23[5][6] = {
{3,4,5,10,11,2}
};
uint8_t get_table_7_3_1_1_2_23_value(int ap, int idx)
{
AssertFatal(ap < 5 && idx < 6, "Invalid inputs for table_7_3_1_1_2_23\n");
return table_7_3_1_1_2_23[ap][idx];
}
const uint8_t table_7_3_2_3_3_1[12][5] = {
{1,1,0,0,0},
{1,0,1,0,0},
......@@ -563,6 +490,146 @@ void set_antenna_port_parameters(fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_pdu,
}
}
void ul_ports_config(NR_UE_MAC_INST_t *mac,
int *n_front_load_symb,
nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
dci_pdu_rel15_t *dci,
nr_dci_format_t dci_format)
{
uint8_t rank = pusch_config_pdu->nrOfLayers;
NR_PUSCH_Config_t *pusch_Config = mac->current_UL_BWP->pusch_Config;
AssertFatal(pusch_Config != NULL, "pusch_Config shouldn't be null\n");
long transformPrecoder = pusch_config_pdu->transform_precoding;
LOG_D(NR_MAC,
"transformPrecoder %s\n",
transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled ? "disabled" : "enabled");
long *max_length = NULL;
long *dmrs_type = NULL;
if (pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA) {
max_length = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA->choice.setup->maxLength;
dmrs_type = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA->choice.setup->dmrs_Type;
} else {
max_length = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->maxLength;
dmrs_type = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->dmrs_Type;
}
int val = dci->antenna_ports.val;
LOG_D(NR_MAC,
"MappingType%s max_length %s, dmrs_type %s, antenna_ports %d\n",
pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA ? "A" : "B",
max_length ? "len2" : "len1",
dmrs_type ? "type2" : "type1",
val);
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled)
&& (dmrs_type == NULL)
&& (max_length == NULL)) { // tables 7.3.1.1.2-6
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2;
pusch_config_pdu->dmrs_ports = 1 << val;
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled)
&& (dmrs_type == NULL)
&& (max_length != NULL)) { // tables 7.3.1.1.2-7
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2; //TBC
pusch_config_pdu->dmrs_ports = 1 << ((val > 3) ? (val - 4) : (val));
*n_front_load_symb = (val > 3) ? 2 : 1;
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type == NULL)
&& (max_length == NULL)) { // tables 7.3.1.1.2-8/9/10/11
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 1) ? 2 : 1;
pusch_config_pdu->dmrs_ports = 1 << ((val > 1) ? (val - 2) : (val));
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 0) ? 2 : 1;
pusch_config_pdu->dmrs_ports = (val > 1) ? ((val > 2) ? 0x5 : 0xc) : 0x3;
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2;
pusch_config_pdu->dmrs_ports = 0x7; // ports 0-2
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2;
pusch_config_pdu->dmrs_ports = 0xf; // ports 0-3
}
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type == NULL)
&& (max_length != NULL)) { // tables 7.3.1.1.2-12/13/14/15
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_12[val][0];
pusch_config_pdu->dmrs_ports = 1 << table_7_3_1_1_2_12[val][1];
*n_front_load_symb = table_7_3_1_1_2_12[val][2];
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_13[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_13[val][1], 2);
*n_front_load_symb = table_7_3_1_1_2_13[val][3];
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_14[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_14[val][1], 3);
*n_front_load_symb = table_7_3_1_1_2_14[val][4];
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_15[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_15[val][1], 4);
*n_front_load_symb = table_7_3_1_1_2_15[val][5];
}
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type != NULL)
&& (max_length == NULL)) { // tables 7.3.1.1.2-16/17/18/19
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_16[val][0];
pusch_config_pdu->dmrs_ports = 1 << table_7_3_1_1_2_16[val][1];
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_17[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_17[val][1], 2);
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_18[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_18[val][1], 3);
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_19[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_19[val][1], 4);
}
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type != NULL)
&& (max_length != NULL)) { // tables 7.3.1.1.2-20/21/22/23
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_20[val][0];
pusch_config_pdu->dmrs_ports = 1 << table_7_3_1_1_2_20[val][1];
*n_front_load_symb = table_7_3_1_1_2_20[val][2];
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_21[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_21[val][1], 2);
*n_front_load_symb = table_7_3_1_1_2_21[val][3];
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_22[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_22[val][1], 3);
*n_front_load_symb = table_7_3_1_1_2_22[val][4];
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_23[val][0];
pusch_config_pdu->dmrs_ports = packBits(&table_7_3_1_1_2_23[val][1], 4);
*n_front_load_symb = table_7_3_1_1_2_23[val][5];
}
}
LOG_D(NR_MAC,
"num_dmrs_cdm_grps_no_data %d, dmrs_ports %d\n",
pusch_config_pdu->num_dmrs_cdm_grps_no_data,
pusch_config_pdu->dmrs_ports);
}
void set_precoding_information_parameters(nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
int n_antenna_port,
long transformPrecoder,
......
......@@ -314,174 +314,6 @@ void ul_layers_config(NR_UE_MAC_INST_t *mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
}
}
// todo: this function shall be reviewed completely because of the many comments left by the author
static void ul_ports_config(NR_UE_MAC_INST_t *mac,
int *n_front_load_symb,
nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu,
dci_pdu_rel15_t *dci,
nr_dci_format_t dci_format)
{
uint8_t rank = pusch_config_pdu->nrOfLayers;
NR_PUSCH_Config_t *pusch_Config = mac->current_UL_BWP->pusch_Config;
AssertFatal(pusch_Config != NULL, "pusch_Config shouldn't be null\n");
long transformPrecoder = pusch_config_pdu->transform_precoding;
LOG_D(NR_MAC,
"transformPrecoder %s\n",
transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled ? "disabled" : "enabled");
long *max_length = NULL;
long *dmrs_type = NULL;
if (pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA) {
max_length = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA->choice.setup->maxLength;
dmrs_type = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA->choice.setup->dmrs_Type;
} else {
max_length = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->maxLength;
dmrs_type = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup->dmrs_Type;
}
int val = dci->antenna_ports.val;
LOG_D(NR_MAC,
"MappingType%s max_length %s, dmrs_type %s, antenna_ports %d\n",
pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA ? "A" : "B",
max_length ? "len2" : "len1",
dmrs_type ? "type2" : "type1",
val);
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled)
&& (dmrs_type == NULL)
&& (max_length == NULL)) { // tables 7.3.1.1.2-6
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2;
pusch_config_pdu->dmrs_ports = 1 << val;
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled)
&& (dmrs_type == NULL)
&& (max_length != NULL)) { // tables 7.3.1.1.2-7
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2; //TBC
pusch_config_pdu->dmrs_ports = 1 << ((val > 3) ? (val - 4) : (val));
*n_front_load_symb = (val > 3) ? 2 : 1;
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type == NULL)
&& (max_length == NULL)) { // tables 7.3.1.1.2-8/9/10/11
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 1) ? 2 : 1;
pusch_config_pdu->dmrs_ports = 1 << ((val > 1) ? (val - 2) : (val));
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 0) ? 2 : 1;
pusch_config_pdu->dmrs_ports = (val > 1) ? ((val > 2) ? 0x5 : 0xc) : 0x3;
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2;
pusch_config_pdu->dmrs_ports = 0x7; // ports 0-2
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2;
pusch_config_pdu->dmrs_ports = 0xf; // ports 0-3
}
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type == NULL)
&& (max_length != NULL)) { // tables 7.3.1.1.2-12/13/14/15
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 1) ? 2 : 1; //TBC
pusch_config_pdu->dmrs_ports = 1 << ((val > 1) ? (val > 5 ? (val - 6) : (val - 2)) : val);
*n_front_load_symb = (val > 6) ? 2 : 1;
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 0) ? 2 : 1; //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_13_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_13_value(val, 2);
//n_front_load_symb = (val > 3) ? 2 : 1; // FIXME
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2; //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_14_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_14_value(val, 2);
//pusch_config_pdu->dmrs_ports[2] = get_table_7_3_1_1_2_14_value(val, 3);
//n_front_load_symb = (val > 1) ? 2 : 1; //FIXME
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = 2; //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_15_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_15_value(val, 2);
//pusch_config_pdu->dmrs_ports[2] = get_table_7_3_1_1_2_15_value(val, 3);
//pusch_config_pdu->dmrs_ports[3] = get_table_7_3_1_1_2_15_value(val, 4);
//n_front_load_symb = (val > 1) ? 2 : 1; //FIXME
}
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type != NULL)
&& (max_length == NULL)) { // tables 7.3.1.1.2-16/17/18/19
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 1) ? ((val > 5) ? 3 : 2) : 1; //TBC
pusch_config_pdu->dmrs_ports = (val > 1) ? (val > 5 ? (val - 6) : (val - 2)) : val; //TBC
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 0) ? ((val > 2) ? 3 : 2) : 1; //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_17_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_18_value(val, 2);
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = (val > 0) ? 3 : 2; //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_18_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_18_value(val, 2);
//pusch_config_pdu->dmrs_ports[2] = get_table_7_3_1_1_2_18_value(val, 3);
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = val + 2; //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = 0;
//pusch_config_pdu->dmrs_ports[1] = 1;
//pusch_config_pdu->dmrs_ports[2] = 2;
//pusch_config_pdu->dmrs_ports[3] = 3;
}
}
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& (dmrs_type != NULL)
&& (max_length != NULL)) { // tables 7.3.1.1.2-20/21/22/23
if (rank == 1) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = get_table_7_3_1_1_2_20_value(val, 0); //TBC
pusch_config_pdu->dmrs_ports = get_table_7_3_1_1_2_20_value(val, 1); //TBC
//n_front_load_symb = get_table_7_3_1_1_2_20_value(val, 2); //FIXME
}
if (rank == 2) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = get_table_7_3_1_1_2_21_value(val, 0); //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_21_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_21_value(val, 2);
//n_front_load_symb = get_table_7_3_1_1_2_21_value(val, 3); //FIXME
}
if (rank == 3) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = get_table_7_3_1_1_2_22_value(val, 0); //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_22_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_22_value(val, 2);
//pusch_config_pdu->dmrs_ports[2] = get_table_7_3_1_1_2_22_value(val, 3);
//n_front_load_symb = get_table_7_3_1_1_2_22_value(val, 4); //FIXME
}
if (rank == 4) {
pusch_config_pdu->num_dmrs_cdm_grps_no_data = get_table_7_3_1_1_2_23_value(val, 0); //TBC
pusch_config_pdu->dmrs_ports = 0; //FIXME
//pusch_config_pdu->dmrs_ports[0] = get_table_7_3_1_1_2_23_value(val, 1);
//pusch_config_pdu->dmrs_ports[1] = get_table_7_3_1_1_2_23_value(val, 2);
//pusch_config_pdu->dmrs_ports[2] = get_table_7_3_1_1_2_23_value(val, 3);
//pusch_config_pdu->dmrs_ports[3] = get_table_7_3_1_1_2_23_value(val, 4);
//n_front_load_symb = get_table_7_3_1_1_2_23_value(val, 5); //FIXME
}
}
LOG_D(NR_MAC,
"num_dmrs_cdm_grps_no_data %d, dmrs_ports %d\n",
pusch_config_pdu->num_dmrs_cdm_grps_no_data,
pusch_config_pdu->dmrs_ports);
}
// Configuration of Msg3 PDU according to clauses:
// - 8.3 of 3GPP TS 38.213 version 16.3.0 Release 16
// - 6.1.2.2 of TS 38.214
......
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