Commit f5c798e4 authored by Florian Kaltenberger's avatar Florian Kaltenberger

transmission mode is now taken into account in RRC signalling

small bugfix in dlsch_demodulation
shunted out TM3-7 specific DCI generation in scheduler to enable basic operation. more work needed.
parent 5416a6f8
...@@ -990,6 +990,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue, ...@@ -990,6 +990,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
break; break;
} }
if (dlsch1_harq) {
switch (get_Qm(dlsch1_harq->mcs)) { switch (get_Qm(dlsch1_harq->mcs)) {
case 2 : case 2 :
if (rx_type==rx_standard) { if (rx_type==rx_standard) {
...@@ -1033,6 +1034,8 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue, ...@@ -1033,6 +1034,8 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
return(-1); return(-1);
break; break;
} }
}
return(0); return(0);
} }
...@@ -4795,4 +4798,4 @@ void print_ints(char *s,__m128i *x) ...@@ -4795,4 +4798,4 @@ void print_ints(char *s,__m128i *x)
tempb[0],tempb[1],tempb[2],tempb[3]); tempb[0],tempb[1],tempb[2],tempb[3]);
}*/ }*/
#endif #endif
\ No newline at end of file
...@@ -392,8 +392,8 @@ int rotate_cpx_vector(int16_t *x, ...@@ -392,8 +392,8 @@ int rotate_cpx_vector(int16_t *x,
m3 = _mm_sra_epi32(m3,shift); // shift right by shift in order to compensate for the input amplitude m3 = _mm_sra_epi32(m3,shift); // shift right by shift in order to compensate for the input amplitude
y_128[0] = _mm_packs_epi32(m2,m3); // pack in 16bit integers with saturation [re im re im re im re im] y_128[0] = _mm_packs_epi32(m2,m3); // pack in 16bit integers with saturation [re im re im re im re im]
print_ints("y_128[0]=", &y_128[0]); //print_ints("y_128[0]=", &y_128[0]);
#elif defined(__arm__) #elif defined(__arm__)
ab_re0 = vmull_s16(((int16x4_t*)xd)[0],((int16x4_t*)&bconj)[0]); ab_re0 = vmull_s16(((int16x4_t*)xd)[0],((int16x4_t*)&bconj)[0]);
ab_re1 = vmull_s16(((int16x4_t*)xd)[1],((int16x4_t*)&bconj)[1]); ab_re1 = vmull_s16(((int16x4_t*)xd)[1],((int16x4_t*)&bconj)[1]);
......
...@@ -737,7 +737,8 @@ schedule_ue_spec( ...@@ -737,7 +737,8 @@ schedule_ue_spec(
} }
break; break;
/*
// this code is disabled for now - needs to be done properly
case 4: case 4:
// if (nb_rb>10) { // if (nb_rb>10) {
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->ndi1 = 0; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->ndi1 = 0;
...@@ -775,6 +776,7 @@ schedule_ue_spec( ...@@ -775,6 +776,7 @@ schedule_ue_spec(
((DCI1E_5MHz_2A_M10PRB_TDD_t*)DLSCH_dci)->dai = (UE_list->UE_template[CC_id][UE_id].DAI-1)&3; ((DCI1E_5MHz_2A_M10PRB_TDD_t*)DLSCH_dci)->dai = (UE_list->UE_template[CC_id][UE_id].DAI-1)&3;
((DCI1E_5MHz_2A_M10PRB_TDD_t*)DLSCH_dci)->dl_power_off = 1;//dl_pow_off[UE_id]; ((DCI1E_5MHz_2A_M10PRB_TDD_t*)DLSCH_dci)->dl_power_off = 1;//dl_pow_off[UE_id];
break; break;
*/
} }
add_ue_dlsch_info(module_idP, add_ue_dlsch_info(module_idP,
...@@ -1402,8 +1404,9 @@ schedule_ue_spec( ...@@ -1402,8 +1404,9 @@ schedule_ue_spec(
break; break;
/*
// disabled for now as this needs to be done properly
case 4: case 4:
// if (nb_rb>10) {
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->mcs1 = mcs; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->mcs1 = mcs;
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->harq_pid = harq_pid; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->harq_pid = harq_pid;
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->ndi1 = 1; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->ndi1 = 1;
...@@ -1411,15 +1414,6 @@ schedule_ue_spec( ...@@ -1411,15 +1414,6 @@ schedule_ue_spec(
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->dai = (UE_list->UE_template[CC_id][UE_id].DAI-1)&3; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->dai = (UE_list->UE_template[CC_id][UE_id].DAI-1)&3;
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->TPC = tpc; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->TPC = tpc;
//}
/* else {
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->mcs1 = eNB_UE_stats->DL_cqi[0];
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->harq_pid = harq_pid;
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->ndi1 = 1;
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->rv1 = round&3;
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->tpmi = 5;
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->dai = (UE_list->UE_template[CC_id][UE_id].DAI-1)&3;
}*/
break; break;
case 5: case 5:
...@@ -1450,6 +1444,7 @@ schedule_ue_spec( ...@@ -1450,6 +1444,7 @@ schedule_ue_spec(
((DCI1E_5MHz_2A_M10PRB_TDD_t*)DLSCH_dci)->TPC = tpc; ((DCI1E_5MHz_2A_M10PRB_TDD_t*)DLSCH_dci)->TPC = tpc;
break; break;
*/
} }
// Toggle NDI for next time // Toggle NDI for next time
...@@ -1729,9 +1724,9 @@ fill_DLSCH_dci( ...@@ -1729,9 +1724,9 @@ fill_DLSCH_dci(
break; break;
/*
case 4: case 4:
//if (nb_rb>10) {
// DCI format 2_2A // DCI format 2_2A
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->rballoc = allocate_prbs_sub(nb_rb,rballoc_sub); ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->rballoc = allocate_prbs_sub(nb_rb,rballoc_sub);
((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->rah = 0; ((DCI2_5MHz_2A_TDD_t*)DLSCH_dci)->rah = 0;
...@@ -1743,17 +1738,6 @@ fill_DLSCH_dci( ...@@ -1743,17 +1738,6 @@ fill_DLSCH_dci(
sizeof_DCI2_5MHz_2A_TDD_t, sizeof_DCI2_5MHz_2A_TDD_t,
format2, format2,
0); 0);
/*}
else {
((DCI2_5MHz_2A_L10PRB_TDD_t*)DLSCH_dci)->rballoc = allocate_prbs_sub(nb_rb,rballoc_sub);
add_ue_spec_dci(DCI_pdu,
DLSCH_dci,
rnti,
sizeof(DCI2_5MHz_2A_L10PRB_TDD_t),
2,//aggregation,
sizeof_DCI2_5MHz_2A_L10PRB_TDD_t,
format2_2A_L10PRB);
}*/
break; break;
case 5: case 5:
...@@ -1783,6 +1767,7 @@ fill_DLSCH_dci( ...@@ -1783,6 +1767,7 @@ fill_DLSCH_dci(
format1E_2A_M10PRB, format1E_2A_M10PRB,
0); 0);
break; break;
*/
} }
} }
......
...@@ -107,7 +107,7 @@ int errno; ...@@ -107,7 +107,7 @@ int errno;
# endif # endif
#endif #endif
//#define XER_PRINT #define XER_PRINT
extern Enb_properties_array_t enb_properties; extern Enb_properties_array_t enb_properties;
typedef struct xer_sprint_string_s { typedef struct xer_sprint_string_s {
......
...@@ -3277,7 +3277,7 @@ rrc_eNB_generate_RRCConnectionSetup( ...@@ -3277,7 +3277,7 @@ rrc_eNB_generate_RRCConnectionSetup(
do_RRCConnectionSetup(ctxt_pP, do_RRCConnectionSetup(ctxt_pP,
ue_context_pP, ue_context_pP,
(uint8_t*) eNB_rrc_inst[ctxt_pP->module_id].carrier[CC_id].Srb0.Tx_buffer.Payload, (uint8_t*) eNB_rrc_inst[ctxt_pP->module_id].carrier[CC_id].Srb0.Tx_buffer.Payload,
(mac_xface->lte_frame_parms->nb_antennas_tx==2)?2:1, mac_xface->get_transmission_mode(ctxt_pP->module_id,CC_id,ue_context_pP->ue_id_rnti),
rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id), rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),
mac_xface->lte_frame_parms, mac_xface->lte_frame_parms,
SRB_configList, SRB_configList,
......
...@@ -47,7 +47,7 @@ eNBs = ...@@ -47,7 +47,7 @@ eNBs =
pucch_nCS_AN = 0; pucch_nCS_AN = 0;
pucch_n1_AN = 32; pucch_n1_AN = 32;
pdsch_referenceSignalPower = -24; pdsch_referenceSignalPower = -24;
pdsch_p_b = 0; pdsch_p_b = 1;
pusch_n_SB = 1; pusch_n_SB = 1;
pusch_enable64QAM = "DISABLE"; pusch_enable64QAM = "DISABLE";
pusch_hoppingMode = "interSubFrame"; pusch_hoppingMode = "interSubFrame";
......
...@@ -684,8 +684,9 @@ void get_simulation_options(int argc, char *argv[]) ...@@ -684,8 +684,9 @@ void get_simulation_options(int argc, char *argv[])
case 'x': case 'x':
oai_emulation.info.transmission_mode[0] = atoi (optarg); oai_emulation.info.transmission_mode[0] = atoi (optarg);
if ((oai_emulation.info.transmission_mode[0] != 1) && (oai_emulation.info.transmission_mode[0] != 2) && (oai_emulation.info.transmission_mode[0] != 3) if ((oai_emulation.info.transmission_mode[0] != 1) && (oai_emulation.info.transmission_mode[0] != 2) &&
&& (oai_emulation.info.transmission_mode[0] != 5) && (oai_emulation.info.transmission_mode[0] != 6)) { (oai_emulation.info.transmission_mode[0] != 3) && (oai_emulation.info.transmission_mode[0] != 4) &&
(oai_emulation.info.transmission_mode[0] != 5) && (oai_emulation.info.transmission_mode[0] != 6)) {
printf("Unsupported transmission mode %d\n",oai_emulation.info.transmission_mode[0]); printf("Unsupported transmission mode %d\n",oai_emulation.info.transmission_mode[0]);
exit(-1); exit(-1);
} }
......
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