remove constructor key word
This commit is contained in:
@@ -1,23 +1,23 @@
|
|||||||
/*
|
/*
|
||||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
* this work for additional information regarding copyright ownership.
|
this work for additional information regarding copyright ownership.
|
||||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
* except in compliance with the License.
|
except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
*
|
|
||||||
* http://www.openairinterface.org/?page_id=698
|
http://www.openairinterface.org/?page_id=698
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
limitations under the License.
|
||||||
*-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
* contact@openairinterface.org
|
contact@openairinterface.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!\brief Initilization and reconfiguration routines for LTE PHY */
|
/*!\brief Initilization and reconfiguration routines for LTE PHY */
|
||||||
#include "phy_init.h"
|
#include "phy_init.h"
|
||||||
@@ -27,12 +27,9 @@
|
|||||||
#include "PHY/LTE_REFSIG/lte_refsig.h"
|
#include "PHY/LTE_REFSIG/lte_refsig.h"
|
||||||
#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
|
#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
|
||||||
|
|
||||||
void generate_64qam_table(void)
|
void generate_64qam_table(void) {
|
||||||
{
|
|
||||||
|
|
||||||
int a,b,c,index;
|
int a,b,c,index;
|
||||||
|
|
||||||
|
|
||||||
for (a=-1; a<=1; a+=2)
|
for (a=-1; a<=1; a+=2)
|
||||||
for (b=-1; b<=1; b+=2)
|
for (b=-1; b<=1; b+=2)
|
||||||
for (c=-1; c<=1; c+=2) {
|
for (c=-1; c<=1; c+=2) {
|
||||||
@@ -41,9 +38,7 @@ void generate_64qam_table(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void generate_16qam_table(void)
|
void generate_16qam_table(void) {
|
||||||
{
|
|
||||||
|
|
||||||
int a,b,index;
|
int a,b,index;
|
||||||
|
|
||||||
for (a=-1; a<=1; a+=2)
|
for (a=-1; a<=1; a+=2)
|
||||||
@@ -53,54 +48,41 @@ void generate_16qam_table(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void generate_qpsk_table(void)
|
void generate_qpsk_table(void) {
|
||||||
{
|
|
||||||
|
|
||||||
int a,index;
|
int a,index;
|
||||||
|
|
||||||
for (a=-1; a<=1; a+=2) {
|
for (a=-1; a<=1; a+=2) {
|
||||||
index = (1+a)/2;
|
index = (1+a)/2;
|
||||||
qpsk_table[index] = -a*QPSK;
|
qpsk_table[index] = -a*QPSK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_lte_top(LTE_DL_FRAME_PARMS *frame_parms)
|
void init_7_5KHz(void);
|
||||||
{
|
void init_lte_top(LTE_DL_FRAME_PARMS *frame_parms) {
|
||||||
|
|
||||||
ccodelte_init();
|
ccodelte_init();
|
||||||
ccodelte_init_inv();
|
ccodelte_init_inv();
|
||||||
|
|
||||||
init_dfts();
|
init_dfts();
|
||||||
|
|
||||||
|
|
||||||
phy_generate_viterbi_tables_lte();
|
phy_generate_viterbi_tables_lte();
|
||||||
|
|
||||||
load_codinglib();
|
load_codinglib();
|
||||||
lte_sync_time_init(frame_parms);
|
lte_sync_time_init(frame_parms);
|
||||||
|
|
||||||
generate_ul_ref_sigs();
|
generate_ul_ref_sigs();
|
||||||
generate_ul_ref_sigs_rx();
|
generate_ul_ref_sigs_rx();
|
||||||
|
|
||||||
generate_64qam_table();
|
generate_64qam_table();
|
||||||
generate_16qam_table();
|
generate_16qam_table();
|
||||||
generate_qpsk_table();
|
generate_qpsk_table();
|
||||||
generate_RIV_tables();
|
generate_RIV_tables();
|
||||||
|
|
||||||
init_unscrambling_lut();
|
init_unscrambling_lut();
|
||||||
init_scrambling_lut();
|
init_scrambling_lut();
|
||||||
//set_taus_seed(1328);
|
//set_taus_seed(1328);
|
||||||
|
init_7_5KHz();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_lte_top(void)
|
void free_lte_top(void) {
|
||||||
{
|
|
||||||
free_codinglib();
|
free_codinglib();
|
||||||
lte_sync_time_free();
|
lte_sync_time_free();
|
||||||
|
|
||||||
/* free_ul_ref_sigs() is called in phy_free_lte_eNB() */
|
/* free_ul_ref_sigs() is called in phy_free_lte_eNB() */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @}*/
|
@}*/
|
||||||
|
|||||||
@@ -8,71 +8,77 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <PHY/MODULATION/modulation_extern.h>
|
#include <PHY/MODULATION/modulation_extern.h>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
extern "C" {
|
||||||
|
void gen_sig(int RB, int len, double ratio, int16_t *table_n, int16_t *table_e ) {
|
||||||
|
double samplerate = 30.72e6*ratio;
|
||||||
|
double ofdm_size = 2048*ratio;
|
||||||
|
double PI = std::acos(-1);
|
||||||
|
std::complex<int> tt;
|
||||||
|
complex<double> t[len];
|
||||||
|
int index=0;
|
||||||
|
double cp0 = 160*ratio;
|
||||||
|
double cp = 144*ratio;
|
||||||
|
|
||||||
void gen_sig(int RB, int len, double ratio, int16_t *table_n, int16_t *table_e ) {
|
for (int i=-cp0; i<ofdm_size; i++)
|
||||||
double samplerate = 30.72e6*ratio;
|
|
||||||
double ofdm_size = 2048*ratio;
|
|
||||||
double PI = std::acos(-1);
|
|
||||||
std::complex<int> tt;
|
|
||||||
complex<double> t[len];
|
|
||||||
int index=0;
|
|
||||||
|
|
||||||
double cp0 = 160*ratio;
|
|
||||||
double cp = 144*ratio;
|
|
||||||
for (int i=-cp0; i<ofdm_size; i++)
|
|
||||||
t[index++] = polar( 32767.0, -2*PI*i*7.5e3/samplerate);
|
|
||||||
for(int x=0 ; x <6 ; x++)
|
|
||||||
for (int i=-cp; i<ofdm_size; i++)
|
|
||||||
t[index++] = polar( 32767.0, -2*PI*i*7.5e3/samplerate);
|
t[index++] = polar( 32767.0, -2*PI*i*7.5e3/samplerate);
|
||||||
for (int i=0; i < len ; i++) {
|
|
||||||
table_n[i*2] = floor(real(t[i]));
|
|
||||||
table_n[i*2+1] = floor(imag(t[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
index=0;
|
|
||||||
double cpe = 512*ratio;
|
|
||||||
for(int x=0 ; x <6 ; x++)
|
|
||||||
for (int i=-cpe; i<ofdm_size; i++)
|
|
||||||
t[index++] = polar( 32767.0, -2*PI*i*7.5e3/samplerate);
|
|
||||||
for (int i=0; i < len ; i++) {
|
|
||||||
table_e[i*2] = floor(real(t[i]));
|
|
||||||
table_e[i*2+1] = floor(imag(t[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int16_t *s6n_kHz_7_5;
|
for(int x=0 ; x <6 ; x++)
|
||||||
int16_t *s6e_kHz_7_5;
|
for (int i=-cp; i<ofdm_size; i++)
|
||||||
int16_t *s15n_kHz_7_5;
|
t[index++] = polar( 32767.0, -2*PI*i*7.5e3/samplerate);
|
||||||
int16_t *s15e_kHz_7_5;
|
|
||||||
int16_t *s25n_kHz_7_5;
|
for (int i=0; i < len ; i++) {
|
||||||
int16_t *s25e_kHz_7_5;
|
table_n[i*2] = floor(real(t[i]));
|
||||||
int16_t *s50n_kHz_7_5;
|
table_n[i*2+1] = floor(imag(t[i]));
|
||||||
int16_t *s50e_kHz_7_5;
|
}
|
||||||
int16_t *s75n_kHz_7_5;
|
|
||||||
int16_t *s75e_kHz_7_5;
|
index=0;
|
||||||
int16_t *s100n_kHz_7_5;
|
double cpe = 512*ratio;
|
||||||
int16_t *s100e_kHz_7_5;
|
|
||||||
int16_t ** tables[12]={&s6n_kHz_7_5,&s6e_kHz_7_5,
|
for(int x=0 ; x <6 ; x++)
|
||||||
&s15n_kHz_7_5,&s15e_kHz_7_5,
|
for (int i=-cpe; i<ofdm_size; i++)
|
||||||
&s25n_kHz_7_5,&s25e_kHz_7_5,
|
t[index++] = polar( 32767.0, -2*PI*i*7.5e3/samplerate);
|
||||||
&s50n_kHz_7_5,&s50e_kHz_7_5,
|
|
||||||
&s75n_kHz_7_5,&s75e_kHz_7_5,
|
for (int i=0; i < len ; i++) {
|
||||||
&s100n_kHz_7_5,&s100e_kHz_7_5,};
|
table_e[i*2] = floor(real(t[i]));
|
||||||
int tables_size_bytes[12];
|
table_e[i*2+1] = floor(imag(t[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int16_t *s6n_kHz_7_5;
|
||||||
|
int16_t *s6e_kHz_7_5;
|
||||||
|
int16_t *s15n_kHz_7_5;
|
||||||
|
int16_t *s15e_kHz_7_5;
|
||||||
|
int16_t *s25n_kHz_7_5;
|
||||||
|
int16_t *s25e_kHz_7_5;
|
||||||
|
int16_t *s50n_kHz_7_5;
|
||||||
|
int16_t *s50e_kHz_7_5;
|
||||||
|
int16_t *s75n_kHz_7_5;
|
||||||
|
int16_t *s75e_kHz_7_5;
|
||||||
|
int16_t *s100n_kHz_7_5;
|
||||||
|
int16_t *s100e_kHz_7_5;
|
||||||
|
int16_t **tables[12]= {&s6n_kHz_7_5,&s6e_kHz_7_5,
|
||||||
|
&s15n_kHz_7_5,&s15e_kHz_7_5,
|
||||||
|
&s25n_kHz_7_5,&s25e_kHz_7_5,
|
||||||
|
&s50n_kHz_7_5,&s50e_kHz_7_5,
|
||||||
|
&s75n_kHz_7_5,&s75e_kHz_7_5,
|
||||||
|
&s100n_kHz_7_5,&s100e_kHz_7_5,
|
||||||
|
};
|
||||||
|
int tables_size_bytes[12];
|
||||||
#define MyAssert(x) { if(!(x)) { printf("Error in table intialization: %s:%d\n",__FILE__,__LINE__); exit(1);}}
|
#define MyAssert(x) { if(!(x)) { printf("Error in table intialization: %s:%d\n",__FILE__,__LINE__); exit(1);}}
|
||||||
__attribute__((constructor)) static void init_7_5KHz(void) {
|
void init_7_5KHz(void) {
|
||||||
const map<int,double> tables_7_5KHz={{6,1.0/16},{15,1.0/8},{25,1.0/4},{50,1.0/2},{75,3.0/4},{100,1.0}};
|
const map<int,double> tables_7_5KHz= {{6,1.0/16},{15,1.0/8},{25,1.0/4},{50,1.0/2},{75,3.0/4},{100,1.0}};
|
||||||
|
int tables_idx=0;
|
||||||
|
|
||||||
int tables_idx=0;
|
for (auto it=tables_7_5KHz.begin(); it!=tables_7_5KHz.end(); ++it) {
|
||||||
for (auto it=tables_7_5KHz.begin(); it!=tables_7_5KHz.end(); ++it) {
|
int len=15360*it->second;
|
||||||
int len=15360*it->second;
|
tables_size_bytes[tables_idx]=sizeof(int16_t)*2*len;
|
||||||
tables_size_bytes[tables_idx]=sizeof(int16_t)*2*len;
|
tables_size_bytes[tables_idx+1]=sizeof(int16_t)*2*len;
|
||||||
tables_size_bytes[tables_idx+1]=sizeof(int16_t)*2*len;
|
MyAssert(0==posix_memalign((void **)tables[tables_idx],
|
||||||
MyAssert(0==posix_memalign((void**)tables[tables_idx],
|
16,tables_size_bytes[tables_idx]));
|
||||||
16,tables_size_bytes[tables_idx]));
|
MyAssert(0==posix_memalign((void **)tables[tables_idx+1],
|
||||||
MyAssert(0==posix_memalign((void**)tables[tables_idx+1],
|
16,tables_size_bytes[tables_idx+1]));
|
||||||
16,tables_size_bytes[tables_idx+1]));
|
gen_sig(it->first, len, it->second, *tables[tables_idx], *tables[tables_idx+1]);
|
||||||
gen_sig(it->first, len, it->second, *tables[tables_idx], *tables[tables_idx+1]);
|
tables_idx+=2;
|
||||||
tables_idx+=2;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,26 @@
|
|||||||
/*
|
/*
|
||||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
* this work for additional information regarding copyright ownership.
|
this work for additional information regarding copyright ownership.
|
||||||
* The OpenAirInterface Software Alliance licenses this file to You under
|
The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
* except in compliance with the License.
|
except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
*
|
|
||||||
* http://www.openairinterface.org/?page_id=698
|
http://www.openairinterface.org/?page_id=698
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
; * distributed under the License is distributed on an "AS IS" BASIS,
|
; * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
limitations under the License.
|
||||||
*-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
* For more information about the OpenAirInterface (OAI) Software Alliance:
|
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
* contact@openairinterface.org
|
contact@openairinterface.org
|
||||||
*/
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int16_t *s6n_kHz_7_5;
|
extern int16_t *s6n_kHz_7_5;
|
||||||
extern int16_t *s6e_kHz_7_5;
|
extern int16_t *s6e_kHz_7_5;
|
||||||
@@ -36,3 +39,6 @@ extern int16_t *s100e_kHz_7_5;
|
|||||||
extern short conjugate75[8];
|
extern short conjugate75[8];
|
||||||
extern short conjugate75_2[8];
|
extern short conjugate75_2[8];
|
||||||
extern short negate[8];
|
extern short negate[8];
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user