Commit 8a67e0e5 authored by Javier Morgade's avatar Javier Morgade

FeMBMS PBCH Physical Layer Procedures 3GPP TS 36.213 version 14.2.0 Release 14

parent 23e63be7
...@@ -19,16 +19,17 @@ ...@@ -19,16 +19,17 @@
* contact@openairinterface.org * contact@openairinterface.org
*/ */
/*! \file phy_procedures_lte_ue.c /*! \file phy_procedures_lte_ue.c
* \brief Implementation of UE procedures from 36.213 LTE specifications / This includes FeMBMS UE procedures from 36.213 v14.2.0 specification * \brief Implementation of UE procedures from 36.213 LTE specifications / This includes FeMBMS UE procedures from 36.213 v14.2.0 specification
* \author R. Knopp, F. Kaltenberger, N. Nikaein, J. Morgade * \author R. Knopp, F. Kaltenberger, N. Nikaein, J. Morgade
* \date 2011 * \date 2011
* \version 0.1 * \version 0.1
* \company Eurecom * \company Eurecom
* \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr, navid.nikaein@eurecom.fr, javier.morgade@ieee.org * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr, navid.nikaein@eurecom.fr, javier.morgad
* \note e@ieee.org
* \warning * \note
*/ * \warning
*/
#define _GNU_SOURCE #define _GNU_SOURCE
...@@ -2364,7 +2365,19 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin ...@@ -2364,7 +2365,19 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
for (pbch_trials=0; pbch_trials<4; pbch_trials++) { for (pbch_trials=0; pbch_trials<4; pbch_trials++) {
//for (pbch_phase=0;pbch_phase<4;pbch_phase++) { //for (pbch_phase=0;pbch_phase<4;pbch_phase++) {
//LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id); //LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id);
pbch_tx_ant = rx_pbch(&ue->common_vars, #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if(is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms)){
pbch_tx_ant = rx_pbch(&ue->common_vars,
ue->pbch_vars[eNB_id],
&ue->frame_parms,
eNB_id,
ue->frame_parms.nb_antenna_ports_eNB==1?SISO:ALAMOUTI,
ue->high_speed_flag,
pbch_phase);
}else
#endif
pbch_tx_ant = rx_pbch(&ue->common_vars,
ue->pbch_vars[eNB_id], ue->pbch_vars[eNB_id],
&ue->frame_parms, &ue->frame_parms,
eNB_id, eNB_id,
...@@ -2400,10 +2413,22 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin ...@@ -2400,10 +2413,22 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
return; return;
} }
ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0; ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0;
frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8);
frame_tx += ((int)(ue->pbch_vars[eNB_id]->decoded_output[1]&0xfc)); #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
frame_tx += pbch_phase; if(is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms)){
frame_tx = (int)((ue->pbch_vars[eNB_id]->decoded_output[2]&31)<<1);
frame_tx += ue->pbch_vars[eNB_id]->decoded_output[1]>>7;
frame_tx +=4*pbch_phase;
}else{
#endif
frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8);
frame_tx += ((int)(ue->pbch_vars[eNB_id]->decoded_output[1]&0xfc));
frame_tx += pbch_phase;
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
}
#endif
if (ue->mac_enabled==1) { if (ue->mac_enabled==1) {
dl_phy_sync_success(ue->Mod_id,frame_rx,eNB_id, dl_phy_sync_success(ue->Mod_id,frame_rx,eNB_id,
...@@ -4398,6 +4423,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id, ...@@ -4398,6 +4423,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0; pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0;
#define FeMBMS_TMP
#ifdef FeMBMS_TMP
if (pmch_flag == 1) {
if( subframe_rx == 3 || subframe_rx == 2){
ue_pmch_procedures(ue,proc,eNB_id,abstraction_flag,(subframe_rx == 3 || subframe_rx == 2));
LOG_D(PHY,"SKIP\n");
return 0;
}
}
//LOG_E(PHY,"DJP - delete code above this %s:%d\n", __FILE__, __LINE__);
#endif
if (do_pdcch_flag) { if (do_pdcch_flag) {
// deactivate reception until we scan pdcch // deactivate reception until we scan pdcch
if (ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]) if (ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][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