modifications for RRC IF4p5
This commit is contained in:
@@ -233,7 +233,7 @@ void recv_IF4p5(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_t
|
|||||||
|
|
||||||
} else if (*packet_type == IF4p5_PRACH) {
|
} else if (*packet_type == IF4p5_PRACH) {
|
||||||
// FIX: hard coded prach samples length
|
// FIX: hard coded prach samples length
|
||||||
db_fulllength = 839*2;
|
db_fulllength = 840*2;
|
||||||
|
|
||||||
memcpy((&rxsigF[0][0]),
|
memcpy((&rxsigF[0][0]),
|
||||||
(int16_t*) (rx_buffer+MAC_HEADER_SIZE_BYTES+sizeof_IF4p5_header_t),
|
(int16_t*) (rx_buffer+MAC_HEADER_SIZE_BYTES+sizeof_IF4p5_header_t),
|
||||||
|
|||||||
@@ -1101,6 +1101,8 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
int fft_size,log2_ifft_size;
|
int fft_size,log2_ifft_size;
|
||||||
uint8_t nb_ant_rx = 1; //eNB->frame_parms.nb_antennas_rx;
|
uint8_t nb_ant_rx = 1; //eNB->frame_parms.nb_antennas_rx;
|
||||||
|
|
||||||
|
// int en;
|
||||||
|
|
||||||
for (aa=0; aa<nb_ant_rx; aa++) {
|
for (aa=0; aa<nb_ant_rx; aa++) {
|
||||||
prach[aa] = (int16_t*)&eNB->common_vars.rxdata[0][aa][subframe*eNB->frame_parms.samples_per_tti-eNB->N_TA_offset];
|
prach[aa] = (int16_t*)&eNB->common_vars.rxdata[0][aa][subframe*eNB->frame_parms.samples_per_tti-eNB->N_TA_offset];
|
||||||
}
|
}
|
||||||
@@ -1300,6 +1302,11 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
memmove((&rxsigF[0][k]),
|
memmove((&rxsigF[0][k]),
|
||||||
(&rxsigF[0][0]),
|
(&rxsigF[0][0]),
|
||||||
839*2*sizeof(int16_t));
|
839*2*sizeof(int16_t));
|
||||||
|
|
||||||
|
//en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
||||||
|
// if (en>60)
|
||||||
|
//printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// in case of RCC and prach received rx_thread wakes up prach
|
// in case of RCC and prach received rx_thread wakes up prach
|
||||||
@@ -1470,9 +1477,22 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
// if (aa=1) write_output("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
|
// if (aa=1) write_output("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
|
||||||
}// antennas_rx
|
}// antennas_rx
|
||||||
#ifdef PRACH_DEBUG
|
#ifdef PRACH_DEBUG
|
||||||
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],2048,1,1);
|
|
||||||
|
if (en>40) {
|
||||||
|
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
||||||
|
|
||||||
|
if (k<0)
|
||||||
|
k+=(eNB->frame_parms.ofdm_symbol_size);
|
||||||
|
|
||||||
|
k*=12;
|
||||||
|
k+=13;
|
||||||
|
k*=2;
|
||||||
|
printf("Dumping prach, k = %d (n_ra_prb %d)\n",k,n_ra_prb);
|
||||||
|
write_output("rxsigF.m","prach_rxF",&rxsigF[0][k],840,1,1);
|
||||||
|
write_output("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
|
||||||
|
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],1024,1,1);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
// write_output("prach_ifft1.m","prach_t1",prach_ifft[1],2048,1,1);
|
|
||||||
|
|
||||||
} // new dft
|
} // new dft
|
||||||
|
|
||||||
|
|||||||
@@ -1956,6 +1956,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
|
|||||||
preamble_max,
|
preamble_max,
|
||||||
preamble_delay_list[preamble_max]*update_TA,
|
preamble_delay_list[preamble_max]*update_TA,
|
||||||
0,subframe,0);
|
0,subframe,0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -274,7 +274,7 @@ int trx_eth_read_raw(openair0_device *device, openair0_timestamp *timestamp, voi
|
|||||||
|
|
||||||
if (bytes_received ==-1) {
|
if (bytes_received ==-1) {
|
||||||
eth->num_rx_errors++;
|
eth->num_rx_errors++;
|
||||||
perror("ETHERNET READ: ");
|
perror("ETHERNET IF5 READ: ");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
} else {
|
} else {
|
||||||
/* store the timestamp value from packet's header */
|
/* store the timestamp value from packet's header */
|
||||||
@@ -315,13 +315,14 @@ int trx_eth_read_raw_IF4p5(openair0_device *device, openair0_timestamp *timestam
|
|||||||
ssize_t packet_size = MAC_HEADER_SIZE_BYTES + sizeof_IF4p5_header_t;
|
ssize_t packet_size = MAC_HEADER_SIZE_BYTES + sizeof_IF4p5_header_t;
|
||||||
IF4p5_header_t *test_header = (IF4p5_header_t*)(buff[0] + MAC_HEADER_SIZE_BYTES);
|
IF4p5_header_t *test_header = (IF4p5_header_t*)(buff[0] + MAC_HEADER_SIZE_BYTES);
|
||||||
|
|
||||||
|
|
||||||
bytes_received = recv(eth->sockfd[Mod_id],
|
bytes_received = recv(eth->sockfd[Mod_id],
|
||||||
buff[0],
|
buff[0],
|
||||||
packet_size,
|
packet_size,
|
||||||
MSG_PEEK);
|
MSG_PEEK);
|
||||||
if (bytes_received ==-1) {
|
if (bytes_received ==-1) {
|
||||||
eth->num_rx_errors++;
|
eth->num_rx_errors++;
|
||||||
perror("ETHERNET READ: ");
|
perror("ETHERNET IF4p5 READ (header): ");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,6 +336,7 @@ int trx_eth_read_raw_IF4p5(openair0_device *device, openair0_timestamp *timestam
|
|||||||
packet_size = RAW_IF4p5_PRACH_SIZE_BYTES;
|
packet_size = RAW_IF4p5_PRACH_SIZE_BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
while(bytes_received < packet_size) {
|
while(bytes_received < packet_size) {
|
||||||
bytes_received = recv(eth->sockfd[Mod_id],
|
bytes_received = recv(eth->sockfd[Mod_id],
|
||||||
buff[0],
|
buff[0],
|
||||||
@@ -342,7 +344,7 @@ int trx_eth_read_raw_IF4p5(openair0_device *device, openair0_timestamp *timestam
|
|||||||
0);
|
0);
|
||||||
if (bytes_received ==-1) {
|
if (bytes_received ==-1) {
|
||||||
eth->num_rx_errors++;
|
eth->num_rx_errors++;
|
||||||
perror("ETHERNET READ: ");
|
perror("ETHERNET IF4p5 READ (payload): ");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
} else {
|
} else {
|
||||||
eth->rx_actual_nsamps = bytes_received>>1;
|
eth->rx_actual_nsamps = bytes_received>>1;
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ int trx_eth_start(openair0_device *device) {
|
|||||||
|
|
||||||
/* initialize socket */
|
/* initialize socket */
|
||||||
if (eth->flags == ETH_RAW_MODE) {
|
if (eth->flags == ETH_RAW_MODE) {
|
||||||
|
printf("Setting ETHERNET to ETH_RAW_IF5_MODE\n");
|
||||||
if (eth_socket_init_raw(device)!=0) return -1;
|
if (eth_socket_init_raw(device)!=0) return -1;
|
||||||
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
|
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
|
||||||
if (device->host_type == BBU_HOST) {
|
if (device->host_type == BBU_HOST) {
|
||||||
@@ -74,6 +75,8 @@ int trx_eth_start(openair0_device *device) {
|
|||||||
if(ethernet_tune (device,MTU_SIZE,RAW_PACKET_SIZE_BYTES(device->openair0_cfg->samples_per_packet))!=0) return -1;
|
if(ethernet_tune (device,MTU_SIZE,RAW_PACKET_SIZE_BYTES(device->openair0_cfg->samples_per_packet))!=0) return -1;
|
||||||
if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0) return -1;
|
if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0) return -1;
|
||||||
} else if (eth->flags == ETH_RAW_IF4p5_MODE) {
|
} else if (eth->flags == ETH_RAW_IF4p5_MODE) {
|
||||||
|
|
||||||
|
printf("Setting ETHERNET to ETH_RAW_IF4p5_MODE\n");
|
||||||
if (eth_socket_init_raw(device)!=0) return -1;
|
if (eth_socket_init_raw(device)!=0) return -1;
|
||||||
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
|
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
|
||||||
if (device->host_type == BBU_HOST) {
|
if (device->host_type == BBU_HOST) {
|
||||||
@@ -83,12 +86,13 @@ int trx_eth_start(openair0_device *device) {
|
|||||||
}
|
}
|
||||||
/* adjust MTU wrt number of samples per packet */
|
/* adjust MTU wrt number of samples per packet */
|
||||||
if(ethernet_tune (device,MTU_SIZE,RAW_IF4p5_PRACH_SIZE_BYTES)!=0) return -1;
|
if(ethernet_tune (device,MTU_SIZE,RAW_IF4p5_PRACH_SIZE_BYTES)!=0) return -1;
|
||||||
if(ethernet_tune (device,RCV_TIMEOUT,5000)!=0) return -1;
|
if(ethernet_tune (device,RCV_TIMEOUT,999999)!=0) return -1;
|
||||||
|
|
||||||
} else if (eth->flags == ETH_UDP_IF4p5_MODE) {
|
} else if (eth->flags == ETH_UDP_IF4p5_MODE) {
|
||||||
|
printf("Setting ETHERNET to UDP_IF4p5_MODE\n");
|
||||||
|
|
||||||
} else if (eth->flags == ETH_RAW_IF5_MOBIPASS) {
|
} else if (eth->flags == ETH_RAW_IF5_MOBIPASS) {
|
||||||
|
printf("Setting ETHERNET to RAW_IF5_MODE\n");
|
||||||
if (eth_socket_init_raw(device)!=0) return -1;
|
if (eth_socket_init_raw(device)!=0) return -1;
|
||||||
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
|
/* RRH gets openair0 device configuration - BBU sets openair0 device configuration*/
|
||||||
//if (device->host_type == BBU_HOST) {
|
//if (device->host_type == BBU_HOST) {
|
||||||
|
|||||||
@@ -975,7 +975,7 @@ void rx_fh_if5(PHY_VARS_eNB *eNB,eNB_proc_t *proc,int *frame, int *subframe) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rx_fh_if4p5(PHY_VARS_eNB *eNB,eNB_proc_t *proc,int *subframe,int *frame) {
|
void rx_fh_if4p5(PHY_VARS_eNB *eNB,eNB_proc_t *proc,int *frame,int *subframe) {
|
||||||
|
|
||||||
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
|
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
|
||||||
|
|
||||||
@@ -990,25 +990,23 @@ void rx_fh_if4p5(PHY_VARS_eNB *eNB,eNB_proc_t *proc,int *subframe,int *frame) {
|
|||||||
prach_rx = 0;
|
prach_rx = 0;
|
||||||
|
|
||||||
do { // Blocking, we need a timeout on this !!!!!!!!!!!!!!!!!!!!!!!
|
do { // Blocking, we need a timeout on this !!!!!!!!!!!!!!!!!!!!!!!
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 );
|
|
||||||
recv_IF4p5(eNB, &proc->frame_rx, &proc->subframe_rx, &packet_type, &symbol_number);
|
recv_IF4p5(eNB, &proc->frame_rx, &proc->subframe_rx, &packet_type, &symbol_number);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 );
|
|
||||||
|
|
||||||
if (packet_type == IF4p5_PULFFT) {
|
if (packet_type == IF4p5_PULFFT) {
|
||||||
symbol_mask = symbol_mask | (1<<symbol_number);
|
symbol_mask = symbol_mask | (1<<symbol_number);
|
||||||
prach_rx = (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)>0) ? 1 : 0;
|
prach_rx = (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)>0) ? 1 : 0;
|
||||||
} else if (packet_type == IF4p5_PRACH) {
|
} else if (packet_type == IF4p5_PRACH) {
|
||||||
prach_rx = 0;
|
prach_rx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} while( (symbol_mask != symbol_mask_full) || (prach_rx == 1));
|
} while( (symbol_mask != symbol_mask_full) || (prach_rx == 1));
|
||||||
|
|
||||||
if (proc->first_rx == 0) {
|
if (proc->first_rx == 0) {
|
||||||
if (proc->subframe_rx != *subframe){
|
if (proc->subframe_rx != *subframe){
|
||||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,subframe);
|
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,*subframe);
|
||||||
exit_fun("Exiting");
|
exit_fun("Exiting");
|
||||||
}
|
}
|
||||||
if (proc->frame_rx != *frame) {
|
if (proc->frame_rx != *frame) {
|
||||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,frame);
|
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,*frame);
|
||||||
exit_fun("Exiting");
|
exit_fun("Exiting");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user