Commit 5a61d21c authored by Raymond Knopp's avatar Raymond Knopp

Merge branch 'l1-sidelink' of https://gitlab.eurecom.fr/matzakos/LTE-D2D into l1-sidelink

parents b301d12b 0cd21ecd
......@@ -7223,6 +7223,30 @@ uint32_t pmi_extend(LTE_DL_FRAME_PARMS *frame_parms,uint8_t wideband_pmi, uint8_
return(pmi_ex);
}
void conv_RIV(int N_RB_UL, int RIV, int *L_CRBs, int *RB_start) {
switch (N_RB_UL) {
case 6:
*L_CRBs = RIV2nb_rb_LUT6[RIV];
*RB_start = RIV2first_rb_LUT6[RIV];
break;
case 25:
*L_CRBs = RIV2nb_rb_LUT25[RIV];
*RB_start = RIV2first_rb_LUT25[RIV];
break;
case 50:
*L_CRBs = RIV2nb_rb_LUT50[RIV];
*RB_start = RIV2first_rb_LUT50[RIV];
break;
case 100:
*L_CRBs = RIV2nb_rb_LUT100[RIV];
*RB_start = RIV2first_rb_LUT100[RIV];
break;
default:
AssertFatal(1==0,"unsupported N_RB_UL %d\n",N_RB_UL);
break;
}
}
int generate_ue_ulsch_params_from_dci(void *dci_pdu,
uint16_t rnti,
......
......@@ -1605,6 +1605,8 @@ uint8_t get_transmission_mode(module_id_t Mod_id, uint8_t CC_id, rnti_t rnti);
*/
uint32_t conv_nprb(uint8_t ra_header,uint32_t rb_alloc,int N_RB_DL);
void conv_RIV(int N_RB_UL, int RIV, int *L_CRBs, int *RB_start);
int get_G(LTE_DL_FRAME_PARMS *frame_parms,uint16_t nb_rb,uint32_t *rb_alloc,uint8_t mod_order,uint8_t Nl,uint8_t num_pdcch_symbols,int frame,uint8_t subframe, uint8_t beamforming_mode);
int adjust_G(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *rb_alloc,uint8_t mod_order,uint8_t subframe);
......
......@@ -1026,6 +1026,9 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
if (res==0) {
ue->slsch_rx.freq_hopping_flag = (sci_rx_flip>>63)&1;
ue->slsch_rx.resource_block_coding = (sci_rx_flip>>(63-1-RAbits+1))&((1<<RAbits)-1);
conv_RIV(ue->frame_parms.N_RB_DL,
ue->slsch_rx.resource_block_coding,
&ue->slsch_rx.L_CRBs,&ue->slsch_rx.RB_start);
ue->slsch_rx.time_resource_pattern = (sci_rx_flip>>(63-1-7-RAbits+1))&127;
ue->slsch_rx.mcs = (sci_rx_flip>>(63-1-7-5-RAbits+1))&31;
ue->slsch_rx.timing_advance_indication = (sci_rx_flip>>(63-1-7-5-11-RAbits+1))&2047;
......@@ -1220,11 +1223,11 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
write_output("slsch_rxF_ext.m","slschrxF_ext",rxdataF_ext[0],14*12*ue->frame_parms.N_RB_DL,1,1);
#endif
AssertFatal(ue->slsch->group_destination_id < 256,"Illegal group_destination_id %d\n",ue>slsch->group_destination_id);
AssertFatal(slsch->group_destination_id < 256,"Illegal group_destination_id %d\n",ue>slsch->group_destination_id);
uint32_t u = ue->gh[1+ue->slsch->group_destination_id][ljmod10<<1];
uint32_t u = ue->gh[1+slsch->group_destination_id][ljmod10<<1];
uint32_t v = 0;
uint32_t cyclic_shift=(ue->slsch->group_destination_id>>1)&7;
uint32_t cyclic_shift=(slsch->group_destination_id>>1)&7;
lte_ul_channel_estimation(&ue->frame_parms,
(int32_t**)drs_ch_estimates,
......@@ -1239,7 +1242,7 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
3,
1, // interpolation
0);
u = ue->gh[1+ue->slsch->group_destination_id][1+(ljmod10<<1)];
u = ue->gh[1+slsch->group_destination_id][1+(ljmod10<<1)];
lte_ul_channel_estimation(&ue->frame_parms,
(int32_t**)drs_ch_estimates,
(int32_t**)NULL,
......
......@@ -3420,6 +3420,15 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
}
*/
const int prblist[6]={6,15,25,50,75,100};
int to_prb(int sl_Bandwidth_r12) {
AssertFatal(sl_Bandwidth_r12<6, "illegal bandwidth index %d\n",sl_Bandwidth_r12);
return(prblist[sl_Bandwidth_r12]);
}
extern const int trp8[TRP8_MAX+1][8];
SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subframeP,int slsch_test) {
......@@ -3503,7 +3512,7 @@ SLSCH_t *ue_get_slsch(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_
slsch->n_pscch = ue->sourceL2Id;
slsch->format = 0;
slsch->freq_hopping_flag = 0;
slsch->resource_block_coding = computeRIV(to_prb(ue->SL_Preconfiguration->preconfigGeneral_r12.sl_bandwidth_r12),RB_start,L_CRBs);
slsch->resource_block_coding = computeRIV(to_prb((int)ue->SL_Preconfiguration->preconfigGeneral_r12.sl_bandwidth_r12),RB_start,L_CRBs);
slsch->time_resource_pattern = 106; // all subframes for Nrp=8
slsch->mcs = mcs;
slsch->timing_advance_indication = 0;
......
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