Commit 92f0af71 authored by Matthieu Kanj's avatar Matthieu Kanj

speration completed for the file /PHY/LTE_TRANSPORT/dci_nb_iot.c +

remouving warnings (137 remaining)
parent 6e494638
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
*/ */
//#include "defs.h" //#include "defs.h"
//#include "SCHED/defs.h" #include "SCHED/defs_nb_iot.h"
//#include "PHY/extern.h" //#include "PHY/extern.h"
#include "PHY/extern_NB_IoT.h" #include "PHY/extern_NB_IoT.h"
#include "RRC/LITE/proto_nb_iot.h" #include "RRC/LITE/proto_nb_iot.h"
......
...@@ -28,7 +28,7 @@ int lte_dl_cell_spec_NB_IoT(PHY_VARS_eNB_NB_IoT *phy_vars_eNB, ...@@ -28,7 +28,7 @@ int lte_dl_cell_spec_NB_IoT(PHY_VARS_eNB_NB_IoT *phy_vars_eNB,
unsigned char p, unsigned char p,
unsigned short RB_IoT_ID) // the ID of the RB dedicated for NB_IoT unsigned short RB_IoT_ID) // the ID of the RB dedicated for NB_IoT
{ {
unsigned char nu,mprime,mprime_dword,mprime_qpsk_symb,m; unsigned char nu,m;
unsigned short k,a; unsigned short k,a;
unsigned short NB_IoT_start,bandwidth_even_odd; unsigned short NB_IoT_start,bandwidth_even_odd;
int32_t qpsk[4]; int32_t qpsk[4];
...@@ -59,7 +59,7 @@ int lte_dl_cell_spec_NB_IoT(PHY_VARS_eNB_NB_IoT *phy_vars_eNB, ...@@ -59,7 +59,7 @@ int lte_dl_cell_spec_NB_IoT(PHY_VARS_eNB_NB_IoT *phy_vars_eNB,
// testing if the total number of RBs is even or odd // testing if the total number of RBs is even or odd
bandwidth_even_odd = phy_vars_eNB->frame_parms.N_RB_DL % 2; // 0 even, 1 odd bandwidth_even_odd = phy_vars_eNB->frame_parms.N_RB_DL % 2; // 0 even, 1 odd
mprime = 0; // mprime = 0,1 for NB_IoT // for LTE , maximum number of resources blocks (110) - the total number of RB in the selected bandwidth (.... 15 , 25 , 50, 100) //mprime = 0; // mprime = 0,1 for NB_IoT // for LTE , maximum number of resources blocks (110) - the total number of RB in the selected bandwidth (.... 15 , 25 , 50, 100)
k = (nu + phy_vars_eNB->frame_parms.nushift)%6; k = (nu + phy_vars_eNB->frame_parms.nushift)%6;
if(RB_IoT_ID < (phy_vars_eNB->frame_parms.N_RB_DL/2)) if(RB_IoT_ID < (phy_vars_eNB->frame_parms.N_RB_DL/2))
......
...@@ -36,13 +36,16 @@ ...@@ -36,13 +36,16 @@
#endif #endif
//#include "PHY/defs.h" //#include "PHY/defs.h"
#include "PHY/defs_nb_iot.h" #include "PHY/defs_nb_iot.h"
#include "PHY/extern.h" #include "PHY/LTE_REFSIG/defs_NB_IoT.h"
#include "SCHED/defs.h" //#include "PHY/extern.h"
#include "SIMULATION/TOOLS/defs.h" // for taus //////////#include "PHY/extern_NB_IoT.h"
#include "PHY/sse_intrin.h" //#include "SCHED/defs.h"
/////////////////////////////#include "SCHED/defs_nb_iot.h"
//#include "SIMULATION/TOOLS/defs.h" // for taus
//#include "PHY/sse_intrin.h"
#include "assertions.h" //#include "assertions.h"
#include "T.h" //#include "T.h"
//------------------------------------------------ //------------------------------------------------
...@@ -53,7 +56,7 @@ static uint8_t d[2][3*(MAX_DCI_SIZE_BITS_NB_IOT + 16) + 96]; ...@@ -53,7 +56,7 @@ static uint8_t d[2][3*(MAX_DCI_SIZE_BITS_NB_IOT + 16) + 96];
static uint8_t w[2][3*3*(MAX_DCI_SIZE_BITS_NB_IOT+16)]; static uint8_t w[2][3*3*(MAX_DCI_SIZE_BITS_NB_IOT+16)];
/*
void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one DCI is to transmit , the number of DCI is indicated in dci_number void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one DCI is to transmit , the number of DCI is indicated in dci_number
uint8_t A, // Length of array a (in number of bytes)(es 4 bytes = 32 bits) is a parameter fixed uint8_t A, // Length of array a (in number of bytes)(es 4 bytes = 32 bits) is a parameter fixed
uint16_t E, // E should equals to G (number of available bits in one RB) uint16_t E, // E should equals to G (number of available bits in one RB)
...@@ -74,7 +77,7 @@ void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one ...@@ -74,7 +77,7 @@ void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one
}else{ }else{
occupation_size=2; occupation_size=2;
} }
memset((void *)d[0],LTE_NULL,96); memset((void *)d[0],LTE_NULL_NB_IoT,96);
ccode_encode_NB_IoT(A,2,a[0],d[0]+96,rnti[0]); // CRC attachement & Tail-biting convolutional coding ccode_encode_NB_IoT(A,2,a[0],d[0]+96,rnti[0]); // CRC attachement & Tail-biting convolutional coding
RCC = sub_block_interleaving_cc_NB_IoT(D,d[0]+96,w[0]); // Interleaving RCC = sub_block_interleaving_cc_NB_IoT(D,d[0]+96,w[0]); // Interleaving
...@@ -82,8 +85,8 @@ void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one ...@@ -82,8 +85,8 @@ void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one
}else if (dci_number == 2) { }else if (dci_number == 2) {
memset((void *)d[0],LTE_NULL,96); memset((void *)d[0],LTE_NULL_NB_IoT,96);
memset((void *)d[1],LTE_NULL,96); memset((void *)d[1],LTE_NULL_NB_IoT,96);
// first DCI encoding // first DCI encoding
ccode_encode_NB_IoT(A,2,a[0],d[0]+96,rnti[0]); // CRC attachement & Tail-biting convolutional coding ccode_encode_NB_IoT(A,2,a[0],d[0]+96,rnti[0]); // CRC attachement & Tail-biting convolutional coding
RCC = sub_block_interleaving_cc_NB_IoT(D,d[0]+96,w[0]); // interleaving RCC = sub_block_interleaving_cc_NB_IoT(D,d[0]+96,w[0]); // interleaving
...@@ -102,16 +105,17 @@ void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one ...@@ -102,16 +105,17 @@ void dci_encoding_NB_IoT(uint8_t *a[2], // Array of two DCI pdus, even if one
void npdcch_scrambling_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, void npdcch_scrambling_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
uint8_t *e[2], // Input data uint8_t *e[2], // Input data
int length, // Total number of bits to transmit in one subframe(case of DCI = G) int length, // Total number of bits to transmit in one subframe(case of DCI = G)
uint8_t Ns,//XXX we pass the subframe // Slot number (0..19) uint8_t Ns, //XXX we pass the subframe // Slot number (0..19)
uint8_t dci_number, // This variable should takes the 1 or 2 (1 for in case of one DCI, 2 in case of two DCI) uint8_t dci_number, // This variable should takes the 1 or 2 (1 for in case of one DCI, 2 in case of two DCI)
uint8_t agr_level) // Aggregation level uint8_t agr_level) // Aggregation level
{ {
int i,j,k=0; int i,k=0;
uint32_t x1, x2, s=0; uint32_t x1, x2, s=0;
uint8_t reset; uint8_t reset;
reset = 1;
uint8_t occupation_size=1; uint8_t occupation_size=1;
reset = 1;
if(agr_level == 2) if(agr_level == 2)
{ {
occupation_size=1; occupation_size=1;
...@@ -173,13 +177,14 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -173,13 +177,14 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
uint8_t dci_number, // This variable should takes the 1 or 2 (1 for in case of one DCI, 2 in case of two DCI) uint8_t dci_number, // This variable should takes the 1 or 2 (1 for in case of one DCI, 2 in case of two DCI)
uint8_t agr_level) uint8_t agr_level)
{ {
MIMO_mode_t mimo_mode = (frame_parms->mode1_flag==1)?SISO:ALAMOUTI; MIMO_mode_NB_IoT_t mimo_mode = (frame_parms->mode1_flag==1)?SISO_NB_IoT:ALAMOUTI_NB_IoT;
uint32_t tti_offset,aa; uint32_t tti_offset,aa;
uint8_t re, diff_re; uint8_t re;
int16_t gain_lin_QPSK; int16_t gain_lin_QPSK;
uint8_t first_re,last_re; uint8_t first_re,last_re;
int32_t tmp_sample1,tmp_sample2,tmp_sample3,tmp_sample4; int32_t tmp_sample1,tmp_sample2,tmp_sample3,tmp_sample4;
gain_lin_QPSK = (int16_t)((amp*ONE_OVER_SQRT2_Q15)>>15);
gain_lin_QPSK = (int16_t)((amp*ONE_OVER_SQRT2_Q15_NB_IoT)>>15);
first_re=0; first_re=0;
last_re=12; last_re=12;
...@@ -192,7 +197,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -192,7 +197,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
if (pilots != 1 || re%3 != id_offset) // if re is not a pilot if (pilots != 1 || re%3 != id_offset) // if re is not a pilot
{ {
// diff_re = re%3 - id_offset; // diff_re = re%3 - id_offset;
if (mimo_mode == SISO) { //SISO mapping if (mimo_mode == SISO_NB_IoT) { //SISO mapping
*re_allocated = *re_allocated + 1; // variable incremented but never used *re_allocated = *re_allocated + 1; // variable incremented but never used
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) { for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
...@@ -204,7 +209,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -204,7 +209,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
} }
*jj = *jj + 1; *jj = *jj + 1;
} else if (mimo_mode == ALAMOUTI) { } else if (mimo_mode == ALAMOUTI_NB_IoT) {
*re_allocated = *re_allocated + 1; *re_allocated = *re_allocated + 1;
...@@ -247,6 +252,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -247,6 +252,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
} }
} }
}else if(agr_level == 1 && dci_number == 1){ }else if(agr_level == 1 && dci_number == 1){
for (re=first_re; re<6; re++) { // re varies between 0 and 6 sub-carriers for (re=first_re; re<6; re++) { // re varies between 0 and 6 sub-carriers
tti_offset = symbol_offset + re; // symbol_offset = 512 * L , re_offset = 512 - 3*12 , re tti_offset = symbol_offset + re; // symbol_offset = 512 * L , re_offset = 512 - 3*12 , re
...@@ -254,7 +260,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -254,7 +260,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
if (pilots != 1 || re%3 != id_offset) // if re is not a pilot if (pilots != 1 || re%3 != id_offset) // if re is not a pilot
{ {
// diff_re = re%3 - id_offset; // diff_re = re%3 - id_offset;
if (mimo_mode == SISO) { //SISO mapping if (mimo_mode == SISO_NB_IoT) { //SISO mapping
*re_allocated = *re_allocated + 1; // variable incremented but never used *re_allocated = *re_allocated + 1; // variable incremented but never used
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) { for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
...@@ -266,7 +272,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -266,7 +272,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
} }
*jj = *jj + 1; *jj = *jj + 1;
} else if (mimo_mode == ALAMOUTI) { } else if (mimo_mode == ALAMOUTI_NB_IoT) {
*re_allocated = *re_allocated + 1; *re_allocated = *re_allocated + 1;
...@@ -315,10 +321,10 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -315,10 +321,10 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
tti_offset = symbol_offset + re; // symbol_offset = 512 * L , re_offset = 512 - 3*12 , re tti_offset = symbol_offset + re; // symbol_offset = 512 * L , re_offset = 512 - 3*12 , re
if (pilots != 1 || re%3 != id_offset) // if re is not a pilot if (pilots != 1 || re%3 != id_offset) { // if re is not a pilot
{
// diff_re = re%3 - id_offset; // diff_re = re%3 - id_offset;
if (mimo_mode == SISO) { //SISO mapping if (mimo_mode == SISO_NB_IoT) { //SISO mapping
*re_allocated = *re_allocated + 1; // variable incremented but never used *re_allocated = *re_allocated + 1; // variable incremented but never used
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) { for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
...@@ -332,7 +338,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -332,7 +338,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
} }
*jj = *jj + 1; *jj = *jj + 1;
} else if (mimo_mode == ALAMOUTI) { } else if (mimo_mode == ALAMOUTI_NB_IoT) {
*re_allocated = *re_allocated + 1; *re_allocated = *re_allocated + 1;
...@@ -401,7 +407,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms, ...@@ -401,7 +407,7 @@ int dci_allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
int dci_modulation_NB_IoT(int32_t **txdataF, int dci_modulation_NB_IoT(int32_t **txdataF,
int16_t amp, int16_t amp,
NB_IoT_DL_FRAME_PARMS *frame_parms, NB_IoT_DL_FRAME_PARMS *frame_parms,
uint8_t control_region_size,//XXX we pass the npdcch_start_symbol // control region size for LTE , values between 0..3, (0 for stand-alone / 1, 2 or 3 for in-band) uint8_t control_region_size, //XXX we pass the npdcch_start_symbol // control region size for LTE , values between 0..3, (0 for stand-alone / 1, 2 or 3 for in-band)
uint8_t *e[2], // Input data uint8_t *e[2], // Input data
int G, // number of bits per subframe int G, // number of bits per subframe
uint8_t dci_number, // This variable should takes the 1 or 2 (1 for in case of one DCI, 2 in case of two DCI) uint8_t dci_number, // This variable should takes the 1 or 2 (1 for in case of one DCI, 2 in case of two DCI)
...@@ -429,16 +435,16 @@ int dci_modulation_NB_IoT(int32_t **txdataF, ...@@ -429,16 +435,16 @@ int dci_modulation_NB_IoT(int32_t **txdataF,
id_offset = frame_parms->Nid_cell % 3; // Cell_ID_NB_IoT % 3 id_offset = frame_parms->Nid_cell % 3; // Cell_ID_NB_IoT % 3
if(RB_IoT_ID < (frame_parms->N_RB_DL/2)) if(RB_IoT_ID < (frame_parms->N_RB_DL/2))
{ {
NB_IoT_start = frame_parms->ofdm_symbol_size - 12*(frame_parms->N_RB_DL/2) - (bandwidth_even_odd*6) + 12*(RB_IoT_ID%(ceil(frame_parms->N_RB_DL/(float)2))); NB_IoT_start = frame_parms->ofdm_symbol_size - 12*(frame_parms->N_RB_DL/2) - (bandwidth_even_odd*6) + 12*(RB_IoT_ID% (int)(ceil(frame_parms->N_RB_DL/(float)2)));
} else { } else {
NB_IoT_start = (bandwidth_even_odd*6) + 12*(RB_IoT_ID%(ceil(frame_parms->N_RB_DL/(float)2))); NB_IoT_start = (bandwidth_even_odd*6) + 12*(RB_IoT_ID % (int)(ceil(frame_parms->N_RB_DL/(float)2)));
} }
symbol_offset = frame_parms->ofdm_symbol_size*l + NB_IoT_start; // symbol_offset = 512 * L + NB_IOT_RB start symbol_offset = frame_parms->ofdm_symbol_size*l + NB_IoT_start; // symbol_offset = 512 * L + NB_IOT_RB start
dci_allocate_REs_in_RB_NB_IoT(frame_parms, dci_allocate_REs_in_RB_NB_IoT(frame_parms,
txdataF, txdataF,
&jj, &jj,
symbol_offset, symbol_offset,
&e, e,
pilots, pilots,
amp, amp,
id_offset, id_offset,
...@@ -450,7 +456,7 @@ int dci_modulation_NB_IoT(int32_t **txdataF, ...@@ -450,7 +456,7 @@ int dci_modulation_NB_IoT(int32_t **txdataF,
// VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_MODULATION, VCD_FUNCTION_OUT); // VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_MODULATION, VCD_FUNCTION_OUT);
return (re_allocated); return (re_allocated);
} }
*/
//------------------------------------------------ //------------------------------------------------
// BCOM code functions npdcch end // BCOM code functions npdcch end
//------------------------------------------------ //------------------------------------------------
...@@ -458,8 +464,7 @@ int dci_modulation_NB_IoT(int32_t **txdataF, ...@@ -458,8 +464,7 @@ int dci_modulation_NB_IoT(int32_t **txdataF,
uint8_t generate_dci_top_NB_IoT( uint8_t generate_dci_top_NB_IoT(NB_IoT_eNB_NPDCCH_t *npdcch,
NB_IoT_eNB_NPDCCH_t* npdcch,
uint8_t Num_dci, uint8_t Num_dci,
DCI_ALLOC_NB_IoT_t *dci_alloc, DCI_ALLOC_NB_IoT_t *dci_alloc,
int16_t amp, int16_t amp,
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
//// structures below implement 36-211 and 36-212 //// structures below implement 36-211 and 36-212
// //
//#define NSOFT 1827072 //#define NSOFT 1827072
//#define LTE_NULL 2 #define LTE_NULL_NB_IoT 2
// //
//// maximum of 3 segments before each coding block if data length exceeds 6144 bits. //// maximum of 3 segments before each coding block if data length exceeds 6144 bits.
// //
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "defs.h" #include "defs.h"
#include "UTIL/LOG/vcd_signal_dumper.h" #include "UTIL/LOG/vcd_signal_dumper.h"
int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms, int allocate_REs_in_RB_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,
int32_t **txdataF, int32_t **txdataF,
uint32_t *jj, uint32_t *jj,
uint32_t symbol_offset, uint32_t symbol_offset,
...@@ -32,13 +32,13 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms, ...@@ -32,13 +32,13 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms,
unsigned short id_offset, unsigned short id_offset,
uint32_t *re_allocated) // not used variable ??!! uint32_t *re_allocated) // not used variable ??!!
{ {
MIMO_mode_t mimo_mode = (frame_parms->mode1_flag==1)?SISO:ALAMOUTI; MIMO_mode_NB_IoT_t mimo_mode = (frame_parms->mode1_flag==1)?SISO_NB_IoT:ALAMOUTI_NB_IoT;
uint32_t tti_offset,aa; uint32_t tti_offset,aa;
uint8_t re, diff_re; uint8_t re, diff_re;
int16_t gain_lin_QPSK; int16_t gain_lin_QPSK;
uint8_t first_re,last_re; uint8_t first_re,last_re;
int32_t tmp_sample1,tmp_sample2; int32_t tmp_sample1,tmp_sample2;
gain_lin_QPSK = (int16_t)((amp*ONE_OVER_SQRT2_Q15)>>15); gain_lin_QPSK = (int16_t)((amp*ONE_OVER_SQRT2_Q15_NB_IoT)>>15);
first_re=0; first_re=0;
last_re=12; last_re=12;
...@@ -49,7 +49,7 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms, ...@@ -49,7 +49,7 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms,
if (pilots != 1 || re%3 != id_offset) // if re is not a pilot if (pilots != 1 || re%3 != id_offset) // if re is not a pilot
{ {
// diff_re = re%3 - id_offset; // diff_re = re%3 - id_offset;
if (mimo_mode == SISO) { //SISO mapping if (mimo_mode == SISO_NB_IoT) { //SISO mapping
*re_allocated = *re_allocated + 1; // variable incremented but never used *re_allocated = *re_allocated + 1; // variable incremented but never used
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) { for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
...@@ -61,7 +61,7 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms, ...@@ -61,7 +61,7 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms,
} }
*jj = *jj + 1; *jj = *jj + 1;
} else if (mimo_mode == ALAMOUTI) { } else if (mimo_mode == ALAMOUTI_NB_IoT) {
*re_allocated = *re_allocated + 1; *re_allocated = *re_allocated + 1;
...@@ -110,7 +110,7 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms, ...@@ -110,7 +110,7 @@ int allocate_REs_in_RB_NB_IoT(NB_IOT_DL_FRAME_PARMS *frame_parms,
int dlsch_modulation_NB_IoT(int32_t **txdataF, int dlsch_modulation_NB_IoT(int32_t **txdataF,
int16_t amp, int16_t amp,
NB_IOT_DL_FRAME_PARMS *frame_parms, NB_IoT_DL_FRAME_PARMS *frame_parms,
uint8_t control_region_size, // control region size for LTE , values between 0..3, (0 for stand-alone / 1, 2 or 3 for in-band) uint8_t control_region_size, // control region size for LTE , values between 0..3, (0 for stand-alone / 1, 2 or 3 for in-band)
NB_IoT_eNB_DLSCH_t *dlsch0, NB_IoT_eNB_DLSCH_t *dlsch0,
int G, // number of bits per subframe int G, // number of bits per subframe
......
...@@ -127,6 +127,7 @@ static inline void* malloc16_clear( size_t size ) ...@@ -127,6 +127,7 @@ static inline void* malloc16_clear( size_t size )
#include "PHY/TOOLS/time_meas.h" #include "PHY/TOOLS/time_meas.h"
#include "PHY/CODING/defs.h" #include "PHY/CODING/defs.h"
#include "PHY/CODING/defs_nb_iot.h"
#include "PHY/TOOLS/defs.h" #include "PHY/TOOLS/defs.h"
#include "platform_types.h" #include "platform_types.h"
......
...@@ -268,5 +268,27 @@ typedef struct { ...@@ -268,5 +268,27 @@ typedef struct {
} NB_IoT_DL_FRAME_PARMS; } NB_IoT_DL_FRAME_PARMS;
typedef enum {
/// TM1
SISO_NB_IoT=0,
/// TM2
ALAMOUTI_NB_IoT=1,
/// TM3
LARGE_CDD_NB_IoT=2,
/// the next 6 entries are for TM5
UNIFORM_PRECODING11_NB_IoT=3,
UNIFORM_PRECODING1m1_NB_IoT=4,
UNIFORM_PRECODING1j_NB_IoT=5,
UNIFORM_PRECODING1mj_NB_IoT=6,
PUSCH_PRECODING0_NB_IoT=7,
PUSCH_PRECODING1_NB_IoT=8,
/// the next 3 entries are for TM4
DUALSTREAM_UNIFORM_PRECODING1_NB_IoT=9,
DUALSTREAM_UNIFORM_PRECODINGj_NB_IoT=10,
DUALSTREAM_PUSCH_PRECODING_NB_IoT=11,
TM7_NB_IoT=12,
TM8_NB_IoT=13,
TM9_10_NB_IoT=14
} MIMO_mode_NB_IoT_t;
#endif #endif
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